https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89061
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Joseph, you mean we should skip the compound literals from this warning because if one doesn't take their address, they are used only directly in the code in which they are referenced and not anywhere else, and if their address is taken, there is probably no way to propagate that address through to after the label? I mean, if I do: struct S *p = something; if (whatever) goto l; p = &(struct S){ .a = 1, .b = 2, .c = 3 }; l: return p->b; then although the initialization was crossed by the jump, nothing should be able to find the address of the compound literal that got not initialized? If yes, we don't have the complit decls marked specially in any way, DECL_ARTIFICIAL && !DECL_NAME is way too generic check. So we'd need some unused C lang bit to mark it.