https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114731
--- Comment #16 from uecker at gcc dot gnu.org --- Your example program is indeed not conforming and violates a constraint because you pass a pointer of type that can not be assigned to the type of the argument. So a diagnostic is required and a C compiler could also reject it. GCC is generous regarding differences in signedness in this case in default mode, but you would get a warning when mixing long* and int* for example. You need to pass "-pedantic" to get all warnings required by the C standard.