aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-tailcall.c
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2004-08-05 10:41:57 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2004-08-05 08:41:57 +0000
commitd36837f4cac8268ddb67fcf4f8ecfe323d79d92b (patch)
tree6050fa494643615f796ada88dc8112f74b9e730c /gcc/tree-tailcall.c
parent943bf8b5136c2d756f86a84271bbcc97b0b0bedc (diff)
downloadgcc-d36837f4cac8268ddb67fcf4f8ecfe323d79d92b.zip
gcc-d36837f4cac8268ddb67fcf4f8ecfe323d79d92b.tar.gz
gcc-d36837f4cac8268ddb67fcf4f8ecfe323d79d92b.tar.bz2
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
Diffstat (limited to 'gcc/tree-tailcall.c')
-rw-r--r--gcc/tree-tailcall.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c
index 6599cbd..6e1957c 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);