From d36837f4cac8268ddb67fcf4f8ecfe323d79d92b Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Thu, 5 Aug 2004 10:41:57 +0200 Subject: [PATCH] re PR tree-optimization/16864 (Segmentation fault during tree tail call elimination) PR tree-optimization/16864 * tree-tailcall.c (eliminate_tail_call): Do not create phi nodes for ssa names without default_def. From-SVN: r85597 --- gcc/ChangeLog | 6 ++++++ gcc/tree-tailcall.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5df219577c6..f0e76175264 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-08-05 Zdenek Dvorak + + PR tree-optimization/16864 + * tree-tailcall.c (eliminate_tail_call): Do not create phi nodes + for ssa names without default_def. + 2004-08-05 Richard Sandiford * config/i386/i386.c (ix86_expand_prologue): If the function uses a diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 6599cbd09e2..6e1957c597d 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -730,7 +730,17 @@ eliminate_tail_call (struct tailcall *t) if (!phi) { tree name = var_ann (param)->default_def; - tree new_name = make_ssa_name (param, SSA_NAME_DEF_STMT (name)); + tree new_name; + + if (!name) + { + /* It may happen that the tag does not have a default_def in case + when all uses of it are dominated by a MUST_DEF. This however + means that it is not necessary to add a phi node for this + tag. */ + continue; + } + new_name = make_ssa_name (param, SSA_NAME_DEF_STMT (name)); var_ann (param)->default_def = new_name; phi = create_phi_node (name, first);