182190f2b3
gcc/ * gcc/gimplify.c (enum omp_region_type): Add ORT_ACC, ORT_ACC_DATA, ORT_ACC_PARALLEL, ORT_ACC_KERNELS. Adjust ORT_NONE. (gimple_add_tmp_var): Add ORT_ACC checks. (gimplify_var_or_parm_decl): Likewise. (omp_firstprivatize_variable): Likewise. Use ORT_TARGET_DATA as a mask. (omp_add_variable): Look in outer contexts for openacc and allow reductions with other sharing. Add ORT_ACC and ORT_TARGET_DATA checks. (omp_notice_variable, omp_is_private, omp_check_private): Add ORT_ACC checks. (gimplify_scan_omp_clauses: Treat ORT_ACC as ORT_WORKSHARE. Permit private openacc reductions. (gimplify_oacc_cache): Specify ORT_ACC. (gimplify_omp_workshare): Adjust OpenACC region types. (gimplify_omp_target_update): Likewise. * gcc/omp-low.c (scan_sharing_clauses): Remove Openacc firstprivate sorry. (lower-rec_input_clauses): Don't handle openacc firstprivate references here. (lower_omp_target): Emit initializers for openacc firstprivate vars. gcc/testsuite/ * gfortran.dg/goacc/private-3.f95: Remove xfail. * gfortran.dg/goacc/combined_loop.f90: Remove xfail. libgomp/ * testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c: Remove xfail. * testsuite/libgomp.oacc-c-c++-common/loop-red-w-2.c: Remove xfail. * testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: New. * testsuite/libgomp.oacc-c-c++-common/firstprivate-2.c: New. Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com> From-SVN: r230169
32 lines
355 B
C
32 lines
355 B
C
/* { dg-do run } */
|
|
|
|
#include <openacc.h>
|
|
|
|
int main ()
|
|
{
|
|
int ok = 1;
|
|
int val = 2;
|
|
|
|
#pragma acc data copy(val)
|
|
{
|
|
#pragma acc parallel present (val)
|
|
{
|
|
val = 7;
|
|
}
|
|
|
|
#pragma acc parallel firstprivate (val) copy(ok)
|
|
{
|
|
ok = val == 7;
|
|
val = 9;
|
|
}
|
|
|
|
}
|
|
|
|
if (!ok)
|
|
return 1;
|
|
if(val != 7)
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|