re PR tree-optimization/57488 (loop terminates early at -O3)
2013-06-24 Richard Biener <rguenther@suse.de> PR tree-optimization/57488 * tree-ssa-pre.c (insert): Clear NEW sets before each iteration. * gcc.dg/torture/pr57488.c: New testcase. From-SVN: r200363
This commit is contained in:
parent
03a8a2d57d
commit
3dbc97a91e
|
@ -1,3 +1,8 @@
|
|||
2013-06-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/57488
|
||||
* tree-ssa-pre.c (insert): Clear NEW sets before each iteration.
|
||||
|
||||
2013-06-24 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* config/rs6000/rs6000.c (vspltis_constant): Correct for little-endian.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-06-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/57488
|
||||
* gcc.dg/torture/pr57488.c: New testcase.
|
||||
|
||||
2013-06-24 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
Dominique d'Humieres <dominiq@lps.ens.fr>
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
int i, j, *pj = &j, **ppj = &pj;
|
||||
int x, *px = &x;
|
||||
|
||||
short s, *ps = &s, k;
|
||||
|
||||
unsigned short u, *pu = &u, **ppu = &pu;
|
||||
|
||||
char c, *pc = &c;
|
||||
|
||||
unsigned char v = 48;
|
||||
|
||||
static int
|
||||
bar (int p)
|
||||
{
|
||||
p = k;
|
||||
*px = **ppu = i;
|
||||
*ppj = &p;
|
||||
if (**ppj)
|
||||
*pj = p;
|
||||
return p;
|
||||
}
|
||||
|
||||
void __attribute__((noinline))
|
||||
foo ()
|
||||
{
|
||||
for (; i <= 3; i++)
|
||||
for (; j; j--);
|
||||
|
||||
u ^= bar (*pj);
|
||||
|
||||
for (k = 1; k >= 0; k--)
|
||||
{
|
||||
int l;
|
||||
bar (0);
|
||||
for (l = 1; l < 5; l++)
|
||||
{
|
||||
int m;
|
||||
for (m = 6; m; m--)
|
||||
{
|
||||
v--;
|
||||
*ps = *pc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
foo ();
|
||||
if (v != 0)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
|
@ -3665,6 +3665,12 @@ insert (void)
|
|||
if (dump_file && dump_flags & TDF_DETAILS)
|
||||
fprintf (dump_file, "Starting insert iteration %d\n", num_iterations);
|
||||
new_stuff = insert_aux (ENTRY_BLOCK_PTR);
|
||||
|
||||
/* Clear the NEW sets before the next iteration. We have already
|
||||
fully propagated its contents. */
|
||||
if (new_stuff)
|
||||
FOR_ALL_BB (bb)
|
||||
bitmap_set_free (NEW_SETS (bb));
|
||||
}
|
||||
statistics_histogram_event (cfun, "insert iterations", num_iterations);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue