https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106843
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- 6.5.2.5 Compound literals 5 The value of the compound literal is that of an unnamed object initialized by the initializer list. If the compound literal occurs outside the body of a function, the object has static storage duration; otherwise, it has automatic storage duration associated with the enclosing block.