https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89408
--- Comment #7 from Stephen Kell <srk31 at srcf dot ucam.org> --- Thanks for the backstory. I understand that 'accept as much as possible' isn't the goal, nor would it be wise. The pedwarn message you quoted, which explicitly makes reference to integer constant expressions, is a good one. What's not good is that the issued diagnostic is not that. It is not coming from c/c-typeck.cc. It seems to be coming from c-family/c-common.cc. I now understand why this behaviour has arisen -- the pre-4.5 compatibility hack, combined with whatever foldings the compiler happens to do. I would still say it's not a desirable or desired behaviour. Arguably more desirable would be a behaviour consistent with the analogous extension that is allowed for initializers. Of course keeping the pedwarn -- and adding one for the initializer case, which currently lacks one. Being neither stable nor documented is still fine for many purposes (including mine).