diff mbox

[6/8] Add pass_ccp to pass_oacc_kernels

Message ID 54678BE8.7010201@mentor.com
State New
Headers show

Commit Message

Tom de Vries Nov. 15, 2014, 5:22 p.m. UTC
On 15-11-14 13:14, Tom de Vries wrote:
> Hi,
>
> 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.

OK for trunk?

Thanks,
- Tom
diff mbox

Patch

2014-11-14  Tom de Vries  <tom@codesourcery.com>

	* passes.def: Add pass_ccp in pass group pass_oacc_kernels.

	* gcc.dg/pr43513.c: Update for new pass_ccp.
	* gcc.dg/tree-ssa/alias-17.c: Same.
	* gcc.dg/tree-ssa/foldconst-4.c: Same.
	* gcc.dg/tree-ssa/ssa-ccp-29.c: Same.
	* gcc.dg/tree-ssa/ssa-ccp-3.c: Same.
---
 gcc/passes.def                              | 1 +
 gcc/testsuite/gcc.dg/pr43513.c              | 6 +++---
 gcc/testsuite/gcc.dg/tree-ssa/alias-17.c    | 6 +++---
 gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c | 6 +++---
 gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c  | 6 +++---
 gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c   | 6 +++---
 6 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/gcc/passes.def b/gcc/passes.def
index f6c16b9..cd9443c 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -79,6 +79,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_ccp);
 	      NEXT_PASS (pass_tree_loop_done);
 	  POP_INSERT_PASSES ()
 	  NEXT_PASS (pass_expand_omp_ssa);
diff --git a/gcc/testsuite/gcc.dg/pr43513.c b/gcc/testsuite/gcc.dg/pr43513.c
index 78a037b..3fb0890 100644
--- a/gcc/testsuite/gcc.dg/pr43513.c
+++ b/gcc/testsuite/gcc.dg/pr43513.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ccp2" } */
+/* { dg-options "-O2 -fdump-tree-ccp3" } */
 
 void bar (int *);
 void foo (char *, int);
@@ -15,5 +15,5 @@  foo3 ()
     foo ("%d ", results[i]);
 }
 
-/* { dg-final { scan-tree-dump-times "alloca" 0 "ccp2"} } */
-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+/* { dg-final { scan-tree-dump-times "alloca" 0 "ccp3"} } */
+/* { dg-final { cleanup-tree-dump "ccp3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-17.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-17.c
index 48e72ff..59862f6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/alias-17.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-17.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-early-inlining -fdump-tree-ccp2" } */
+/* { dg-options "-O -fno-early-inlining -fdump-tree-ccp3" } */
 
 int *p;
 int inline bar(void) { return 0; }
@@ -14,5 +14,5 @@  int foo(int x)
   return *q + *p;
 }
 
-/* { dg-final { scan-tree-dump-not "NOTE: no flow-sensitive alias info for" "ccp2" } } */
-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+/* { dg-final { scan-tree-dump-not "NOTE: no flow-sensitive alias info for" "ccp3" } } */
+/* { dg-final { cleanup-tree-dump "ccp3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
index 445d415..916a857 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp2" } */
+/* { dg-options "-O -fdump-tree-ccp3" } */
 
 struct a {int a,b;};
 const static struct a a;
@@ -10,5 +10,5 @@  test()
 {
   return a.a+b[c];
 }
-/* { dg-final { scan-tree-dump "return 0;" "ccp2" } } */
-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+/* { dg-final { scan-tree-dump "return 0;" "ccp3" } } */
+/* { dg-final { cleanup-tree-dump "ccp3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c
index 44d2945..1e3f41b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp2" } */
+/* { dg-options "-O -fdump-tree-ccp3" } */
 
 static double num;
 int foo (void)
@@ -7,5 +7,5 @@  int foo (void)
   return *(unsigned *)&num;
 }
 
-/* { dg-final { scan-tree-dump "return 0;" "ccp2" } } */
-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+/* { dg-final { scan-tree-dump "return 0;" "ccp3" } } */
+/* { dg-final { cleanup-tree-dump "ccp3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c
index 86a706b..03717e1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp2" } */
+/* { dg-options "-O -fdump-tree-ccp3" } */
 
 extern void link_error (void);
 
@@ -133,5 +133,5 @@  int* test666 (int * __restrict__ rp1, int * __restrict__ rp2, int *p1)
    optimization has failed */
 /* ??? While we indeed don't handle some of these, a couple of the
    restrict tests are incorrect.  */
-/* { dg-final { scan-tree-dump-times "link_error" 0 "ccp2" { xfail *-*-* } } } */
-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+/* { dg-final { scan-tree-dump-times "link_error" 0 "ccp3" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "ccp3" } } */
-- 
1.9.1