diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-06 17:28:54 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-06 17:28:54 +0000 |
commit | 83c5f690d120fc1993f725d292ed59aef437857f (patch) | |
tree | 47a7934fccf7b621bf8bfc543f09205c27cf5284 /libgomp/testsuite/libgomp.c | |
parent | 167057eb52b49248a9de065a5aee8650aed6e3e9 (diff) | |
download | gcc-83c5f690d120fc1993f725d292ed59aef437857f.tar.gz |
* gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
for the same VAR_DECL.
* testsuite/libgomp.c/atomic-3.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132977 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp/testsuite/libgomp.c')
-rw-r--r-- | libgomp/testsuite/libgomp.c/atomic-3.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.c/atomic-3.c b/libgomp/testsuite/libgomp.c/atomic-3.c new file mode 100644 index 00000000000..5b8fdc1a79e --- /dev/null +++ b/libgomp/testsuite/libgomp.c/atomic-3.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-fopenmp -O0" } */ + +#include <omp.h> +#include <stdlib.h> + +short e[64]; +int g; +_Complex double d, f; +int num_threads; + +__attribute__((noinline)) void +foo (int x, long long y) +{ +#pragma omp parallel num_threads (4) + { + int i; + #pragma omp barrier + for (i = 0; i < 2400; i++) + { + if (i == 0) + num_threads = omp_get_num_threads (); + #pragma omp atomic + e[0] += x; + #pragma omp atomic + e[16] += x; + #pragma omp atomic + g += y; + #pragma omp atomic + __real__ d += x; + #pragma omp atomic + __imag__ f += x; + } + } +} + +int +main (void) +{ + int i; + foo (3, 3LL); + if (g != 3 * 2400 * num_threads + || __real__ d != g || __imag__ d != 0 + || __real__ f != 0 || __imag__ f != g) + abort (); + for (i = 0; i < 64; i++) + if (e[i] != ((i && i != 16) ? 0 : g)) + abort (); + return 0; +} |