https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119614
--- Comment #8 from Sam James <sjames at gcc dot gnu.org> ---
Sorry, not very nice, but this fails with -O2 and works with -O1:
```
struct {
} b;
struct d {
d(int);
};
typedef const char *(*c)(int *, const char *, int *, d, const int *,
unsigned long);
char *f();
int e, g;
void k(void *, int);
struct l {
void h();
template <int> void h(int, int, int, d, int, int) {
static c i{j<1>};
i(0, 0, 0, 1, 0, 1);
}
template <bool>
static const char *j(int *, const char *, int *, d, const int *,
unsigned long);
};
__attribute__((noinline)) char *m() {
k(0, 1);
return 0;
}
void l::h() { h<1>(1, 1, 1, 1, 1, 1); }
template <bool>
const char *l::j(int *, const char *, int *, d, const int *, unsigned long) {
switch (e)
case 1: {
auto a = b;
if (g)
return 0;
[[clang::musttail]] return m();
}
return f();
}
```