https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105499
--- Comment #6 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> --- To be clear... I'm not sure about what kind of compatibility warnings one can get, but it is OK to silence valid extensions, i.e. those that will not give an error. But invalid extensions, i.e. those that would give an error with a compat-implied compiler (like in the testcase), should not be silenced by __extension__. The problem is that in my original testcase, __extension__ was used in order to silence the warning for the ({...}) construct, which is still valid with g++. But as a side effect, it also silences the conversion from the "int *p = q;", which is invalid in C++ (and is actually *not* an extension as it fails as shown in my bug report).