This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, 4/8] Add pass_tree_loop_{init,done} to pass_oacc_kernels
- From: Richard Biener <rguenther at suse dot de>
- To: Thomas Schwinge <thomas at codesourcery dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Tom de Vries <Tom_deVries at mentor dot com>, Jakub Jelinek <jakub at redhat dot com>
- Date: Wed, 22 Apr 2015 09:40:37 +0200 (CEST)
- Subject: Re: [PATCH, 4/8] Add pass_tree_loop_{init,done} to pass_oacc_kernels
- Authentication-results: sourceware.org; auth=none
- References: <546743BC dot 5070804 at mentor dot com> <54678BAB dot 5000000 at mentor dot com> <54746818 dot 8020408 at mentor dot com> <87618p1cov dot fsf at kepler dot schwinge dot homeip dot net>
On Tue, 21 Apr 2015, Thomas Schwinge wrote:
> Hi!
>
> On Tue, 25 Nov 2014 12:29:28 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote:
> > On 15-11-14 18:21, 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_tree_loop_init and pass_tree_loop_init_done to
> > > pass_oacc_kernels.
> > >
> > > Pass_parallelize_loops is run between these passes in the pass group
> > > pass_tree_loop, since it requires loop information. We do the same for
> > > pass_oacc_kernels.
> > >
> >
> > Updated for moving pass_oacc_kernels down past pass_fre in the pass list.
> >
> > Bootstrapped and reg-tested as before.
> >
> > OK for trunk?
Both passes should be basically no-ops. Why not call
loop_optimizer_init/finalize from expand_omp_ssa instead?
> Committed to gomp-4_0-branch in r222282:
>
> commit cb95b4a1efcdb96c58cda986d53b20c3537c1ab7
> Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date: Tue Apr 21 19:51:33 2015 +0000
>
> Add pass_tree_loop_{init,done} to pass_oacc_kernels
>
> gcc/
> * passes.def: Run pass_tree_loop_init and pass_tree_loop_done in pass
> group pass_oacc_kernels.
> * tree-ssa-loop.c (pass_tree_loop_init::clone)
> (pass_tree_loop_done::clone): New function.
>
> git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@222282 138bc75d-0d04-0410-961f-82ee72b054a4
> ---
> gcc/ChangeLog.gomp | 5 +++++
> gcc/passes.def | 2 ++
> gcc/tree-ssa-loop.c | 2 ++
> 3 files changed, 9 insertions(+)
>
> diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp
> index d00c5e0..1fb060f 100644
> --- gcc/ChangeLog.gomp
> +++ gcc/ChangeLog.gomp
> @@ -1,5 +1,10 @@
> 2015-04-21 Tom de Vries <tom@codesourcery.com>
>
> + * passes.def: Run pass_tree_loop_init and pass_tree_loop_done in pass
> + group pass_oacc_kernels.
> + * tree-ssa-loop.c (pass_tree_loop_init::clone)
> + (pass_tree_loop_done::clone): New function.
> +
> * omp-low.c (loop_in_oacc_kernels_region_p): New function.
> * omp-low.h (loop_in_oacc_kernels_region_p): Declare.
> * passes.def: Add pass_ch_oacc_kernels to pass group pass_oacc_kernels.
> diff --git gcc/passes.def gcc/passes.def
> index 5cdbc87..83ae04e 100644
> --- gcc/passes.def
> +++ gcc/passes.def
> @@ -91,7 +91,9 @@ along with GCC; see the file COPYING3. If not see
> NEXT_PASS (pass_oacc_kernels);
> PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels)
> NEXT_PASS (pass_ch_oacc_kernels);
> + NEXT_PASS (pass_tree_loop_init);
> NEXT_PASS (pass_expand_omp_ssa);
> + NEXT_PASS (pass_tree_loop_done);
> POP_INSERT_PASSES ()
> NEXT_PASS (pass_merge_phi);
> NEXT_PASS (pass_cd_dce);
> diff --git gcc/tree-ssa-loop.c gcc/tree-ssa-loop.c
> index a041858..2a96a39 100644
> --- gcc/tree-ssa-loop.c
> +++ gcc/tree-ssa-loop.c
> @@ -272,6 +272,7 @@ public:
>
> /* opt_pass methods: */
> virtual unsigned int execute (function *);
> + opt_pass * clone () { return new pass_tree_loop_init (m_ctxt); }
>
> }; // class pass_tree_loop_init
>
> @@ -566,6 +567,7 @@ public:
>
> /* opt_pass methods: */
> virtual unsigned int execute (function *) { return tree_ssa_loop_done (); }
> + opt_pass * clone () { return new pass_tree_loop_done (m_ctxt); }
>
> }; // class pass_tree_loop_done
>
>
>
> GrÃÃe,
> Thomas
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Jennifer Guild,
Dilip Upmanyu, Graham Norton HRB 21284 (AG Nuernberg)