Hi! On Wed, 25 Nov 2015 11:43:14 +0100 (CET), Richard Biener <rguent...@suse.de> wrote: > On Tue, 24 Nov 2015, Tom de Vries wrote: > > > [...] > > > > Reposting using the in_loop_pipeline style in pass_lim. > > Ok.
I merged trunk r230907 into gomp-4_0-branch in a very simplistic way, basically just moving pass_fre in between pass_oacc_kernels and the (new) pass_oacc_kernels2 pass groups. We'll want to clean this up later (on gomp-4_0-branch), once we're more clear on what difference will remain between the trunk and gomp-4_0-branch pass structures (if any); for now this makes sure we don't regress OpenACC kernels functionality on gomp-4_0-branch. In gomp-4_0-branch r231078, I effectively applied the following: commit ffae8a36e195172327a233bd397a4230a7939681 Merge: 8249e60 e1e1688 Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon Nov 30 17:28:07 2015 +0000 svn merge -r 230906:230907 svn+ssh://gcc.gnu.org/svn/gcc/trunk git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@231078 138bc75d-0d04-0410-961f-82ee72b054a4 gcc/ChangeLog | 6 ++++ gcc/passes.def | 13 +++++++-- gcc/testsuite/ChangeLog | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 3 deletions(-) [diff --git gcc/ChangeLog gcc/ChangeLog] diff --git gcc/passes.def gcc/passes.def index f4eb235..9fe4fec 100644 --- gcc/passes.def +++ gcc/passes.def @@ -84,36 +84,43 @@ along with GCC; see the file COPYING3. If not see /* After CCP we rewrite no longer addressed locals into SSA form if possible. */ NEXT_PASS (pass_forwprop); NEXT_PASS (pass_sra_early); /* pass_build_ealias is a dummy pass that ensures that we execute TODO_rebuild_alias at this point. */ NEXT_PASS (pass_build_ealias); - /* Pass group that runs when there are oacc kernels in the - function. */ + /* Pass group that runs when the function is an offloaded function + containing oacc kernels loops. Part 1. */ NEXT_PASS (pass_oacc_kernels); PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels) NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */); NEXT_PASS (pass_ch); NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */); + POP_INSERT_PASSES () + NEXT_PASS (pass_fre); + /* Pass group that runs when the function is an offloaded function + containing oacc kernels loops. Part 2. */ + NEXT_PASS (pass_oacc_kernels2); + PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels2) + /* We use pass_lim to rewrite in-memory iteration and reduction + variable accesses in loops into local variables accesses. */ NEXT_PASS (pass_tree_loop_init); NEXT_PASS (pass_lim); NEXT_PASS (pass_copy_prop); NEXT_PASS (pass_lim); NEXT_PASS (pass_copy_prop); NEXT_PASS (pass_scev_cprop); NEXT_PASS (pass_tree_loop_done); NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */); NEXT_PASS (pass_dce); NEXT_PASS (pass_tree_loop_init); NEXT_PASS (pass_parallelize_loops_oacc_kernels); NEXT_PASS (pass_expand_omp_ssa); NEXT_PASS (pass_tree_loop_done); POP_INSERT_PASSES () - NEXT_PASS (pass_fre); NEXT_PASS (pass_merge_phi); NEXT_PASS (pass_dse); NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_early_ipa_sra); NEXT_PASS (pass_tail_recursion); NEXT_PASS (pass_convert_switch); NEXT_PASS (pass_cleanup_eh); [diff --git gcc/testsuite/ChangeLog gcc/testsuite/ChangeLog] ..., so the following difference from trunk to gomp-4_0-branch remains to be resolved/reduced (plus the corresponding testsuite tree dump scanning changes): --- gcc/passes.def +++ gcc/passes.def @@ -89,25 +89,36 @@ along with GCC; see the file COPYING3. If not see execute TODO_rebuild_alias at this point. */ NEXT_PASS (pass_build_ealias); /* Pass group that runs when the function is an offloaded function containing oacc kernels loops. Part 1. */ NEXT_PASS (pass_oacc_kernels); PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels) + NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */); NEXT_PASS (pass_ch); + NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */); POP_INSERT_PASSES () NEXT_PASS (pass_fre); /* Pass group that runs when the function is an offloaded function containing oacc kernels loops. Part 2. */ NEXT_PASS (pass_oacc_kernels2); PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels2) /* We use pass_lim to rewrite in-memory iteration and reduction variable accesses in loops into local variables accesses. */ + NEXT_PASS (pass_tree_loop_init); NEXT_PASS (pass_lim); + NEXT_PASS (pass_copy_prop); + NEXT_PASS (pass_lim); + NEXT_PASS (pass_copy_prop); + NEXT_PASS (pass_scev_cprop); + NEXT_PASS (pass_tree_loop_done); NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */); NEXT_PASS (pass_dce); + NEXT_PASS (pass_tree_loop_init); + NEXT_PASS (pass_parallelize_loops_oacc_kernels); NEXT_PASS (pass_expand_omp_ssa); + NEXT_PASS (pass_tree_loop_done); POP_INSERT_PASSES () NEXT_PASS (pass_merge_phi); NEXT_PASS (pass_dse); NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_early_ipa_sra); NEXT_PASS (pass_tail_recursion); Grüße Thomas
signature.asc
Description: PGP signature