On Tue, 21 Apr 2015, Thomas Schwinge wrote: > Hi! > > On Tue, 25 Nov 2014 12:38:55 +0100, Tom de Vries <tom_devr...@mentor.com> > wrote: > > On 15-11-14 18:22, Tom de Vries wrote: > > > On 15-11-14 13:14, Tom de Vries wrote: > > >> 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_ccp 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. > > > > > > > As suggested here ( > > https://gcc.gnu.org/ml/gcc-patches/2014-11/msg02993.html ) > > I've replaced the pass_ccp with pass_copyprop, which performs trivial > > constant > > propagation in addition to copy propagation. > > > > Bootstrapped and reg-tested as before. > > > > OK for trunk?
I've recently wondered why we do copy propagation after LIM and I don't remember. Can you remind me? Can you add testcases that fail before this kind of patches and pass afterwards? Richard. > Committed to gomp-4_0-branch in r222284: > > commit 1c2529b64620811cbff4a50374af797ee52ef5f8 > Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4> > Date: Tue Apr 21 19:58:54 2015 +0000 > > Add pass_copy_prop in pass_oacc_kernels > > gcc/ > * passes.def: Add pass_copy_prop to pass group pass_oacc_kernels. > * tree-ssa-copy.c (stmt_may_generate_copy): Handle .omp_data_i init > conservatively. > > git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@222284 > 138bc75d-0d04-0410-961f-82ee72b054a4 > --- > gcc/ChangeLog.gomp | 4 ++++ > gcc/passes.def | 1 + > gcc/tree-ssa-copy.c | 4 ++++ > 3 files changed, 9 insertions(+) > > diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp > index 98e33ad..0be9191 100644 > --- gcc/ChangeLog.gomp > +++ gcc/ChangeLog.gomp > @@ -1,5 +1,9 @@ > 2015-04-21 Tom de Vries <t...@codesourcery.com> > > + * passes.def: Add pass_copy_prop to pass group pass_oacc_kernels. > + * tree-ssa-copy.c (stmt_may_generate_copy): Handle .omp_data_i init > + conservatively. > + > * passes.def: Add pass_lim in pass group pass_ch_oacc_kernels. > > * passes.def: Run pass_tree_loop_init and pass_tree_loop_done in pass > diff --git gcc/passes.def gcc/passes.def > index e6c9287..e6f1c33 100644 > --- gcc/passes.def > +++ gcc/passes.def > @@ -93,6 +93,7 @@ along with GCC; see the file COPYING3. If not see > NEXT_PASS (pass_ch_oacc_kernels); > NEXT_PASS (pass_tree_loop_init); > NEXT_PASS (pass_lim); > + NEXT_PASS (pass_copy_prop); > NEXT_PASS (pass_expand_omp_ssa); > NEXT_PASS (pass_tree_loop_done); > POP_INSERT_PASSES () > diff --git gcc/tree-ssa-copy.c gcc/tree-ssa-copy.c > index 5ae8e6c..6f35f99 100644 > --- gcc/tree-ssa-copy.c > +++ gcc/tree-ssa-copy.c > @@ -61,6 +61,7 @@ along with GCC; see the file COPYING3. If not see > #include "tree-scalar-evolution.h" > #include "tree-ssa-dom.h" > #include "tree-ssa-loop-niter.h" > +#include "omp-low.h" > > > /* This file implements the copy propagation pass and provides a > @@ -116,6 +117,9 @@ stmt_may_generate_copy (gimple stmt) > if (gimple_has_volatile_ops (stmt)) > return false; > > + if (gimple_stmt_omp_data_i_init_p (stmt)) > + return false; > + > /* Statements with loads and/or stores will never generate a useful copy. > */ > if (gimple_vuse (stmt)) > return false; > > > Grüße, > Thomas > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu, Graham Norton HRB 21284 (AG Nuernberg)