diff options
author | Richard Biener <rguenther@suse.de> | 2019-05-27 13:18:12 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-05-27 13:18:12 +0000 |
commit | d6b3654a9ace038ddce90f4c671d5edb4b3479e2 (patch) | |
tree | ff722ceb0a8686663c2c53e072b347aa228abcbb /gcc | |
parent | 8da3776f936b487f5bdf94f372890c3f13604021 (diff) | |
download | gcc-d6b3654a9ace038ddce90f4c671d5edb4b3479e2.zip gcc-d6b3654a9ace038ddce90f4c671d5edb4b3479e2.tar.gz gcc-d6b3654a9ace038ddce90f4c671d5edb4b3479e2.tar.bz2 |
re PR tree-optimization/90637 (ICE in vect_loop_versioning, at tree-vect-loop-manip.c:3055)
2019-05-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/90637
* tree-ssa-sink.c (statement_sink_location): Honor the
computed sink location for single-uses.
* gcc.dg/gomp/pr90637.c: New testcase.
From-SVN: r271661
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/pr90637.c | 14 | ||||
-rw-r--r-- | gcc/tree-ssa-sink.c | 5 |
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ec30909..a7a941e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2019-05-27 Richard Biener <rguenther@suse.de> + PR tree-optimization/90637 + * tree-ssa-sink.c (statement_sink_location): Honor the + computed sink location for single-uses. + +2019-05-27 Richard Biener <rguenther@suse.de> + PR middle-end/90610 * match.pd (vec_perm): Avoid clobbering op0 when not generating a bit-insert. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2884de1..de15705 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-05-27 Richard Biener <rguenther@suse.de> + + PR tree-optimization/90637 + * gcc.dg/gomp/pr90637.c: New testcase. + 2019-05-27 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/expect2.adb: New test. diff --git a/gcc/testsuite/gcc.dg/gomp/pr90637.c b/gcc/testsuite/gcc.dg/gomp/pr90637.c new file mode 100644 index 0000000..983e03e --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/pr90637.c @@ -0,0 +1,14 @@ +/* PR tree-optimization/90637 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -O1 --param sink-frequency-threshold=90" } */ + +int v; + +void +foo (int c) +{ + int i; +#pragma omp for simd if (c) lastprivate (v) schedule (static, 16) + for (i = 0; i < 64; ++i) + v = i; +} diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index 77abe3a..67dc127 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -439,7 +439,10 @@ statement_sink_location (gimple *stmt, basic_block frombb, if (sinkbb == frombb) return false; - *togsi = gsi_for_stmt (use); + if (sinkbb == gimple_bb (use)) + *togsi = gsi_for_stmt (use); + else + *togsi = gsi_after_labels (sinkbb); return true; } |