diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2005-02-03 15:26:29 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2005-02-03 07:26:29 -0800 |
commit | 9df935d878e5d92552ba1cb2b1ceacecef69f53f (patch) | |
tree | 8d0cb048bbf0e64849c2cdd95b38cf3e6d525b61 /gcc/tree-ssa-dse.c | |
parent | da99298d7f41f4f40cc76b9767b22825c3105019 (diff) | |
download | gcc-9df935d878e5d92552ba1cb2b1ceacecef69f53f.tar.gz |
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.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index 5d29e03a70d..625e1d1fa8f 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; + } } } |