diff options
author | Richard Biener <rguenther@suse.de> | 2017-12-04 08:26:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-12-04 08:26:18 +0000 |
commit | 5d66d3f151eab82a39fc89b6f0b973b529f6b3cb (patch) | |
tree | cedb6d1ccfdc6069517ce5037708ed64e7b2c6fc /gcc | |
parent | b6ecbf313bff50f4f6d3ea645cddc0a9976eb623 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/graphite-scop-detection.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/pr83238.c | 39 |
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) + { + } + } +} |