https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118430

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Must have decided that val escapes and can be referenced by the call
tail_call2.

I am not 100% sure if this is valid or not.

Rewriting the code like:
int tail_call1(int opcode) {
{
    int val;
    printf("%d\n", opcode);
    non_tail_call(&val); // Trigger the bug by passing in a local.

}
    [[gnu::musttail]]
    return tail_call2(opcode);
}

Will cause the val not be escaping for tail_call2 as it goes out of scope
before the call to tail_call2.

Reply via email to