https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121938
--- Comment #11 from Harald van Dijk <harald at gigawatt dot nl> --- GCC does still emit "warning: integer constant is so large that it is unsigned" despite not treating the constant as unsigned though, and if GCC did what the warning said it did, this bug report would have been avoided. It's permitted to do so as the program violates a constraint (C99 6.4.4.1p6 / C23 6.4.4.2p7 "If an integer constant cannot be represented by any type in its list and has no extended integer type, then the integer constant has no type", C99 6.4.4p2 / C23 6.4.4.1p2, "Each constant shall have a type [...]") and GCC issues the required diagnostic, and if that diagnostic is a warning, GCC is free to continue to translate it in any way it sees fit, including by assigning a type that the C standard doesn't say it should have.
