aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-11-20 12:18:58 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-11-20 12:18:58 +0000
commitc1d21cd17bce162e7afac5a1849d193952221ce8 (patch)
tree863cd0e7dcc110deef48aa27676d296ec8b95768 /gcc
parentb613740815fa921b1210f87aed3d01a00a59e8bf (diff)
downloadgcc-c1d21cd17bce162e7afac5a1849d193952221ce8.zip
gcc-c1d21cd17bce162e7afac5a1849d193952221ce8.tar.gz
gcc-c1d21cd17bce162e7afac5a1849d193952221ce8.tar.bz2
re PR tree-optimization/88074 (g++ hangs on math expression)
2018-11-20 Richard Biener <rguenther@suse.de> PR tree-optimization/88074 * tree-ssa-dom.c (pass_dominator::execute): Do not walk backedges. * gcc.dg/pr88074.c: New testcase. From-SVN: r266313
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr88105.c30
-rw-r--r--gcc/tree-ssa-dom.c3
4 files changed, 43 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9cf7bb1..45c7b75 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2018-11-20 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/88074
+ * tree-ssa-dom.c (pass_dominator::execute): Do not walk
+ backedges.
+
+2018-11-20 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/88069
* tree-ssa-sccvn.c (visit_phi): Do not value-number to unvisited
virtual PHI arguments.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 00475b8..32c0f3d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/88074
+ * gcc.dg/pr88074.c: New testcase.
+
2018-11-20 Martin Liska <mliska@suse.cz>
* pr57362.C: Move to g++.target/i386 folder.
diff --git a/gcc/testsuite/gcc.dg/gomp/pr88105.c b/gcc/testsuite/gcc.dg/gomp/pr88105.c
new file mode 100644
index 0000000..9680fdd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr88105.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -O -fexceptions -fnon-call-exceptions -fno-tree-fre" } */
+
+int
+s0 (void)
+{
+ int g6, oh = 0;
+ int *a6 = &g6;
+
+ (void) a6;
+
+#pragma omp parallel for
+ for (g6 = 0; g6 < 1; ++g6)
+ {
+ int zk;
+
+ for (zk = 0; zk < 1; ++zk)
+ {
+ oh += zk / (zk + 1);
+
+ for (;;)
+ {
+ }
+ }
+
+ a6 = &zk;
+ }
+
+ return oh;
+}
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index c50618d..7787da8 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -777,7 +777,8 @@ pass_dominator::execute (function *fun)
if (bb == NULL)
continue;
while (single_succ_p (bb)
- && (single_succ_edge (bb)->flags & EDGE_EH) == 0)
+ && (single_succ_edge (bb)->flags
+ & (EDGE_EH|EDGE_DFS_BACK)) == 0)
bb = single_succ (bb);
if (bb == EXIT_BLOCK_PTR_FOR_FN (fun))
continue;