https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120845
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- This looks invalid to me (sure, gcc shouldn't ICE on it). module is a preprocessing directive, see https://eel.is/c++draft/cpp.module and I don't see any different wording regarding new-lines there compared to e.g. https://eel.is/c++draft/cpp.pragma or say #embed. Furthermore, please look at https://eel.is/c++draft/cpp#pre-1 That has an example that module ; is valid preprocessing directive while module ; is not. Though, because \ newline deletion happens during translation phase 2, export module my_module \ [[this_is_a_useless_attribute]]; is valid and accepted by gcc.