re PR tree-optimization/90071 (internal compiler error: SSA corruption)

2019-04-15  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/90071
	* tree-ssa-reassoc.c (init_range_entry): Do not pick up
	abnormal operands from def stmts.

	* gcc.dg/torture/pr90071.c: New testcase.

From-SVN: r270369
This commit is contained in:
Richard Biener 2019-04-15 11:59:02 +00:00 committed by Richard Biener
parent c7797fd3e8
commit 98dc565ef0
4 changed files with 37 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2019-04-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/90071
* tree-ssa-reassoc.c (init_range_entry): Do not pick up
abnormal operands from def stmts.
2019-04-15 Richard Biener <rguenther@suse.de>
PR ipa/88936

View File

@ -1,3 +1,8 @@
2019-04-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/90071
* gcc.dg/torture/pr90071.c: New testcase.
2019-04-15 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/89794

View File

@ -0,0 +1,24 @@
/* { dg-do compile } */
int a;
static int b;
void
foo ()
{
int d;
int e = (int) (__INTPTR_TYPE__) &&f;
void *g = &&h;
h: ++e;
if (a)
i: goto *g;
for (;;)
{
e = 0;
if (b)
goto i;
}
f:
goto *({ d || e < 0 || e >= 2; });
&e;
}

View File

@ -2143,7 +2143,8 @@ init_range_entry (struct range_entry *r, tree exp, gimple *stmt)
exp_type = boolean_type_node;
}
if (TREE_CODE (arg0) != SSA_NAME)
if (TREE_CODE (arg0) != SSA_NAME
|| SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg0))
break;
loc = gimple_location (stmt);
switch (code)