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
This commit is contained in:
Richard Biener 2019-05-27 13:18:12 +00:00 committed by Richard Biener
parent 8da3776f93
commit d6b3654a9a
4 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,9 @@
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

View File

@ -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.

View File

@ -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;
}

View File

@ -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;
}