The following fixes another disconnect as to with respect to what
loop to analyze CHRECs.

Boostrap and regtest running on x86_64-unknown-linux-gnu.

Richard.

2018-06-06  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/85935
        * graphite-scop-detection.c (find_params_in_bb): Analyze
        condition operands with respect to the correct loop.  Assert
        the analysis doesn't fail.

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

diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index 48e40142e59..0dafc399521 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -1176,13 +1176,15 @@ find_params_in_bb (sese_info_p region, gimple_poly_bb_p 
gbb)
 
   /* Find parameters in conditional statements.  */
   gimple *stmt;
-  loop_p loop = GBB_BB (gbb)->loop_father;
   FOR_EACH_VEC_ELT (GBB_CONDITIONS (gbb), i, stmt)
     {
+      loop_p loop = gimple_bb (stmt)->loop_father;
       tree lhs = scalar_evolution_in_region (region->region, loop,
                                             gimple_cond_lhs (stmt));
       tree rhs = scalar_evolution_in_region (region->region, loop,
                                             gimple_cond_rhs (stmt));
+      gcc_assert (!chrec_contains_undetermined (lhs)
+                 && !chrec_contains_undetermined (rhs));
 
       scan_tree_for_params (region, lhs);
       scan_tree_for_params (region, rhs);
diff --git a/gcc/testsuite/gcc.dg/graphite/pr85935.c 
b/gcc/testsuite/gcc.dg/graphite/pr85935.c
new file mode 100644
index 00000000000..8c63ea93770
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr85935.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O -floop-parallelize-all -fno-tree-loop-im --param 
scev-max-expr-size=3" } */
+
+typedef int dq;
+
+int gb;
+
+void
+qq (dq ww, int kk)
+{
+  dq *up = &ww;
+
+  (void) *up;
+
+  while (kk < 1)
+    {
+      ++ww;
+
+      if (ww == 0)
+       for (gb = 0; gb < 2; ++gb)
+         ;
+
+      ++kk;
+    }
+}

Reply via email to