mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-19 07:10:25 +08:00
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
This commit is contained in:
parent
da99298d7f
commit
9df935d878
@ -1,3 +1,9 @@
|
||||
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.
|
||||
|
||||
2005-02-03 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/19736
|
||||
|
@ -1,3 +1,8 @@
|
||||
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/19736
|
||||
|
29
gcc/testsuite/g++.dg/opt/pr19768.C
Normal file
29
gcc/testsuite/g++.dg/opt/pr19768.C
Normal file
@ -0,0 +1,29 @@
|
||||
// PR tree-opt/19768
|
||||
// tree DSE was removing one store to LL.currentLevel
|
||||
// but forgot that since the vop was in an abnormal PHI
|
||||
// that we have to update the SSA_NAME which we propagate
|
||||
// into the abnormal PHI
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-O" }
|
||||
|
||||
struct LeveLogger
|
||||
{
|
||||
int currentLevel;
|
||||
};
|
||||
extern LeveLogger LL;
|
||||
struct gg
|
||||
{
|
||||
~gg ( void )
|
||||
{ LL.currentLevel = 1; }
|
||||
};
|
||||
void f(void);
|
||||
void g ( void )
|
||||
{
|
||||
gg sll;
|
||||
{
|
||||
gg sll;
|
||||
f();
|
||||
}
|
||||
f();
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user