Commit d9f4ea18 by Jakub Jelinek Committed by Jakub Jelinek

gimplify.c (gimplify_omp_ordered): Fix up diagnostics wording.

	* gimplify.c (gimplify_omp_ordered): Fix up diagnostics
	wording.
	* omp-low.c (check_omp_nesting_restrictions): Update for the
	various new OpenMP 4.5 nesting restrictions, clarified
	nesting glossary, closely nested region relationship clarified
	to mean explicit or implicit parallel regions (target/teams),
	use %</%> or %qs where appropriate.

	* gcc.dg/gomp/ordered-2.c (f1): Expect an extra error.
	* g++.dg/gomp/ordered-2.C (f1): Likewise.
	* gfortran.dg/goacc/parallel-kernels-regions.f95: Adjust
	expected diagnostics for the addition of quotes.
	* gfortran.dg/gomp/target3.f90: Likewise.
	* c-c++-common/goacc/nesting-fail-1.c: Likewise.
	* c-c++-common/goacc-gomp/nesting-fail-1.c: Likewise.
	* c-c++-common/gomp/doacross-1.c: Likewise.
	* c-c++-common/gomp/nesting-warn-1.c: Likewise.
	* c-c++-common/gomp/cancel-1.c (f2): Add some new tests.
	Adjust expected diagnostics wording.
	* c-c++-common/gomp/clauses-4.c (foo): Likewise.
	Don't expect error on ordered threads simd when in for simd.
	* c-c++-common/gomp/nesting-2.c: New test.
	* c-c++-common/gomp/ordered-3.c (foo): Add some new tests.
	* c-c++-common/gomp/ordered-4.c: New test.

From-SVN: r229892
parent 38101f91
2015-11-06 Jakub Jelinek <jakub@redhat.com>
* gimplify.c (gimplify_omp_ordered): Fix up diagnostics
wording.
* omp-low.c (check_omp_nesting_restrictions): Update for the
various new OpenMP 4.5 nesting restrictions, clarified
nesting glossary, closely nested region relationship clarified
to mean explicit or implicit parallel regions (target/teams),
use %</%> or %qs where appropriate.
2015-11-06 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
......@@ -9259,9 +9259,9 @@ gimplify_omp_ordered (tree expr, gimple_seq body)
|| OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%<depend%> clause must be closely nested "
"inside a loop with %<ordered%> clause with "
"a parameter");
"%<ordered%> construct with %<depend%> clause must be "
"closely nested inside a loop with %<ordered%> clause "
"with a parameter");
failures++;
}
else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
......
2015-11-06 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/gomp/ordered-2.c (f1): Expect an extra error.
* g++.dg/gomp/ordered-2.C (f1): Likewise.
* gfortran.dg/goacc/parallel-kernels-regions.f95: Adjust
expected diagnostics for the addition of quotes.
* gfortran.dg/gomp/target3.f90: Likewise.
* c-c++-common/goacc/nesting-fail-1.c: Likewise.
* c-c++-common/goacc-gomp/nesting-fail-1.c: Likewise.
* c-c++-common/gomp/doacross-1.c: Likewise.
* c-c++-common/gomp/nesting-warn-1.c: Likewise.
* c-c++-common/gomp/cancel-1.c (f2): Add some new tests.
Adjust expected diagnostics wording.
* c-c++-common/gomp/clauses-4.c (foo): Likewise.
Don't expect error on ordered threads simd when in for simd.
* c-c++-common/gomp/nesting-2.c: New test.
* c-c++-common/gomp/ordered-3.c (foo): Add some new tests.
* c-c++-common/gomp/ordered-4.c: New test.
2015-11-06 Mike Stump <mikestump@comcast.net>
* gcc.dg/pragma-diag-5.c: Make test cases unique.
......
......@@ -151,15 +151,15 @@ f_omp (void)
#pragma omp target
{
#pragma acc parallel /* { dg-error "OpenACC parallel construct inside of OpenMP target region" } */
#pragma acc parallel /* { dg-error "OpenACC .parallel. construct inside of OpenMP .target. region" } */
;
#pragma acc kernels /* { dg-error "OpenACC kernels construct inside of OpenMP target region" } */
#pragma acc kernels /* { dg-error "OpenACC .kernels. construct inside of OpenMP .target. region" } */
;
#pragma acc data /* { dg-error "OpenACC data construct inside of OpenMP target region" } */
#pragma acc data /* { dg-error "OpenACC .data. construct inside of OpenMP .target. region" } */
;
#pragma acc update host(i) /* { dg-error "OpenACC update construct inside of OpenMP target region" } */
#pragma acc enter data copyin(i) /* { dg-error "OpenACC enter/exit data construct inside of OpenMP target region" } */
#pragma acc exit data delete(i) /* { dg-error "OpenACC enter/exit data construct inside of OpenMP target region" } */
#pragma acc update host(i) /* { dg-error "OpenACC .update. construct inside of OpenMP .target. region" } */
#pragma acc enter data copyin(i) /* { dg-error "OpenACC .enter/exit data. construct inside of OpenMP .target. region" } */
#pragma acc exit data delete(i) /* { dg-error "OpenACC .enter/exit data. construct inside of OpenMP .target. region" } */
#pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
for (i = 0; i < 2; ++i)
;
......
......@@ -7,15 +7,15 @@ f_acc_parallel (void)
{
#pragma acc parallel
{
#pragma acc parallel /* { dg-bogus "parallel construct inside of parallel region" "not implemented" { xfail *-*-* } } */
#pragma acc parallel /* { dg-bogus ".parallel. construct inside of .parallel. region" "not implemented" { xfail *-*-* } } */
;
#pragma acc kernels /* { dg-bogus "kernels construct inside of parallel region" "not implemented" { xfail *-*-* } } */
#pragma acc kernels /* { dg-bogus ".kernels. construct inside of .parallel. region" "not implemented" { xfail *-*-* } } */
;
#pragma acc data /* { dg-error "data construct inside of parallel region" } */
#pragma acc data /* { dg-error ".data. construct inside of .parallel. region" } */
;
#pragma acc update host(i) /* { dg-error "update construct inside of parallel region" } */
#pragma acc enter data copyin(i) /* { dg-error "enter/exit data construct inside of parallel region" } */
#pragma acc exit data delete(i) /* { dg-error "enter/exit data construct inside of parallel region" } */
#pragma acc update host(i) /* { dg-error ".update. construct inside of .parallel. region" } */
#pragma acc enter data copyin(i) /* { dg-error ".enter/exit data. construct inside of .parallel. region" } */
#pragma acc exit data delete(i) /* { dg-error ".enter/exit data. construct inside of .parallel. region" } */
}
}
......@@ -26,14 +26,14 @@ f_acc_kernels (void)
{
#pragma acc kernels
{
#pragma acc parallel /* { dg-bogus "parallel construct inside of kernels region" "not implemented" { xfail *-*-* } } */
#pragma acc parallel /* { dg-bogus ".parallel. construct inside of .kernels. region" "not implemented" { xfail *-*-* } } */
;
#pragma acc kernels /* { dg-bogus "kernels construct inside of kernels region" "not implemented" { xfail *-*-* } } */
#pragma acc kernels /* { dg-bogus ".kernels. construct inside of .kernels. region" "not implemented" { xfail *-*-* } } */
;
#pragma acc data /* { dg-error "data construct inside of kernels region" } */
#pragma acc data /* { dg-error ".data. construct inside of .kernels. region" } */
;
#pragma acc update host(i) /* { dg-error "update construct inside of kernels region" } */
#pragma acc enter data copyin(i) /* { dg-error "enter/exit data construct inside of kernels region" } */
#pragma acc exit data delete(i) /* { dg-error "enter/exit data construct inside of kernels region" } */
#pragma acc update host(i) /* { dg-error ".update. construct inside of .kernels. region" } */
#pragma acc enter data copyin(i) /* { dg-error ".enter/exit data. construct inside of .kernels. region" } */
#pragma acc exit data delete(i) /* { dg-error ".enter/exit data. construct inside of .kernels. region" } */
}
}
......@@ -77,12 +77,73 @@ f2 (void)
#pragma omp cancel parallel /* { dg-error "not closely nested inside" } */
#pragma omp cancel for /* { dg-error "not closely nested inside" } */
#pragma omp cancel sections /* { dg-error "not closely nested inside" } */
#pragma omp cancel taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
#pragma omp cancellation point parallel /* { dg-error "not closely nested inside" } */
#pragma omp cancellation point for /* { dg-error "not closely nested inside" } */
#pragma omp cancellation point sections /* { dg-error "not closely nested inside" } */
#pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
}
#pragma omp taskgroup
#pragma omp task
{
#pragma omp cancel parallel /* { dg-error "not closely nested inside" } */
#pragma omp cancel for /* { dg-error "not closely nested inside" } */
#pragma omp cancel sections /* { dg-error "not closely nested inside" } */
#pragma omp cancel taskgroup
#pragma omp cancellation point parallel /* { dg-error "not closely nested inside" } */
#pragma omp cancellation point for /* { dg-error "not closely nested inside" } */
#pragma omp cancellation point sections /* { dg-error "not closely nested inside" } */
#pragma omp cancellation point taskgroup
}
#pragma omp taskgroup
{
#pragma omp task
{
#pragma omp task
{
#pragma omp cancellation point taskgroup
#pragma omp cancel taskgroup
}
}
}
#pragma omp taskgroup
{
#pragma omp parallel
{
#pragma omp task
{
#pragma omp cancel taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
#pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
}
}
#pragma omp target
{
#pragma omp task
{
#pragma omp cancel taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
#pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
}
}
#pragma omp target
#pragma omp teams
#pragma omp distribute
for (i = 0; i < 10; i++)
{
#pragma omp task
{
#pragma omp cancel taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
#pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
}
}
#pragma omp target data map(i)
{
#pragma omp task
{
#pragma omp cancel taskgroup
#pragma omp cancellation point taskgroup
}
}
}
#pragma omp for
for (i = 0; i < 10; i++)
{
......@@ -179,14 +240,14 @@ f2 (void)
}
#pragma omp target teams
{
#pragma omp cancel parallel /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancel for /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancel sections /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancel taskgroup /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancellation point parallel /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancellation point for /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancellation point sections /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancellation point taskgroup /* { dg-error "only distribute or parallel constructs are allowed to be closely nested" } */
#pragma omp cancel parallel /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancel for /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancel sections /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancel taskgroup /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancellation point parallel /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancellation point for /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancellation point sections /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
#pragma omp cancellation point taskgroup /* { dg-error "only .distribute. or .parallel. regions are allowed to be strictly nested" } */
}
#pragma omp target teams distribute
for (i = 0; i < 10; i++)
......
......@@ -57,40 +57,62 @@ foo (int y, short z)
#pragma omp distribute parallel for ordered /* { dg-error ".ordered. is not valid for .#pragma omp distribute parallel for." } */
for (x = 0; x < 64; x++)
{
#pragma omp ordered /* { dg-error "ordered region must be closely nested inside a loop region with an ordered clause" } */
#pragma omp ordered /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
}
#pragma omp target teams
#pragma omp distribute parallel for simd ordered /* { dg-error ".ordered. is not valid for .#pragma omp distribute parallel for simd." } */
for (x = 0; x < 64; x++)
{
#pragma omp ordered simd, threads /* { dg-error "OpenMP constructs other than .#pragma omp ordered simd. may not be nested inside simd region" } */
#pragma omp ordered simd, threads
;
}
#pragma omp target
#pragma omp teams distribute parallel for ordered /* { dg-error ".ordered. is not valid for .#pragma omp teams distribute parallel for." } */
for (x = 0; x < 64; x++)
{
#pragma omp ordered /* { dg-error "ordered region must be closely nested inside a loop region with an ordered clause" } */
#pragma omp ordered /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
}
#pragma omp target
#pragma omp teams distribute parallel for simd ordered /* { dg-error ".ordered. is not valid for .#pragma omp teams distribute parallel for simd." } */
for (x = 0; x < 64; x++)
{
#pragma omp ordered simd, threads /* { dg-error "OpenMP constructs other than .#pragma omp ordered simd. may not be nested inside simd region" } */
#pragma omp ordered simd, threads
;
}
#pragma omp target teams distribute parallel for ordered /* { dg-error ".ordered. is not valid for .#pragma omp target teams distribute parallel for." } */
for (x = 0; x < 64; x++)
{
#pragma omp ordered /* { dg-error "ordered region must be closely nested inside a loop region with an ordered clause" } */
#pragma omp ordered /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
}
#pragma omp target teams distribute parallel for simd ordered /* { dg-error ".ordered. is not valid for .#pragma omp target teams distribute parallel for simd." } */
for (x = 0; x < 64; x++)
{
#pragma omp ordered simd, threads /* { dg-error "OpenMP constructs other than .#pragma omp ordered simd. may not be nested inside simd region" } */
#pragma omp ordered simd, threads
;
}
#pragma omp simd
for (x = 0; x < 64; x++)
{
#pragma omp ordered threads simd /* { dg-error ".ordered simd threads. must be closely nested inside of .for simd. region" } */
;
}
#pragma omp for
for (x = 0; x < 64; x++)
{
#pragma omp simd
for (y = 0; y < 16; y++)
{
#pragma omp ordered simd threads /* { dg-error ".ordered simd threads. must be closely nested inside of .for simd. region" } */
;
}
}
#pragma omp for simd
for (x = 0; x < 64; x++)
{
#pragma omp ordered threads simd
;
}
}
......@@ -32,8 +32,8 @@ foo (void)
#pragma omp ordered depend (sink: i - 1, j - 2) /* { dg-error "does not match number" } */
#pragma omp ordered depend (source)
}
#pragma omp ordered depend (sink: j) /* { dg-error "clause must be closely nested inside an ordered loop" } */
#pragma omp ordered depend (source) /* { dg-error "clause must be closely nested inside an ordered loop" } */
#pragma omp ordered depend (sink: j) /* { dg-error "clause must be closely nested inside an .ordered. loop" } */
#pragma omp ordered depend (source) /* { dg-error "clause must be closely nested inside an .ordered. loop" } */
#pragma omp for ordered (1)
for (i = 0; i < 64; i++)
{
......
void
foo (void)
{
int i;
#pragma omp taskloop
for (i = 0; i < 64; i++)
{
int j;
#pragma omp for /* { dg-error "region may not be closely nested inside of" } */
for (j = 0; j < 10; j++)
;
#pragma omp single /* { dg-error "region may not be closely nested inside of" } */
;
#pragma omp sections /* { dg-error "region may not be closely nested inside of" } */
{
#pragma omp section
;
}
#pragma omp barrier /* { dg-error "region may not be closely nested inside of" } */
#pragma omp master /* { dg-error "region may not be closely nested inside of" } */
;
#pragma omp ordered /* { dg-error "region may not be closely nested inside of" } */
;
#pragma omp ordered threads /* { dg-error "region may not be closely nested inside of" } */
;
#pragma omp ordered simd threads /* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
;
#pragma omp simd
for (j = 0; j < 10; j++)
#pragma omp ordered simd
;
#pragma omp critical
{
#pragma omp simd
for (j = 0; j < 10; j++)
#pragma omp ordered simd
;
}
}
#pragma omp taskloop
for (i = 0; i < 64; i++)
#pragma omp parallel
{
int j;
#pragma omp for
for (j = 0; j < 10; j++)
;
#pragma omp single
;
#pragma omp sections
{
#pragma omp section
;
}
#pragma omp barrier
#pragma omp master
;
#pragma omp ordered /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
#pragma omp ordered threads /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
#pragma omp simd
for (j = 0; j < 10; j++)
#pragma omp ordered simd
;
#pragma omp critical
{
#pragma omp simd
for (j = 0; j < 10; j++)
#pragma omp ordered simd
;
}
}
#pragma omp taskloop
for (i = 0; i < 64; i++)
#pragma omp target
{
int j;
#pragma omp for
for (j = 0; j < 10; j++)
;
#pragma omp single
;
#pragma omp sections
{
#pragma omp section
;
}
#pragma omp barrier
#pragma omp master
;
#pragma omp ordered /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
#pragma omp ordered threads /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
#pragma omp simd
for (j = 0; j < 10; j++)
#pragma omp ordered simd
;
#pragma omp critical
{
#pragma omp simd
for (j = 0; j < 10; j++)
#pragma omp ordered simd
;
}
}
#pragma omp ordered
{
#pragma omp ordered /* { dg-error "region may not be closely nested inside of" } */
;
}
#pragma omp ordered threads
{
#pragma omp ordered /* { dg-error "region may not be closely nested inside of" } */
;
}
#pragma omp ordered
{
#pragma omp ordered threads /* { dg-error "region may not be closely nested inside of" } */
;
}
#pragma omp ordered threads
{
#pragma omp ordered threads /* { dg-error "region may not be closely nested inside of" } */
;
}
#pragma omp critical
{
#pragma omp ordered simd /* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
;
}
#pragma omp for ordered
for (i = 0; i < 64; i++)
#pragma omp parallel
{
#pragma omp ordered threads /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
}
#pragma omp for ordered
for (i = 0; i < 64; i++)
#pragma omp parallel
{
#pragma omp ordered /* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
;
}
#pragma omp for ordered(1)
for (i = 0; i < 64; i++)
#pragma omp parallel
{
#pragma omp ordered depend(source) /* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
#pragma omp ordered depend(sink: i - 1) /* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
}
}
......@@ -5,19 +5,19 @@ f_omp_target (void)
{
#pragma omp target
{
#pragma omp target /* { dg-warning "target construct inside of target region" } */
#pragma omp target /* { dg-warning ".target. construct inside of .target. region" } */
;
#pragma omp target data map(i) /* { dg-warning "target data construct inside of target region" } */
#pragma omp target data map(i) /* { dg-warning ".target data. construct inside of .target. region" } */
;
#pragma omp target update to(i) /* { dg-warning "target update construct inside of target region" } */
#pragma omp target update to(i) /* { dg-warning ".target update. construct inside of .target. region" } */
#pragma omp parallel
{
#pragma omp target /* { dg-warning "target construct inside of target region" } */
#pragma omp target /* { dg-warning ".target. construct inside of .target. region" } */
;
#pragma omp target data map(i) /* { dg-warning "target data construct inside of target region" } */
#pragma omp target data map(i) /* { dg-warning ".target data. construct inside of .target. region" } */
;
#pragma omp target update to(i) /* { dg-warning "target update construct inside of target region" } */
#pragma omp target update to(i) /* { dg-warning ".target update. construct inside of .target. region" } */
}
}
}
......@@ -59,6 +59,18 @@ foo (void)
#pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
#pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
}
#pragma omp parallel for ordered
for (i = 0; i < 64; i++)
{
#pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
#pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
}
#pragma omp parallel for
for (i = 0; i < 64; i++)
{
#pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
#pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
}
}
void
......
void
f1 (void)
{
int i, j;
#pragma omp critical
{
#pragma omp simd
for (i = 0; i < 64; i++)
{
#pragma omp ordered simd
;
}
}
#pragma omp ordered threads
{
#pragma omp simd
for (i = 0; i < 64; i++)
{
#pragma omp ordered simd
;
}
}
#pragma omp task
{
#pragma omp simd
for (i = 0; i < 64; i++)
{
#pragma omp ordered simd
;
}
}
#pragma omp taskloop
for (j = 0; j < 64; j++)
#pragma omp simd
for (i = 0; i < 64; i++)
{
#pragma omp ordered simd
;
}
}
void
f2 (void)
{
#pragma omp ordered simd
;
}
void
f3 (void)
{
#pragma omp ordered threads , simd
;
}
......@@ -3,5 +3,5 @@
void f1(void)
{
#pragma omp ordered asdf /* { dg-error "expected" } */
#pragma omp ordered
#pragma omp ordered /* { dg-error "region may not be closely nested inside of" } */
} /* { dg-error "expected" } */
......@@ -3,5 +3,5 @@
void f1(void)
{
#pragma omp ordered asdf /* { dg-error "expected" } */
#pragma omp ordered
#pragma omp ordered /* { dg-error "region may not be closely nested inside of" } */
} /* { dg-error "expected expression" } */
......@@ -9,46 +9,46 @@ program test
integer :: i
!$acc parallel
!$acc kernels ! { dg-bogus "kernels construct inside of parallel region" "not implemented" { xfail *-*-* } }
!$acc kernels ! { dg-bogus ".kernels. construct inside of .parallel. region" "not implemented" { xfail *-*-* } }
!$acc end kernels
!$acc end parallel
!$acc parallel
!$acc parallel ! { dg-bogus "parallel construct inside of parallel region" "not implemented" { xfail *-*-* } }
!$acc parallel ! { dg-bogus ".parallel. construct inside of .parallel. region" "not implemented" { xfail *-*-* } }
!$acc end parallel
!$acc end parallel
!$acc parallel
!$acc parallel ! { dg-bogus "parallel construct inside of parallel region" "not implemented" { xfail *-*-* } }
!$acc parallel ! { dg-bogus ".parallel. construct inside of .parallel. region" "not implemented" { xfail *-*-* } }
!$acc end parallel
!$acc kernels ! { dg-bogus "kernels construct inside of parallel region" "not implemented" { xfail *-*-* } }
!$acc kernels ! { dg-bogus ".kernels. construct inside of .parallel. region" "not implemented" { xfail *-*-* } }
!$acc end kernels
!$acc end parallel
!$acc kernels
!$acc kernels ! { dg-bogus "kernels construct inside of kernels region" "not implemented" { xfail *-*-* } }
!$acc kernels ! { dg-bogus ".kernels. construct inside of .kernels. region" "not implemented" { xfail *-*-* } }
!$acc end kernels
!$acc end kernels
!$acc kernels
!$acc parallel ! { dg-bogus "parallel construct inside of kernels region" "not implemented" { xfail *-*-* } }
!$acc parallel ! { dg-bogus ".parallel. construct inside of .kernels. region" "not implemented" { xfail *-*-* } }
!$acc end parallel
!$acc end kernels
!$acc kernels
!$acc parallel ! { dg-bogus "parallel construct inside of kernels region" "not implemented" { xfail *-*-* } }
!$acc parallel ! { dg-bogus ".parallel. construct inside of .kernels. region" "not implemented" { xfail *-*-* } }
!$acc end parallel
!$acc kernels ! { dg-bogus "kernels construct inside of kernels region" "not implemented" { xfail *-*-* } }
!$acc kernels ! { dg-bogus ".kernels. construct inside of .kernels. region" "not implemented" { xfail *-*-* } }
!$acc end kernels
!$acc end kernels
!$acc parallel
!$acc data ! { dg-error "data construct inside of parallel region" }
!$acc data ! { dg-error ".data. construct inside of .parallel. region" }
!$acc end data
!$acc end parallel
!$acc kernels
!$acc data ! { dg-error "data construct inside of kernels region" }
!$acc data ! { dg-error ".data. construct inside of .kernels. region" }
!$acc end data
!$acc end kernels
......
......@@ -4,7 +4,7 @@
subroutine foo (r)
integer :: i, r
!$omp target
!$omp target teams distribute parallel do reduction (+: r) ! { dg-warning "target construct inside of target region" }
!$omp target teams distribute parallel do reduction (+: r) ! { dg-warning ".target. construct inside of .target. region" }
do i = 1, 10
r = r + 1
end do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment