diff mbox series

Fix PR84132

Message ID alpine.LSU.2.20.1801311406180.18265@zhemvz.fhfr.qr
State New
Headers show
Series Fix PR84132 | expand

Commit Message

Richard Biener Jan. 31, 2018, 1:06 p.m. UTC
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2018-01-31  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84132
	* tree-data-ref.c (analyze_miv_subscript): Properly
	check whether evolution_function_is_affine_multivariate_p
	before calling gcd_of_steps_may_divide_p.

	* g++.dg/torture/pr84132.C: New testcase.
diff mbox series

Patch

Index: gcc/tree-data-ref.c
===================================================================
--- gcc/tree-data-ref.c	(revision 257181)
+++ gcc/tree-data-ref.c	(working copy)
@@ -3976,9 +3976,8 @@  analyze_miv_subscript (tree chrec_a,
     }
 
   else if (evolution_function_is_constant_p (difference)
-	   /* For the moment, the following is verified:
-	      evolution_function_is_affine_multivariate_p (chrec_a,
-	      loop_nest->num) */
+	   && evolution_function_is_affine_multivariate_p (chrec_a,
+							   loop_nest->num)
 	   && !gcd_of_steps_may_divide_p (chrec_a, difference))
     {
       /* testsuite/.../ssa-chrec-33.c
Index: gcc/testsuite/g++.dg/torture/pr84132.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr84132.C	(nonexistent)
+++ gcc/testsuite/g++.dg/torture/pr84132.C	(working copy)
@@ -0,0 +1,17 @@ 
+/* { dg-do compile } */
+
+struct g {
+    char b;
+    unsigned char *d[];
+} e;
+unsigned char f;
+void i()
+{
+  for (int h;; h++)
+    {
+      unsigned a = h;
+      for (int c = 0; c < 256; c += 6)
+	for (int h = c; h < c + 6; h++)
+	  e.d[h + a] = &f;
+    }
+}