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

Attachment: signature.asc
Description: PGP signature

Reply via email to