re PR tree-optimization/85935 ([graphite] ICE in extract_affine, at graphite-sese...
authorRichard Biener <rguenther@suse.de>
Thu, 7 Jun 2018 07:01:56 +0000 (07:01 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 7 Jun 2018 07:01:56 +0000 (07:01 +0000)
2018-06-07  Richard Biener  <rguenther@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.

From-SVN: r261263

gcc/ChangeLog
gcc/graphite-scop-detection.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/pr85935.c [new file with mode: 0644]

index 4eaaa70b1c25d1d7635707e6b294530819329851..f6f3fe78f10a7616444cd8217b5a407566289e52 100644 (file)
@@ -1,3 +1,10 @@
+2018-06-07  Richard Biener  <rguenther@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.
+
 2018-06-04  Carl Love  <cel@us.ibm.com>
 
        * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
index 48e40142e59f7535fa416b480f56f18219002f72..0dafc39952169056b81667770d56ed277ddfd4a3 100644 (file)
@@ -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);
index db46ffc4e7ca5949387d0e5d4f405d8e6ae69429..989e497704fa0d461797dd4e4b5022394f30c846 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-07  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/85935
+       * gcc.dg/graphite/pr85935.c: New testcase.
+
 2018-06-04  Carl Love  <cel@us.ibm.com>
 
        * gcc.target/powerpc/builtins-8-p9-runnable.c: Add additional
diff --git a/gcc/testsuite/gcc.dg/graphite/pr85935.c b/gcc/testsuite/gcc.dg/graphite/pr85935.c
new file mode 100644 (file)
index 0000000..8c63ea9
--- /dev/null
@@ -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;
+    }
+}