aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-01-23 08:00:20 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-01-23 08:00:20 +0000
commit950d1cd9ba49d2420f77ae0bc04be4fd6d0d009e (patch)
treef54b90b6860670d786d683501d9873f5e67ee274 /gcc
parent2e73a89bc9a73ef83b7b87fb65b8293c0ae8b693 (diff)
downloadgcc-950d1cd9ba49d2420f77ae0bc04be4fd6d0d009e.zip
gcc-950d1cd9ba49d2420f77ae0bc04be4fd6d0d009e.tar.gz
gcc-950d1cd9ba49d2420f77ae0bc04be4fd6d0d009e.tar.bz2
re PR tree-optimization/83963 ([graphite] ICE in merge_sese, at graphite-scop-detection.c:517)
2018-01-23 Richard Biener <rguenther@suse.de> PR tree-optimization/83963 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): Properly terminate dominator walk when crossing the exit edge not when visiting its source block. * gfortran.dg/graphite/pr83963.f: New testcase. * gcc.dg/graphite/pr83963-2.c: Likewise. From-SVN: r256973
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/graphite-scop-detection.c8
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr83963-2.c26
-rw-r--r--gcc/testsuite/gfortran.dg/graphite/pr83963.f18
5 files changed, 61 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a1307e3..f3fb04f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-01-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/83963
+ * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
+ Properly terminate dominator walk when crossing the exit edge not
+ when visiting its source block.
+
2018-01-23 Jakub Jelinek <jakub@redhat.com>
PR c++/83918
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index 6f407e1..15559ae 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -677,10 +677,10 @@ scop_detection::harmful_loop_in_region (sese_l scop) const
if (!stmt_simple_for_scop_p (scop, gsi_stmt (gsi), bb))
return true;
- if (bb != exit_bb)
- for (basic_block dom = first_dom_son (CDI_DOMINATORS, bb);
- dom;
- dom = next_dom_son (CDI_DOMINATORS, dom))
+ for (basic_block dom = first_dom_son (CDI_DOMINATORS, bb);
+ dom;
+ dom = next_dom_son (CDI_DOMINATORS, dom))
+ if (dom != scop.exit->dest)
worklist.safe_push (dom);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d22af7a..760422a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/83963
+ * gfortran.dg/graphite/pr83963.f: New testcase.
+ * gcc.dg/graphite/pr83963-2.c: Likewise.
+
2018-01-23 Jakub Jelinek <jakub@redhat.com>
PR c++/83918
diff --git a/gcc/testsuite/gcc.dg/graphite/pr83963-2.c b/gcc/testsuite/gcc.dg/graphite/pr83963-2.c
new file mode 100644
index 0000000..56a279c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr83963-2.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O -floop-nest-optimize" } */
+
+int Chv_countBigEntries (int npivot, int pivotsizes[], int countflag,
+ double droptol, int nD)
+{
+ double absval ;
+ double *entries ;
+ int count;
+ int ii, jj, kinc, kk, kstart, stride ;
+ for ( ii = 0 ; ii < nD ; ii++ )
+ {
+ kk = kstart ;
+ kinc = stride ;
+ for ( jj = 0 ; jj < ii ; jj++ )
+ {
+ absval = __builtin_fabs(entries[kk]) ;
+ if ( absval >= droptol )
+ count++ ;
+ kk += kinc ;
+ kinc -= 2 ;
+ }
+ kstart-- ;
+ }
+ return count;
+}
diff --git a/gcc/testsuite/gfortran.dg/graphite/pr83963.f b/gcc/testsuite/gfortran.dg/graphite/pr83963.f
new file mode 100644
index 0000000..4e64102
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/graphite/pr83963.f
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! { dg-options "-O -floop-nest-optimize" }
+
+ SUBROUTINE DAVCI(NORB,NCOR,NCI,NA,NB,
+ * CI,MAXP,MAXW1,
+ * IHMCON,ISTRB,ISTRP,ISTAR,II)
+ DIMENSION EC(MAXP,MAXP),IWRK1(2*MAXW1)
+ EC(II,II) = 1.0D+00
+ DO 1396 II=1,MAXP
+ DO 1398 JJ=1,II-1
+ EC(II,JJ) = 0.0D+00
+ 1398 CONTINUE
+ 1396 CONTINUE
+ IF (NA.EQ.NB) THEN
+ CALL RINAB0(SI1,SI2,NORB,NCOR,NCI,NA,NB,CI(1,IP),IACON1,IBCON1,
+ * IWRK1,IHMCON,ISTRB,ISTRP,ISTAR)
+ ENDIF
+ END