https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106797
--- Comment #2 from Pavel M <pavel.morozkin at gmail dot com> --- Observation: if "static" is removed, then GCC generates: <source>: In function 'f2': <source>:10:18: error: conflicting types for 'x'; have 'int (*)[5]' 10 | extern int (*x)[5]; | ^ <source>:5:18: note: previous declaration of 'x' with type 'int (*)[3]' 5 | extern int (*x)[3]; |