re PR libgomp/80394 (Empty OpenMP task is wrongly removed when optimizing)
PR libgomp/80394 * omp-low.c (scan_omp_task): Don't optimize away empty tasks if they have any depend clauses. * testsuite/libgomp.c/pr80394.c: New test. From-SVN: r246849
This commit is contained in:
parent
c6cf6ef7c0
commit
fbc698e0f4
@ -1,3 +1,9 @@
|
|||||||
|
2017-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR libgomp/80394
|
||||||
|
* omp-low.c (scan_omp_task): Don't optimize away empty tasks
|
||||||
|
if they have any depend clauses.
|
||||||
|
|
||||||
2017-04-11 Martin Liska <mliska@suse.cz>
|
2017-04-11 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
PR ipa/80212
|
PR ipa/80212
|
||||||
|
@ -1857,9 +1857,11 @@ scan_omp_task (gimple_stmt_iterator *gsi, omp_context *outer_ctx)
|
|||||||
tree name, t;
|
tree name, t;
|
||||||
gomp_task *stmt = as_a <gomp_task *> (gsi_stmt (*gsi));
|
gomp_task *stmt = as_a <gomp_task *> (gsi_stmt (*gsi));
|
||||||
|
|
||||||
/* Ignore task directives with empty bodies. */
|
/* Ignore task directives with empty bodies, unless they have depend
|
||||||
|
clause. */
|
||||||
if (optimize > 0
|
if (optimize > 0
|
||||||
&& empty_body_p (gimple_omp_body (stmt)))
|
&& empty_body_p (gimple_omp_body (stmt))
|
||||||
|
&& !omp_find_clause (gimple_omp_task_clauses (stmt), OMP_CLAUSE_DEPEND))
|
||||||
{
|
{
|
||||||
gsi_replace (gsi, gimple_build_nop (), false);
|
gsi_replace (gsi, gimple_build_nop (), false);
|
||||||
return;
|
return;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2017-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR libgomp/80394
|
||||||
|
* testsuite/libgomp.c/pr80394.c: New test.
|
||||||
|
|
||||||
2017-04-04 Jakub Jelinek <jakub@redhat.com>
|
2017-04-04 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR libgomp/79876
|
PR libgomp/79876
|
||||||
|
22
libgomp/testsuite/libgomp.c/pr80394.c
Normal file
22
libgomp/testsuite/libgomp.c/pr80394.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* PR libgomp/80394 */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
int x = 0;
|
||||||
|
#pragma omp parallel shared(x)
|
||||||
|
#pragma omp single
|
||||||
|
{
|
||||||
|
#pragma omp task depend(inout: x)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 100000; i++)
|
||||||
|
asm volatile ("" : : : "memory");
|
||||||
|
x += 5;
|
||||||
|
}
|
||||||
|
#pragma omp task if (0) depend(inout: x)
|
||||||
|
;
|
||||||
|
if (x != 5)
|
||||||
|
__builtin_abort ();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user