https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117124
--- Comment #4 from Sam James <sjames at gcc dot gnu.org> --- "If the program defines a reserved identifier or attribute token described in 6.7.12.1 as a macro name, or removes (with #undef) any macro definition of an identifier in the first group listed above or attribute token described in 6.7.12.1, the behavior is undefined."