Hi! On Tue, 25 Nov 2014 12:38:55 +0100, Tom de Vries <[email protected]> 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?
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 <[email protected]>
+ * 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
signature.asc
Description: PGP signature
