omp-expand.c (expand_omp_for_static_nochunk, [...]): For nowait worksharing loop with conditional lastprivate clause(s)...
* omp-expand.c (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): For nowait worksharing loop with conditional lastprivate clause(s), emit GOMP_loop_end_nowait call at the end. * c-c++-common/gomp/lastprivate-conditional-5.c: New test. From-SVN: r272956
This commit is contained in:
parent
61a02d1e97
commit
1a39b3d3e2
|
@ -1,3 +1,10 @@
|
|||
2019-07-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* omp-expand.c (expand_omp_for_static_nochunk,
|
||||
expand_omp_for_static_chunk): For nowait worksharing loop with
|
||||
conditional lastprivate clause(s), emit GOMP_loop_end_nowait call
|
||||
at the end.
|
||||
|
||||
2019-07-02 Joern Rennecke <joern.rennecke@riscy-ip.com>
|
||||
|
||||
PR testsuite/91065
|
||||
|
|
|
@ -4039,6 +4039,12 @@ expand_omp_for_static_nochunk (struct omp_region *region,
|
|||
else
|
||||
gsi_insert_after (&gsi, omp_build_barrier (t), GSI_SAME_STMT);
|
||||
}
|
||||
else if (fd->have_pointer_condtemp)
|
||||
{
|
||||
tree fn = builtin_decl_explicit (BUILT_IN_GOMP_LOOP_END_NOWAIT);
|
||||
gcall *g = gimple_build_call (fn, 0);
|
||||
gsi_insert_after (&gsi, g, GSI_SAME_STMT);
|
||||
}
|
||||
gsi_remove (&gsi, true);
|
||||
|
||||
/* Connect all the blocks. */
|
||||
|
@ -4696,6 +4702,12 @@ expand_omp_for_static_chunk (struct omp_region *region,
|
|||
else
|
||||
gsi_insert_after (&gsi, omp_build_barrier (t), GSI_SAME_STMT);
|
||||
}
|
||||
else if (fd->have_pointer_condtemp)
|
||||
{
|
||||
tree fn = builtin_decl_explicit (BUILT_IN_GOMP_LOOP_END_NOWAIT);
|
||||
gcall *g = gimple_build_call (fn, 0);
|
||||
gsi_insert_after (&gsi, g, GSI_SAME_STMT);
|
||||
}
|
||||
gsi_remove (&gsi, true);
|
||||
|
||||
/* Connect the new blocks. */
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2019-07-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* c-c++-common/gomp/lastprivate-conditional-5.c: New test.
|
||||
|
||||
2019-07-02 Jeff Law <law@redhat.com>
|
||||
|
||||
PR tree-optimization/90883
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fopenmp -fdump-tree-ompexp" } */
|
||||
/* { dg-final { scan-tree-dump-times "GOMP_loop_start " 3 "ompexp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "GOMP_loop_end_nowait " 3 "ompexp" } } */
|
||||
|
||||
int r;
|
||||
|
||||
void
|
||||
foo (int *a)
|
||||
{
|
||||
#pragma omp for nowait lastprivate(conditional: r)
|
||||
for (int i = 0; i < 64; ++i)
|
||||
if (a[i])
|
||||
r = a[i];
|
||||
}
|
||||
|
||||
void
|
||||
bar (int *a)
|
||||
{
|
||||
#pragma omp for nowait lastprivate(conditional: r) schedule (static, 4)
|
||||
for (int i = 0; i < 64; ++i)
|
||||
if (a[i])
|
||||
r = a[i];
|
||||
}
|
||||
|
||||
void
|
||||
baz (int *a)
|
||||
{
|
||||
#pragma omp for nowait lastprivate(conditional: r) schedule (runtime)
|
||||
for (int i = 0; i < 64; ++i)
|
||||
if (a[i])
|
||||
r = a[i];
|
||||
}
|
Loading…
Reference in New Issue