OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gnu-src/gcc-4.5.1/gcc-4.5.1-or32-1.0rc1/gcc/testsuite/g++.dg/gomp
    from Rev 301 to Rev 338
    Reverse comparison

Rev 301 → Rev 338

/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 338) @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-require-effective-target tls_native } + +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: task-1.C =================================================================== --- task-1.C (nonexistent) +++ task-1.C (revision 338) @@ -0,0 +1,17 @@ +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A { A (); ~A (); int i; }; + +template void bar (T &); + +const A a; + +void foo (A &p) +{ + const A &q = a; +#pragma omp task // { dg-error "has reference type" } + bar (p); +#pragma omp task // { dg-error "has reference type" } + bar (q); +}
task-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 338) @@ -0,0 +1,18 @@ +// { dg-do compile } +// { dg-require-effective-target tls_native } + +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-6.C =================================================================== --- pr29965-6.C (nonexistent) +++ pr29965-6.C (revision 338) @@ -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: tpl-atomic-1.C =================================================================== --- tpl-atomic-1.C (nonexistent) +++ tpl-atomic-1.C (revision 338) @@ -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-3.C =================================================================== --- clause-3.C (nonexistent) +++ clause-3.C (revision 338) @@ -0,0 +1,94 @@ +// { dg-do compile } +// { dg-require-effective-target tls_native } + +#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 338) @@ -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: pr33372-1.C =================================================================== --- pr33372-1.C (nonexistent) +++ pr33372-1.C (revision 338) @@ -0,0 +1,19 @@ +// PR c++/33372 +// { dg-do compile } +// { dg-options "-fopenmp" } + +template +void f () +{ + extern T n (); +#pragma omp parallel num_threads(n) // { dg-error "num_threads expression must be integral" } + ; +#pragma omp parallel for schedule(static, n) + for (int i = 0; i < 10; i++) // { dg-error "chunk size expression must be integral" } + ; +} + +void g () +{ + f (); +}
pr33372-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-8.C =================================================================== --- atomic-8.C (nonexistent) +++ atomic-8.C (revision 338) @@ -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: pr26823-2.C =================================================================== --- pr26823-2.C (nonexistent) +++ pr26823-2.C (revision 338) @@ -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: barrier-2.C =================================================================== --- barrier-2.C (nonexistent) +++ barrier-2.C (revision 338) @@ -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: for-2.C =================================================================== --- for-2.C (nonexistent) +++ for-2.C (revision 338) @@ -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: predetermined-1.C =================================================================== --- predetermined-1.C (nonexistent) +++ predetermined-1.C (revision 338) @@ -0,0 +1,33 @@ +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A { int i; A (); ~A (); }; +struct B { int i; }; +struct C { int i; mutable int j; C (); ~C (); }; + +template void bar (const T *); + +const A a; +const C c; + +const A foo (const A d, const C e) +{ + const A f; + const B b = { 4 }; + A g; + #pragma omp parallel default (none) + bar (&a); + #pragma omp parallel default (none) + bar (&b); + #pragma omp parallel default (none) // { dg-error "enclosing parallel" } + bar (&c); // { dg-error "not specified" } + #pragma omp parallel default (none) + bar (&d); + #pragma omp parallel default (none) // { dg-error "enclosing parallel" } + bar (&e); // { dg-error "not specified" } + #pragma omp parallel default (none) + bar (&f); + #pragma omp parallel default (none) // { dg-error "enclosing parallel" } + bar (&g); // { dg-error "not specified" } + return f; +}
predetermined-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-1.C =================================================================== --- tpl-parallel-1.C (nonexistent) +++ tpl-parallel-1.C (revision 338) @@ -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: sharing-1.C =================================================================== --- sharing-1.C (nonexistent) +++ sharing-1.C (revision 338) @@ -0,0 +1,77 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls_native } */ + +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: for-6.C =================================================================== --- for-6.C (nonexistent) +++ for-6.C (revision 338) @@ -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 338) @@ -0,0 +1,35 @@ +// { 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; +} + +// { dg-message "error: invalid branch to/from an OpenMP structured block" "" { target *-*-* } 14 } +// { dg-message "error: invalid entry to OpenMP structured block" "" { target *-*-* } 16 }
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: parallel-1.C =================================================================== --- parallel-1.C (nonexistent) +++ parallel-1.C (revision 338) @@ -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: master-3.C =================================================================== --- master-3.C (nonexistent) +++ master-3.C (revision 338) @@ -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: pr25874.C =================================================================== --- pr25874.C (nonexistent) +++ pr25874.C (revision 338) @@ -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: block-6.C =================================================================== --- block-6.C (nonexistent) +++ block-6.C (revision 338) @@ -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: pr39495-2.C =================================================================== --- pr39495-2.C (nonexistent) +++ pr39495-2.C (revision 338) @@ -0,0 +1,39 @@ +// PR c/39495 +// { dg-do compile } +// { dg-options "-fopenmp" } + +#define INT_MIN (-__INT_MAX__ - 1) +#define INT_MAX __INT_MAX__ +#define UINT_MAX (2U * __INT_MAX__ + 1) + +int +foo (void) +{ + int i; + unsigned int u; + +#pragma omp for + for (i = INT_MIN + 6; i != INT_MIN; i--) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (i = INT_MIN + 6; i == INT_MIN; i--) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (i = INT_MAX - 6; i != INT_MAX; i++) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (i = INT_MAX - 6; i == INT_MAX; i++) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (u = 6; u != 0; u--) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (u = 6; u == 0; u--) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (u = UINT_MAX - 6; u != UINT_MAX; u++) // { dg-error "invalid controlling predicate" } + ; +#pragma omp for + for (u = UINT_MAX - 6; u == UINT_MAX; u++) // { dg-error "invalid controlling predicate" } + ; +}
pr39495-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: parallel-5.C =================================================================== --- parallel-5.C (nonexistent) +++ parallel-5.C (revision 338) @@ -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: macro-3.C =================================================================== --- macro-3.C (nonexistent) +++ macro-3.C (revision 338) @@ -0,0 +1,26 @@ +// 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" } } +// { dg-final { cleanup-tree-dump "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-12.C =================================================================== --- for-12.C (nonexistent) +++ for-12.C (revision 338) @@ -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 338) @@ -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-16.C =================================================================== --- for-16.C (nonexistent) +++ for-16.C (revision 338) @@ -0,0 +1,32 @@ +// { dg-do compile } + +template +void foo () +{ +#pragma omp for + for (unsigned int i = 0; i < 10; i++); +#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); // { dg-error "invalid increment expression" } +#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: gomp.exp =================================================================== --- gomp.exp (nonexistent) +++ gomp.exp (revision 338) @@ -0,0 +1,33 @@ +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# 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: pr42234.C =================================================================== --- pr42234.C (nonexistent) +++ pr42234.C (revision 338) @@ -0,0 +1,19 @@ +// PR c++/42234 +// { dg-do compile } +// { dg-options "-fopenmp" } + +extern int foo (void); + +void +bar (int x) +{ + #pragma omp critical + { + int j; + for (j = 0; j < foo (); j++) + ; + if (0) + if (x >= 4) + ; + } +}
pr42234.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 338) @@ -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-barrier-1.C =================================================================== --- tpl-barrier-1.C (nonexistent) +++ tpl-barrier-1.C (revision 338) @@ -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 338) @@ -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 338) @@ -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: pr32177.C =================================================================== --- pr32177.C (nonexistent) +++ pr32177.C (revision 338) @@ -0,0 +1,46 @@ +// PR c++/32177 +// { dg-do compile } +// { dg-options "-fopenmp" } +// +// Copyright (C) 2007 Free Software Foundation, Inc. +// Contributed by Theodore.Papadopoulo 1 Jun 2007 + +struct A +{ + A () {} + ~A () {} + int s () const { return 1; } +}; + +void +f1 () +{ + #pragma omp parallel for + for (int i = 1; i <= A ().s (); ++i) + ; +} + +void +f2 () +{ + #pragma omp parallel for + for (int i = A ().s (); i <= 20; ++i) + ; +} + +void +f3 () +{ + #pragma omp parallel for + for (int i = 1; i <= 20; i += A ().s ()) + ; +} + +void +f4 () +{ + int i; + #pragma omp parallel for + for (i = A ().s (); i <= 20; i++) + ; +}
pr32177.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 338) @@ -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: pr26690-1.C =================================================================== --- pr26690-1.C (nonexistent) +++ pr26690-1.C (revision 338) @@ -0,0 +1,15 @@ +// PR c++/26690 +// { dg-do compile } + +struct A +{ // { dg-message "A::A\\(const A&\\)" } + A (int); // { dg-message "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: pr37189.C =================================================================== --- pr37189.C (nonexistent) +++ pr37189.C (revision 338) @@ -0,0 +1,27 @@ +// PR c++/37189 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct S +{ + S () {} + S (S const &) {} +}; + +struct T +{ + S s; +}; + +void +bar (T &) +{ +} + +int +foo () +{ + T t; + #pragma omp task + bar (t); +}
pr37189.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 338) @@ -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 338) @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls_native } */ + +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-7.C =================================================================== --- pr29965-7.C (nonexistent) +++ pr29965-7.C (revision 338) @@ -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: tpl-atomic-2.C =================================================================== --- tpl-atomic-2.C (nonexistent) +++ tpl-atomic-2.C (revision 338) @@ -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 338) @@ -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-4.C =================================================================== --- clause-4.C (nonexistent) +++ clause-4.C (revision 338) @@ -0,0 +1,23 @@ +// PR c/34506 +// { dg-do compile } + +#define p parallel + +void +foo (int x) +{ +#pragma omp p num_threads (4) if (1) private (x) + ; +#pragma omp p num_threads(4)if(1)private(x) + ; +#pragma omp p num_threads (4), if (1) , private (x) + ; +#pragma omp p num_threads(4),if(1),private(x) + ; +#pragma omp p, num_threads (4), if (1), private (x) // { dg-error "clause before" } + ; +#pragma omp p num_threads (4), if (1), private (x), // { dg-error "clause before" } + ; +#pragma omp p num_threads (4), , if (1), private (x) // { dg-error "clause before" } + ; +}
clause-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: atomic-5.C =================================================================== --- atomic-5.C (nonexistent) +++ atomic-5.C (revision 338) @@ -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: pr33333.C =================================================================== --- pr33333.C (nonexistent) +++ pr33333.C (revision 338) @@ -0,0 +1,19 @@ +// PR middle-end/33333 +// { dg-do compile } + +struct A +{ + int n; + void foo (); +}; + +void +A::foo () +{ + try + { + #pragma omp parallel for + for (int i = 0; i < n; ++i) + ; + } catch (...) {} +}
pr33333.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: pr33372-2.C =================================================================== --- pr33372-2.C (nonexistent) +++ pr33372-2.C (revision 338) @@ -0,0 +1,19 @@ +// PR c++/33372 +// { dg-do compile } +// { dg-options "-fopenmp" } + +template +void f () +{ + T n = 6; +#pragma omp parallel num_threads(n) + ; +#pragma omp parallel for schedule(static, n) + for (int i = 0; i < 10; i++) + ; +} + +void g () +{ + f (); +}
pr33372-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-9.C =================================================================== --- atomic-9.C (nonexistent) +++ atomic-9.C (revision 338) @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -fdump-tree-ompexp" } */ + +volatile int *bar(void); + +void f1(void) +{ + #pragma omp atomic + *bar() += 1; +} + +/* { dg-final { scan-tree-dump-times "__sync_fetch_and_add" 1 "ompexp" { target i?86-*-* x86_64-*-* ia64-*-* powerpc*-*-* alpha*-*-* } } } */ +/* { dg-final { cleanup-tree-dump "ompexp" } } */
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: pr27415.C =================================================================== --- pr27415.C (nonexistent) +++ pr27415.C (revision 338) @@ -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: pr34607.C =================================================================== --- pr34607.C (nonexistent) +++ pr34607.C (revision 338) @@ -0,0 +1,18 @@ +// PR c++/34607 +// { dg-do compile } +// { dg-options "-fopenmp" } + +void +foo () +{ +#pragma omp for + for (int i =; i < 2; ++i) // { dg-error "expected primary-expression" } + ; +#pragma omp for + for (T i = 54; i < 56; i++) // { dg-error "was not declared|expected" } + ; + T j; // { dg-error "was not declared|expected" } +#pragma omp for + for (j = 1; j < 3; j++) // { dg-error "was not declared|expected" } + ; +}
pr34607.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 338) @@ -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: tpl-master-1.C =================================================================== --- tpl-master-1.C (nonexistent) +++ tpl-master-1.C (revision 338) @@ -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: pr33890.C =================================================================== --- pr33890.C (nonexistent) +++ pr33890.C (revision 338) @@ -0,0 +1,34 @@ +// PR c++/33890 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A +{ + int x; + A () : x (0) {} + int & getX (); +}; + +template void +foo () +{ + A a; + +#pragma omp for + for (int i = a.getX (); i < 10; ++i) + ; +#pragma omp for + for (int i = 0; i < a.getX (); ++i) + ; + a.x = 1; +#pragma omp for + for (int i = 0; i < 10; i += a.getX ()) + ; +} + +void +bar () +{ + foo <0> (); + foo <1> (); +}
pr33890.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 338) @@ -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-message "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: block-3.C =================================================================== --- block-3.C (nonexistent) +++ block-3.C (revision 338) @@ -0,0 +1,61 @@ +// { 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); + } + } +} + +// { dg-message "error: invalid branch to/from an OpenMP structured block" "" { target *-*-* } 21 } +// { dg-message "error: invalid branch to/from an OpenMP structured block" "" { target *-*-* } 26 } +// { dg-message "error: invalid entry to OpenMP structured block" "" { target *-*-* } 30 }
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: for-7.C =================================================================== --- for-7.C (nonexistent) +++ for-7.C (revision 338) @@ -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: pr34964.C =================================================================== --- pr34964.C (nonexistent) +++ pr34964.C (revision 338) @@ -0,0 +1,6 @@ +// PR c++/34964 +// { dg-do compile } +// { dg-options "-fopenmp" } + +char x[] = 0; // { dg-error "initializer fails to determine size" } +#pragma omp threadprivate (x)
pr34964.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 338) @@ -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: parallel-2.C =================================================================== --- parallel-2.C (nonexistent) +++ parallel-2.C (revision 338) @@ -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: block-7.C =================================================================== --- block-7.C (nonexistent) +++ block-7.C (revision 338) @@ -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: pr27499.C =================================================================== --- pr27499.C (nonexistent) +++ pr27499.C (revision 338) @@ -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) + 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 338) @@ -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-13.C =================================================================== --- for-13.C (nonexistent) +++ for-13.C (revision 338) @@ -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: block-11.C =================================================================== --- block-11.C (nonexistent) +++ block-11.C (revision 338) @@ -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 338) @@ -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: pr41429.C =================================================================== --- pr41429.C (nonexistent) +++ pr41429.C (revision 338) @@ -0,0 +1,5 @@ +// PR middle-end/41429 +// { dg-do compile { target fpic } } +// { dg-options "-fopenmp -O2 -fpic" } + +#include "pr37189.C"
pr41429.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 338) @@ -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: sections-2.C =================================================================== --- sections-2.C (nonexistent) +++ sections-2.C (revision 338) @@ -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: pr30558.C =================================================================== --- pr30558.C (nonexistent) +++ pr30558.C (revision 338) @@ -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: pr35328.C =================================================================== --- pr35328.C (nonexistent) +++ pr35328.C (revision 338) @@ -0,0 +1,31 @@ +// PR c++/35328 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A +{ + ~A ()(); // { dg-error "declared as function returning a function" } +}; +struct B +{ + B ()(); // { dg-error "declared as function returning a function" } +}; +struct C +{ + C (); + C (const C &)(); // { dg-error "declared as function returning a function" } +}; + +void +foo () +{ + A a; + B b; + C c; + #pragma omp parallel firstprivate (a) + ; + #pragma omp parallel private (b) + ; + #pragma omp parallel firstprivate (c) + ; +}
pr35328.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 338) @@ -0,0 +1,16 @@ +// PR c++/26690 +// { dg-do compile } + +struct A +{ + A (int x = 6); // { dg-message "A::A\\(int\\)" } + A (long long x = 12LL); // { dg-message "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 338) @@ -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: pr38639.C =================================================================== --- pr38639.C (nonexistent) +++ pr38639.C (revision 338) @@ -0,0 +1,17 @@ +// PR c++/38639 +// { dg-do compile } +// { dg-options "-fopenmp -std=c++0x" } + +template void +foo () +{ +#pragma omp parallel for + for (auto i = i = 0; i<4; ++i) // { dg-error "incomplete|unable|invalid" } + ; +} + +void +bar () +{ + foo<0> (); // { dg-message "instantiated from here" } +}
pr38639.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 338) @@ -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 338) @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-require-effective-target tls_native } + +#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) +}; + +int S::s = 5; + +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-8.C =================================================================== --- pr29965-8.C (nonexistent) +++ pr29965-8.C (revision 338) @@ -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: clause-1.C =================================================================== --- clause-1.C (nonexistent) +++ clause-1.C (revision 338) @@ -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 338) @@ -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: pr27310.C =================================================================== --- pr27310.C (nonexistent) +++ pr27310.C (revision 338) @@ -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 338) @@ -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: ordered-1.C =================================================================== --- ordered-1.C (nonexistent) +++ ordered-1.C (revision 338) @@ -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: pr33372-3.C =================================================================== --- pr33372-3.C (nonexistent) +++ pr33372-3.C (revision 338) @@ -0,0 +1,19 @@ +// PR c++/33372 +// { dg-do compile } +// { dg-options "-fopenmp" } + +template +void f () +{ + T n = 6; +#pragma omp parallel num_threads(n) // { dg-error "num_threads expression must be integral" } + ; +#pragma omp parallel for schedule(static, n) + for (int i = 0; i < 10; i++) // { dg-error "chunk size expression must be integral" } + ; +} + +void g () +{ + f (); +}
pr33372-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-1.C =================================================================== --- pr27337-1.C (nonexistent) +++ pr27337-1.C (revision 338) @@ -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: pr34608.C =================================================================== --- pr34608.C (nonexistent) +++ pr34608.C (revision 338) @@ -0,0 +1,19 @@ +// PR middle-end/34608 +// { dg-do compile } +// { dg-options "-ftest-coverage -fopenmp" } + +struct A +{ + ~A () throw (); +}; + +void foo (A); + +void +bar () +{ +#pragma omp parallel + foo (A ()); +} + +// { dg-final { cleanup-coverage-files } }
pr34608.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: pr35337.C =================================================================== --- pr35337.C (nonexistent) +++ pr35337.C (revision 338) @@ -0,0 +1,20 @@ +// PR c++/35337 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A { }; + +void +foo () +{ +#pragma omp parallel firstprivate(A) // { dg-error "struct A\[^\n\]*is not a variable" } + ; +} + +void +bar () +{ +#pragma omp for lastprivate(A) // { dg-error "struct A\[^\n\]*is not a variable" } + for (int i = 0; i < 10; i++) + ; +}
pr35337.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 338) @@ -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 338) @@ -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: pr35158.C =================================================================== --- pr35158.C (nonexistent) +++ pr35158.C (revision 338) @@ -0,0 +1,14 @@ +// PR c++/35158 +// { dg-do compile } +// { dg-options "-fopenmp" } + +int main(int argc, char *argv[]) +{ +#pragma omp parallel for + for (int i(0) ; // { dg-error "parenthesized initialization is not allowed in OpenMP 'for' loop" } + i < 10 ; + i++) + ; + + return 0; +}
pr35158.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 338) @@ -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-8.C =================================================================== --- for-8.C (nonexistent) +++ for-8.C (revision 338) @@ -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 338) @@ -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: pr31598.C =================================================================== --- pr31598.C (nonexistent) +++ pr31598.C (revision 338) @@ -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: parallel-3.C =================================================================== --- parallel-3.C (nonexistent) +++ parallel-3.C (revision 338) @@ -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: pr24849.C =================================================================== --- pr24849.C (nonexistent) +++ pr24849.C (revision 338) @@ -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: macro-1.C =================================================================== --- macro-1.C (nonexistent) +++ macro-1.C (revision 338) @@ -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: block-8.C =================================================================== --- block-8.C (nonexistent) +++ block-8.C (revision 338) @@ -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: for-10.C =================================================================== --- for-10.C (nonexistent) +++ for-10.C (revision 338) @@ -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-14.C =================================================================== --- for-14.C (nonexistent) +++ for-14.C (revision 338) @@ -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-18.C =================================================================== --- for-18.C (nonexistent) +++ for-18.C (revision 338) @@ -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: method-1.C =================================================================== --- method-1.C (nonexistent) +++ method-1.C (revision 338) @@ -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 338) @@ -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: tpl-for-1.C =================================================================== --- tpl-for-1.C (nonexistent) +++ tpl-for-1.C (revision 338) @@ -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: pr35244.C =================================================================== --- pr35244.C (nonexistent) +++ pr35244.C (revision 338) @@ -0,0 +1,30 @@ +// PR c++/35244 +// { dg-do compile } +// { dg-require-effective-target tls_native } +// { dg-options "-fopenmp" } + +int v1; +namespace N1 +{ + int v2; +} +namespace N2 +{ + int v3; +} +using N1::v2; +using namespace N2; +struct A; +typedef int i; +#pragma omp threadprivate (i) // { dg-error "is not file, namespace or block scope variable" } +#pragma omp threadprivate (A) // { dg-error "is not file, namespace or block scope variable" } +#pragma omp threadprivate (v1, v2, v3) + +void foo () +{ + static int v4; + { + static int v5; +#pragma omp threadprivate (v4, v5) + } +}
pr35244.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 338) @@ -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: pr36237.C =================================================================== --- pr36237.C (nonexistent) +++ pr36237.C (revision 338) @@ -0,0 +1,25 @@ +// PR c++/36237 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A +{ + ~A (); +}; + +struct B +{ + B (const A &x = A ()) : a (x) { } + A a; +}; + +B var; + +void bar (); + +void +foo () +{ + #pragma omp parallel private (var) + bar (); +}
pr36237.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 338) @@ -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 338) @@ -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 338) @@ -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: pr36790.C =================================================================== --- pr36790.C (nonexistent) +++ pr36790.C (revision 338) @@ -0,0 +1,23 @@ +// PR middle-end/36790 +// { dg-do compile } +// { dg-options "-fopenmp -O2" } + +void +foo (bool b) +{ +} + +void +bar (bool b) +{ + foo (b); + #pragma omp task default (shared) + b = false; +} + +int +main () +{ + bar (false); + return 0; +}
pr36790.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 338) @@ -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 338) @@ -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-5.C =================================================================== --- pr29965-5.C (nonexistent) +++ pr29965-5.C (revision 338) @@ -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: tls-4.C =================================================================== --- tls-4.C (nonexistent) +++ tls-4.C (revision 338) @@ -0,0 +1,16 @@ +// { dg-do compile } +// { dg-require-effective-target tls_native } + +#define thr threadprivate + +struct S +{ + static int s; +}; +struct T : public S +{ + static int t; +#pragma omp thr (s) // { dg-error "directive not in" } +}; + +#pragma omp thr (T::t) // { dg-error "directive not in" }
tls-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: pr29965-9.C =================================================================== --- pr29965-9.C (nonexistent) +++ pr29965-9.C (revision 338) @@ -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: clause-2.C =================================================================== --- clause-2.C (nonexistent) +++ clause-2.C (revision 338) @@ -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 338) @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -fdump-tree-ompexp" } */ + +int *xyzzy; + +void f1(void) +{ + #pragma omp atomic + xyzzy++; +} + +/* { dg-final { scan-tree-dump-times "xyzzy, 4" 1 "ompexp" { target i?86-*-* x86_64-*-* ia64-*-* powerpc*-*-* alpha*-*-* } } } */ +/* { dg-final { cleanup-tree-dump "ompexp" } } */
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: pr29965-10.C =================================================================== --- pr29965-10.C (nonexistent) +++ pr29965-10.C (revision 338) @@ -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 338) @@ -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: ordered-2.C =================================================================== --- ordered-2.C (nonexistent) +++ ordered-2.C (revision 338) @@ -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 338) @@ -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 338) @@ -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 338) @@ -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: pr27337-2.C =================================================================== --- pr27337-2.C (nonexistent) +++ pr27337-2.C (revision 338) @@ -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: pr35751.C =================================================================== --- pr35751.C (nonexistent) +++ pr35751.C (revision 338) @@ -0,0 +1,34 @@ +// PR c/35751 +// { dg-do compile } +// { dg-options "-fopenmp" } + +void +foo (int i) +{ + extern int a[i]; // { dg-error "storage size of" } + static int b[i]; // { dg-error "storage size of" } + +#pragma omp parallel + { + a[0] = 0; + b[0] = 0; + } + +#pragma omp parallel shared (a, b) + { + a[0] = 0; + b[0] = 0; + } + +#pragma omp parallel private (a, b) + { + a[0] = 0; + b[0] = 0; + } + +#pragma omp parallel firstprivate (a, b) + { + a[0] = 0; + b[0] = 0; + } +}
pr35751.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: pr37533.C =================================================================== --- pr37533.C (nonexistent) +++ pr37533.C (revision 338) @@ -0,0 +1,50 @@ +// PR c++/37533 +// { dg-do compile } +// { dg-options "-fopenmp" } + +template +void +f1 () +{ +#pragma omp parallel for + for (int i = ""; i < 4; ++i) // { dg-error "invalid conversion from" } + ; +} + +template +void +f2 () +{ + int i; +#pragma omp parallel for + for (i = ""; i < 4; ++i) // { dg-error "invalid conversion from" } + ; +} + +template +void +f3 () +{ +#pragma omp parallel for + for (T i = ""; i < 4; ++i) // { dg-error "invalid conversion from" } + ; +} + +template +void +f4 () +{ + T i; +#pragma omp parallel for + for (i = ""; i < 4; ++i) // { dg-error "invalid conversion from" } + ; +} + +void +bar () +{ + f1<0> (); // { dg-message "instantiated from here" } + f2<1> (); // { dg-message "instantiated from here" } + f3 (); // { dg-message "instantiated from here" } + f4 (); // { dg-message "instantiated from here" } +}
pr37533.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 338) @@ -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 338) @@ -0,0 +1,25 @@ +// { 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; } + } +} + +// { dg-message "error: invalid branch to/from an OpenMP structured block" "" { target *-*-* } 7 } +// { dg-message "error: invalid entry to OpenMP structured block" "" { target *-*-* } 9 }
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: pr35078.C =================================================================== --- pr35078.C (nonexistent) +++ pr35078.C (revision 338) @@ -0,0 +1,20 @@ +// PR c++/35078 +// { dg-do compile } +// { dg-options "-fopenmp" } + +template void +foo () +{ +#pragma omp parallel for + for (int& i = 0; i < 10; ++i) // { dg-error "invalid type for iteration variable" } + ; +} + +void +bar () +{ + int j = 0; +#pragma omp parallel for + for (int& i = j; i < 10; ++i) // { dg-error "invalid type for iteration variable" } + ; +}
pr35078.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 338) @@ -0,0 +1,24 @@ +// PR middle-end/28046 +// { dg-do compile } +// { dg-options "-fopenmp -fdump-tree-ompexp" } + +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 "ompexp" { target i?86-*-* x86_64-*-* ia64-*-* powerpc*-*-* alpha*-*-* } } } +// { dg-final { cleanup-tree-dump "ompexp" } }
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: master-2.C =================================================================== --- master-2.C (nonexistent) +++ master-2.C (revision 338) @@ -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: pr35099.C =================================================================== --- pr35099.C (nonexistent) +++ pr35099.C (revision 338) @@ -0,0 +1,39 @@ +// PR middle-end/35099 +// { dg-do compile } +// { dg-options "-O2 -fopenmp" } + +struct A +{ + ~A () throw (); + void foo (); +}; + +struct B +{ + B () { A ().foo (); } +}; + +void +bar () +{ +#pragma omp parallel + { + #pragma omp single + B (); + #pragma omp for + for (int i = 0; i < 2; ++i) + B (); + } +} + +void +baz () +{ +#pragma omp parallel + { + #pragma omp single + B (); + #pragma omp single + B (); + } +}
pr35099.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 338) @@ -0,0 +1,17 @@ +// { 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" } + } +} + +// { dg-message "error: invalid branch to/from an OpenMP structured block" "" { target *-*-* } 7 }
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: for-9.C =================================================================== --- for-9.C (nonexistent) +++ for-9.C (revision 338) @@ -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: pr39495-1.C =================================================================== --- pr39495-1.C (nonexistent) +++ pr39495-1.C (revision 338) @@ -0,0 +1,95 @@ +// PR c/39495 +// { dg-do compile } +// { dg-options "-fopenmp" } + +#define INT_MIN (-__INT_MAX__ - 1) +#define INT_MAX __INT_MAX__ +#define UINT_MAX (2U * __INT_MAX__ + 1) + +int +foo (void) +{ + int i; + unsigned int u; + +#pragma omp for + for (i = INT_MIN + 6; i > INT_MIN + 1; i--) + ; +#pragma omp for + for (i = INT_MIN + 6; i >= INT_MIN + 1; i--) + ; +#pragma omp for + for (i = INT_MIN + 6; i > INT_MIN; i--) + ; +#pragma omp for + for (i = INT_MAX - 6; i < INT_MAX - 1; i++) + ; +#pragma omp for + for (i = INT_MAX - 6; i <= INT_MAX - 1; i++) + ; +#pragma omp for + for (i = INT_MAX - 6; i < INT_MAX; i++) + ; +#pragma omp for + for (u = 6; u > 1; u--) + ; +#pragma omp for + for (u = 6; u >= 1; u--) + ; +#pragma omp for + for (u = 6; u > 0; u--) + ; +#pragma omp for + for (u = UINT_MAX - 6; u < UINT_MAX - 1; u++) + ; +#pragma omp for + for (u = UINT_MAX - 6; u <= UINT_MAX - 1; u++) + ; +#pragma omp for + for (u = UINT_MAX - 6; u < UINT_MAX; u++) + ; +} + +int +bar (void) +{ + int i; + unsigned int u; + +#pragma omp for + for (i = INT_MIN + 6; i > INT_MIN + 1; i -= 2) + ; +#pragma omp for + for (i = INT_MIN + 6; i >= INT_MIN + 1; i -= 2) + ; +#pragma omp for + for (i = INT_MIN + 6; i > INT_MIN; i -= 2) + ; +#pragma omp for + for (i = INT_MAX - 6; i < INT_MAX - 1; i += 2) + ; +#pragma omp for + for (i = INT_MAX - 6; i <= INT_MAX - 1; i += 2) + ; +#pragma omp for + for (i = INT_MAX - 6; i < INT_MAX; i += 2) + ; +#pragma omp for + for (u = 6; u > 1; u -= 2) + ; +#pragma omp for + for (u = 6; u >= 1; u -= 2) + ; +#pragma omp for + for (u = 6; u > 0; u -= 2) + ; +#pragma omp for + for (u = UINT_MAX - 6; u < UINT_MAX - 1; u += 2) + ; +#pragma omp for + for (u = UINT_MAX - 6; u <= UINT_MAX - 1; u += 2) + ; +#pragma omp for + for (u = UINT_MAX - 6; u < UINT_MAX; u += 2) + ; +}
pr39495-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-4.C =================================================================== --- parallel-4.C (nonexistent) +++ parallel-4.C (revision 338) @@ -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: pr25996.C =================================================================== --- pr25996.C (nonexistent) +++ pr25996.C (revision 338) @@ -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: block-9.C =================================================================== --- block-9.C (nonexistent) +++ block-9.C (revision 338) @@ -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: macro-2.C =================================================================== --- macro-2.C (nonexistent) +++ macro-2.C (revision 338) @@ -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: for-11.C =================================================================== --- for-11.C (nonexistent) +++ for-11.C (revision 338) @@ -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-15.C =================================================================== --- for-15.C (nonexistent) +++ for-15.C (revision 338) @@ -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: for-19.C =================================================================== --- for-19.C (nonexistent) +++ for-19.C (revision 338) @@ -0,0 +1,41 @@ +// PR c++/38348 +// { dg-do compile } +// { dg-options "-fopenmp" } + +const char *p = "abcde"; + +template +void +f1 (void) +{ +#pragma omp for // { dg-error "forbids incrementing a pointer of type" } + for (void *q = (void *)p; q < (void *) (p + 4); q++) // { dg-error "forbids incrementing a pointer of type" } + ; +} + +template +void +f2 (void) +{ +#pragma omp for + for (const char *q = p; q < p + 4; q++) + ; +} + +template +void +f3 (void) +{ +#pragma omp for // { dg-error "forbids incrementing a pointer of type" } + for (T q = T (p); q < T (p + 4); q++) + ; +} + +int +main (void) +{ + f1 (); // { dg-message "instantiated from here" } + f2 (); + f3 (); + f3 (); // { dg-message "instantiated from here" } +}
for-19.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 338) @@ -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 338) @@ -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 338) @@ -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: pr35028.C =================================================================== --- pr35028.C (nonexistent) +++ pr35028.C (revision 338) @@ -0,0 +1,19 @@ +// PR c++/35028 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A +{ + A (); + A (const A &, ...); + ~A (); + A operator++ (int); +}; + +void +foo () +{ + A a; + #pragma omp parallel firstprivate (a) + a++; +}
pr35028.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: pr35364.C =================================================================== --- pr35364.C (nonexistent) +++ pr35364.C (revision 338) @@ -0,0 +1,50 @@ +// PR target/35364 +// { dg-do compile } +// { dg-options "-O2 -fopenmp" } + +template +struct E +{ + E (); + ~E (); +}; + +template +struct C +{ + C (const U &y) : u (y) {} + ~C () {} + const U &u; +}; + +template > +struct B : public C +{ + B (int x, const T &z = T (), const U &y = U ()) : C (y) {} + ~B () {} +}; + +void +foo () +{ +#pragma omp parallel + { + B x (1); + } +#pragma omp for + for (int i = 0; i < 10; i++) + { + B x (i); + } +#pragma omp sections + { +#pragma omp section + { + B x (6); + } + } +#pragma omp single + { + B x (16); + } +}
pr35364.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: pr38633.C =================================================================== --- pr38633.C (nonexistent) +++ pr38633.C (revision 338) @@ -0,0 +1,14 @@ +// PR middle-end/38633 +// { dg-do compile } +// { dg-options "-fopenmp" } + +void +foo () +{ +#pragma omp parallel + { + struct A { int i; } j; + j.i = 6; + j.i++; + } +}
pr38633.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: pr37346.C =================================================================== --- pr37346.C (nonexistent) +++ pr37346.C (revision 338) @@ -0,0 +1,15 @@ +// PR c++/37346 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A +{ + A (); + int i; +}; + +A::A () +{ +#pragma omp critical + i++; +}
pr37346.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 338) @@ -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 Index: pr30696.C =================================================================== --- pr30696.C (nonexistent) +++ pr30696.C (revision 338) @@ -0,0 +1,12 @@ +inline void foo() {} + +int main() +{ + foo(); + +#pragma omp parallel for + for ( int i=0; i<1; ++i ) + foo(); + + return 0; +}
pr30696.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: pr34694.C =================================================================== --- pr34694.C (nonexistent) +++ pr34694.C (revision 338) @@ -0,0 +1,15 @@ +// PR middle-end/34694 +// { dg-do compile } +// { dg-options "-O -fopenmp -Wall" } + +int i; + +void +foo () +{ +#pragma omp parallel + { + int j; // { dg-message "note: 'j' was declared here" } + i = j; // { dg-warning "is used uninitialized" } + } +}
pr34694.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: pr41967.C =================================================================== --- pr41967.C (nonexistent) +++ pr41967.C (revision 338) @@ -0,0 +1,17 @@ +// PR c++/41967 +// { dg-do compile } +// { dg-options "-fopenmp" } + +int +foo () +{ + int sum = 0; +#pragma omp for collapse(2) + for (int i = 0; i < 5; ++i) + { + for (int j = 0; j < 5; ++j) + ++sum; + ++sum; // { dg-error "collapsed loops not perfectly nested" } + } + return sum; +}
pr41967.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.