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
This commit is contained in:
Richard Biener 2016-05-19 07:39:52 +00:00 committed by Richard Biener
parent 70f25790a1
commit 43c0068e60
17 changed files with 41 additions and 18 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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"} } */

View File

@ -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()

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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)
{

View File

@ -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;

View File

@ -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
{

View File

@ -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;

View File

@ -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; };

View File

@ -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;

View File

@ -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;

View File

@ -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)