Hi! The attached patch adds additional tests for the OpenACC default clause.
Committed to gomp-4_0-branch Jim
diff --git a/gcc/testsuite/c-c++-common/goacc/default-1.c b/gcc/testsuite/c-c++-common/goacc/default-1.c new file mode 100644 index 0000000..41757f1 --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/default-1.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ + +#include <stdlib.h> + +int +main (int argc, char **argv) +{ + float a, b; + + a = 2.0; + b = 0.0; + +#pragma acc parallel default (shared) /* { dg-error "expected 'none'" } */ + /* { dg-error "expected '\\\)'" "" { target c++ } 13 } */ + { + b = a; + a = 1.0; + a = a + b; + } + +#pragma acc parallel default (none) /* { dg-error "enclosing OpenACC parallel" } */ + { + b = a; /* { dg-error "in enclosing OpenACC parallel construct" } */ + a = 1.0; + a = a + b; + } + +#pragma acc parallel create (b) default (none) /* { dg-error "enclosing OpenACC parallel" } */ + { + b = a; /* { dg-error "in enclosing OpenACC parallel construct" } */ + a = 1.0; + a = a + b; + } + +#pragma acc kernels default (none) /* { dg-error "enclosing OpenACC kernels" } */ + { + b = a; /* { dg-error "in enclosing OpenACC kernels construct" } */ + a = 1.0; + a = a + b; + } + +#pragma acc kernels create (b) default (none) /* { dg-error "enclosing OpenACC kernels construct" } */ + { + b = a; /* { dg-error "in enclosing OpenACC kernels construct" } */ + a = 1.0; + a = a + b; + } + +#pragma acc kernels copy (a) create (b) default () /* { dg-error "expected 'none'" } */ + { + b = a; + a = 1.0; + a = a + b; + } + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c new file mode 100644 index 0000000..0d75f49 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c @@ -0,0 +1,64 @@ +/* { dg-do run } */ + +#include <stdlib.h> + +int +main (int argc, char **argv) +{ + float a, b; + + a = 2.0; + b = 0.0; + +#pragma acc kernels default (none) + { + float c, d; + + c = 2.0; + d = c; + c = 1.0; + c = c + d; + } + +#pragma acc parallel default (none) + { + float c, d; + + c = 2.0; + d = c; + c = 1.0; + c = c + d; + } + +#pragma acc parallel copy (a) create (b) default (none) + { + b = a; + a = 1.0; + a = a + b; + } + + if (a != 3.0) + abort (); + +#pragma acc kernels copy (a) create (b) default (none) + { + b = a; + a = 1.0; + a = a + b; + } + + if (a != 4.0) + abort (); + +#pragma acc parallel default (none) copy (a) create (b) + { + b = a; + a = 1.0; + a = a + b; + } + + if (a != 5.0) + abort (); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-fortran/default-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/default-1.f90 new file mode 100644 index 0000000..f82316e --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/default-1.f90 @@ -0,0 +1,34 @@ +! { dg-do run } + +program main + implicit none + real a, b + + a = 2.0 + b = 0.0 + + !$acc parallel copy (a) create (b) default (none) + b = a + a = 1.0 + a = a + b + !$acc end parallel + + if (a .ne. 3.0) call abort + + !$acc kernels copy (a) create (b) default (none) + b = a + a = 1.0 + a = a + b + !$acc end kernels + + if (a .ne. 4.0) call abort + + !$acc parallel default (none) copy (a) create (b) + b = a + a = 1.0 + a = a + b + !$acc end parallel + + if (a .ne. 5.0) call abort + +end program main