aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-12-04 08:26:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-12-04 08:26:18 +0000
commit5d66d3f151eab82a39fc89b6f0b973b529f6b3cb (patch)
treecedb6d1ccfdc6069517ce5037708ed64e7b2c6fc /gcc
parentb6ecbf313bff50f4f6d3ea645cddc0a9976eb623 (diff)
downloadgcc-5d66d3f151eab82a39fc89b6f0b973b529f6b3cb.zip
gcc-5d66d3f151eab82a39fc89b6f0b973b529f6b3cb.tar.gz
gcc-5d66d3f151eab82a39fc89b6f0b973b529f6b3cb.tar.bz2
re PR tree-optimization/83238 ([graphite] ICE in graphite_can_represent_scev, at graphite-scop-detection.c:971)
2017-12-04 Richard Biener <rguenther@suse.de> PR tree-optimization/83238 * graphite-scop-detection.c (scop_detection::merge_sese): Make code match comment, rejecting invalid SESE regions. * gcc.dg/graphite/pr83238.c: New testcase. From-SVN: r255375
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/graphite-scop-detection.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr83238.c39
4 files changed, 51 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0940c18..acde3e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-12-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/83238
+ * graphite-scop-detection.c (scop_detection::merge_sese): Make
+ code match comment, rejecting invalid SESE regions.
+
2017-12-03 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index 0f09c13..3d854a1 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -570,8 +570,7 @@ scop_detection::merge_sese (sese_l first, sese_l second) const
which post-dominates dom, until it stabilizes. Also, ENTRY->SRC and
EXIT->DEST should be in the same loop nest. */
if (!dominated_by_p (CDI_DOMINATORS, pdom, dom)
- || loop_depth (entry->src->loop_father)
- != loop_depth (exit->dest->loop_father))
+ || entry->src->loop_father != exit->dest->loop_father)
return invalid_sese;
/* For now we just bail out when there is a loop exit in the region
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3d7ad8a..d49bbe4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-12-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/83238
+ * gcc.dg/graphite/pr83238.c: New testcase.
+
2017-12-04 Tom de Vries <tom@codesourcery.com>
* gcc.dg/pr82875.c: Require effective target alloca.
diff --git a/gcc/testsuite/gcc.dg/graphite/pr83238.c b/gcc/testsuite/gcc.dg/graphite/pr83238.c
new file mode 100644
index 0000000..4b640f2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr83238.c
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-parallelize-all" } */
+
+void
+vw (int *dk, int zd, int jb)
+{
+ int sq;
+ int *kv = &sq;
+
+ for (sq = 0; sq < 2; ++sq)
+ {
+ int u1;
+
+ for (u1 = 0; u1 < 5; ++u1)
+ if (zd == 0)
+ return;
+ }
+
+ for (;;)
+ {
+ ++zd;
+ if (zd == 0)
+ while (jb != 0)
+ kv = &jb;
+
+ while (*dk < 1)
+ {
+ for (jb = 0; jb < 2; ++jb)
+ {
+ }
+ ++*dk;
+ }
+
+ for (*kv = 0; *kv < 2; ++*kv)
+ for (*dk = 0; *dk < 2; ++*dk)
+ {
+ }
+ }
+}