This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, 3/8] Add pass_ch_oacc_kernels to pass_oacc_kernels
- From: Richard Biener <rguenther at suse dot de>
- To: Tom de Vries <Tom_deVries at mentor dot com>
- Cc: Thomas Schwinge <thomas at codesourcery dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Jakub Jelinek <jakub at redhat dot com>
- Date: Wed, 3 Jun 2015 13:21:47 +0200 (CEST)
- Subject: Re: [PATCH, 3/8] Add pass_ch_oacc_kernels to pass_oacc_kernels
- Authentication-results: sourceware.org; auth=none
- References: <546743BC dot 5070804 at mentor dot com> <54678B85 dot 60005 at mentor dot com> <547467A6 dot 9 at mentor dot com> <87a8y11cuq dot fsf at kepler dot schwinge dot homeip dot net> <alpine dot LSU dot 2 dot 11 dot 1504220937500 dot 20496 at zhemvz dot fhfr dot qr> <556ED107 dot 90802 at mentor dot com>
On Wed, 3 Jun 2015, Tom de Vries wrote:
> On 22/04/15 09:39, Richard Biener wrote:
> > > Committed to gomp-4_0-branch in r222281:
> > > >
> > > >commit 58c33a7965c379b55b549d50e3b79b2252bcc876
> > > >Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> > > >Date: Tue Apr 21 19:48:16 2015 +0000
> > > >
> > > > Add pass_ch_oacc_kernels to pass_oacc_kernels
> > > >
> > > > gcc/
> > > > * 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.
> > > > * tree-pass.h (make_pass_ch_oacc_kernels): Declare
> > > > * tree-ssa-loop-ch.c: Include omp-low.h.
> > > > (pass_ch_execute): Declare.
> > > > (pass_ch::execute): Factor out ...
> > > > (pass_ch_execute): ... this new function. If handling oacc
> > > kernels,
> > > > skip loops that are not in oacc kernels region.
> > > > (pass_ch_oacc_kernels::execute):
> > > > (pass_data_ch_oacc_kernels): New pass_data.
> > > > (class pass_ch_oacc_kernels): New pass.
> > > > (pass_ch_oacc_kernels::execute, make_pass_ch_oacc_kernels):
> > > New
> > > > function.
> > > >
> > > > git-svn-id:
> > > svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@222281
> > > 138bc75d-0d04-0410-961f-82ee72b054a4
> > > >---
> > > > gcc/ChangeLog.gomp | 15 ++++++++
> > > > gcc/omp-low.c | 91
> > > ++++++++++++++++++++++++++++++++++++++++++++++++
> > > > gcc/omp-low.h | 2 ++
> > > > gcc/passes.def | 1 +
> > > > gcc/tree-pass.h | 1 +
> > > > gcc/tree-ssa-loop-ch.c | 59 +++++++++++++++++++++++++++++--
> > > > 6 files changed, 167 insertions(+), 2 deletions(-)
> > > >
> > > >diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp
> > > >index 8a53ad8..d00c5e0 100644
> > > >--- gcc/ChangeLog.gomp
> > > >+++ gcc/ChangeLog.gomp
> > > >@@ -1,5 +1,20 @@
> > > > 2015-04-21 Tom de Vries<tom@codesourcery.com>
> > > >
> > > >+ * 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.
> > > >+ * tree-pass.h (make_pass_ch_oacc_kernels): Declare
> > > >+ * tree-ssa-loop-ch.c: Include omp-low.h.
> > > >+ (pass_ch_execute): Declare.
> > > >+ (pass_ch::execute): Factor out ...
> > > >+ (pass_ch_execute): ... this new function. If handling oacc kernels,
> > > >+ skip loops that are not in oacc kernels region.
> > > >+ (pass_ch_oacc_kernels::execute):
> > > >+ (pass_data_ch_oacc_kernels): New pass_data.
> > > >+ (class pass_ch_oacc_kernels): New pass.
> > > >+ (pass_ch_oacc_kernels::execute, make_pass_ch_oacc_kernels): New
> > > >+ function.
> > > >+
> > > > * passes.def: Add pass group pass_oacc_kernels.
> > > > * tree-pass.h (make_pass_oacc_kernels): Declare.
> > > > * tree-ssa-loop.c (gate_oacc_kernels): New static function.
> > > >diff --git gcc/omp-low.c gcc/omp-low.c
> > > >index 16d9a5e..1b03ae6 100644
> > > >--- gcc/omp-low.c
> > > >+++ gcc/omp-low.c
> > > >@@ -13920,4 +13920,95 @@ gimple_stmt_omp_data_i_init_p (gimple stmt)
> > > > SSA_OP_DEF);
> > > > }
> > > >
> > > >+/* Return true if LOOP is inside a kernels region. */
> > > >+
> > > >+bool
> > > >+loop_in_oacc_kernels_region_p (struct loop *loop, basic_block
> > > *region_entry,
> > > >+ basic_block *region_exit)
>
> <SNIP>
>
> > It's also very odd that you disable transforms on OMP regions but at
> > the same time do all the OMP processing_after_ those transforms.
> > Something feels backward here.
>
> I'm not sure if I understand your remark in the context of this patch. All we
> do here, is to disable transforming loops in pass_ch_oacc_kernels that are not
> part of a kernels region.
Ah, I probably failed to realize this.
Richard.
> Thanks,
> - Tom
>
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Dilip Upmanyu, Graham Norton, HRB 21284 (AG Nuernberg)