This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
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;
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |