aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-03-12 10:55:48 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2008-03-12 10:55:48 +0100
commit7c8f7639c5512799bed5c441e06964bd4ca32961 (patch)
treecda5526042cb74fb68ccf75d855c64c449f59a35 /libgomp/testsuite
parent628781031e0b4f75bb9a59a045b5ed2a4daf568b (diff)
downloadgcc-7c8f7639c5512799bed5c441e06964bd4ca32961.zip
gcc-7c8f7639c5512799bed5c441e06964bd4ca32961.tar.gz
gcc-7c8f7639c5512799bed5c441e06964bd4ca32961.tar.bz2
re PR middle-end/35549 (Invalid use of copy-in/out for shared vars in nested parallels)
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. From-SVN: r133136
Diffstat (limited to 'libgomp/testsuite')
-rw-r--r--libgomp/testsuite/libgomp.c/pr35549.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.c/pr35549.c b/libgomp/testsuite/libgomp.c/pr35549.c
new file mode 100644
index 0000000..269a0c2
--- /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;
+}