re PR tree-optimization/58955 (wrong code at -O3 on x86_64-linux-gnu)

2013-11-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/58955
	* tree-loop-distribution.c (pg_add_dependence_edges): Fix
	edge direction.

	* gcc.dg/torture/pr58955-1.c: New testcase.
	* gcc.dg/torture/pr58955-2.c: Likewise.

From-SVN: r204398
This commit is contained in:
Richard Biener 2013-11-05 15:08:43 +00:00 committed by Richard Biener
parent 186bc28703
commit d8f4f4db4b
5 changed files with 51 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2013-11-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/58955
* tree-loop-distribution.c (pg_add_dependence_edges): Fix
edge direction.
2013-11-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/vector.md (vec_pack_sfix_trunc_v2df): Adjust for

View File

@ -1,3 +1,9 @@
2013-11-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/58955
* gcc.dg/torture/pr58955-1.c: New testcase.
* gcc.dg/torture/pr58955-2.c: Likewise.
2013-11-05 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/58981

View File

@ -0,0 +1,20 @@
/* { dg-do run } */
extern void abort (void);
int a, b, c, d[4] = { 0, 0, 0, 1 };
int
main ()
{
for (; a < 4; a++)
{
int e = d[a];
for (c = 1; c < 1; c++);
b = e;
d[a] = 0;
}
if (b != 1)
abort ();
return 0;
}

View File

@ -0,0 +1,18 @@
/* { dg-do run } */
extern void abort (void);
int a, b[10];
int
main ()
{
for (; a < 2; a++)
{
b[a] = 1;
b[a + 1] = 0;
}
if (b[1] != 1)
abort ();
return 0;
}

View File

@ -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 jj = 0; drs2.iterate (jj, &dr2); ++jj)
{
int this_dir = 1;
int this_dir = -1;
ddr_p ddr;
/* Re-shuffle data-refs to be in dominator order. */
if (rdg_vertex_for_stmt (rdg, DR_STMT (dr1))