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<t...@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.

Thanks,
- Tom

Reply via email to