re PR tree-optimization/60740 (ICE in extract_affine w/ -O2 -ftree-loop-linear)

2014-04-03  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/60740
	* graphite-scop-detection.c (stmt_simple_for_scop_p): Iterate
	over all GIMPLE_COND operands.

	* gcc.dg/graphite/pr60740.c: New testcase.

From-SVN: r209057
This commit is contained in:
Richard Biener 2014-04-03 13:43:23 +00:00 committed by Richard Biener
parent 880a467be7
commit f16c88d25f
4 changed files with 36 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2014-04-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/60740
* graphite-scop-detection.c (stmt_simple_for_scop_p): Iterate
over all GIMPLE_COND operands.
2014-04-03 Nathan Sidwell <nathan@codesourcery.com>
* doc/invoke.texi (Wnon-virtual-dtor): Adjust documentation.

View File

@ -346,13 +346,10 @@ stmt_simple_for_scop_p (basic_block scop_entry, loop_p outermost_loop,
case GIMPLE_COND:
{
tree op;
ssa_op_iter op_iter;
enum tree_code code = gimple_cond_code (stmt);
/* We can handle all binary comparisons. Inequalities are
also supported as they can be represented with union of
polyhedra. */
enum tree_code code = gimple_cond_code (stmt);
if (!(code == LT_EXPR
|| code == GT_EXPR
|| code == LE_EXPR
@ -361,11 +358,14 @@ stmt_simple_for_scop_p (basic_block scop_entry, loop_p outermost_loop,
|| code == NE_EXPR))
return false;
FOR_EACH_SSA_TREE_OPERAND (op, stmt, op_iter, SSA_OP_ALL_USES)
if (!graphite_can_represent_expr (scop_entry, loop, op)
/* We can not handle REAL_TYPE. Failed for pr39260. */
|| TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
return false;
for (unsigned i = 0; i < 2; ++i)
{
tree op = gimple_op (stmt, i);
if (!graphite_can_represent_expr (scop_entry, loop, op)
/* We can not handle REAL_TYPE. Failed for pr39260. */
|| TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
return false;
}
return true;
}

View File

@ -1,3 +1,8 @@
2014-04-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/60740
* gcc.dg/graphite/pr60740.c: New testcase.
2014-04-03 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/warn/Wnvdtor.C: Add non-polymorphic case.

View File

@ -0,0 +1,16 @@
/* { dg-options "-O2 -floop-interchange" } */
int **db6 = 0;
void
k26(void)
{
static int geb = 0;
int *a22 = &geb;
int **l30 = &a22;
int *c4b;
int ndf;
for (ndf = 0; ndf <= 1; ++ndf)
*c4b = (db6 == l30) && (*a22)--;
}