omp-low.c (build_omp_regions_1): Recognition of combined parallels moved ...
authorZdenek Dvorak <ook@ucw.cz>
Wed, 19 Dec 2007 15:07:01 +0000 (16:07 +0100)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Wed, 19 Dec 2007 15:07:01 +0000 (15:07 +0000)
* 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

gcc/ChangeLog
gcc/omp-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gomp/combined-1.c [new file with mode: 0644]

index d038634ac6262366c789593c749d5ba3059f2fbd..6c20ca466b5952f276da620aae717fc095b74bc3 100644 (file)
@@ -1,3 +1,9 @@
+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
index 5323ec2eb4df13ea1a266048a4de2ea9857cef48..36fb13de55f615d53615928e05df379832301f74 100644 (file)
@@ -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)
        {
index 024867a4cf39c6f125de0aa018fe6bf9cd3d087b..38a492e2c050af1caa30c33fb3bcf4a7d8fd8550 100644 (file)
@@ -1,3 +1,7 @@
+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
diff --git a/gcc/testsuite/gcc.dg/gomp/combined-1.c b/gcc/testsuite/gcc.dg/gomp/combined-1.c
new file mode 100644 (file)
index 0000000..fc86a9b
--- /dev/null
@@ -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" } } */