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
2014-11-14 Tom de Vries <t...@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 *)#
}
-/* { 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