diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-26 18:10:58 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-26 18:10:58 +0000 |
commit | 76d042abe6f6f481cc2ad2370b8255e442abebd8 (patch) | |
tree | 363a6e44b0cedce330dc22f91e904959a53d14b3 /libgomp | |
parent | a5297f53d7a927ce2440b2f6ddae91e8a3d3de90 (diff) | |
download | gcc-76d042abe6f6f481cc2ad2370b8255e442abebd8.tar.gz |
PR middle-end/25261
PR middle-end/28790
* tree-nested.c (struct nesting_info): Added static_chain_added.
(convert_call_expr): Set static_chain_added when adding static
chain. Handle OMP_PARALLEL and OMP_SECTION.
* gcc.dg/gomp/nestedfn-1.c: New test.
* testsuite/libgomp.c/nestedfn-4.c: New test.
* testsuite/libgomp.c/nestedfn-5.c: New test.
* testsuite/libgomp.fortran/nestedfn3.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117235 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r-- | libgomp/ChangeLog | 6 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/nestedfn-4.c | 65 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/nestedfn-5.c | 38 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.fortran/nestedfn3.f90 | 24 |
4 files changed, 133 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 229b27ab51a..a4c470cc703 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,5 +1,11 @@ 2006-09-26 Jakub Jelinek <jakub@redhat.com> + PR middle-end/25261 + PR middle-end/28790 + * testsuite/libgomp.c/nestedfn-4.c: New test. + * testsuite/libgomp.c/nestedfn-5.c: New test. + * testsuite/libgomp.fortran/nestedfn3.f90: New test. + PR fortran/29097 * testsuite/libgomp.fortran/condinc1.f: New test. * testsuite/libgomp.fortran/condinc2.f: New test. diff --git a/libgomp/testsuite/libgomp.c/nestedfn-4.c b/libgomp/testsuite/libgomp.c/nestedfn-4.c new file mode 100644 index 00000000000..dbe1062bddc --- /dev/null +++ b/libgomp/testsuite/libgomp.c/nestedfn-4.c @@ -0,0 +1,65 @@ +/* PR middle-end/25261 */ +/* { dg-do run } */ + +#include <omp.h> + +extern void abort (void); + +int +main (void) +{ + int i = 5, j, l = 0; + int foo (void) + { + return i == 6; + } + int bar (void) + { + return i - 3; + } + + omp_set_dynamic (0); + +#pragma omp parallel if (foo ()) num_threads (2) + if (omp_get_num_threads () != 1) +#pragma omp atomic + l++; + +#pragma omp parallel for schedule (static, bar ()) num_threads (2) \ + reduction (|:l) + for (j = 0; j < 4; j++) + if (omp_get_thread_num () != (j >= 2)) +#pragma omp atomic + l++; + + i++; + +#pragma omp parallel if (foo ()) num_threads (2) + if (omp_get_num_threads () != 2) +#pragma omp atomic + l++; + +#pragma omp parallel for schedule (static, bar ()) num_threads (2) \ + reduction (|:l) + for (j = 0; j < 6; j++) + if (omp_get_thread_num () != (j >= 3)) +#pragma omp atomic + l++; + +#pragma omp parallel num_threads (4) reduction (|:l) + if (!foo () || bar () != 3) +#pragma omp atomic + l++; + + i++; + +#pragma omp parallel num_threads (4) reduction (|:l) + if (foo () || bar () != 4) +#pragma omp atomic + l++; + + if (l) + abort (); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/nestedfn-5.c b/libgomp/testsuite/libgomp.c/nestedfn-5.c new file mode 100644 index 00000000000..6072b1fe369 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/nestedfn-5.c @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern void abort (void); + +void +foo (int *j) +{ + int i = 5; + int bar (void) { return i + 1; } +#pragma omp sections + { + #pragma omp section + { + if (bar () != 6) + #pragma omp atomic + ++*j; + } + #pragma omp section + { + if (bar () != 6) + #pragma omp atomic + ++*j; + } + } +} + +int +main (void) +{ + int j = 0; +#pragma omp parallel num_threads (2) + foo (&j); + if (j) + abort (); + return 0; +} + diff --git a/libgomp/testsuite/libgomp.fortran/nestedfn3.f90 b/libgomp/testsuite/libgomp.fortran/nestedfn3.f90 new file mode 100644 index 00000000000..454749c5485 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/nestedfn3.f90 @@ -0,0 +1,24 @@ +! PR middle-end/28790 +! { dg-do run } + +program nestomp + integer :: j + j = 8 + call bar + if (j.ne.10) call abort +contains + subroutine foo (i) + integer :: i + !$omp atomic + j = j + i - 5 + end subroutine + subroutine bar + use omp_lib + integer :: i + i = 6 + call omp_set_dynamic (.false.) + !$omp parallel num_threads (2) + call foo(i) + !$omp end parallel + end subroutine +end |