This patch tests if SVE type objects when applied to doacross clause are correctly diagnosed.
gcc/testsuite/ChangeLog * gcc.target/aarch64/sve/omp/doacross.c: New test. --- .../gcc.target/aarch64/sve/omp/doacross.c | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/omp/doacross.c diff --git a/gcc/testsuite/gcc.target/aarch64/sve/omp/doacross.c b/gcc/testsuite/gcc.target/aarch64/sve/omp/doacross.c new file mode 100644 index 00000000000..dc5020d53f7 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sve/omp/doacross.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-msve-vector-bits=256 -std=gnu99 -fopenmp -O2" } */ + +#include <arm_sve.h> + +int a[256]; + +__attribute__((noinline, noclone)) int +f1 (svint32_t va) +{ + int j; + #pragma omp for ordered (1) + for (j = 16; j < 64; j++) + { + #pragma omp ordered doacross(sink: va) /* { dg-error {variable 'va' is not an iteration of outermost loop 1, expected 'j'} } */ + a[j - 1] = j + svaddv_s32 (svptrue_b32 (), va); + #pragma omp ordered doacross(source: omp_cur_iteration) + j += 4; + va = svindex_s32 (0,1); + } + return j; +} -- 2.25.1