aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr84204.c2
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr85935.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr87087.c25
-rw-r--r--gcc/tree-chrec.c10
6 files changed, 53 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 41a1dd1..1177676 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+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.
+
2018-10-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/87537
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5e1ad06..9cf4cbc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2018-10-18 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/87087
+ * gcc.dg/torture/pr87087.c: New testcase.
+ * gcc.dg/graphite/pr84204.c: XFAIL.
+ * gcc.dg/graphite/pr85935.c: Likewise.
+
2018-10-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/87537
diff --git a/gcc/testsuite/gcc.dg/graphite/pr84204.c b/gcc/testsuite/gcc.dg/graphite/pr84204.c
index 91401df..9e2d39ed 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr84204.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr84204.c
@@ -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;
diff --git a/gcc/testsuite/gcc.dg/graphite/pr85935.c b/gcc/testsuite/gcc.dg/graphite/pr85935.c
index 8c63ea9..4c05f54 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr85935.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr85935.c
@@ -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;
diff --git a/gcc/testsuite/gcc.dg/torture/pr87087.c b/gcc/testsuite/gcc.dg/torture/pr87087.c
new file mode 100644
index 0000000..2a07620
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr87087.c
@@ -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;
+ }
+}
diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index 2717b40..a218327 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -328,10 +328,12 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
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),
@@ -341,6 +343,8 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
fold_convert (type, op0),
fold_convert (type, op1));
}
+ else
+ return chrec_dont_know;
}
}
}