https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103165
Bug ID: 103165 Summary: [12 Regression] ICE unspellable token PRAGMA since r12-4797-g0078a058a5693871 Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: preprocessor Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: burnus at gcc dot gnu.org Target Milestone: --- The following ICEs: $ cat pragma.C #define INTERNAL_CATCH_TEST(...) #__VA_ARGS__ _Pragma("GCC diagnostic pop") #define REQUIRE_FALSE(...) INTERNAL_CATCH_TEST(__VA_ARGS__) REQUIRE_FALSE(INTERNAL_CATCH_TEST()) $ g++ pragma.C -c pragma.C:3:36: internal compiler error: unspellable token PRAGMA 3 | REQUIRE_FALSE(INTERNAL_CATCH_TEST()) | ^ 0xc663d3 c_cpp_diagnostic(cpp_reader*, cpp_diagnostic_level, cpp_warning_reason, rich_location*, char const*, __va_list_tag (*) [1]) /home/marxin/Programming/gcc/gcc/c-family/c-common.c:6616 0x20f206e cpp_diagnostic_at /home/marxin/Programming/gcc/libcpp/errors.c:67 0x20f206e cpp_diagnostic /home/marxin/Programming/gcc/libcpp/errors.c:82 0x20f206e cpp_error(cpp_reader*, cpp_diagnostic_level, char const*, ...) /home/marxin/Programming/gcc/libcpp/errors.c:96 0x20fc483 cpp_spell_token(cpp_reader*, cpp_token const*, unsigned char*, bool) /home/marxin/Programming/gcc/libcpp/lex.c:3588 0x210576a stringify_arg /home/marxin/Programming/gcc/libcpp/macro.c:921 0x2106b85 replace_args /home/marxin/Programming/gcc/libcpp/macro.c:1946 0x2106b85 enter_macro_context /home/marxin/Programming/gcc/libcpp/macro.c:1496 0x2107d82 cpp_get_token_1 /home/marxin/Programming/gcc/libcpp/macro.c:2986 0xca3c0a c_lex_with_flags(tree_node**, unsigned int*, unsigned char*, int) /home/marxin/Programming/gcc/gcc/c-family/c-lex.c:483 0xb240e6 cp_lexer_get_preprocessor_token /home/marxin/Programming/gcc/gcc/cp/parser.c:864 0xb783d4 cp_lexer_new_main /home/marxin/Programming/gcc/gcc/cp/parser.c:643 0xb783d4 c_parse_file() /home/marxin/Programming/gcc/gcc/cp/parser.c:47838 0xcb33c9 c_common_parse_file() /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:1237 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. The original code is a valid code, but it's hard to reduce it..