This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/60740] [4.8/4.9 Regression] ICE in extract_affine w/ -O2 -ftree-loop-linear
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 03 Apr 2014 11:48:56 +0000
- Subject: [Bug tree-optimization/60740] [4.8/4.9 Regression] ICE in extract_affine w/ -O2 -ftree-loop-linear
- Auto-submitted: auto-generated
- References: <bug-60740-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60740
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Target Milestone|4.9.0 |4.8.3
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
It seems we can't encode &a22 (an address of a decl) for ISL. Which means
the loop should have been rejected earlier? Or the
if (&a22 == pretmp_1)
_10 = geb_lsm.6_11 - 1;
should have been in a "black-box"? We're coming from add_condition_to_pbb
but it seems "stmts" do not cover control flow. Looks like
stmt_simple_for_scop_p
simply implements checks for GIMPLE_CONDs wrong. Testing the following:
Index: gcc/graphite-scop-detection.c
===================================================================
--- gcc/graphite-scop-detection.c (revision 209018)
+++ gcc/graphite-scop-detection.c (working copy)
@@ -346,13 +346,10 @@ stmt_simple_for_scop_p (basic_block scop
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
|| 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;
}