https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61449
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I don't see what this has to do with statement expressions. Standard ISO C rules for storage class specifiers are that block-scope declarations for functions need to use "extern" or no storage class specifier, and if the function has internal linkage, a file-scope static declaration must come before any block-scope declaration (and be visible when the block-scope declaration occurs).