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