diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-03-06 18:28:54 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-03-06 18:28:54 +0100 |
commit | 251923f5e4950ce2e43020f663723f84b7cfe31a (patch) | |
tree | 47a7934fccf7b621bf8bfc543f09205c27cf5284 /libgomp/testsuite | |
parent | e8645a4001a8d117dd336ea75942aac49101af49 (diff) | |
download | gcc-251923f5e4950ce2e43020f663723f84b7cfe31a.zip gcc-251923f5e4950ce2e43020f663723f84b7cfe31a.tar.gz gcc-251923f5e4950ce2e43020f663723f84b7cfe31a.tar.bz2 |
gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes for the same VAR_DECL.
* gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
for the same VAR_DECL.
* testsuite/libgomp.c/atomic-3.c: New test.
From-SVN: r132977
Diffstat (limited to 'libgomp/testsuite')
-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 0000000..5b8fdc1 --- /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; +} |