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.

Reply via email to