OpenCores
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.