diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-12 09:55:48 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-12 09:55:48 +0000 |
commit | e8a588af71e790aeb443acfc81edaf650729455a (patch) | |
tree | cda5526042cb74fb68ccf75d855c64c449f59a35 /libgomp | |
parent | c6ba58f9401741fdfa802f15783cfc375f69820a (diff) | |
download | gcc-e8a588af71e790aeb443acfc81edaf650729455a.tar.gz |
PR middle-end/35549
* omp-low.c (maybe_lookup_decl): Constify first argument.
(use_pointer_for_field): Change last argument from bool to
omp_context *. Disallow shared copy-in/out in nested
parallel if decl is shared in outer parallel too.
(build_outer_var_ref, scan_sharing_clauses,
lower_rec_input_clauses, lower_copyprivate_clauses,
lower_send_clauses, lower_send_shared_vars): Adjust callers.
* testsuite/libgomp.c/pr35549.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133136 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r-- | libgomp/ChangeLog | 5 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/pr35549.c | 30 |
2 files changed, 35 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 84c70491ece..30782434487 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2008-03-12 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/35549 + * testsuite/libgomp.c/pr35549.c: New test. + 2008-03-06 Jakub Jelinek <jakub@redhat.com> * testsuite/libgomp.c/atomic-3.c: New test. diff --git a/libgomp/testsuite/libgomp.c/pr35549.c b/libgomp/testsuite/libgomp.c/pr35549.c new file mode 100644 index 00000000000..269a0c26290 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/pr35549.c @@ -0,0 +1,30 @@ +/* PR middle-end/35549 */ +/* { dg-do run } */ + +#include <omp.h> +#include <stdlib.h> + +int +main (void) +{ + int i = 6, n = 0; + omp_set_dynamic (0); + omp_set_nested (1); + #pragma omp parallel shared (i) num_threads (3) + { + if (omp_get_num_threads () != 3) + #pragma omp atomic + n += 1; + #pragma omp parallel shared (i) num_threads (4) + { + if (omp_get_num_threads () != 4) + #pragma omp atomic + n += 1; + #pragma omp critical + i += 1; + } + } + if (n == 0 && i != 6 + 3 * 4) + abort (); + return 0; +} |