URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-old/gcc-4.2.2/gcc/testsuite/g++.dg/gomp
- from Rev 154 to Rev 816
- ↔ Reverse comparison
Rev 154 → Rev 816
/pr29965-2.C
0,0 → 1,98
// PR middle-end/29965 |
// Test that OpenMP construct bodies which never return don't cause ICEs. |
// { dg-do compile } |
// { dg-options "-O2 -fopenmp" } |
|
extern void baz () __attribute__ ((noreturn)); |
|
void |
foo1 () |
{ |
#pragma omp sections |
{ |
for (;;) |
; |
} |
} |
|
void |
bar1 () |
{ |
#pragma omp sections |
{ |
#pragma omp section |
baz (); |
#pragma omp section |
baz (); |
} |
} |
|
void |
foo2 () |
{ |
#pragma omp sections |
{ |
; |
#pragma omp section |
for (;;) |
; |
} |
} |
|
void |
bar2 () |
{ |
#pragma omp sections |
{ |
#pragma omp section |
baz (); |
#pragma omp section |
; |
} |
} |
|
void |
foo3 () |
{ |
#pragma omp parallel sections |
{ |
for (;;) |
; |
} |
} |
|
void |
bar3 () |
{ |
#pragma omp parallel sections |
{ |
#pragma omp section |
baz (); |
#pragma omp section |
baz (); |
} |
} |
|
void |
foo4 () |
{ |
#pragma omp parallel sections |
{ |
; |
#pragma omp section |
for (;;) |
; |
} |
} |
|
void |
bar4 () |
{ |
#pragma omp parallel sections |
{ |
#pragma omp section |
baz (); |
#pragma omp section |
; |
} |
} |
pr29965-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: copyin-1.C
===================================================================
--- copyin-1.C (nonexistent)
+++ copyin-1.C (revision 816)
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-require-effective-target tls }
+
+int i, j;
+
+#pragma omp threadprivate (i)
+
+void bar(void);
+void foo(void)
+{
+ int k;
+ extern int l;
+ extern int m;
+
+#pragma omp threadprivate (m)
+
+ #pragma omp parallel copyin(i)
+ bar();
+ #pragma omp parallel copyin(j) // { dg-error "threadprivate" }
+ bar();
+ #pragma omp parallel copyin(k) // { dg-error "threadprivate" }
+ bar();
+ #pragma omp parallel copyin(l) // { dg-error "threadprivate" }
+ bar();
+ #pragma omp parallel copyin(m)
+ bar();
+}
copyin-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tls-1.C
===================================================================
--- tls-1.C (nonexistent)
+++ tls-1.C (revision 816)
@@ -0,0 +1,18 @@
+// { dg-do compile }
+// { dg-require-effective-target tls }
+
+int tp1;
+static int tp2;
+extern int tp3;
+
+int tp4 = 1;
+static int tp5 = 1;
+
+#pragma omp threadprivate (tp1, tp2, tp3, tp4, tp5)
+
+#pragma omp threadprivate (undef) // { dg-error "declared" }
+
+int tp6;
+int foo(void) { return tp6; }
+
+#pragma omp threadprivate (tp6) // { dg-error "after first use" }
tls-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-4.C
===================================================================
--- pr29965-4.C (nonexistent)
+++ pr29965-4.C (revision 816)
@@ -0,0 +1,44 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+extern void baz () __attribute__ ((noreturn));
+
+void
+foo1 ()
+{
+ int i;
+#pragma omp for schedule (dynamic)
+ for (i = 0; i < 2834; i++)
+ for (;;)
+ ;
+}
+
+void
+bar1 ()
+{
+ int i;
+#pragma omp for schedule (dynamic)
+ for (i = 0; i < 2834; i++)
+ baz ();
+}
+
+void
+foo2 ()
+{
+ int i;
+#pragma omp parallel for schedule (dynamic)
+ for (i = 0; i < 2834; i++)
+ for (;;)
+ ;
+}
+
+void
+bar2 ()
+{
+ int i;
+#pragma omp parallel for schedule (dynamic)
+ for (i = 0; i < 2834; i++)
+ baz ();
+}
pr29965-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tls-3.C
===================================================================
--- tls-3.C (nonexistent)
+++ tls-3.C (revision 816)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+// { dg-require-effective-target tls }
+
+#define thr threadprivate
+
+int i;
+#pragma omp thr (i)
+namespace N
+{
+ int j;
+#pragma omp thr (j)
+};
+struct S
+{
+ static int s;
+#pragma omp thr (s) // { dg-error "is not file, namespace or block scope" }
+};
+
+int
+foo ()
+{
+ static int k;
+#pragma omp thr (k)
+ return k++ + S::s;
+}
tls-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-6.C
===================================================================
--- pr29965-6.C (nonexistent)
+++ pr29965-6.C (revision 816)
@@ -0,0 +1,44 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+extern void baz () __attribute__ ((noreturn));
+
+void
+foo1 ()
+{
+ int i;
+#pragma omp for schedule (static, 16)
+ for (i = 0; i < 2834; i++)
+ for (;;)
+ ;
+}
+
+void
+bar1 ()
+{
+ int i;
+#pragma omp for schedule (static, 16)
+ for (i = 0; i < 2834; i++)
+ baz ();
+}
+
+void
+foo2 ()
+{
+ int i;
+#pragma omp parallel for schedule (static, 16)
+ for (i = 0; i < 2834; i++)
+ for (;;)
+ ;
+}
+
+void
+bar2 ()
+{
+ int i;
+#pragma omp parallel for schedule (static, 16)
+ for (i = 0; i < 2834; i++)
+ baz ();
+}
pr29965-6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-8.C
===================================================================
--- pr29965-8.C (nonexistent)
+++ pr29965-8.C (revision 816)
@@ -0,0 +1,94 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// This is invalid code, but we don't emit diagnostics for it, nevertheless
+// we test that we don't ICE on it.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+void
+foo1 ()
+{
+#pragma omp sections
+ {
+ throw 0;
+ }
+}
+
+void
+bar1 ()
+{
+#pragma omp sections
+ {
+#pragma omp section
+ throw 0;
+#pragma omp section
+ throw 0;
+ }
+}
+
+void
+foo2 ()
+{
+#pragma omp sections
+ {
+ ;
+#pragma omp section
+ throw 0;
+ }
+}
+
+void
+bar2 ()
+{
+#pragma omp sections
+ {
+#pragma omp section
+ throw 0;
+#pragma omp section
+ ;
+ }
+}
+
+void
+foo3 ()
+{
+#pragma omp parallel sections
+ {
+ throw 0;
+ }
+}
+
+void
+bar3 ()
+{
+#pragma omp parallel sections
+ {
+#pragma omp section
+ throw 0;
+#pragma omp section
+ throw 0;
+ }
+}
+
+void
+foo4 ()
+{
+#pragma omp parallel sections
+ {
+ ;
+#pragma omp section
+ throw 0;
+ }
+}
+
+void
+bar4 ()
+{
+#pragma omp parallel sections
+ {
+#pragma omp section
+ throw 0;
+#pragma omp section
+ ;
+ }
+}
pr29965-8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-atomic-1.C
===================================================================
--- tpl-atomic-1.C (nonexistent)
+++ tpl-atomic-1.C (revision 816)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+
+int check;
+
+template void foo()
+{
+ #pragma omp atomic
+ check |= sizeof(T);
+}
+
+template void bar(T *x, T y)
+{
+ #pragma omp atomic
+ *x += y;
+}
+
+void test ()
+{
+ int i;
+ long l;
+
+ foo();
+ foo();
+ bar(&i, 4);
+ bar(&l, 8L);
+}
tpl-atomic-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: clause-1.C
===================================================================
--- clause-1.C (nonexistent)
+++ clause-1.C (revision 816)
@@ -0,0 +1,32 @@
+// { dg-do compile }
+
+struct T
+{
+ int n;
+
+ void test();
+};
+
+void T::test()
+{
+ #pragma omp parallel private(n) // { dg-error "T::n" }
+ n = 1;
+
+ #pragma omp parallel shared(n) // { dg-error "T::n" }
+ n = 1;
+
+ #pragma omp parallel firstprivate(n) // { dg-error "T::n" }
+ n = 1;
+
+ #pragma omp sections lastprivate(n) // { dg-error "T::n" }
+ { n = 1; }
+
+ #pragma omp parallel reduction(+:n) // { dg-error "T::n" }
+ n = 1;
+
+ #pragma omp single copyprivate(n) // { dg-error "T::n" }
+ n = 1;
+
+ #pragma omp parallel copyin(n) // { dg-error "T::n" }
+ n = 1;
+}
clause-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-2.C
===================================================================
--- atomic-2.C (nonexistent)
+++ atomic-2.C (revision 816)
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+float x, y;
+
+void f1(void)
+{
+ #pragma omp atomic
+ x++;
+ #pragma omp atomic
+ x--;
+ #pragma omp atomic
+ ++x;
+ #pragma omp atomic
+ --x;
+ #pragma omp atomic
+ x += 1;
+ #pragma omp atomic
+ x -= y;
+ #pragma omp atomic
+ x *= 3;
+ #pragma omp atomic
+ x /= 3;
+}
atomic-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: clause-3.C
===================================================================
--- clause-3.C (nonexistent)
+++ clause-3.C (revision 816)
@@ -0,0 +1,94 @@
+// { dg-do compile }
+// { dg-require-effective-target tls }
+
+#define p parallel
+
+extern void bar (void);
+extern char q[]; // { dg-error "has incomplete type" }
+int t;
+#pragma omp threadprivate (t)
+
+void
+foo (int x)
+{
+ char *p;
+ struct S { int i; int j; } s;
+ char a[32];
+ double d;
+ int i;
+ const int c = 8;
+#pragma omp p shared (x, x) // { dg-error "more than once" }
+ ;
+#pragma omp p private (x) private (x) // { dg-error "more than once" }
+ ;
+#pragma omp p shared (x) firstprivate (x) // { dg-error "more than once" }
+ ;
+#pragma omp p firstprivate (x, x) // { dg-error "more than once" }
+ ;
+#pragma omp p for shared (x) lastprivate (x) // { dg-error "more than once" }
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp p for private (x) lastprivate (x) // { dg-error "more than once" }
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp p for lastprivate (x, x) // { dg-error "more than once" }
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp single private (x) copyprivate (x) // { dg-error "more than once" }
+ ;
+#pragma omp p shared (bar) // { dg-error "is not a variable" }
+ ;
+#pragma omp p private (bar) // { dg-error "is not a variable" }
+ ;
+#pragma omp p firstprivate (bar) // { dg-error "is not a variable" }
+ ;
+#pragma omp p reduction (+:p) // { dg-error "has invalid type for" }
+ ;
+#pragma omp p reduction (*:s) // { dg-error "has invalid type for" }
+ ;
+#pragma omp p reduction (-:a) // { dg-error "has invalid type for" }
+ ;
+ d = 0;
+#pragma omp p reduction (*:d)
+ ;
+#pragma omp p reduction (|:d) // { dg-error "has invalid type for" }
+ ;
+#pragma omp p reduction (&&:d) // { dg-error "has invalid type for" }
+ ;
+#pragma omp p copyin (d) // { dg-error "must be 'threadprivate'" }
+ ;
+#pragma omp p copyin (x) // { dg-error "must be 'threadprivate'" }
+ ;
+#pragma omp p for firstprivate (x) lastprivate (x)
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp p private (q) // { dg-error "unspecified bounds" }
+ ;
+#pragma omp p firstprivate (q) // { dg-error "unspecified bounds" }
+ ;
+#pragma omp p for lastprivate (q) // { dg-error "unspecified bounds" }
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp p shared (t) // { dg-error "predetermined 'threadprivate'" }
+ ;
+#pragma omp p private (t) // { dg-error "predetermined 'threadprivate'" }
+ ;
+#pragma omp p firstprivate (t) // { dg-error "predetermined 'threadprivate'" }
+ ;
+#pragma omp p for lastprivate (t) // { dg-error "predetermined 'threadpriv" }
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp p reduction (*:t) // { dg-error "predetermined 'threadprivate'" }
+ ;
+#pragma omp p shared (c) // { dg-error "predetermined 'shared'" }
+ ;
+#pragma omp p private (c) // { dg-error "predetermined 'shared'" }
+ ;
+#pragma omp p firstprivate (c) // { dg-error "predetermined 'shared'" }
+ ;
+#pragma omp p for lastprivate (c) // { dg-error "predetermined 'shared'" }
+ for (i = 0; i < 10; i++)
+ ;
+#pragma omp p reduction (*:c) // { dg-error "predetermined 'shared'" }
+ ;
+}
clause-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-4.C
===================================================================
--- atomic-4.C (nonexistent)
+++ atomic-4.C (revision 816)
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+int a[4];
+int *p;
+struct S { int x; int y[4]; } s;
+int *bar(void);
+
+void f1(void)
+{
+ #pragma omp atomic
+ a[4] += 1;
+ #pragma omp atomic
+ *p += 1;
+ #pragma omp atomic
+ s.x += 1;
+ #pragma omp atomic
+ s.y[*p] += 1;
+ #pragma omp atomic
+ s.y[*p] *= 42;
+ #pragma omp atomic
+ *bar() += 1;
+ #pragma omp atomic
+ *bar() *= 42;
+}
atomic-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27310.C
===================================================================
--- pr27310.C (nonexistent)
+++ pr27310.C (revision 816)
@@ -0,0 +1,22 @@
+// PR middle-end/27310
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+struct A
+{
+ ~A ();
+};
+
+struct B
+{
+ A a, b;
+};
+
+void
+foo ()
+{
+ A c, d;
+
+#pragma omp parallel
+ B e;
+}
pr27310.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-6.C
===================================================================
--- atomic-6.C (nonexistent)
+++ atomic-6.C (revision 816)
@@ -0,0 +1,11 @@
+// { dg-do compile }
+// { dg-options "-w -fopenmp" }
+
+int x[10], z;
+double y[10];
+
+void f1(void)
+{
+ #pragma omp atomic
+ x[z] /= y[z];
+}
atomic-6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-8.C
===================================================================
--- atomic-8.C (nonexistent)
+++ atomic-8.C (revision 816)
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+long double z;
+
+void f3(void)
+{
+ #pragma omp atomic
+ z++;
+ #pragma omp atomic
+ z--;
+ #pragma omp atomic
+ ++z;
+ #pragma omp atomic
+ --z;
+ #pragma omp atomic
+ z += 1;
+ #pragma omp atomic
+ z *= 3;
+ #pragma omp atomic
+ z /= 3;
+}
atomic-8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: ordered-1.C
===================================================================
--- ordered-1.C (nonexistent)
+++ ordered-1.C (revision 816)
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-omplower" } */
+
+extern void bar(int);
+
+void foo (void)
+{
+ #pragma omp ordered
+ bar(0);
+
+ #pragma omp ordered
+ {
+ bar(1);
+ bar(2);
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_ordered_start" 2 "omplower" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_ordered_end" 2 "omplower" } } */
+/* { dg-final { cleanup-tree-dump "omplower" } } */
ordered-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-2.C
===================================================================
--- for-2.C (nonexistent)
+++ for-2.C (revision 816)
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+
+void foo()
+{
+ int i;
+
+ #pragma omp for nowait
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for nowait nowait /* { dg-error "too many" } */
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for ordered
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for ordered ordered /* { dg-error "too many" } */
+ for (i = 0; i < 10; ++i) ;
+}
for-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: barrier-2.C
===================================================================
--- barrier-2.C (nonexistent)
+++ barrier-2.C (revision 816)
@@ -0,0 +1,12 @@
+// { dg-do compile }
+
+void f1(void)
+{
+ #pragma omp barrier a // { dg-error "expected end of line" }
+}
+
+void f3(bool p)
+{
+ if (p)
+ #pragma omp barrier // { dg-error "compound statements" }
+} // { dg-error "" }
barrier-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26823-2.C
===================================================================
--- pr26823-2.C (nonexistent)
+++ pr26823-2.C (revision 816)
@@ -0,0 +1,29 @@
+// PR middle-end/26823
+// { dg-do compile }
+
+struct A
+{
+ ~A () {}
+};
+
+extern void bar ();
+
+void
+foo ()
+{
+#pragma omp parallel
+ {
+ {
+ A a;
+ bar ();
+ }
+ {
+ A a;
+ bar ();
+ }
+ {
+ A a;
+ bar ();
+ }
+ }
+}
pr26823-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27337-1.C
===================================================================
--- pr27337-1.C (nonexistent)
+++ pr27337-1.C (revision 816)
@@ -0,0 +1,22 @@
+// PR middle-end/27337
+// { dg-do compile }
+
+struct S
+{
+ S ();
+ ~S ();
+ double &operator* () const;
+};
+
+S
+foo ()
+{
+ int i;
+ S ret;
+
+#pragma omp parallel for
+ for (i = 0; i < 2; i++)
+ *ret += i;
+
+ return ret;
+}
pr27337-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-4.C
===================================================================
--- for-4.C (nonexistent)
+++ for-4.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(dynamic)
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-0.C
===================================================================
--- block-0.C (nonexistent)
+++ block-0.C (revision 816)
@@ -0,0 +1,33 @@
+// { dg-do compile }
+// { dg-options "-fopenmp -fdump-tree-omplower" }
+
+void bar();
+void foo()
+{
+ #pragma omp critical
+ bar ();
+ #pragma omp master
+ bar ();
+ #pragma omp single
+ bar ();
+ #pragma omp for
+ for (int i = 0; i < 10; ++i)
+ bar ();
+ #pragma omp sections
+ { bar(); }
+ #pragma omp parallel
+ bar ();
+ #pragma omp parallel for
+ for (int i = 0; i < 10; ++i)
+ bar ();
+ #pragma omp parallel sections
+ {
+ bar ();
+ bar ();
+ #pragma omp section
+ bar ();
+ }
+}
+
+// { dg-final { scan-tree-dump-times "terminate" 10 "omplower" } }
+// { dg-final { cleanup-tree-dump "omplower" } }
block-0.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-parallel-1.C
===================================================================
--- tpl-parallel-1.C (nonexistent)
+++ tpl-parallel-1.C (revision 816)
@@ -0,0 +1,24 @@
+// { dg-do compile }
+
+int check;
+
+template void foo()
+{
+ check |= sizeof(T);
+}
+
+template
+void bar(void)
+{
+ #pragma omp parallel if (0)
+ foo();
+}
+
+int main()
+{
+ bar();
+ bar();
+ if (check != (sizeof(char) | sizeof(short)))
+ __builtin_trap ();
+ return 0;
+}
tpl-parallel-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: master-1.C
===================================================================
--- master-1.C (nonexistent)
+++ master-1.C (revision 816)
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+
+extern void bar(int);
+
+void foo (void)
+{
+ #pragma omp master
+ bar(0);
+
+ #pragma omp master
+ {
+ bar(1);
+ bar(2);
+ }
+
+ /* Yes, this is legal -- structured-block contains statement contains
+ openmp-construct contains master-construct. */
+ #pragma omp master
+ #pragma omp master
+ #pragma omp master
+ ;
+}
master-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-6.C
===================================================================
--- for-6.C (nonexistent)
+++ for-6.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(runtime)
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_runtime_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_runtime_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-2.C
===================================================================
--- block-2.C (nonexistent)
+++ block-2.C (revision 816)
@@ -0,0 +1,32 @@
+// { dg-do compile }
+
+void foo()
+{
+ int i, j;
+
+ #pragma omp for
+ for (i = 0; i < 10; ++i)
+ break; // { dg-error "break" }
+
+ bad1: // { dg-error "jump to label" }
+ #pragma omp for
+ for (i = 0; i < 10; ++i)
+ goto bad1; // { dg-error "from here|exits OpenMP" }
+
+ goto bad2; // { dg-error "from here" }
+ #pragma omp for
+ for (i = 0; i < 10; ++i)
+ {
+ bad2: ; // { dg-error "jump|enters OpenMP" }
+ }
+
+ #pragma omp for
+ for (i = 0; i < 10; ++i)
+ for (j = 0; j < 10; ++j)
+ if (i == j)
+ break;
+
+ #pragma omp for
+ for (i = 0; i < 10; ++i)
+ continue;
+}
block-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: sharing-1.C
===================================================================
--- sharing-1.C (nonexistent)
+++ sharing-1.C (revision 816)
@@ -0,0 +1,77 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target tls } */
+
+int thrglobalvar;
+#pragma omp threadprivate (thrglobalvar)
+int globalvar;
+const struct S
+{
+ int x;
+} constvar = { 8 };
+struct T
+{
+ static T t;
+ int i;
+};
+T T::t = { 6 };
+/* const qualified type, but mutable member -> not predetermined. */
+const struct U
+{
+ int x;
+ mutable int y;
+} constmutvar = { 6, 4 };
+
+int
+foo (int x)
+{
+ return x;
+}
+
+int
+bar (int *x)
+{
+ return *x;
+}
+
+int
+baz (U u)
+{
+ return u.x;
+}
+
+int
+main (void)
+{
+ static int thrlocvar;
+#pragma omp threadprivate (thrlocvar)
+ static int locvar;
+ static int *p;
+ int i, j, s, l;
+
+ p = new int;
+ *p = 7;
+ s = 6;
+ l = 0;
+#pragma omp parallel for /* { dg-error "enclosing parallel" } */ \
+ default (none) private (p) shared (s)
+ for (i = 0; i < 64; i++)
+ {
+ int k = foo (0); /* Predetermined - private (automatic var declared */
+ k++; /* in scope of construct). */
+ thrglobalvar++; /* Predetermined - threadprivate. */
+ thrlocvar++; /* Predetermined - threadprivate. */
+ foo (i); /* Predetermined - private (omp for loop variable). */
+ foo (constvar.x); /* Predetermined - shared (const qualified type). */
+ foo (T::t.i); /* Predetermined - shared (static data member). */
+ foo (*p); /* *p predetermined - shared (heap allocated */
+ (*p)++; /* storage). */
+ bar (p); /* Explicitly determined - private. */
+ foo (s); /* Explicitly determined - shared. */
+ globalvar++; /* { dg-error "not specified in" } */
+ locvar++; /* { dg-error "not specified in" } */
+ l++; /* { dg-error "not specified in" } */
+ for (j = 0; j < 2; j++); /* { dg-error "not specified in" } */
+ baz (constmutvar);/* { dg-error "not specified in" } */
+ }
+ return 0;
+}
sharing-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: parallel-1.C
===================================================================
--- parallel-1.C (nonexistent)
+++ parallel-1.C (revision 816)
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+void foo()
+{
+ int i;
+
+ #pragma omp parallel
+ {
+ #pragma omp parallel
+ {
+ #pragma omp parallel
+ {
+ i++;
+ }
+ }
+ }
+}
parallel-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr31598.C
===================================================================
--- pr31598.C (nonexistent)
+++ pr31598.C (revision 816)
@@ -0,0 +1,59 @@
+// PR c++/31598
+// { dg-do compile }
+//
+// Copyright (C) 2007 Free Software Foundation, Inc.
+// Contributed by Theodore.Papadopoulo
+// 16 Apr 2007
+
+int i;
+template struct A { A() {} };
+template struct C { C() { i++; } C(const C &) { i += 2; } };
+struct D { D() {} };
+
+struct M { typedef double E; };
+
+template
+struct R
+{
+ R()
+ {
+ typedef A B;
+ B b;
+ #pragma omp parallel for firstprivate(b) schedule(guided)
+ for (int t = 0; t < 10; ++t)
+ ;
+ }
+};
+
+template
+struct S
+{
+ S()
+ {
+ typedef C B;
+ B b;
+ #pragma omp parallel for firstprivate(b)
+ for (int t = 0; t < 10; ++t)
+ ;
+ }
+};
+
+struct U
+{
+ U()
+ {
+ D b;
+ #pragma omp parallel for firstprivate(b)
+ for (int t = 0; t < 10; ++t)
+ ;
+ }
+};
+
+int
+main ()
+{
+ R r;
+ S s;
+ U u;
+ return 0;
+}
pr31598.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: master-3.C
===================================================================
--- master-3.C (nonexistent)
+++ master-3.C (revision 816)
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-omplower" } */
+
+extern void bar(int);
+
+void foo (void)
+{
+ #pragma omp master
+ bar(0);
+}
+
+/* { dg-final { scan-tree-dump-times "omp_get_thread_num" 1 "omplower" } } */
+/* { dg-final { cleanup-tree-dump "omplower" } } */
master-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-8.C
===================================================================
--- for-8.C (nonexistent)
+++ for-8.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(dynamic) ordered
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_dynamic_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_dynamic_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-4.C
===================================================================
--- block-4.C (nonexistent)
+++ block-4.C (revision 816)
@@ -0,0 +1,9 @@
+// { dg-do compile }
+
+void foo()
+{
+ #pragma omp critical
+ {
+ return; // { dg-error "invalid exit" }
+ }
+}
block-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr25874.C
===================================================================
--- pr25874.C (nonexistent)
+++ pr25874.C (revision 816)
@@ -0,0 +1,25 @@
+// { dg-options "-O -fopenmp" }
+
+int foo();
+
+struct wigner_d
+ {
+ void recurse () {
+ int dd;
+ for (int j=0; j<=1; ++j) {
+#pragma omp parallel
+ dd=5;
+ }
+ }
+ };
+
+template void rotate_alm(T arg)
+ {
+ wigner_d rec;
+ rec.recurse();
+#pragma omp parallel
+ foo();
+ }
+
+template void rotate_alm(float arg);
+template void rotate_alm(double arg);
pr25874.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr24849.C
===================================================================
--- pr24849.C (nonexistent)
+++ pr24849.C (revision 816)
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+
+template struct Healpix_Map {
+ T *map;
+ int npix_;
+
+ void Import_nograde (const Healpix_Map &orig) {
+#pragma omp parallel
+{
+ int m;
+#pragma omp for schedule (dynamic)
+ for (m=0; m &a, Healpix_Map &b) {
+ a.Import_nograde(b);
+ }
pr24849.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: parallel-3.C
===================================================================
--- parallel-3.C (nonexistent)
+++ parallel-3.C (revision 816)
@@ -0,0 +1,15 @@
+// { dg-do compile }
+
+extern int printf (const char *, ...);
+
+int main (void)
+{
+ double d = 6;
+ int i = 1;
+#pragma omp parallel shared(d) private(i) num_threads (4 + i)
+ {
+ i = 4;
+ printf ("%s %d %g\n", "Hello, World!", i, d);
+ }
+ return 0;
+}
parallel-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-6.C
===================================================================
--- block-6.C (nonexistent)
+++ block-6.C (revision 816)
@@ -0,0 +1,9 @@
+// { dg-do compile }
+
+void foo()
+{
+ #pragma omp ordered
+ {
+ return; // { dg-error "invalid exit" }
+ }
+}
block-6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: parallel-5.C
===================================================================
--- parallel-5.C (nonexistent)
+++ parallel-5.C (revision 816)
@@ -0,0 +1,11 @@
+// { dg-do compile }
+
+extern void bar (void);
+
+int main (void)
+{
+ int i;
+#pragma omp parallel for nowait /* { dg-error "'nowait'" } */
+ for (i = 0; i < 10; i++)
+ bar ();
+}
parallel-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-8.C
===================================================================
--- block-8.C (nonexistent)
+++ block-8.C (revision 816)
@@ -0,0 +1,11 @@
+// { dg-do compile }
+// PR 24451
+
+int foo()
+{
+ int i;
+
+ #pragma omp parallel for
+ for (i = 0; i < 10; ++i)
+ return 0; // { dg-error "invalid exit" }
+}
block-8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: macro-1.C
===================================================================
--- macro-1.C (nonexistent)
+++ macro-1.C (revision 816)
@@ -0,0 +1,10 @@
+// { dg-do compile }
+
+#define N 10
+
+extern void bar(void);
+void foo(void)
+{
+ #pragma omp parallel num_threads(N)
+ bar();
+}
macro-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: macro-3.C
===================================================================
--- macro-3.C (nonexistent)
+++ macro-3.C (revision 816)
@@ -0,0 +1,25 @@
+// PR preprocessor/27746
+// { dg-do compile }
+// { dg-options "-fopenmp -fdump-tree-omplower" }
+
+#define omp FOO
+#define p parallel
+#define omp_parallel _Pragma ("omp parallel")
+#define omp_p _Pragma ("omp p")
+
+void bar (void);
+
+void
+foo (void)
+{
+ #pragma omp parallel
+ bar ();
+ #pragma omp p
+ bar ();
+ omp_parallel
+ bar ();
+ omp_p
+ bar ();
+}
+
+// { dg-final { scan-tree-dump-times "#pragma omp parallel" 4 "omplower" } }
macro-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-10.C
===================================================================
--- for-10.C (nonexistent)
+++ for-10.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(runtime) ordered
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_runtime_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_runtime_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-10.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-12.C
===================================================================
--- for-12.C (nonexistent)
+++ for-12.C (revision 816)
@@ -0,0 +1,12 @@
+int foo (void)
+{
+ int i, a;
+
+ a = 30;
+
+ #pragma omp parallel for lastprivate (a)
+ for (i = 0; i < 10; i++)
+ a = a + i;
+
+ return a;
+}
for-12.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-10.C
===================================================================
--- block-10.C (nonexistent)
+++ block-10.C (revision 816)
@@ -0,0 +1,40 @@
+// { dg-do compile }
+
+void foo(int i)
+{
+ int j;
+ switch (i)
+ {
+ #pragma omp parallel
+ { case 0:; } // { dg-error "jump|enters" }
+ }
+ switch (i)
+ {
+ #pragma omp for
+ for (j = 0; j < 10; ++ j)
+ { case 1:; } // { dg-error "jump|enters" }
+ }
+ switch (i)
+ {
+ #pragma omp critical
+ { case 2:; } // { dg-error "jump|enters" }
+ }
+ switch (i)
+ {
+ #pragma omp master
+ { case 3:; } // { dg-error "jump|enters" }
+ }
+ switch (i)
+ {
+ #pragma omp sections
+ { case 4:; // { dg-error "jump|enters" }
+ #pragma omp section
+ { case 5:; } // { dg-error "jump|enters" }
+ }
+ }
+ switch (i)
+ {
+ #pragma omp ordered
+ { default:; } // { dg-error "jump|enters" }
+ }
+}
block-10.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-14.C
===================================================================
--- for-14.C (nonexistent)
+++ for-14.C (revision 816)
@@ -0,0 +1,19 @@
+// { dg-do compile }
+
+extern int printf (const char *, ...);
+extern void foo (int *);
+
+int main (void)
+{
+ double d = 6;
+ int i = 1, j = 6, k = 8;
+#pragma omp parallel shared(d) private(i) num_threads (4)
+ {
+ i = 4;
+#pragma omp for lastprivate(j)
+ for (j = 1; j <= k; j++)
+ printf ("%s %d %d %d %p %g\n", "Hello, World!", i, j, k, &j, d);
+ printf ("%s %d %g\n", "Hello, World!", i, d);
+ }
+ return 0;
+}
for-14.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-16.C
===================================================================
--- for-16.C (nonexistent)
+++ for-16.C (revision 816)
@@ -0,0 +1,33 @@
+// { dg-do compile }
+
+template
+void foo ()
+{
+#pragma omp for
+ for (unsigned int i = 0; i < 10; i++); // { dg-warning "is unsigned" }
+#pragma omp for
+ for (int j = 0; ; j++); // { dg-error "missing controlling predicate" }
+#pragma omp for
+ for (int k = 0; k == 1; k++); // { dg-error "invalid controlling predicate" }
+#pragma omp for
+ for (int l = 0; l < 10; ); // { dg-error "missing increment expression" }
+#pragma omp for
+ for (int m = 0; m < 10; m *= 3); // Error here is emitted only during
+ // instantiation
+#pragma omp for
+ for (T n = 0; ; n++); // { dg-error "missing controlling predicate" }
+#pragma omp for
+ for (T o = 0; o == 1; o++); // Error here is emitted only during
+ // instantiation
+#pragma omp for
+ for (T p = 0; p < 10; ); // { dg-error "missing increment expression" }
+#pragma omp for
+ for (T q = 0; q < 10; q *= 3); // Error here is emitted only during
+ // instantiation
+}
+
+void bar ()
+{
+#pragma omp for
+ for (int m = 0; m < 10; m *= 3); // { dg-error "invalid increment expression" }
+}
for-16.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-18.C
===================================================================
--- for-18.C (nonexistent)
+++ for-18.C (revision 816)
@@ -0,0 +1,67 @@
+// { dg-do compile }
+extern int bar (int);
+
+void
+foo (void)
+{
+ int j, k = 1, l = 30, m = 4;
+ long int o = 4;
+ long long int p = 0;
+#pragma omp for
+ for (j = k; j <= l; j += m - 1)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j += (m - 1))
+ ;
+#pragma omp for
+ for (j = k; j <= l; j += bar (m - 1))
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = j + m - 1)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = j + (m - 1))
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = j + bar (m - 1))
+ ;
+#pragma omp for
+ for (j = ({ int n; n = k; n; }); j <= l; j++)
+ ;
+#pragma omp for
+ for (j = k; j <= ({ int n; n = l; n; }); j++)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j += ({ int n; n = 1; n; }))
+ ;
+#pragma omp for
+ for (j = k; j <= l; j += m + 1)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j += o)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = j + o)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = o + 1 + j)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = o + m + j)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j += o + p)
+ ;
+#pragma omp for
+ for (j = k; j <= l; j = j + o + p)
+ ;
+#pragma omp for
+ for (j = l; j >= k; j -= o)
+ ;
+#pragma omp for
+ for (j = l; j >= k; j -= p)
+ ;
+#pragma omp for
+ for (j = l; j >= k; j -= o + p)
+ ;
+}
for-18.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: gomp.exp
===================================================================
--- gomp.exp (nonexistent)
+++ gomp.exp (revision 816)
@@ -0,0 +1,15 @@
+# Load support procs.
+load_lib g++-dg.exp
+
+if ![check_effective_target_fopenmp] {
+ return
+}
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" "-fopenmp"
+
+# All done.
+dg-finish
Index: method-1.C
===================================================================
--- method-1.C (nonexistent)
+++ method-1.C (revision 816)
@@ -0,0 +1,18 @@
+/* PR c++/24513 */
+/* { dg-do compile } */
+
+struct S
+{
+ void foo (int *p)
+ {
+#pragma omp parallel for
+ for (int i = 0; i < 1000; ++i)
+ p[i]=0;
+ }
+ void bar ()
+ {
+#pragma omp master
+ j = 2;
+ }
+ int j;
+};
method-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26611-1.C
===================================================================
--- pr26611-1.C (nonexistent)
+++ pr26611-1.C (revision 816)
@@ -0,0 +1,15 @@
+// PR middle-end/26611
+// { dg-do compile }
+
+void
+foo ()
+{
+#pragma omp parallel
+ try
+ {
+ int q = 1;
+ }
+ catch (...)
+ {
+ }
+}
pr26611-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: flush-2.C
===================================================================
--- flush-2.C (nonexistent)
+++ flush-2.C (revision 816)
@@ -0,0 +1,10 @@
+// { dg-do compile }
+
+void f1(void)
+{
+ #pragma omp flush a // { dg-error "expected" }
+ #pragma omp flush ( // { dg-error "expected" }
+ #pragma omp flush (b // { dg-error "declared|expected" }
+ #pragma omp flush (c d) // { dg-error "declared|expected" }
+ #pragma omp flush (e) // { dg-error "declared" }
+}
flush-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-for-1.C
===================================================================
--- tpl-for-1.C (nonexistent)
+++ tpl-for-1.C (revision 816)
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+void foo(int);
+void foo(long);
+
+template void bar()
+{
+ #pragma omp for
+ for (T i = 0; i < 10; ++i)
+ foo(i);
+}
+
+void test()
+{
+ bar();
+ bar();
+}
tpl-for-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-barrier-1.C
===================================================================
--- tpl-barrier-1.C (nonexistent)
+++ tpl-barrier-1.C (revision 816)
@@ -0,0 +1,25 @@
+// PR c++/24735
+// { dg-do compile }
+// { dg-options "-fopenmp -fdump-tree-gimple" }
+
+template void f1 ()
+{
+ #pragma omp barrier
+}
+
+template void f2 (bool p)
+{
+ if (p)
+ {
+ #pragma omp barrier
+ }
+}
+
+void f3 ()
+{
+ f1<0> ();
+ f2<0> (true);
+}
+
+// { dg-final { scan-tree-dump-times "GOMP_barrier" 2 "gimple" } }
+// { dg-final { cleanup-tree-dump "gimple" } }
tpl-barrier-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-for-3.C
===================================================================
--- tpl-for-3.C (nonexistent)
+++ tpl-for-3.C (revision 816)
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+void foo(int);
+
+template void bar()
+{
+ #pragma omp parallel for
+ for (typename T::T i = 0; i < T::N; ++i)
+ foo(i);
+}
+
+struct A
+{
+ typedef int T;
+ static T N;
+};
+
+struct B
+{
+ typedef long T;
+ static T N;
+};
+
+void test()
+{
+ bar();
+ bar();
+}
tpl-for-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27325.C
===================================================================
--- pr27325.C (nonexistent)
+++ pr27325.C (revision 816)
@@ -0,0 +1,25 @@
+// PR middle-end/27325
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+struct A { A(); ~A(); int i; };
+
+int
+foo ()
+{
+ A a;
+#pragma omp parallel private (a)
+ for (int i = 0; i < 5; ++i)
+ a.i++;
+ return 0;
+}
+
+int
+bar ()
+{
+ A a;
+#pragma omp for private (a)
+ for (int i = 0; i < 5; ++i)
+ a.i++;
+ return 0;
+}
pr27325.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: sections-1.C
===================================================================
--- sections-1.C (nonexistent)
+++ sections-1.C (revision 816)
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+
+extern void bar(int);
+
+void f1(void)
+{
+ #pragma omp sections nowait
+ {
+ bar (1);
+ #pragma omp section
+ bar (2);
+ #pragma omp section
+ bar (3);
+ #pragma omp section
+ bar (4);
+ #pragma omp section
+ bar (5);
+ }
+}
+
+void f2(void)
+{
+ #pragma omp sections
+ {
+ #pragma omp section
+ {
+ bar (1);
+ bar (1);
+ }
+ #pragma omp section
+ bar (2);
+ #pragma omp section
+ bar (3);
+ #pragma omp section
+ bar (4);
+ #pragma omp section
+ bar (5);
+ }
+}
sections-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26913.C
===================================================================
--- pr26913.C (nonexistent)
+++ pr26913.C (revision 816)
@@ -0,0 +1,19 @@
+// PR middle-end/26913
+
+struct A
+{
+ ~A () throw ();
+};
+
+void foo (A);
+
+A bar () throw ();
+
+void baz ()
+{
+#pragma omp parallel
+ {
+ A a;
+ foo (bar ());
+ }
+}
pr26913.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26690-1.C
===================================================================
--- pr26690-1.C (nonexistent)
+++ pr26690-1.C (revision 816)
@@ -0,0 +1,15 @@
+// PR c++/26690
+// { dg-do compile }
+
+struct A
+{ // { dg-error "A::A\\(const A&\\)" }
+ A (int); // { dg-error "candidates" }
+};
+
+void
+foo ()
+{
+ A a(0);
+#pragma omp parallel private (a) // { dg-error "no matching function" }
+ ;
+}
pr26690-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: sections-3.C
===================================================================
--- sections-3.C (nonexistent)
+++ sections-3.C (revision 816)
@@ -0,0 +1,15 @@
+
+// { dg-do compile }
+
+extern void bar (void);
+
+int main (void)
+{
+ #pragma omp parallel sections nowait /* { dg-error "'nowait'" } */
+ {
+ #pragma omp section
+ { bar(); }
+ #pragma omp section
+ { bar(); }
+ }
+}
sections-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr31748.C
===================================================================
--- pr31748.C (nonexistent)
+++ pr31748.C (revision 816)
@@ -0,0 +1,10 @@
+// PR c++/31748
+
+struct A;
+
+void
+foo ()
+{
+#pragma omp parallel private(A) // { dg-error "struct A.*is not a variable" }
+ ;
+}
pr31748.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: critical-2.C
===================================================================
--- critical-2.C (nonexistent)
+++ critical-2.C (revision 816)
@@ -0,0 +1,12 @@
+// { dg-do compile }
+
+void f1(void)
+{
+ #pragma omp critical a // { dg-error "expected" }
+ ;
+ #pragma omp critical ( // { dg-error "expected identifier" }
+ ;
+ #pragma omp critical (a // { dg-error "expected .\\)." }
+ ;
+ #pragma omp critical (a b) // { dg-error "expected .\\)." }
+} // { dg-error "" }
critical-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr31769.C
===================================================================
--- pr31769.C (nonexistent)
+++ pr31769.C (revision 816)
@@ -0,0 +1,61 @@
+// PR tree-optimization/31769
+// { dg-options "-O2 -fopenmp" }
+// { dg-do compile }
+
+struct B
+{
+ B () {}
+ virtual ~B () {}
+};
+struct C
+{
+ C (int x, int y) {}
+};
+template
+struct D
+{
+ D () {}
+ ~D () {}
+};
+struct E
+{
+ E () {}
+ ~E () {}
+ D e;
+};
+struct A
+{
+ B *b;
+ A () { b = __null; }
+ ~A () { if (b != __null) delete b; }
+};
+struct F : public A
+{
+ explicit F (int x) { foo (0); }
+ F (const F &x) {}
+ F (F &x, C y) {}
+ F operator () (C x) const
+ {
+ return F (const_cast(*this), x);
+ }
+ template F & operator+= (const U &);
+ void foo (int);
+ E f;
+};
+
+int
+main ()
+{
+ try
+ {
+ F f (10);
+ F g (10);
+ C h (0, 9);
+#pragma omp parallel for
+ for (int i = 0; i < 2; ++i)
+ g += f (h);
+ }
+ catch (int &e)
+ {
+ }
+}
pr31769.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-1.C
===================================================================
--- pr29965-1.C (nonexistent)
+++ pr29965-1.C (revision 816)
@@ -0,0 +1,45 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+extern void baz () __attribute__ ((noreturn));
+
+static inline void
+foo ()
+{
+#pragma omp parallel
+ for (;;)
+ ;
+}
+
+static inline void
+bar ()
+{
+#pragma omp parallel
+ baz ();
+}
+
+void
+foo1 ()
+{
+ foo ();
+}
+
+void
+foo2 ()
+{
+ foo ();
+}
+
+void
+bar1 ()
+{
+ bar ();
+}
+
+void
+bar2 ()
+{
+ bar ();
+}
pr29965-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-3.C
===================================================================
--- pr29965-3.C (nonexistent)
+++ pr29965-3.C (revision 816)
@@ -0,0 +1,62 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+extern void baz () __attribute__ ((noreturn));
+
+void
+foo1 ()
+{
+#pragma omp single
+ for (;;);
+}
+
+void
+bar1 ()
+{
+#pragma omp single
+ baz ();
+}
+
+void
+foo2 ()
+{
+#pragma omp master
+ for (;;);
+}
+
+void
+bar2 ()
+{
+#pragma omp master
+ baz ();
+}
+
+void
+foo3 ()
+{
+#pragma omp ordered
+ for (;;);
+}
+
+void
+bar3 ()
+{
+#pragma omp ordered
+ baz ();
+}
+
+void
+foo4 ()
+{
+#pragma omp critical
+ for (;;);
+}
+
+void
+bar4 ()
+{
+#pragma omp critical
+ baz ();
+}
pr29965-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tls-2.C
===================================================================
--- tls-2.C (nonexistent)
+++ tls-2.C (revision 816)
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target tls } */
+
+extern char buf[];
+#pragma omp threadprivate (buf) /* { dg-error "has incomplete type" } */
+
+void
+foo (void)
+{
+ int i;
+#pragma omp threadprivate (i) /* { dg-error "automatic variable" } */
+ i = 0;
+}
tls-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-5.C
===================================================================
--- pr29965-5.C (nonexistent)
+++ pr29965-5.C (revision 816)
@@ -0,0 +1,44 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+extern void baz () __attribute__ ((noreturn));
+
+void
+foo1 ()
+{
+ int i;
+#pragma omp for schedule (static)
+ for (i = 0; i < 2834; i++)
+ for (;;)
+ ;
+}
+
+void
+bar1 ()
+{
+ int i;
+#pragma omp for schedule (static)
+ for (i = 0; i < 2834; i++)
+ baz ();
+}
+
+void
+foo2 ()
+{
+ int i;
+#pragma omp parallel for schedule (static)
+ for (i = 0; i < 2834; i++)
+ for (;;)
+ ;
+}
+
+void
+bar2 ()
+{
+ int i;
+#pragma omp parallel for schedule (static)
+ for (i = 0; i < 2834; i++)
+ baz ();
+}
pr29965-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-7.C
===================================================================
--- pr29965-7.C (nonexistent)
+++ pr29965-7.C (revision 816)
@@ -0,0 +1,32 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// This is invalid code, but we don't emit diagnostics for it, nevertheless
+// we test that we don't ICE on it.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+void
+foo ()
+{
+#pragma omp parallel
+ throw 0;
+}
+
+static inline void
+bar ()
+{
+#pragma omp parallel
+ throw 0;
+}
+
+void
+bar1 ()
+{
+ bar ();
+}
+
+void
+bar2 ()
+{
+ bar ();
+}
pr29965-7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-9.C
===================================================================
--- pr29965-9.C (nonexistent)
+++ pr29965-9.C (revision 816)
@@ -0,0 +1,34 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// This is invalid code, but we don't emit diagnostics for it, nevertheless
+// we test that we don't ICE on it.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+void
+foo1 ()
+{
+#pragma omp single
+ throw 0;
+}
+
+void
+foo2 ()
+{
+#pragma omp master
+ throw 0;
+}
+
+void
+foo3 ()
+{
+#pragma omp ordered
+ throw 0;
+}
+
+void
+foo4 ()
+{
+#pragma omp critical
+ throw 0;
+}
pr29965-9.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-atomic-2.C
===================================================================
--- tpl-atomic-2.C (nonexistent)
+++ tpl-atomic-2.C (revision 816)
@@ -0,0 +1,40 @@
+// { dg-do compile }
+
+struct S { int x; } s;
+
+// Make sure we detect errors on non-type-dependent things
+// even when the templates are never instantiated.
+template void f1()
+{
+ #pragma omp atomic
+ s += 1; // { dg-error "invalid" }
+}
+
+template void f2(float *f)
+{
+ #pragma omp atomic
+ *f |= 1; // { dg-error "invalid|evaluation" }
+}
+
+// Here the rhs is dependent, but not type dependent.
+template void f3(float *f)
+{
+ #pragma omp atomic
+ *f |= sizeof (T); // { dg-error "invalid|evaluation" }
+}
+
+// And the converse, no error here because we're never fed a T.
+template void f4(T *t)
+{
+ #pragma omp atomic
+ *t += 1;
+}
+
+// Here we'll let it go, because the rhs is type dependent and
+// we can't properly instantiate the statement, and we do most
+// of the semantic analysis concurrent with that.
+template void f5(float *f)
+{
+ #pragma omp atomic
+ *f |= (T)sizeof(T); // { dg-error "invalid|evaluation" "" { xfail *-*-* } }
+}
tpl-atomic-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-1.C
===================================================================
--- atomic-1.C (nonexistent)
+++ atomic-1.C (revision 816)
@@ -0,0 +1,99 @@
+/* { dg-do compile } */
+
+int x;
+volatile int y;
+volatile unsigned char z;
+
+void f1(void)
+{
+ #pragma omp atomic
+ x++;
+ #pragma omp atomic
+ x--;
+ #pragma omp atomic
+ ++x;
+ #pragma omp atomic
+ --x;
+ #pragma omp atomic
+ x += 1;
+ #pragma omp atomic
+ x -= y;
+ #pragma omp atomic
+ x |= 1;
+ #pragma omp atomic
+ x &= 1;
+ #pragma omp atomic
+ x ^= 1;
+ #pragma omp atomic
+ x *= 3;
+ #pragma omp atomic
+ x /= 3;
+ #pragma omp atomic
+ x /= 3;
+ #pragma omp atomic
+ x <<= 3;
+ #pragma omp atomic
+ x >>= 3;
+}
+
+void f2(void)
+{
+ #pragma omp atomic
+ y++;
+ #pragma omp atomic
+ y--;
+ #pragma omp atomic
+ ++y;
+ #pragma omp atomic
+ --y;
+ #pragma omp atomic
+ y += 1;
+ #pragma omp atomic
+ y -= x;
+ #pragma omp atomic
+ y |= 1;
+ #pragma omp atomic
+ y &= 1;
+ #pragma omp atomic
+ y ^= 1;
+ #pragma omp atomic
+ y *= 3;
+ #pragma omp atomic
+ y /= 3;
+ #pragma omp atomic
+ y /= 3;
+ #pragma omp atomic
+ y <<= 3;
+ #pragma omp atomic
+ y >>= 3;
+}
+
+void f3(void)
+{
+ #pragma omp atomic
+ z++;
+ #pragma omp atomic
+ z--;
+ #pragma omp atomic
+ ++z;
+ #pragma omp atomic
+ --z;
+ #pragma omp atomic
+ z += 1;
+ #pragma omp atomic
+ z |= 1;
+ #pragma omp atomic
+ z &= 1;
+ #pragma omp atomic
+ z ^= 1;
+ #pragma omp atomic
+ z *= 3;
+ #pragma omp atomic
+ z /= 3;
+ #pragma omp atomic
+ z /= 3;
+ #pragma omp atomic
+ z <<= 3;
+ #pragma omp atomic
+ z >>= 3;
+}
atomic-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: clause-2.C
===================================================================
--- clause-2.C (nonexistent)
+++ clause-2.C (revision 816)
@@ -0,0 +1,38 @@
+// { dg-do compile }
+
+struct A { int a; };
+struct B { B(); };
+struct C { C(); C(const C&); };
+struct D { D& operator=(const D&); };
+
+class E { private: E(); public: E(int); }; // { dg-error "private" }
+class F { private: F(const F&); public: F(); }; // { dg-error "private" }
+class G { private: G& operator=(const G&); }; // { dg-error "private" }
+
+void bar();
+void foo()
+{
+ A a; B b; C c; D d; E e(0); F f; G g;
+
+ #pragma omp parallel shared(a, b, c, d, e, f, g)
+ bar();
+
+ #pragma omp parallel private(a, b, c, d, f, g)
+ bar();
+ #pragma omp parallel private(e) // { dg-error "context" }
+ bar();
+
+ #pragma omp parallel firstprivate(a, b, c, d, e, g)
+ bar();
+ #pragma omp parallel firstprivate(f) // { dg-error "context" }
+ bar();
+
+ #pragma omp parallel sections lastprivate(a, b, d, c, f)
+ { bar(); }
+ #pragma omp parallel sections lastprivate(e) // { dg-error "context" }
+ { bar(); }
+ #pragma omp parallel sections lastprivate(g) // { dg-error "context" }
+ { bar(); }
+ #pragma omp parallel sections firstprivate(e) lastprivate(e)
+ { bar(); }
+}
clause-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-3.C
===================================================================
--- atomic-3.C (nonexistent)
+++ atomic-3.C (revision 816)
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-gimple" } */
+
+int *xyzzy;
+
+void f1(void)
+{
+ #pragma omp atomic
+ xyzzy++;
+}
+
+/* { dg-final { scan-tree-dump-times "xyzzy, 4" 1 "gimple" { target i?86-*-* x86_64-*-* ia64-*-* powerpc*-*-* alpha*-*-* } } } */
+/* { dg-final { cleanup-tree-dump "gimple" } } */
atomic-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-5.C
===================================================================
--- atomic-5.C (nonexistent)
+++ atomic-5.C (revision 816)
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+
+int x;
+const int y = 0;
+int bar(void);
+
+void f1(void)
+{
+ #pragma omp atomic
+ x %= 2; /* { dg-error "invalid operator" } */
+ #pragma omp atomic
+ x = x + 1; /* { dg-error "invalid operator" } */
+ #pragma omp atomic
+ x = 1; /* { dg-error "invalid operator" } */
+ #pragma omp atomic
+ ++y; /* { dg-error "read-only variable" } */
+ #pragma omp atomic
+ y--; /* { dg-error "read-only variable" } */
+ #pragma omp atomic
+ y += 1; /* { dg-error "read-only variable" } */
+ #pragma omp atomic
+ bar(); /* { dg-error "invalid operator" } */
+ #pragma omp atomic
+ bar() += 1; /* { dg-error "lvalue required" } */
+ #pragma omp atomic a /* { dg-error "expected end of line" } */
+ x++;
+ #pragma omp atomic
+ ; /* { dg-error "expected primary-expression" } */
+ #pragma omp atomic
+ #pragma omp atomic /* { dg-error "not allowed" } */
+ ;
+ /* Check that we didn't get stuck on the pragma eol marker. */
+ undef; /* { dg-error "" } */
+}
atomic-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr29965-10.C
===================================================================
--- pr29965-10.C (nonexistent)
+++ pr29965-10.C (revision 816)
@@ -0,0 +1,24 @@
+// PR middle-end/29965
+// Test that OpenMP construct bodies which never return don't cause ICEs.
+// This is invalid code, but we don't emit diagnostics for it, nevertheless
+// we test that we don't ICE on it.
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+void
+foo1 ()
+{
+ int i;
+#pragma omp for schedule (static)
+ for (i = 0; i < 2834; i++)
+ throw 0;
+}
+
+void
+foo2 ()
+{
+ int i;
+#pragma omp parallel for schedule (static)
+ for (i = 0; i < 2834; i++)
+ throw 0;
+}
pr29965-10.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-7.C
===================================================================
--- atomic-7.C (nonexistent)
+++ atomic-7.C (revision 816)
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+double x, y;
+
+void f2(void)
+{
+ #pragma omp atomic
+ y++;
+ #pragma omp atomic
+ y--;
+ #pragma omp atomic
+ ++y;
+ #pragma omp atomic
+ --y;
+ #pragma omp atomic
+ y += 1;
+ #pragma omp atomic
+ y -= x;
+ #pragma omp atomic
+ y *= 3;
+ #pragma omp atomic
+ y /= 3;
+}
atomic-7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-9.C
===================================================================
--- atomic-9.C (nonexistent)
+++ atomic-9.C (revision 816)
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-gimple" } */
+
+volatile int *bar(void);
+
+void f1(void)
+{
+ #pragma omp atomic
+ *bar() += 1;
+}
+
+/* { dg-final { scan-tree-dump-times "__sync_fetch_and_add" 1 "gimple" { target i?86-*-* x86_64-*-* ia64-*-* powerpc*-*-* alpha*-*-* } } } */
+/* { dg-final { cleanup-tree-dump "gimple" } } */
atomic-9.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: ordered-2.C
===================================================================
--- ordered-2.C (nonexistent)
+++ ordered-2.C (revision 816)
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+
+void f1(void)
+{
+ #pragma omp ordered asdf /* { dg-error "expected" } */
+ #pragma omp ordered
+} /* { dg-error "expected" } */
ordered-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-1.C
===================================================================
--- for-1.C (nonexistent)
+++ for-1.C (revision 816)
@@ -0,0 +1,49 @@
+// { dg-do compile }
+
+extern void baz(int);
+void foo (int j, int k)
+{
+ int i;
+
+ /* Valid loops. */
+ #pragma omp for
+ for (i = 0; i < 10; i++)
+ baz (i);
+
+ #pragma omp for
+ for (i = j; i <= 10; i+=4)
+ baz (i);
+
+ #pragma omp for
+ for (i = j; i > 0; i = i - 1)
+ baz (j);
+
+ #pragma omp for
+ for (i = j; i >= k; i--)
+ baz (i);
+
+ // Malformed parallel loops.
+ #pragma omp for
+ i = 0; // { dg-error "for statement expected" }
+ for ( ; i < 10; )
+ {
+ baz (i);
+ i++;
+ }
+
+ #pragma omp for
+ for (i = 0; ; i--) // { dg-error "missing controlling predicate" }
+ {
+ if (i >= 10)
+ break; // { dg-error "break" }
+ baz (i);
+ }
+
+ #pragma omp for
+ for (i = 0; i < 10 && j > 4; i-=3) // { dg-error "invalid controlling predicate" }
+ baz (i);
+
+ #pragma omp for
+ for (i = 0; i < 10; i-=3, j+=2) // { dg-error "invalid increment expression" }
+ baz (i);
+}
for-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: barrier-1.C
===================================================================
--- barrier-1.C (nonexistent)
+++ barrier-1.C (revision 816)
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-gimple" } */
+
+void f1(void)
+{
+ #pragma omp barrier
+}
+
+void f2(bool p)
+{
+ if (p)
+ {
+ #pragma omp barrier
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_barrier" 2 "gimple" } } */
+/* { dg-final { cleanup-tree-dump "gimple" } } */
barrier-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26823-1.C
===================================================================
--- pr26823-1.C (nonexistent)
+++ pr26823-1.C (revision 816)
@@ -0,0 +1,23 @@
+// PR middle-end/26823
+// { dg-do compile }
+
+struct A
+{
+ ~A () {}
+};
+
+struct B
+{
+ A a;
+ B ();
+};
+
+void
+foo ()
+{
+#pragma omp parallel
+ {
+ B b[1];
+ new int;
+ }
+}
pr26823-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27415.C
===================================================================
--- pr27415.C (nonexistent)
+++ pr27415.C (revision 816)
@@ -0,0 +1,50 @@
+// PR middle-end/27415
+// { dg-do compile }
+
+void
+test1 (void)
+{
+ int i = 0;
+#pragma omp parallel
+#pragma omp for firstprivate (i) // { dg-error "should not be firstprivate" }
+ for (i = 0; i < 10; i++)
+ ;
+}
+
+void
+test2 (void)
+{
+ int i = 0;
+#pragma omp parallel for firstprivate (i)
+ for (i = 0; i < 10; i++) // { dg-error "should not be firstprivate" }
+ ;
+}
+
+void
+test3 (void)
+{
+ int i = 0;
+#pragma omp parallel
+#pragma omp for reduction (+:i) // { dg-error "should not be reduction" }
+ for (i = 0; i < 10; i++)
+ ;
+}
+
+void
+test4 (void)
+{
+ int i = 0;
+#pragma omp parallel for reduction (*:i)
+ for (i = 0; i < 10; i++) // { dg-error "should not be reduction" }
+ ;
+}
+
+void
+test5 (void)
+{
+ int i = 0;
+#pragma omp parallel firstprivate (i)
+#pragma omp for
+ for (i = 0; i < 10; i++)
+ ;
+}
pr27415.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-3.C
===================================================================
--- for-3.C (nonexistent)
+++ for-3.C (revision 816)
@@ -0,0 +1,62 @@
+// { dg-do compile }
+
+int bar ();
+
+void foo()
+{
+ int i;
+
+ #pragma omp for schedule // { dg-error "expected" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule static // { dg-error "expected" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( // { dg-error "invalid schedule kind" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static // { dg-error "expected" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static )
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( foo ) // { dg-error "invalid schedule kind" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static 1 // { dg-error "expected" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static 1 ) nowait // { dg-error "expected" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static, 1 ) nowait
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static, 1, 1 ) nowait // { dg-error "expected" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static, 1 + 1 ) nowait
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule ( static, 1.0 ) // { dg-error "integral" }
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule (dynamic)
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule (dynamic, bar ())
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule (guided)
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule (guided, bar ())
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule (runtime)
+ for (i = 0; i < 10; ++i) ;
+
+ #pragma omp for schedule (runtime, bar ()) // { dg-error "does not take" }
+ for (i = 0; i < 10; ++i) ;
+}
for-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27337-2.C
===================================================================
--- pr27337-2.C (nonexistent)
+++ pr27337-2.C (revision 816)
@@ -0,0 +1,22 @@
+// PR middle-end/27337
+// { dg-do compile }
+
+struct S
+{
+ S ();
+ ~S ();
+ int i;
+};
+
+S
+foo ()
+{
+ int i;
+ S ret;
+
+#pragma omp parallel for firstprivate (ret) lastprivate (ret)
+ for (i = 0; i < 2; i++)
+ ret.i += i;
+
+ return ret;
+}
pr27337-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-master-1.C
===================================================================
--- tpl-master-1.C (nonexistent)
+++ tpl-master-1.C (revision 816)
@@ -0,0 +1,30 @@
+// PR c++/24734
+// { dg-do compile }
+// { dg-options "-fopenmp -fdump-tree-gimple" }
+
+int i;
+
+template void f1 ()
+{
+ #pragma omp ordered
+ i++;
+}
+
+template void f2 (bool p)
+{
+ if (p)
+ {
+ #pragma omp master
+ i++;
+ }
+}
+
+void f3 ()
+{
+ f1<0> ();
+ f2<0> (true);
+}
+
+// { dg-final { scan-tree-dump-times "#pragma omp ordered" 1 "gimple" } }
+// { dg-final { scan-tree-dump-times "#pragma omp master" 1 "gimple" } }
+// { dg-final { cleanup-tree-dump "gimple" } }
tpl-master-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-5.C
===================================================================
--- for-5.C (nonexistent)
+++ for-5.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(guided)
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_guided_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_guided_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-1.C
===================================================================
--- block-1.C (nonexistent)
+++ block-1.C (revision 816)
@@ -0,0 +1,22 @@
+// { dg-do compile }
+
+void foo()
+{
+ bad1: // { dg-error "jump to label" }
+ #pragma omp parallel
+ goto bad1; // { dg-error "from here|exits OpenMP" }
+
+ goto bad2; // { dg-error "from here" }
+ #pragma omp parallel
+ {
+ bad2: ; // { dg-error "jump to label|enters OpenMP" }
+ }
+
+ #pragma omp parallel
+ {
+ int i;
+ goto ok1;
+ for (i = 0; i < 10; ++i)
+ { ok1: break; }
+ }
+}
block-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-parallel-2.C
===================================================================
--- tpl-parallel-2.C (nonexistent)
+++ tpl-parallel-2.C (revision 816)
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+template
+struct S
+{
+ T n;
+ void test();
+ void work();
+};
+
+template
+void S::test()
+{
+ #pragma omp parallel num_threads(n) // { dg-error "must be integral" }
+ work();
+}
+
+template struct S;
+template struct S;
+template struct S; // { dg-error "instantiated from here" }
tpl-parallel-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: master-2.C
===================================================================
--- master-2.C (nonexistent)
+++ master-2.C (revision 816)
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+
+void f1(void)
+{
+ #pragma omp master asdf /* { dg-error "expected" } */
+ #pragma omp master
+} /* { dg-error "expected" } */
master-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-7.C
===================================================================
--- for-7.C (nonexistent)
+++ for-7.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(static) ordered
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_static_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_static_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: atomic-10.C
===================================================================
--- atomic-10.C (nonexistent)
+++ atomic-10.C (revision 816)
@@ -0,0 +1,24 @@
+// PR middle-end/28046
+// { dg-do compile }
+// { dg-options "-fopenmp -fdump-tree-gimple" }
+
+int a[3], b;
+struct C { int x; int y; } c;
+
+int bar (void), *baz (void);
+
+void
+foo (void)
+{
+#pragma omp atomic
+ a[2] += bar ();
+#pragma omp atomic
+ b += bar ();
+#pragma omp atomic
+ c.y += bar ();
+#pragma omp atomic
+ *baz () += bar ();
+}
+
+// { dg-final { scan-tree-dump-times "__sync_fetch_and_add" 4 "gimple" { target i?86-*-* x86_64-*-* ia64-*-* powerpc*-*-* alpha*-*-* } } }
+// { dg-final { cleanup-tree-dump "gimple" } }
atomic-10.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-3.C
===================================================================
--- block-3.C (nonexistent)
+++ block-3.C (revision 816)
@@ -0,0 +1,57 @@
+// { dg-do compile }
+
+extern int test(int);
+void foo()
+{
+ int i;
+
+ for (i = 0; i < 10; ++i)
+ {
+ #pragma omp sections
+ {
+ continue; // { dg-error "invalid exit" }
+ }
+ }
+
+ #pragma omp sections
+ {
+ #pragma omp section
+ { bad1: ; } // { dg-error "jump to label" }
+ #pragma omp section
+ goto bad1; // { dg-error "from here|enters OpenMP" }
+ }
+
+ #pragma omp sections
+ {
+ goto bad2; // { dg-error "from here" }
+ }
+ bad2:; // { dg-error "jump|exits OpenMP" }
+
+ goto bad3; // { dg-error "from here" }
+ #pragma omp sections
+ {
+ bad3: ; // { dg-error "jump|enters OpenMP" }
+ }
+
+ #pragma omp sections
+ {
+ goto ok1;
+ ok1:;
+
+ #pragma omp section
+ for (i = 0; i < 10; ++i)
+ if (test(i))
+ break;
+ else
+ continue;
+
+ #pragma omp section
+ switch (i)
+ {
+ case 0:
+ break;
+ default:
+ test(i);
+ }
+ }
+}
block-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: parallel-2.C
===================================================================
--- parallel-2.C (nonexistent)
+++ parallel-2.C (revision 816)
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+void foo()
+{
+ int i;
+
+ #pragma omp parallel default(none) // { dg-error "enclosing" }
+ {
+ #pragma omp parallel
+ {
+ #pragma omp parallel default(none) // { dg-error "enclosing" }
+ {
+ i++; // { dg-error "not specified" }
+ }
+ }
+ }
+}
parallel-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27359.C
===================================================================
--- pr27359.C (nonexistent)
+++ pr27359.C (revision 816)
@@ -0,0 +1,10 @@
+// PR c++/27359
+// { dg-do compile }
+
+void
+foo ()
+{
+#pragma omp parallel for
+ for (int i; i < 1; ++i) // { dg-error "expected|was not declared" }
+ ;
+}
pr27359.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-9.C
===================================================================
--- for-9.C (nonexistent)
+++ for-9.C (revision 816)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-ompexp" } */
+
+extern void bar(int);
+
+void foo (int n)
+{
+ int i;
+
+ #pragma omp for schedule(guided) ordered
+ for (i = 0; i < n; ++i)
+ bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_guided_start" 1 "ompexp" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_guided_next" 1 "ompexp" } } */
+/* { dg-final { cleanup-tree-dump "ompexp" } } */
for-9.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-5.C
===================================================================
--- block-5.C (nonexistent)
+++ block-5.C (revision 816)
@@ -0,0 +1,15 @@
+// { dg-do compile }
+
+void foo()
+{
+ #pragma omp master
+ {
+ goto bad1; // { dg-error "from here" }
+ }
+
+ #pragma omp master
+ {
+ bad1: // { dg-error "jump|exits OpenMP" }
+ return; // { dg-error "invalid exit" }
+ }
+}
block-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: parallel-4.C
===================================================================
--- parallel-4.C (nonexistent)
+++ parallel-4.C (revision 816)
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+extern int foo(void);
+extern void bar(void);
+
+int main ()
+{
+ /* Malformed uses of 'if' and 'num_threads'. */
+ #pragma omp parallel if (foo () > 10) if (foo () == 3) /* { dg-error "too many" } */
+ {
+ bar ();
+ }
+
+ #pragma omp parallel num_threads (3) num_threads (20) /* { dg-error "too many" } */
+ {
+ bar ();
+ }
+
+ /* Valid uses of 'if' and 'num_threads'. */
+ #pragma omp parallel if (foo () == 10) num_threads (foo ())
+ {
+ bar ();
+ }
+}
parallel-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-7.C
===================================================================
--- block-7.C (nonexistent)
+++ block-7.C (revision 816)
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+void foo()
+{
+ int i, j;
+ for (i = 0; i < 10; ++i)
+ {
+ #pragma omp for
+ for (j = ({ continue; 0; }); // { dg-error "invalid exit" }
+ j < ({ continue; 10; }); // { dg-error "invalid exit" }
+ j += ({ continue; 1; })) // { dg-error "invalid exit" }
+ continue;
+
+ #pragma omp for
+ for (j = ({ break; 0; }); // { dg-error "invalid exit" }
+ j < ({ break; 10; }); // { dg-error "invalid exit" }
+ j += ({ break; 1; })) // { dg-error "invalid exit" }
+ break; // { dg-error "break" }
+ }
+}
block-7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: macro-2.C
===================================================================
--- macro-2.C (nonexistent)
+++ macro-2.C (revision 816)
@@ -0,0 +1,14 @@
+// { dg-do compile }
+
+#define p parallel
+#define s(x) shared(x##1, x##2)
+#define d(x) default(x)
+
+void bar(int, int, int, int);
+void foo(void)
+{
+ int a1, a2, b1, b2;
+
+ #pragma omp p s(a) s(b) d(none)
+ bar(a1, a2, b1, b2);
+}
macro-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-9.C
===================================================================
--- block-9.C (nonexistent)
+++ block-9.C (revision 816)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+void foo(int i)
+{
+ int j;
+ switch (i)
+ {
+ #pragma omp parallel
+ { case 0:; } // { dg-error "jump|enters" }
+ #pragma omp for
+ for (j = 0; j < 10; ++ j)
+ { case 1:; } // { dg-error "jump|enters" }
+ #pragma omp critical
+ { case 2:; } // { dg-error "jump|enters" }
+ #pragma omp master
+ { case 3:; } // { dg-error "jump|enters" }
+ #pragma omp sections
+ { case 4:; // { dg-error "jump|enters" }
+ #pragma omp section
+ { case 5:; } // { dg-error "jump|enters" }
+ }
+ #pragma omp ordered
+ { default:; } // { dg-error "jump|enters" }
+ }
+}
block-9.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr25996.C
===================================================================
--- pr25996.C (nonexistent)
+++ pr25996.C (revision 816)
@@ -0,0 +1,32 @@
+// PR c/25996
+
+void
+test1 (void)
+{
+#pragma omp for
+ for (i = 0; i < 1; ++i); // { dg-error "not declared|expected iteration decl" }
+}
+
+void
+test2 (void)
+{
+ int i;
+#pragma omp for
+ for (i = j; i < 1; ++i); // { dg-error "not declared|expected iteration decl" }
+}
+
+void
+test3 (void)
+{
+ int i;
+#pragma omp for
+ for (i = 0; i < j; ++i); // { dg-error "not declared|invalid controlling predicate" }
+}
+
+void
+test4 (void)
+{
+ int i;
+#pragma omp for
+ for (i = 0; i < 10; i += j); // { dg-error "not declared|invalid increment expression" }
+}
pr25996.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27499.C
===================================================================
--- pr27499.C (nonexistent)
+++ pr27499.C (revision 816)
@@ -0,0 +1,13 @@
+// PR c/27499
+// { dg-do compile }
+
+extern void bar (unsigned int);
+
+void
+foo (void)
+{
+ unsigned int i;
+#pragma omp for
+ for (i = 0; i < 64; ++i) // { dg-warning "is unsigned" }
+ bar (i);
+}
pr27499.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: macro-4.C
===================================================================
--- macro-4.C (nonexistent)
+++ macro-4.C (revision 816)
@@ -0,0 +1,29 @@
+// PR preprocessor/27746
+// { dg-do compile }
+// { dg-options "-fopenmp -Wunknown-pragmas" }
+
+#define p _Pragma ("omp parallel")
+#define omp_p _Pragma ("omp p")
+
+void bar (void);
+
+void
+foo (void)
+{
+#pragma omp p // { dg-warning "ignoring #pragma omp _Pragma" }
+ bar ();
+ omp_p // { dg-warning "ignoring #pragma omp _Pragma" }
+ bar ();
+}
+
+#define parallel serial
+#define omp_parallel _Pragma ("omp parallel")
+
+void
+baz (void)
+{
+#pragma omp parallel // { dg-warning "ignoring #pragma omp serial" }
+ bar ();
+ omp_parallel // { dg-warning "ignoring #pragma omp serial" }
+ bar ();
+}
macro-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-11.C
===================================================================
--- for-11.C (nonexistent)
+++ for-11.C (revision 816)
@@ -0,0 +1,14 @@
+// { dg-do compile }
+
+extern void baz (int);
+
+void foo (int j, int k)
+{
+ #pragma omp for
+ for (int l = j; l < k; l++)
+ baz (l);
+
+ #pragma omp for
+ for (int i = 0, m = 0; m < 10; m++) // { dg-error "" }
+ baz (m);
+}
for-11.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-13.C
===================================================================
--- for-13.C (nonexistent)
+++ for-13.C (revision 816)
@@ -0,0 +1,18 @@
+// At one point in development, a typo disabled the remapping of the
+// for iteration variable as private.
+
+// { dg-do compile }
+// { dg-options "-fopenmp -fdump-tree-lower" }
+
+extern void bar(int);
+void foo(void)
+{
+ int i;
+
+#pragma omp parallel for default(none)
+ for (i = 0; i < 10; i++)
+ bar(i);
+}
+
+// { dg-final { scan-tree-dump-times "omp_data_o" 0 "lower" } }
+// { dg-final { cleanup-tree-dump "lower" } }
for-13.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-15.C
===================================================================
--- for-15.C (nonexistent)
+++ for-15.C (revision 816)
@@ -0,0 +1,35 @@
+// PR c++/24512
+// { dg-do compile }
+
+template void foo ()
+{
+#pragma omp for
+ for (int i = 0; i < 10; i++);
+
+#pragma omp for
+ for (int i = 0; i < 10; i++);
+
+#pragma omp for
+ for (T j = 0; j < 10; j++);
+
+#pragma omp for
+ for (T j = 0; j < 10; j++);
+
+#pragma omp parallel for
+ for (int k = 0; k < 10; k++);
+
+#pragma omp parallel for
+ for (int k = 0; k < 10; k++);
+
+#pragma omp parallel for
+ for (T l = 0; l < 10; l++);
+
+#pragma omp parallel for
+ for (T l = 0; l < 10; l++);
+}
+
+void bar ()
+{
+ foo ();
+ foo ();
+}
for-15.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: block-11.C
===================================================================
--- block-11.C (nonexistent)
+++ block-11.C (revision 816)
@@ -0,0 +1,19 @@
+/* PR c++/24516 */
+/* { dg-do compile } */
+
+void
+bar (int *p)
+{
+ int m;
+#pragma omp parallel for
+ for (m = 0; m < 1000; ++m)
+ switch (p[m])
+ {
+ case 1:
+ p[m] = 2;
+ break;
+ default:
+ p[m] = 3;
+ break;
+ }
+}
block-11.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: for-17.C
===================================================================
--- for-17.C (nonexistent)
+++ for-17.C (revision 816)
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+
+void foo()
+{
+ long n = 10;
+ int i;
+#pragma omp for
+ for (i=0; i < n; ++i) ;
+#pragma omp for
+ for (i=0; n > i; ++i) ;
+}
for-17.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: flush-1.C
===================================================================
--- flush-1.C (nonexistent)
+++ flush-1.C (revision 816)
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-gimple" } */
+
+void f1(void)
+{
+ #pragma omp flush
+}
+
+int x;
+
+void f2(bool p)
+{
+ int z;
+ if (p)
+ {
+ #pragma omp flush (x)
+ }
+ else
+ {
+ #pragma omp flush (x, z, p)
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "__sync_synchronize" 3 "gimple" } } */
+/* { dg-final { cleanup-tree-dump "gimple" } } */
flush-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26611-2.C
===================================================================
--- pr26611-2.C (nonexistent)
+++ pr26611-2.C (revision 816)
@@ -0,0 +1,15 @@
+// PR middle-end/26611
+// { dg-do compile }
+
+void
+foo ()
+{
+#pragma omp parallel
+ try
+ {
+ }
+ catch (...)
+ {
+ int q = 1;
+ }
+}
pr26611-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tpl-for-2.C
===================================================================
--- tpl-for-2.C (nonexistent)
+++ tpl-for-2.C (revision 816)
@@ -0,0 +1,15 @@
+// { dg-do compile }
+
+void foo(int);
+
+template void bar()
+{
+ #pragma omp for
+ for (int i = A; i < B; i += C)
+ foo(i);
+}
+
+void test()
+{
+ bar<0, 10, 2>();
+}
tpl-for-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr30494.C
===================================================================
--- pr30494.C (nonexistent)
+++ pr30494.C (revision 816)
@@ -0,0 +1,30 @@
+// PR middle-end/30494
+// { dg-do compile }
+
+int
+foo (int n)
+{
+ int i;
+#pragma omp for
+ for (i = 0; i < 6; i++)
+ {
+ int v[n], w[n * 3 + i];
+ v[0] = 1;
+ w[0] = 2;
+ }
+ return 0;
+}
+
+int
+bar (int n)
+{
+ int i;
+#pragma parallel omp for
+ for (i = 0; i < 6; i++)
+ {
+ int v[n], w[n * 3 + i];
+ v[0] = 1;
+ w[0] = 2;
+ }
+ return 0;
+}
pr30494.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr30558.C
===================================================================
--- pr30558.C (nonexistent)
+++ pr30558.C (revision 816)
@@ -0,0 +1,41 @@
+// PR tree-optimization/30558
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+
+template struct F
+{
+ ~F ();
+ F (T);
+ const T &operator[] (unsigned i) const;
+};
+
+template F foo (const F &x)
+{
+ return F (x[1]);
+}
+
+struct G
+{
+ G () { bar (2); }
+ F &operator () (F x);
+ void bar (int);
+};
+
+int
+main ()
+{
+ try
+ {
+ G g;
+#pragma omp parallel for
+ for (int i = 0; i < 10; ++i)
+ {
+ F j (i);
+ F f = g (j);
+ F h = foo (f);
+ }
+ }
+ catch (int &e)
+ {
+ }
+}
pr30558.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: sections-2.C
===================================================================
--- sections-2.C (nonexistent)
+++ sections-2.C (revision 816)
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+
+extern void bar(int);
+void foo(void)
+{
+ #pragma omp sections
+ bar (0); // { dg-error "expected" }
+
+ #pragma omp sections
+ {
+ } // { dg-error "expected" }
+
+ #pragma omp sections
+ {
+ bar (1);
+ }
+
+ #pragma omp sections
+ {
+ #pragma omp section
+ bar(2);
+ bar(3); // { dg-error "expected" }
+ bar(4);
+ #pragma omp section
+ bar(5);
+ bar(6); // { dg-error "expected" }
+ bar(7);
+ }
+}
sections-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr26690-2.C
===================================================================
--- pr26690-2.C (nonexistent)
+++ pr26690-2.C (revision 816)
@@ -0,0 +1,16 @@
+// PR c++/26690
+// { dg-do compile }
+
+struct A
+{
+ A (int x = 6); // { dg-error "A::A\\(int\\)" }
+ A (long long x = 12LL); // { dg-error "candidates" }
+};
+
+void
+foo ()
+{
+ A a(6);
+#pragma omp parallel private (a) // { dg-error "call of overloaded" }
+ ;
+}
pr26690-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: critical-1.C
===================================================================
--- critical-1.C (nonexistent)
+++ critical-1.C (revision 816)
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -fdump-tree-omplower" } */
+
+extern void bar(int);
+
+void foo (void)
+{
+ #pragma omp critical
+ bar(0);
+
+ /* Note that "name" is in its own namespace, thus this foo is not
+ the same as the function. */
+ #pragma omp critical(foo)
+ {
+ bar(1);
+ bar(2);
+ }
+
+ #pragma omp critical
+ #pragma omp critical(foo)
+ bar(3);
+}
+
+/* { dg-final { scan-tree-dump-times "GOMP_critical_start" 2 "omplower" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_critical_end" 2 "omplower" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_critical_name_start" 2 "omplower" } } */
+/* { dg-final { scan-tree-dump-times "GOMP_critical_name_end" 2 "omplower" } } */
+/* { dg-final { cleanup-tree-dump "omplower" } } */
critical-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: sections-4.C
===================================================================
--- sections-4.C (nonexistent)
+++ sections-4.C (revision 816)
@@ -0,0 +1,13 @@
+/* PR c++/24613 */
+/* { dg-compile } */
+
+#pragma omp section /* { dg-error "may only be used in" } */
+
+int i;
+
+void
+foo (void)
+{
+ #pragma omp section /* { dg-error "may only be used in" } */
+ i++;
+}
sections-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property