Commit 068e1875 by Zdenek Dvorak Committed by Zdenek Dvorak

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
parent 8a171a59
2007-12-19 Zdenek Dvorak <ook@ucw.cz> 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 PR tree-optimization/34355
* tree-parloops.c (take_address_of): Handle expresions * tree-parloops.c (take_address_of): Handle expresions
instead of just variables. instead of just variables.
...@@ -3952,6 +3952,11 @@ expand_omp (struct omp_region *region) ...@@ -3952,6 +3952,11 @@ expand_omp (struct omp_region *region)
{ {
while (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) if (region->inner)
expand_omp (region->inner); expand_omp (region->inner);
...@@ -4028,11 +4033,6 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent, ...@@ -4028,11 +4033,6 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent,
region = parent; region = parent;
region->exit = bb; region->exit = bb;
parent = parent->outer; 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) else if (code == OMP_ATOMIC_STORE)
{ {
......
2007-12-19 Zdenek Dvorak <ook@ucw.cz> 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 PR tree-optimization/34355
* g++.dg/tree-ssa/pr34355.C: New test. * g++.dg/tree-ssa/pr34355.C: New test.
/* { 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" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment