https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98539
--- Comment #3 from Martin Uecker <muecker at gwdg dot de> --- Another symptom is the incorrect warning we get here: void foo(char (*a)[*], int (*x)[*]); void foo(char (*a)[*], int (*x)[sizeof *a]); <source>:3:30: warning: mismatch in bound 1 of argument 2 declared as 'int (*)[(*a, 0)]' [-Wvla-parameter] 3 | void foo(char (*a)[*], int (*x)[sizeof *a]); | ~~~~~~^~~~~~~~~~~~~ <source>:2:30: note: previously declared as 'int (*)[0]' 2 | void foo(char (*a)[*], int (*x)[*]); | ~~~~~~^~~~~