aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dse.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2005-02-03 15:26:29 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2005-02-03 07:26:29 -0800
commit9df935d878e5d92552ba1cb2b1ceacecef69f53f (patch)
tree8d0cb048bbf0e64849c2cdd95b38cf3e6d525b61 /gcc/tree-ssa-dse.c
parentda99298d7f41f4f40cc76b9767b22825c3105019 (diff)
downloadgcc-9df935d878e5d92552ba1cb2b1ceacecef69f53f.zip
gcc-9df935d878e5d92552ba1cb2b1ceacecef69f53f.tar.gz
gcc-9df935d878e5d92552ba1cb2b1ceacecef69f53f.tar.bz2
re PR tree-optimization/19768 (ICE: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set)
2005-02-03 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/19768 * g++.dg/opt/pr19768.C: New test. 2005-02-03 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/19768 * tree-ssa-dse.c (fix_phi_uses): Update the occurs in abnormal phi flag if the phi is abnormal. From-SVN: r94660
Diffstat (limited to 'gcc/tree-ssa-dse.c')
-rw-r--r--gcc/tree-ssa-dse.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c
index 5d29e03..625e1d1 100644
--- a/gcc/tree-ssa-dse.c
+++ b/gcc/tree-ssa-dse.c
@@ -134,7 +134,13 @@ fix_phi_uses (tree phi, tree stmt)
def_operand_p def_p;
ssa_op_iter iter;
int i;
-
+ edge e;
+ edge_iterator ei;
+
+ FOR_EACH_EDGE (e, ei, PHI_BB (phi)->preds)
+ if (e->flags & EDGE_ABNORMAL)
+ break;
+
get_stmt_operands (stmt);
FOR_EACH_SSA_MAYDEF_OPERAND (def_p, use_p, stmt, iter)
@@ -146,7 +152,12 @@ fix_phi_uses (tree phi, tree stmt)
them with the appropriate V_MAY_DEF_OP. */
for (i = 0; i < PHI_NUM_ARGS (phi); i++)
if (v_may_def == PHI_ARG_DEF (phi, i))
- SET_PHI_ARG_DEF (phi, i, v_may_use);
+ {
+ SET_PHI_ARG_DEF (phi, i, v_may_use);
+ /* Update if the new phi argument is an abnormal phi. */
+ if (e != NULL)
+ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (v_may_use) = 1;
+ }
}
}