re PR tree-optimization/59038 (r204398 causes 186.crafty init.c to be miscompiled)
2013-11-08 Richard Biener <rguenther@suse.de> PR tree-optimization/59038 PR tree-optimization/58955 * tree-loop-distribution.c (pg_add_dependence_edges): Revert previous change. Handle known dependences correctly. * gcc.dg/torture/pr59038.c: New testcase. From-SVN: r204561
This commit is contained in:
parent
7d6c5039bb
commit
2cf19e2664
|
@ -1,3 +1,10 @@
|
||||||
|
2013-11-08 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/59038
|
||||||
|
PR tree-optimization/58955
|
||||||
|
* tree-loop-distribution.c (pg_add_dependence_edges): Revert
|
||||||
|
previous change. Handle known dependences correctly.
|
||||||
|
|
||||||
2013-11-08 Tom de Vries <tom@codesourcery.com>
|
2013-11-08 Tom de Vries <tom@codesourcery.com>
|
||||||
|
|
||||||
* config/rs6000/t-xilinx: Remove duplicate contents.
|
* config/rs6000/t-xilinx: Remove duplicate contents.
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
|
||||||
|
extern void abort (void);
|
||||||
|
|
||||||
|
unsigned char first_ones_8bit[256];
|
||||||
|
unsigned char connected_passed[256];
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
for (i=0;i<256;i++){
|
||||||
|
connected_passed[i]=0;
|
||||||
|
first_ones_8bit[i]=0;
|
||||||
|
for (j=7;j>0;j--){
|
||||||
|
if ((i & (3<<(7-j))) == (3<<(7-j))){
|
||||||
|
connected_passed[i]=j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (connected_passed[3] != 7)
|
||||||
|
abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1324,7 +1324,7 @@ pg_add_dependence_edges (struct graph *rdg, vec<loop_p> loops, int dir,
|
||||||
for (int ii = 0; drs1.iterate (ii, &dr1); ++ii)
|
for (int ii = 0; drs1.iterate (ii, &dr1); ++ii)
|
||||||
for (int jj = 0; drs2.iterate (jj, &dr2); ++jj)
|
for (int jj = 0; drs2.iterate (jj, &dr2); ++jj)
|
||||||
{
|
{
|
||||||
int this_dir = -1;
|
int this_dir = 1;
|
||||||
ddr_p ddr;
|
ddr_p ddr;
|
||||||
/* Re-shuffle data-refs to be in dominator order. */
|
/* Re-shuffle data-refs to be in dominator order. */
|
||||||
if (rdg_vertex_for_stmt (rdg, DR_STMT (dr1))
|
if (rdg_vertex_for_stmt (rdg, DR_STMT (dr1))
|
||||||
|
@ -1350,8 +1350,17 @@ pg_add_dependence_edges (struct graph *rdg, vec<loop_p> loops, int dir,
|
||||||
}
|
}
|
||||||
/* Known dependences can still be unordered througout the
|
/* Known dependences can still be unordered througout the
|
||||||
iteration space, see gcc.dg/tree-ssa/ldist-16.c. */
|
iteration space, see gcc.dg/tree-ssa/ldist-16.c. */
|
||||||
if (DDR_NUM_DIST_VECTS (ddr) == 0)
|
if (DDR_NUM_DIST_VECTS (ddr) != 1)
|
||||||
this_dir = 2;
|
this_dir = 2;
|
||||||
|
/* If the overlap is exact preserve stmt order. */
|
||||||
|
else if (lambda_vector_zerop (DDR_DIST_VECT (ddr, 0), 1))
|
||||||
|
;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Else as the distance vector is lexicographic positive
|
||||||
|
swap the dependence direction. */
|
||||||
|
this_dir = -this_dir;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
this_dir = 0;
|
this_dir = 0;
|
||||||
|
|
Loading…
Reference in New Issue