From 068e1875cd27f70b52cb9749f80534e44ea0ffc6 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Wed, 19 Dec 2007 16:07:01 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/omp-low.c | 10 +++++----- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/gomp/combined-1.c | 24 ++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/gomp/combined-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d038634ac62..6c20ca466b5 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 5323ec2eb4d..36fb13de55f 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 024867a4cf3..38a492e2c05 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 00000000000..fc86a9b0e32 --- /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" } } */ -- 2.30.2