re PR libgomp/84466 (libgomp.graphite/force-parallel-8.c fails starting with r257723)
authorRichard Biener <rguenther@suse.de>
Tue, 27 Feb 2018 14:45:46 +0000 (14:45 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 27 Feb 2018 14:45:46 +0000 (14:45 +0000)
2018-02-27  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84466
* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
Adjust last change to less strictly validate use operands.

From-SVN: r258035

gcc/ChangeLog
gcc/graphite-scop-detection.c

index a230b12..d4e56b3 100644 (file)
@@ -1,3 +1,9 @@
+2018-02-27  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/84466
+       * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
+       Adjust last change to less strictly validate use operands.
+
 2018-02-27  Martin Liska  <mliska@suse.cz>
 
        PR gcov-profile/84548
index 70cb773..2331dec 100644 (file)
@@ -1028,16 +1028,23 @@ scop_detection::stmt_simple_for_scop_p (sese_l scop, gimple *stmt,
     case GIMPLE_ASSIGN:
     case GIMPLE_CALL:
       {
-       tree op;
+       tree op, lhs = gimple_get_lhs (stmt);
        ssa_op_iter i;
+       /* If we are not going to instantiate the stmt do not require
+          its operands to be instantiatable at this point.  */
+       if (lhs
+           && TREE_CODE (lhs) == SSA_NAME
+           && scev_analyzable_p (lhs, scop))
+         return true;
        /* Verify that if we can analyze operands at their def site we
           also can represent them when analyzed at their uses.  */
        FOR_EACH_SSA_TREE_OPERAND (op, stmt, i, SSA_OP_USE)
          if (scev_analyzable_p (op, scop)
-             && !graphite_can_represent_expr (scop, bb->loop_father, op))
+             && chrec_contains_undetermined
+                  (scalar_evolution_in_region (scop, bb->loop_father, op)))
            {
              DEBUG_PRINT (dp << "[scop-detection-fail] "
-                          << "Graphite cannot represent stmt:\n";
+                          << "Graphite cannot code-gen stmt:\n";
                           print_gimple_stmt (dump_file, stmt, 0,
                                              TDF_VOPS | TDF_MEMSYMS));
              return false;