aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-05-19 07:39:52 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-05-19 07:39:52 +0000
commit43c0068e60ad1518cc6196eeac51eb811fe62f8f (patch)
tree8602873ad2f288519c3410ea197e9b287bd5e925 /gcc
parent70f25790a1effc8f1cba3cb8a368b129c66a87b0 (diff)
downloadgcc-43c0068e60ad1518cc6196eeac51eb811fe62f8f.zip
gcc-43c0068e60ad1518cc6196eeac51eb811fe62f8f.tar.gz
gcc-43c0068e60ad1518cc6196eeac51eb811fe62f8f.tar.bz2
re PR tree-optimization/70729 (Loop marked with omp simd pragma is not vectorized)
2016-05-19 Richard Biener <rguenther@suse.de> PR tree-optimization/70729 * passes.def: Move LIM pass before PRE. Remove no longer required copyprop and move first DCE out of the loop pipeline. * gcc.dg/autopar/outer-6.c: Adjust to avoid redundant store. * gcc.dg/graphite/scop-18.c: Likewise. * gcc.dg/pr41783.c: Disable LIM. * gcc.dg/tree-ssa/loadpre10.c: Likewise. * gcc.dg/tree-ssa/loadpre23.c: Likewise. * gcc.dg/tree-ssa/loadpre24.c: Likewise. * gcc.dg/tree-ssa/loadpre25.c: Likewise. * gcc.dg/tree-ssa/loadpre4.c: Likewise. * gcc.dg/tree-ssa/loadpre8.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-16.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-18.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-20.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-3.c: Likewise. * gfortran.dg/pr42108.f90: Likewise. From-SVN: r236440
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/passes.def5
-rw-r--r--gcc/testsuite/ChangeLog18
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/graphite/scop-18.c4
-rw-r--r--gcc/testsuite/gcc.dg/pr41783.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c2
-rw-r--r--gcc/testsuite/gfortran.dg/pr42108.f902
17 files changed, 41 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cde433e..63fe800 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70729
+ * passes.def: Move LIM pass before PRE. Remove no longer
+ required copyprop and move first DCE out of the loop pipeline.
+
2016-05-18 David Malcolm <dmalcolm@redhat.com>
PR driver/69265
diff --git a/gcc/passes.def b/gcc/passes.def
index 21427d7..993ed28 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -243,12 +243,14 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_cse_sincos);
NEXT_PASS (pass_optimize_bswap);
NEXT_PASS (pass_laddress);
+ NEXT_PASS (pass_lim);
NEXT_PASS (pass_split_crit_edges);
NEXT_PASS (pass_pre);
NEXT_PASS (pass_sink_code);
NEXT_PASS (pass_sancov);
NEXT_PASS (pass_asan);
NEXT_PASS (pass_tsan);
+ NEXT_PASS (pass_dce);
/* Pass group that runs when 1) enabled, 2) there are loops
in the function. Make sure to run pass_fix_loops before
to discover/remove loops before running the gate function
@@ -257,9 +259,6 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_tree_loop);
PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
NEXT_PASS (pass_tree_loop_init);
- NEXT_PASS (pass_lim);
- NEXT_PASS (pass_copy_prop);
- NEXT_PASS (pass_dce);
NEXT_PASS (pass_tree_unswitch);
NEXT_PASS (pass_scev_cprop);
NEXT_PASS (pass_record_bounds);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 642fee3..d14ebef 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,21 @@
+2016-05-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/70729
+ * gcc.dg/autopar/outer-6.c: Adjust to avoid redundant store.
+ * gcc.dg/graphite/scop-18.c: Likewise.
+ * gcc.dg/pr41783.c: Disable LIM.
+ * gcc.dg/tree-ssa/loadpre10.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre23.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre24.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre25.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre4.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre8.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-16.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-18.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-20.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-3.c: Likewise.
+ * gfortran.dg/pr42108.f90: Likewise.
+
2016-05-18 David Malcolm <dmalcolm@redhat.com>
PR driver/69265
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-6.c b/gcc/testsuite/gcc.dg/autopar/outer-6.c
index fff7bce..7aae803 100644
--- a/gcc/testsuite/gcc.dg/autopar/outer-6.c
+++ b/gcc/testsuite/gcc.dg/autopar/outer-6.c
@@ -24,7 +24,7 @@ void parloop (int N)
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
- y[i]=x[i][j];
+ y[i]+=x[i][j];
sum += y[i];
}
g_sum = sum;
diff --git a/gcc/testsuite/gcc.dg/graphite/scop-18.c b/gcc/testsuite/gcc.dg/graphite/scop-18.c
index 3416304..fe2a5bf 100644
--- a/gcc/testsuite/gcc.dg/graphite/scop-18.c
+++ b/gcc/testsuite/gcc.dg/graphite/scop-18.c
@@ -13,13 +13,13 @@ void test (void)
for (i = 0; i < 24; i++)
for (j = 0; j < 24; j++)
for (k = 0; k < 24; k++)
- A[i][j] = B[i][k] * C[k][j];
+ A[i][j] += B[i][k] * C[k][j];
/* These loops should still be strip mined. */
for (i = 0; i < 1000; i++)
for (j = 0; j < 1000; j++)
for (k = 0; k < 1000; k++)
- A[i][j] = B[i][k] * C[k][j];
+ A[i][j] += B[i][k] * C[k][j];
}
/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */
diff --git a/gcc/testsuite/gcc.dg/pr41783.c b/gcc/testsuite/gcc.dg/pr41783.c
index 3d8006c..465b0af 100644
--- a/gcc/testsuite/gcc.dg/pr41783.c
+++ b/gcc/testsuite/gcc.dg/pr41783.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -fdump-tree-pre" } */
+/* { dg-options "-O3 -fdump-tree-pre -fno-tree-loop-im" } */
int db[100];
int a_global_var, fact;
int main()
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
index 543e1a6..c6ee35c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
struct tree_common
{
int code;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c
index 9fa0731..42b08f0 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
struct {
int a;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c
index bd7275f..56e4279 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
int a;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c
index 8418c30..d1a9e4e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
struct X { int i; };
int foo(struct X *a, int argc)
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c
index 2ca7e39..6eaf6901 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
int main(int *a, int argc)
{
int i;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
index db5937f..2abb0d2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats -std=gnu89" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -std=gnu89 -fno-tree-loop-im" } */
typedef union tree_node *tree;
struct tree_common
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
index f2ec5d7..69cc517 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats -std=c99" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -std=c99 -fno-tree-loop-im" } */
int foo(int k, int *x)
{
int j=0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
index 483f822..ea2a7ae 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-details" } */
+/* { dg-options "-O2 -fdump-tree-pre-details -fno-tree-loop-im" } */
struct Bar { int a; int b; };
struct Foo { int x; struct Bar y; };
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c
index c8a23df..39ed2ef 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
double pcheck;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
index ba2c8ea..7e319ed 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-loop-im" } */
unsigned foo1 (unsigned a, unsigned b, unsigned j, unsigned k)
{
unsigned i;
diff --git a/gcc/testsuite/gfortran.dg/pr42108.f90 b/gcc/testsuite/gfortran.dg/pr42108.f90
index c823edb..eb93604 100644
--- a/gcc/testsuite/gfortran.dg/pr42108.f90
+++ b/gcc/testsuite/gfortran.dg/pr42108.f90
@@ -1,5 +1,5 @@
! { dg-do compile }
-! { dg-options "-O2 -fdump-tree-fre1 -fdump-tree-pre-details" }
+! { dg-options "-O2 -fdump-tree-fre1 -fdump-tree-pre-details -fno-tree-loop-im" }
subroutine eval(foo1,foo2,foo3,foo4,x,n,nnd)
implicit real*8 (a-h,o-z)