From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c | 10 +++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c | 27 ++++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c | 41 +++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.13.1.c | 18 ++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.14.1.c | 23 +++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.1.c | 20 +++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.2.c | 20 +++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.1.c | 18 ++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.2.c | 18 ++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.2.c | 22 ++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c | 23 +++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c | 11 +++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c | 11 +++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c | 35 +++++++++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c | 21 ++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c | 15 ++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c | 14 +++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.1.c | 17 +++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.2.c | 27 ++++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.32.1.c | 27 ++++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.1.c | 14 +++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.2.c | 26 +++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.1.c | 25 ++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.2.c | 29 +++++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.1.c | 23 +++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.2.c | 25 ++++++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.3.c | 19 +++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.4.c | 18 ++++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.5.c | 16 +++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.6.c | 16 +++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.1.c | 13 +++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.2.c | 14 +++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.8.1.c | 17 +++++++++++ gcc/testsuite/gcc.dg/gomp/appendix-a/a.9.1.c | 18 ++++++++++++ 34 files changed, 691 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.13.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.14.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.32.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.3.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.4.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.5.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.6.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.2.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.8.1.c create mode 100644 gcc/testsuite/gcc.dg/gomp/appendix-a/a.9.1.c (limited to 'gcc/testsuite/gcc.dg/gomp/appendix-a') diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c new file mode 100644 index 000000000..f7f2924ce --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ + +void +a1 (int n, float *a, float *b) +{ + int i; +#pragma omp parallel for + for (i = 1; i < n; i++) /* i is private by default */ + b[i] = (a[i] + a[i - 1]) / 2.0; +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c new file mode 100644 index 000000000..750bc378c --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ + +#include +void +work1 () +{ +} + +void +work2 () +{ +} +void +a10 () +{ +#pragma omp parallel + { +#pragma omp single + printf ("Beginning work1.\n"); + work1 (); +#pragma omp single + printf ("Finishing work1.\n"); +#pragma omp single nowait + printf ("Finished work1 and beginning work2.\n"); + work2 (); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c new file mode 100644 index 000000000..fab948dd7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ + +#include +extern float average (float, float, float); +void +a12 (float *x, float *xold, int n, float tol) +{ + int c, i, toobig; + float error, y; + c = 0; +#pragma omp parallel + { + do + { +#pragma omp for private(i) + for (i = 1; i < n - 1; ++i) + { + xold[i] = x[i]; + } +#pragma omp single + { + toobig = 0; + } +#pragma omp for private(i,y,error) reduction(+:toobig) + for (i = 1; i < n - 1; ++i) + { + y = x[i]; + x[i] = average (xold[i - 1], x[i], xold[i + 1]); + error = y - x[i]; + if (error > tol || error < -tol) + ++toobig; + } +#pragma omp master + { + ++c; + printf ("iteration %d, toobig=%d\n", c, toobig); + } + } + while (toobig > 0); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.13.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.13.1.c new file mode 100644 index 000000000..cc0fcc25d --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.13.1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ + +int dequeue (float *a); +void work (int i, float *a); +void +a13 (float *x, float *y) +{ + int ix_next, iy_next; +#pragma omp parallel shared(x, y) private(ix_next, iy_next) + { +#pragma omp critical (xaxis) + ix_next = dequeue (x); + work (ix_next, x); +#pragma omp critical (yaxis) + iy_next = dequeue (y); + work (iy_next, y); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.14.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.14.1.c new file mode 100644 index 000000000..14a7ed0bd --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.14.1.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ + +void +a14 () +{ + int i = 1; +#pragma omp parallel sections + { +#pragma omp section + { +#pragma omp critical (name) + { +#pragma omp parallel + { +#pragma omp single + { + i++; + } + } + } + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.1.c new file mode 100644 index 000000000..c460f7566 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ + +void +a17_1_wrong () +{ + union + { + int n; + float x; + } u; +#pragma omp parallel + { +#pragma omp atomic + u.n++; +#pragma omp atomic + u.x += 1.0; +/* Incorrect because the atomic constructs reference the same location + through incompatible types */ + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.2.c new file mode 100644 index 000000000..aaaec7ea3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.17.2.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ + +void +a17_2_wrong () +{ + int x; + int *i; + float *r; + i = &x; + r = (float *) &x; +#pragma omp parallel + { +#pragma omp atomic + *i += 1; +#pragma omp atomic + *r += 1.0; +/* Incorrect because the atomic constructs reference the same location + through incompatible types */ + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.1.c new file mode 100644 index 000000000..d43e0cf45 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ + +void +a20_wrong () +{ + int a = 1; +#pragma omp parallel + { + if (a != 0) +#pragma omp flush(a) /* { dg-error "'#pragma omp flush' may only" } */ +/* incorrect as flush cannot be immediate substatement + of if statement */ + if (a != 0) +#pragma omp barrier /* { dg-error "'#pragma omp barrier' may only" } */ +/* incorrect as barrier cannot be immediate substatement + of if statement */ + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.2.c new file mode 100644 index 000000000..4f1138356 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.20.2.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ + +void +a20 () +{ + int a = 1; +#pragma omp parallel + { + if (a != 0) + { +#pragma omp flush(a) + } + if (a != 0) + { +#pragma omp barrier + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.2.c new file mode 100644 index 000000000..a9b81d0c3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.2.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ + +void +work (int i) +{ +} + +void +a21_wrong (int n) +{ + int i; +#pragma omp for ordered + for (i = 0; i < n; i++) + { +/* incorrect because an iteration may not execute more than one + ordered region */ +#pragma omp ordered + work (i); +#pragma omp ordered + work (i + 1); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c new file mode 100644 index 000000000..4d1ed6a52 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ + +void work (int); + +void +a21_good (int n) +{ + int i; +#pragma omp for ordered + for (i = 0; i < n; i++) + { + if (i <= 10) + { +#pragma omp ordered + work (i); + } + if (i > 10) + { +#pragma omp ordered + work (i + 1); + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c new file mode 100644 index 000000000..e3586838a --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls } */ + +int counter = 0; +#pragma omp threadprivate(counter) +int +increment_counter () +{ + counter++; + return (counter); +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c new file mode 100644 index 000000000..7a6e901a8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls } */ + +int +increment_counter_2 () +{ + static int counter = 0; +#pragma omp threadprivate(counter) + counter++; + return (counter); +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c new file mode 100644 index 000000000..9d8baa37f --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls } */ + +extern int omp_get_num_threads (void); +int x, y, t, z[1000]; +#pragma omp threadprivate(x) +void +a24 (int a) +{ + const int c = 1; + int i = 0; + int l = 0; +#pragma omp parallel default(none) private(a) shared(z) + { + int j = omp_get_num_threads (); + /* O.K. - j is declared within parallel region */ + /* O.K. - a is listed in private clause */ + /* - z is listed in shared clause */ + x = c; /* O.K. - x is threadprivate */ + /* - c has const-qualified type */ + z[i] = y; + /* { dg-error "'i' not specified" "" { target *-*-* } 21 } */ + /* { dg-error "enclosing parallel" "" { target *-*-* } 13 } */ + /* { dg-error "'y' not specified" "" { target *-*-* } 21 } */ +#pragma omp for firstprivate(y) + for (i = 0; i < 10; i++) + { + z[i] = y; /* O.K. - i is the loop iteration variable */ + /* - y is listed in firstprivate clause */ + } + z[l] = t; + /* { dg-error "'l' not specified" "" { target *-*-* } 31 } */ + /* { dg-error "'t' not specified" "" { target *-*-* } 31 } */ + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c new file mode 100644 index 000000000..b655edc10 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -std=c99" } */ + +int a; +void +g (int k) +{ + a = k; /* The global "a", not the private "a" in f */ +} + +void +f (int n) +{ + int a = 0; +#pragma omp parallel for private(a) + for (int i = 1; i < n; i++) + { + a = i; + g (a * 2); /* Private copy of "a" */ + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c new file mode 100644 index 000000000..faa6ac621 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ + +void +a27 () +{ + int i, a; +#pragma omp parallel private(a) + { +#pragma omp parallel for private(a) + for (i = 0; i < 10; i++) + { + /* do work here */ + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c new file mode 100644 index 000000000..e34be4c42 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ + +void +a30 (int n, float *a, float *b) +{ + int i; +#pragma omp parallel + { +#pragma omp for lastprivate(i) + for (i = 0; i < n - 1; i++) + a[i] = b[i] + b[i + 1]; + } + a[i] = b[i]; /* i == n-1 here */ +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.1.c new file mode 100644 index 000000000..cbb3f60df --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ + +void +a31_1 (float *x, int *y, int n) +{ + int i, b; + float a; + a = 0.0; + b = 0; +#pragma omp parallel for private(i) shared(x, y, n) \ + reduction(+:a) reduction(^:b) + for (i = 0; i < n; i++) + { + a += x[i]; + b ^= y[i]; + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.2.c new file mode 100644 index 000000000..f9da3f4fc --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.31.2.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ + +void +a31_2 (float *x, int *y, int n) +{ + int i, b, b_p; + float a, a_p; + a = 0.0; + b = 0; +#pragma omp parallel shared(a, b, x, y, n) \ + private(a_p, b_p) + { + a_p = 0.0; + b_p = 0; +#pragma omp for private(i) + for (i = 0; i < n; i++) + { + a_p += x[i]; + b_p ^= y[i]; + } +#pragma omp critical + { + a += a_p; + b ^= b_p; + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.32.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.32.1.c new file mode 100644 index 000000000..d2cb316f3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.32.1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls } */ + +#include +float *work; +int size; +float tol; +void build (void); +#pragma omp threadprivate(work,size,tol) +void +a32 (float t, int n) +{ + tol = t; + size = n; +#pragma omp parallel copyin(tol,size) + { + build (); + } +} +void +build () +{ + int i; + work = (float *) malloc (sizeof (float) * size); + for (i = 0; i < size; ++i) + work[i] = tol; +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.1.c new file mode 100644 index 000000000..99c06da6a --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls } */ + +#include +float x, y; +#pragma omp threadprivate(x, y) +void +init (float a, float b) +{ +#pragma omp single copyprivate(a,b,x,y) + { + scanf ("%f %f %f %f", &a, &b, &x, &y); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.2.c new file mode 100644 index 000000000..a0da739dd --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.33.2.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ + +#include +#include +float +read_next () +{ + float *tmp; + float return_val; +#pragma omp single copyprivate(tmp) + { + tmp = (float *) malloc (sizeof (float)); + } /* copies the pointer only */ +#pragma omp master + { + scanf ("%f", tmp); + } +#pragma omp barrier + return_val = *tmp; +#pragma omp barrier +#pragma omp single nowait + { + free (tmp); + } + return return_val; +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.1.c new file mode 100644 index 000000000..e5ae7a61e --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ + +void +work (int i, int j) +{ +} + +void +good_nesting (int n) +{ + int i, j; +#pragma omp parallel default(shared) + { +#pragma omp for + for (i = 0; i < n; i++) + { +#pragma omp parallel shared(i, n) + { +#pragma omp for + for (j = 0; j < n; j++) + work (i, j); + } + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.2.c new file mode 100644 index 000000000..7cc265fec --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.34.2.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ + +void +work (int i, int j) +{ +} + +void +work1 (int i, int n) +{ + int j; +#pragma omp parallel default(shared) + { +#pragma omp for + for (j = 0; j < n; j++) + work (i, j); + } +} +void +good_nesting2 (int n) +{ + int i; +#pragma omp parallel default(shared) + { +#pragma omp for + for (i = 0; i < n; i++) + work1 (i, n); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.1.c new file mode 100644 index 000000000..4196b2d15 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.1.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ + +void +work (int i, int j) +{ +} + +void +wrong1 (int n) +{ +#pragma omp parallel default(shared) + { + int i, j; +#pragma omp for + for (i = 0; i < n; i++) + { + /* incorrect nesting of loop regions */ +#pragma omp for /* { dg-warning "may not be closely nested" } */ + for (j = 0; j < n; j++) + work (i, j); + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.2.c new file mode 100644 index 000000000..165c86e27 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.2.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ + +void work (int, int); + +void +work1 (int i, int n) +{ + int j; + /* incorrect nesting of loop regions */ +#pragma omp for + for (j = 0; j < n; j++) + work (i, j); +} + +void +wrong2 (int n) +{ +#pragma omp parallel default(shared) + { + int i; +#pragma omp for + for (i = 0; i < n; i++) + work1 (i, n); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.3.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.3.c new file mode 100644 index 000000000..31b2ddf03 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.3.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ + +void work (int, int); + +void +wrong3 (int n) +{ +#pragma omp parallel default(shared) + { + int i; +#pragma omp for + for (i = 0; i < n; i++) + { +/* incorrect nesting of regions */ +#pragma omp single /* { dg-warning "may not be closely nested" } */ + work (i, 0); + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.4.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.4.c new file mode 100644 index 000000000..d7579e6e7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.4.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ + +void +wrong4 (int n) +{ +#pragma omp parallel default(shared) + { + int i; +#pragma omp for + for (i = 0; i < n; i++) + { + work (i, 0); + /* incorrect nesting of barrier region in a loop region */ +#pragma omp barrier /* { dg-warning "may not be closely nested" } */ + work (i, 1); + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.5.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.5.c new file mode 100644 index 000000000..7b5301557 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.5.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +void +wrong5 (int n) +{ +#pragma omp parallel + { +#pragma omp critical + { + work (n, 0); +/* incorrect nesting of barrier region in a critical region */ +#pragma omp barrier + work (n, 1); + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.6.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.6.c new file mode 100644 index 000000000..ac850e541 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.35.6.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +void +wrong6 (int n) +{ +#pragma omp parallel + { +#pragma omp single + { + work (n, 0); +/* incorrect nesting of barrier region in a single region */ +#pragma omp barrier /* { dg-warning "may not be closely nested" } */ + work (n, 1); + } + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.1.c new file mode 100644 index 000000000..3581ee27d --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ + +extern int omp_get_num_threads (void); +void work (int i); +void +incorrect () +{ + int np, i; + np = omp_get_num_threads (); /* misplaced */ +#pragma omp parallel for schedule(static) + for (i = 0; i < np; i++) + work (i); +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.2.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.2.c new file mode 100644 index 000000000..64256c78d --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.37.2.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ + +extern int omp_get_thread_num (void); +void work (int i); +void +correct () +{ + int i; +#pragma omp parallel private(i) + { + i = omp_get_thread_num (); + work (i); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.8.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.8.1.c new file mode 100644 index 000000000..eed21b367 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.8.1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ + +#include +void +a8 (int n, int m, float *a, float *b, float *y, float *z) +{ + int i; +#pragma omp parallel + { +#pragma omp for nowait + for (i = 1; i < n; i++) + b[i] = (a[i] + a[i - 1]) / 2.0; +#pragma omp for nowait + for (i = 0; i < m; i++) + y[i] = sqrt (z[i]); + } +} diff --git a/gcc/testsuite/gcc.dg/gomp/appendix-a/a.9.1.c b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.9.1.c new file mode 100644 index 000000000..45be33f16 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/appendix-a/a.9.1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ + +void XAXIS (); +void YAXIS (); +void ZAXIS (); +void +a9 () +{ +#pragma omp parallel sections + { +#pragma omp section + XAXIS (); +#pragma omp section + YAXIS (); +#pragma omp section + ZAXIS (); + } +} -- cgit v1.2.3