aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/testsuite/c-c++-common/gomp
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/testsuite/c-c++-common/gomp')
-rw-r--r--gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr58809.c31
-rw-r--r--gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr59467.c68
2 files changed, 99 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr58809.c b/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr58809.c
new file mode 100644
index 000000000..d1ea51b99
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr58809.c
@@ -0,0 +1,31 @@
+/* PR middle-end/58809 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+_Complex int j;
+_Complex double d;
+
+void
+foo (void)
+{
+ #pragma omp parallel reduction (&:j) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (|:j) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (^:j) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (min:j) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (max:j) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (&:d) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (|:d) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (^:d) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (min:d) /* { dg-error "has invalid type for" } */
+ ;
+ #pragma omp parallel reduction (max:d) /* { dg-error "has invalid type for" } */
+ ;
+}
diff --git a/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr59467.c b/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr59467.c
new file mode 100644
index 000000000..475182a62
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr59467.c
@@ -0,0 +1,68 @@
+/* PR libgomp/59467 */
+
+int v;
+
+void
+foo (void)
+{
+ int x = 0, y = 0;
+ #pragma omp parallel
+ {
+ int z;
+ #pragma omp single copyprivate (x) /* { dg-error "is not threadprivate or private in outer context" } */
+ {
+ #pragma omp atomic write
+ x = 6;
+ }
+ #pragma omp atomic read
+ z = x;
+ #pragma omp atomic
+ y += z;
+ }
+ #pragma omp parallel
+ {
+ int z;
+ #pragma omp single copyprivate (v) /* { dg-error "is not threadprivate or private in outer context" } */
+ {
+ #pragma omp atomic write
+ v = 6;
+ }
+ #pragma omp atomic read
+ z = v;
+ #pragma omp atomic
+ y += z;
+ }
+ #pragma omp parallel private (x)
+ {
+ int z;
+ #pragma omp single copyprivate (x)
+ {
+ #pragma omp atomic write
+ x = 6;
+ }
+ #pragma omp atomic read
+ z = x;
+ #pragma omp atomic
+ y += z;
+ }
+ x = 0;
+ #pragma omp parallel reduction (+:x)
+ {
+ #pragma omp single copyprivate (x)
+ {
+ #pragma omp atomic write
+ x = 6;
+ }
+ #pragma omp atomic
+ y += x;
+ }
+ #pragma omp single copyprivate (x)
+ {
+ x = 7;
+ }
+ #pragma omp single copyprivate (v) /* { dg-error "is not threadprivate or private in outer context" } */
+ {
+ #pragma omp atomic write
+ v = 6;
+ }
+}