https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86329
--- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Confirmed on trunk, gcc-8, and gcc-7. Doesn't affect gcc-6. The bogus dotted names are coming from anonymous enums in the header; a more minimal reproducer is: enum {}; int test() { return __0; } pr86329.C: In function ‘int test()’: pr86329.C:5:10: error: ‘__0’ was not declared in this scope return __0; ^~~ pr86329.C:5:10: note: suggested alternative: ‘._0’ return __0; ^~~ ._0 I'm working on a fix.