diff options
author | Zdenek Dvorak <ook@ucw.cz> | 2007-12-19 16:07:01 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2007-12-19 15:07:01 +0000 |
commit | 068e1875cd27f70b52cb9749f80534e44ea0ffc6 (patch) | |
tree | 71c3e93e1fe02a3ad283c84b46c0746d081d3660 /gcc | |
parent | 8a171a5948d2c67775cb88046c224eb663c55fdf (diff) | |
download | gcc-068e1875cd27f70b52cb9749f80534e44ea0ffc6.zip gcc-068e1875cd27f70b52cb9749f80534e44ea0ffc6.tar.gz gcc-068e1875cd27f70b52cb9749f80534e44ea0ffc6.tar.bz2 |
omp-low.c (build_omp_regions_1): Recognition of combined parallels moved ...
* omp-low.c (build_omp_regions_1): Recognition of combined parallels
moved ...
(expand_omp): ... here.
* gcc.dg/gomp/combined-1.c: New test.
From-SVN: r131064
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/omp-low.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/combined-1.c | 24 |
4 files changed, 39 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d038634..6c20ca46 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2007-12-19 Zdenek Dvorak <ook@ucw.cz> + * omp-low.c (build_omp_regions_1): Recognition of combined parallels + moved ... + (expand_omp): ... here. + +2007-12-19 Zdenek Dvorak <ook@ucw.cz> + PR tree-optimization/34355 * tree-parloops.c (take_address_of): Handle expresions instead of just variables. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 5323ec2..36fb13d 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -3952,6 +3952,11 @@ expand_omp (struct omp_region *region) { while (region) { + /* First, determine whether this is a combined parallel+workshare + region. */ + if (region->type == OMP_PARALLEL) + determine_parallel_type (region); + if (region->inner) expand_omp (region->inner); @@ -4028,11 +4033,6 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent, region = parent; region->exit = bb; parent = parent->outer; - - /* If REGION is a parallel region, determine whether it is - a combined parallel+workshare region. */ - if (region->type == OMP_PARALLEL) - determine_parallel_type (region); } else if (code == OMP_ATOMIC_STORE) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 024867a..38a492e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2007-12-19 Zdenek Dvorak <ook@ucw.cz> + * gcc.dg/gomp/combined-1.c: New test. + +2007-12-19 Zdenek Dvorak <ook@ucw.cz> + PR tree-optimization/34355 * g++.dg/tree-ssa/pr34355.C: New test. diff --git a/gcc/testsuite/gcc.dg/gomp/combined-1.c b/gcc/testsuite/gcc.dg/gomp/combined-1.c new file mode 100644 index 0000000..fc86a9b --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/combined-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fopenmp -fdump-tree-final_cleanup" } */ + +int a[10]; +int foo (void) +{ + int i; +#pragma omp parallel for schedule(runtime) + for (i = 0; i < 10; i++) + a[i] = i; +#pragma omp parallel +#pragma omp for schedule(runtime) + for (i = 0; i < 10; i++) + a[i] = 10 - i; +#pragma omp parallel + { +#pragma omp for schedule(runtime) + for (i = 0; i < 10; i++) + a[i] = i; + } +} + +/* { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel_loop_runtime_start" 3 "final_cleanup" } } */ +/* { dg-final { cleanup-tree-dump "final_cleanup" } } */ |