aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZdenek Dvorak <ook@ucw.cz>2007-12-19 16:07:01 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2007-12-19 15:07:01 +0000
commit068e1875cd27f70b52cb9749f80534e44ea0ffc6 (patch)
tree71c3e93e1fe02a3ad283c84b46c0746d081d3660 /gcc
parent8a171a5948d2c67775cb88046c224eb663c55fdf (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/omp-low.c10
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/gomp/combined-1.c24
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" } } */