tree-optimization/111070 - fix ICE with recent ifcombine fix
We now got test coverage for non-SSA name bits so the following amends the SSA_NAME_OCCURS_IN_ABNORMAL_PHI checks. PR tree-optimization/111070 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI. * gcc.dg/pr111070.c: New testcase.
This commit is contained in:
parent
47b833a9ab
commit
966b0a9652
2 changed files with 26 additions and 3 deletions
20
gcc/testsuite/gcc.dg/pr111070.c
Normal file
20
gcc/testsuite/gcc.dg/pr111070.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O" } */
|
||||
|
||||
/* common */
|
||||
char c;
|
||||
/* arrays must be 8 byte aligned, regardless of size */
|
||||
char c_ary[1];
|
||||
|
||||
/* data */
|
||||
char d = 1;
|
||||
char d_ary[1] = {1};
|
||||
|
||||
int main ()
|
||||
{
|
||||
if (((unsigned long)&c_ary[0] & 7) != 0)
|
||||
return 1;
|
||||
if (((unsigned long)&d_ary[0] & 7) != 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
|
@ -430,7 +430,8 @@ ifcombine_ifandif (basic_block inner_cond_bb, bool inner_inv,
|
|||
{
|
||||
tree t, t2;
|
||||
|
||||
if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name1))
|
||||
if (TREE_CODE (name1) == SSA_NAME
|
||||
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name1))
|
||||
return false;
|
||||
|
||||
/* Do it. */
|
||||
|
@ -489,8 +490,10 @@ ifcombine_ifandif (basic_block inner_cond_bb, bool inner_inv,
|
|||
gimple_stmt_iterator gsi;
|
||||
tree t;
|
||||
|
||||
if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name1)
|
||||
|| SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name2))
|
||||
if ((TREE_CODE (name1) == SSA_NAME
|
||||
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name1))
|
||||
|| (TREE_CODE (name2) == SSA_NAME
|
||||
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name2)))
|
||||
return false;
|
||||
|
||||
/* Find the common name which is bit-tested. */
|
||||
|
|
Loading…
Add table
Reference in a new issue