This seems to be a gcc speciality. Compiling with -std=c89 or -pedantic reports the error.
Since in all C standards this is a constraint violation, not giving a diagnostic for that case makes gcc without one of the -std=c?? options a non-conforming compiler.