https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88766
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Yes, I think that (a) a statement expression is not an lvalue and (b) if it were (or if the code were changed to move the unary '&' inside the statement expression), the code would be taking the address of an object whose lifetime had ended by the time that address is used.