https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92467
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So the question becomes what is the semantics of the extension. I think GCC here is doing one that would be similar to what C++ would normally do with respect of the tmp variable. So not extending the life time of it if it is used like that before. Clang is implementing the semantics of the extension slightly different and really I don't know where the temporary lifetime ends. Because the extension requires a tmp.