https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114559
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=110199
Last reconfirmed| |2024-04-03
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed. Reduced testcase without the need of inlining nor atomics:
```
int g(int);
int h(int);
int f(int a, int b)
{
while (true)
{
int t = a < b ? a : b; // MIN<a,b>
if (b <= a)
return a;
{ a = g(a); if (h(t)) return t; }
// t here should be old a before the assignment from `g(a);`
}
}
```
As far as I can tell this is basically slightly more complex version of PR
110199 really wehre the MIN (MAX) has 2 usages. Note if we the usage of t in
`h(t)` the trunk (due to PR 110199) is able to optimize it correctly to
`return a`.