diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-20 01:42:24 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-20 01:42:24 +0000 |
commit | 6ca2913460d1e49051b1e63431b11acf8efbe8f0 (patch) | |
tree | dc9ea5ac797c8fd972ac87c8f46f262df1197ae8 /libgomp/testsuite | |
parent | b300d75366a40ed58311b312c6560b7d63658860 (diff) | |
download | gcc-6ca2913460d1e49051b1e63431b11acf8efbe8f0.tar.gz |
PR middle-end/70680
* gimplify.c (gimplify_omp_for): Call omp_notice_variable for
implicitly linear or lastprivate iterator on the outer context.
* testsuite/libgomp.c/pr70680-1.c: New test.
* testsuite/libgomp.c/pr70680-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235232 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp/testsuite')
-rw-r--r-- | libgomp/testsuite/libgomp.c/pr70680-1.c | 75 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/pr70680-2.c | 79 |
2 files changed, 154 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.c/pr70680-1.c b/libgomp/testsuite/libgomp.c/pr70680-1.c new file mode 100644 index 00000000000..389fdd37291 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/pr70680-1.c @@ -0,0 +1,75 @@ +/* PR middle-end/70680 */ + +int v; + +void +f1 (void) +{ + int i = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd + for (i = 0; i < 100; i++) + ; + v = i; + } + if (i != 100) + __builtin_abort (); +} + +void +f2 (void) +{ + int i = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd + for (i = 0; i < 100; i++) + ; + } + if (i != 100) + __builtin_abort (); +} + +void +f3 (void) +{ + int i = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd linear(i: 1) + for (i = 0; i < 100; i++) + ; + v = i; + } + if (i != 100) + __builtin_abort (); +} + +void +f4 (void) +{ + int i = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd linear(i: 1) + for (i = 0; i < 100; i++) + ; + } + if (i != 100) + __builtin_abort (); +} + +int +main () +{ + f1 (); + if (v++ != 100) + __builtin_abort (); + f2 (); + f3 (); + if (v++ != 100) + __builtin_abort (); + f4 (); + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/pr70680-2.c b/libgomp/testsuite/libgomp.c/pr70680-2.c new file mode 100644 index 00000000000..0aada78f0c5 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/pr70680-2.c @@ -0,0 +1,79 @@ +/* PR middle-end/70680 */ + +int v; + +void +f1 (void) +{ + int i = 0, j = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd collapse(2) + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + ; + v = i + j; + } + if (i != 10 || j != 10) + __builtin_abort (); +} + +void +f2 (void) +{ + int i = 0, j = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd collapse(2) + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + ; + } + if (i != 10 || j != 10) + __builtin_abort (); +} + +void +f3 (void) +{ + int i = 0, j = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd collapse(2) lastprivate (i, j) + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + ; + v = i + j; + } + if (i != 10 || j != 10) + __builtin_abort (); +} + +void +f4 (void) +{ + int i = 0, j = 0; +#pragma omp task default(shared) if(0) + { +#pragma omp simd collapse(2) lastprivate (i, j) + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + ; + } + if (i != 10 || j != 10) + __builtin_abort (); +} + +int +main () +{ + f1 (); + if (v++ != 20) + __builtin_abort (); + f2 (); + f3 (); + if (v++ != 20) + __builtin_abort (); + f4 (); + return 0; +} |