https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119614
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Reduced testcase:
volatile int v;
[[gnu::noinline]] const char *
foo (int x)
{
v += x;
return 0;
}
const char *
bar (int x)
{
if (x == 42)
[[gnu::musttail]] return foo (42);
[[gnu::musttail]] return foo (32);
}
const char *
baz (int x)
{
if (x == 5)
return foo (42);
return foo (32);
}
Guess I need to extend my hack to work also on pointer singletons and maybe
floating point values as well.