https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85810
--- Comment #2 from cookevillain at yahoo dot com --- There is nothing obvious about the intent of the Standard here (see the definition of type name scope introduced into the standard to handle a similar formal issue). Grammatically, parameter declarations are not identical to ordinary declarations so 6.7.6.3(18) is only tangentially relevant here (where tag declarations are considered). The Standard is supposed to be a formal specification of the language, so if the implementors feel they implement what is intended and not what is written this creates a problem for compiler users (especially those of us who write formal verification tools). I have no problem accepting that gcc implements a version of C11 that is better than the standard one, however 'perverse' is bit too strong a term, maybe 'literal' is more appropriate.