http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54146
--- Comment #34 from Steven Bosscher <steven at gcc dot gnu.org> 2012-08-08
10:10:46 UTC ---
(In reply to comment #33)
> I think you should simply move compute_global_livein to its single use
> and make it static.
Yes, and I need to add the same smarts there as in find_uses_to_rename_use to
look through loops at the same nesting level, because this test case fails:
extern unsigned use (unsigned);
void foo (void)
{
unsigned i, j;
do { i = use (0); } while (i);
do { j = use (0); } while (j);
if (i) use (j);
}
It fails in check_loop_closed_ssa_use at -O2 but passes at -O2 -fno-tree-vrp,
so VRP is doing something destroying the initially correct loop-closed SSA
form.