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..

Reply via email to