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.

(cherry picked from commit 966b0a9652)
This commit is contained in:
Richard Biener 2023-08-21 09:01:00 +02:00
parent cc835f41ec
commit d73137ab35
2 changed files with 26 additions and 3 deletions

View 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;
}

View File

@ -415,7 +415,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. */
@ -468,8 +469,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. */