Re: [PATCH, 5/8] Add pass_loop_im to pass_oacc_kernels
On 15-11-14 18:22, Tom de Vries wrote: On 15-11-14 13:14, Tom de Vries wrote: Hi, I'm submitting a patch series with initial support for the oacc kernels directive. The patch series uses pass_parallelize_loops to implement parallelization of loops in the oacc kernels region. The patch series consists of these 8 patches: ... 1 Expand oacc kernels after pass_build_ealias 2 Add pass_oacc_kernels 3 Add pass_ch_oacc_kernels to pass_oacc_kernels 4 Add pass_tree_loop_{init,done} to pass_oacc_kernels 5 Add pass_loop_im to pass_oacc_kernels 6 Add pass_ccp to pass_oacc_kernels 7 Add pass_parloops_oacc_kernels to pass_oacc_kernels 8 Do simple omp lowering for no address taken var ... This patch adds pass_loop_im to pass group pass_oacc_kernels. We need this pass to simplify the loop body, and allow pass_parloops to detect that loop iterations are independent. Updated for moving pass_oacc_kernels down past pass_fre in the pass list. Bootstrapped and reg-tested as before. OK for trunk? Thanks, - Tom [PATCH 5/7] Add pass_loop_im to pass_oacc_kernels 2014-11-25 Tom de Vries t...@codesourcery.com * passes.def: Add pass_lim in pass group pass_ch_oacc_kernels. * c-c++-common/restrict-2.c: Update for new pass_lim. * c-c++-common/restrict-4.c: Same. * g++.dg/tree-ssa/pr33615.C: Same. * g++.dg/tree-ssa/restrict1.C: Same. * gcc.dg/tm/pub-safety-1.c: Same. * gcc.dg/tm/reg-promotion.c: Same. * gcc.dg/tree-ssa/20050314-1.c: Same. * gcc.dg/tree-ssa/loop-32.c: Same. * gcc.dg/tree-ssa/loop-33.c: Same. * gcc.dg/tree-ssa/loop-34.c: Same. * gcc.dg/tree-ssa/loop-35.c: Same. * gcc.dg/tree-ssa/loop-7.c: Same. * gcc.dg/tree-ssa/pr23109.c: Same. * gcc.dg/tree-ssa/restrict-3.c: Same. * gcc.dg/tree-ssa/ssa-lim-1.c: Same. * gcc.dg/tree-ssa/ssa-lim-10.c: Same. * gcc.dg/tree-ssa/ssa-lim-11.c: Same. * gcc.dg/tree-ssa/ssa-lim-12.c: Same. * gcc.dg/tree-ssa/ssa-lim-2.c: Same. * gcc.dg/tree-ssa/ssa-lim-3.c: Same. * gcc.dg/tree-ssa/ssa-lim-6.c: Same. * gcc.dg/tree-ssa/ssa-lim-7.c: Same. * gcc.dg/tree-ssa/ssa-lim-8.c: Same. * gcc.dg/tree-ssa/ssa-lim-9.c: Same. * gcc.dg/tree-ssa/structopt-1.c: Same. * gfortran.dg/pr32921.f: Same. --- gcc/passes.def | 1 + gcc/testsuite/c-c++-common/restrict-2.c | 6 +++--- gcc/testsuite/c-c++-common/restrict-4.c | 6 +++--- gcc/testsuite/g++.dg/tree-ssa/pr33615.C | 6 +++--- gcc/testsuite/g++.dg/tree-ssa/restrict1.C | 6 +++--- gcc/testsuite/gcc.dg/tm/pub-safety-1.c | 6 +++--- gcc/testsuite/gcc.dg/tm/reg-promotion.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-32.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-33.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-34.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-35.c | 8 gcc/testsuite/gcc.dg/tree-ssa/loop-7.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/pr23109.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/restrict-3.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c | 8 gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-7.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-8.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-9.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c | 6 +++--- gcc/testsuite/gfortran.dg/pr32921.f | 6 +++--- 27 files changed, 81 insertions(+), 80 deletions(-) diff --git a/gcc/passes.def b/gcc/passes.def index 37e08a8..438d292 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -92,6 +92,7 @@ along with GCC; see the file COPYING3. If not see PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels) NEXT_PASS (pass_ch_oacc_kernels); NEXT_PASS (pass_tree_loop_init); + NEXT_PASS (pass_lim); NEXT_PASS (pass_expand_omp_ssa); NEXT_PASS (pass_tree_loop_done); POP_INSERT_PASSES () diff --git a/gcc/testsuite/c-c++-common/restrict-2.c b/gcc/testsuite/c-c++-common/restrict-2.c index 3f71b77..f0b0e15a 100644 --- a/gcc/testsuite/c-c++-common/restrict-2.c +++ b/gcc/testsuite/c-c++-common/restrict-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options -O -fno-strict-aliasing -fdump-tree-lim1-details } */ +/* { dg-options -O -fno-strict-aliasing -fdump-tree-lim2-details } */ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j) { @@ -10,5 +10,5 @@ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j) /* We should move the RHS of the store out of the loop. */ -/* { dg-final { scan-tree-dump-times Moving statement 11 lim1 } } */ -/* { dg-final { cleanup-tree-dump lim1 } } */
[PATCH, 5/8] Add pass_loop_im to pass_oacc_kernels
On 15-11-14 13:14, Tom de Vries wrote: Hi, I'm submitting a patch series with initial support for the oacc kernels directive. The patch series uses pass_parallelize_loops to implement parallelization of loops in the oacc kernels region. The patch series consists of these 8 patches: ... 1 Expand oacc kernels after pass_build_ealias 2 Add pass_oacc_kernels 3 Add pass_ch_oacc_kernels to pass_oacc_kernels 4 Add pass_tree_loop_{init,done} to pass_oacc_kernels 5 Add pass_loop_im to pass_oacc_kernels 6 Add pass_ccp to pass_oacc_kernels 7 Add pass_parloops_oacc_kernels to pass_oacc_kernels 8 Do simple omp lowering for no address taken var ... This patch adds pass_loop_im to pass group pass_oacc_kernels. We need this pass to simplify the loop body, and allow pass_parloops to detect that loop iterations are independent. OK for trunk? Thanks, - Tom 2014-11-14 Tom de Vries t...@codesourcery.com * passes.def: Add pass_lim in pass group pass_ch_oacc_kernels. * c-c++-common/restrict-2.c: Update for new pass_lim. * c-c++-common/restrict-4.c: Same. * g++.dg/tree-ssa/pr33615.C: Same. * g++.dg/tree-ssa/restrict1.C: Same. * gcc.dg/tm/pub-safety-1.c: Same. * gcc.dg/tm/reg-promotion.c: Same. * gcc.dg/tree-ssa/20050314-1.c: Same. * gcc.dg/tree-ssa/loop-32.c: Same. * gcc.dg/tree-ssa/loop-33.c: Same. * gcc.dg/tree-ssa/loop-34.c: Same. * gcc.dg/tree-ssa/loop-35.c: Same. * gcc.dg/tree-ssa/loop-7.c: Same. * gcc.dg/tree-ssa/pr23109.c: Same. * gcc.dg/tree-ssa/restrict-3.c: Same. * gcc.dg/tree-ssa/ssa-lim-1.c: Same. * gcc.dg/tree-ssa/ssa-lim-10.c: Same. * gcc.dg/tree-ssa/ssa-lim-11.c: Same. * gcc.dg/tree-ssa/ssa-lim-12.c: Same. * gcc.dg/tree-ssa/ssa-lim-2.c: Same. * gcc.dg/tree-ssa/ssa-lim-3.c: Same. * gcc.dg/tree-ssa/ssa-lim-6.c: Same. * gcc.dg/tree-ssa/ssa-lim-7.c: Same. * gcc.dg/tree-ssa/ssa-lim-8.c: Same. * gcc.dg/tree-ssa/ssa-lim-9.c: Same. * gcc.dg/tree-ssa/structopt-1.c: Same. * gfortran.dg/pr32921.f: Same. --- gcc/passes.def | 1 + gcc/testsuite/c-c++-common/restrict-2.c | 6 +++--- gcc/testsuite/c-c++-common/restrict-4.c | 6 +++--- gcc/testsuite/g++.dg/tree-ssa/pr33615.C | 6 +++--- gcc/testsuite/g++.dg/tree-ssa/restrict1.C | 6 +++--- gcc/testsuite/gcc.dg/tm/pub-safety-1.c | 6 +++--- gcc/testsuite/gcc.dg/tm/reg-promotion.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-32.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-33.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-34.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/loop-35.c | 8 gcc/testsuite/gcc.dg/tree-ssa/loop-7.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/pr23109.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/restrict-3.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c | 8 gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-7.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-8.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-9.c | 6 +++--- gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c | 6 +++--- gcc/testsuite/gfortran.dg/pr32921.f | 6 +++--- 27 files changed, 81 insertions(+), 80 deletions(-) diff --git a/gcc/passes.def b/gcc/passes.def index 83f437b..f6c16b9 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -78,6 +78,7 @@ along with GCC; see the file COPYING3. If not see PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels) NEXT_PASS (pass_ch_oacc_kernels); NEXT_PASS (pass_tree_loop_init); + NEXT_PASS (pass_lim); NEXT_PASS (pass_tree_loop_done); POP_INSERT_PASSES () NEXT_PASS (pass_expand_omp_ssa); diff --git a/gcc/testsuite/c-c++-common/restrict-2.c b/gcc/testsuite/c-c++-common/restrict-2.c index 3f71b77..f0b0e15a 100644 --- a/gcc/testsuite/c-c++-common/restrict-2.c +++ b/gcc/testsuite/c-c++-common/restrict-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options -O -fno-strict-aliasing -fdump-tree-lim1-details } */ +/* { dg-options -O -fno-strict-aliasing -fdump-tree-lim2-details } */ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j) { @@ -10,5 +10,5 @@ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j) /* We should move the RHS of the store out of the loop. */ -/* { dg-final { scan-tree-dump-times Moving statement 11 lim1 } } */ -/* { dg-final { cleanup-tree-dump lim1 } } */ +/* { dg-final { scan-tree-dump-times Moving statement 11 lim2 } } */ +/* { dg-final { cleanup-tree-dump lim2 } } */ diff --git a/gcc/testsuite/c-c++-common/restrict-4.c b/gcc/testsuite/c-c++-common/restrict-4.c