https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116835
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|phiprop will prop back into |[12/13/14/15 Regression]
|a loop |phiprop will prop back into
| |a loop
Known to fail| |4.4.7
Keywords| |wrong-code
Known to work| |4.1.2
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Found a testcase which we produce wrong code as we introduce an unconditional
load:
```
extern int a __attribute__((weak));
int b;
int bar (int c) __attribute__((noipa, noinline));
int
bar (int c)
{
int *p = &a;
for (int j = 0; j < c; ++j)
p = &b;
return *p;
}
int main(void)
{
if (bar(100))
__builtin_abort();
}
```
Compile this at -Os and you will see the load from a happens even though it is
weak.