Fix PR85935

Message ID alpine.LSU.2.20.1806061504550.5043@zhemvz.fhfr.qr
State New
Headers show
Series
  • Fix PR85935
Related show

Commit Message

Richard Biener June 6, 2018, 1:05 p.m.
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  <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.

Patch

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