https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123602
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |10.1.0, 8.1.0, 8.5.0
Known to work| |9.1.0, 9.5.0
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
<bb 8> [local count: 536870826]:
f_18 = f_5(ab) + 1;
f_4(ab) = f_18;
if (f_4(ab) == 0)
goto <bb 10>; [100.00%]
else
goto <bb 9>; [0.00%]
<bb 9> [local count: 0]:
_22 = (long int) f_5(ab);
goto <bb 4>; [100.00%]
That is obvious overlap of f_4 and f_5.
Reduced testcase:
```
void _setjmp();
void a() __attribute__((__noreturn__));
struct b {
b(int c) {
if (c)
a();
}
~b();
};
int d;
void l(long);
void e() {
b a(d);
for (int f = 0; f < 10 ; ++f) {
l(f - 1);
_setjmp();
}
}
```