This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/60740] [4.8/4.9 Regression] ICE in extract_affine w/ -O2 -ftree-loop-linear


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]