From: Zdenek Dvorak Date: Wed, 19 Dec 2007 15:07:01 +0000 (+0100) Subject: omp-low.c (build_omp_regions_1): Recognition of combined parallels moved ... X-Git-Tag: releases/gcc-4.3.0~891 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=068e1875cd27f70b52cb9749f80534e44ea0ffc6;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d038634ac626..6c20ca466b59 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-12-19 Zdenek Dvorak + + * omp-low.c (build_omp_regions_1): Recognition of combined parallels + moved ... + (expand_omp): ... here. + 2007-12-19 Zdenek Dvorak PR tree-optimization/34355 diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 5323ec2eb4df..36fb13de55f6 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 024867a4cf39..38a492e2c050 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2007-12-19 Zdenek Dvorak + + * gcc.dg/gomp/combined-1.c: New test. + 2007-12-19 Zdenek Dvorak 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 index 000000000000..fc86a9b0e32e --- /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" } } */