[Bug tree-optimization/47265] [4.6 Regression] Error: SSA name in freelist but still referenced
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 25 10:50:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47265
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-01-25 10:27:41 UTC ---
Actually, there is a far easier fix. Either add
if (all && !has_zero_uses (name))
all = false;
to the end of forward_propagate_addr_expr, or we could iterate some more,
either like this:
--- gcc/tree-ssa-forwprop.c.jj 2011-01-15 11:26:42.000000000 +0100
+++ gcc/tree-ssa-forwprop.c 2011-01-25 11:22:02.828495766 +0100
@@ -1061,6 +1061,8 @@ forward_propagate_addr_expr (tree name,
bool all = true;
bool single_use_p = has_single_use (name);
+ do
+ {
FOR_EACH_IMM_USE_STMT (use_stmt, iter, name)
{
bool result;
@@ -1113,6 +1115,7 @@ forward_propagate_addr_expr (tree name,
gsi_remove (&gsi, true);
}
}
+ } while (all && !has_zero_uses (name));
return all;
}
or say just once or say 4 times:
int i;
for (i = 0; i < 4; i++)
{
FOR_EACH_IMM_USE_STMT (use_stmt, iter, name)
{
...
}
if (!all || has_zero_uses (name))
return all;
}
return false;
More information about the Gcc-bugs
mailing list