diff mbox series

Revert fix for PR84204

Message ID alpine.LSU.2.20.1810181037120.4374@zhemvz.fhfr.qr
State New
Headers show
Series Revert fix for PR84204 | expand

Commit Message

Richard Biener Oct. 18, 2018, 8:38 a.m. UTC
I have tested the following patch to revert the fix for PR84204.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk
and branch.

Richard.

2018-10-18  Richard Biener  <rguenther@suse.de>

	PR middle-end/87087
	Revert
	2018-02-07  Richard Biener  <rguenther@suse.de>

        PR tree-optimization/84204
        * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
        this place.

	* gcc.dg/torture/pr87087.c: New testcase.
	* gcc.dg/graphite/pr84204.c: XFAIL.
	* gcc.dg/graphite/pr85935.c: Likewise.
diff mbox series

Patch

Index: gcc/testsuite/gcc.dg/graphite/pr84204.c
===================================================================
--- gcc/testsuite/gcc.dg/graphite/pr84204.c	(revision 265234)
+++ gcc/testsuite/gcc.dg/graphite/pr84204.c	(working copy)
@@ -1,5 +1,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-O -floop-parallelize-all -fno-tree-loop-im --param scev-max-expr-size=3" } */
+/* The fix for PR84204 was reverted.  */
+/* { dg-additional-options "--param graphite-allow-codegen-errors=1" } */
 
 int oc;
 
Index: gcc/testsuite/gcc.dg/graphite/pr85935.c
===================================================================
--- gcc/testsuite/gcc.dg/graphite/pr85935.c	(revision 265234)
+++ gcc/testsuite/gcc.dg/graphite/pr85935.c	(working copy)
@@ -1,5 +1,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-O -floop-parallelize-all -fno-tree-loop-im --param scev-max-expr-size=3" } */
+/* The fix for PR84204 was reverted.  */
+/* { dg-additional-options "--param graphite-allow-codegen-errors=1" } */
 
 typedef int dq;
 
Index: gcc/testsuite/gcc.dg/torture/pr87087.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr87087.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr87087.c	(working copy)
@@ -0,0 +1,25 @@ 
+/* { dg-do compile } */
+/* { dg-require-effective-target int32plus } */
+
+int b;
+int d;
+void e()
+{
+  unsigned f;
+  unsigned g;
+  int h;
+  long i = 901380;
+  for (;;) {
+      d = 0;
+      for (; d; d++) {
+	  h = 143366620;
+	  f = 0;
+	  for (; f < 15; f += 3) {
+	      g = 0;
+	      for (; g < 9; g++)
+		b = h = i - (h << 5) + h;
+	  }
+      }
+      i = 0;
+  }
+}
Index: gcc/tree-chrec.c
===================================================================
--- gcc/tree-chrec.c	(revision 265234)
+++ gcc/tree-chrec.c	(working copy)
@@ -375,10 +375,12 @@  chrec_fold_plus_1 (enum tree_code code,
 
 	default:
 	  {
-	    if (tree_contains_chrecs (op0, NULL)
-		|| tree_contains_chrecs (op1, NULL))
+	    int size = 0;
+	    if ((tree_contains_chrecs (op0, &size)
+		 || tree_contains_chrecs (op1, &size))
+		&& size < PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
 	      return build2 (code, type, op0, op1);
-	    else
+	    else if (size < PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
 	      {
 		if (code == POINTER_PLUS_EXPR)
 		  return fold_build_pointer_plus (fold_convert (type, op0),
@@ -388,6 +390,8 @@  chrec_fold_plus_1 (enum tree_code code,
 				      fold_convert (type, op0),
 				      fold_convert (type, op1));
 	      }
+	    else
+	      return chrec_dont_know;
 	  }
 	}
     }