https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97577
Bug ID: 97577 Summary: [11 Regression] ICE: Segmentation fault (in get_location_from_adhoc_loc) Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: error-recovery, ice-on-invalid-code Severity: normal Priority: P3 Component: preprocessor Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-11.0.0-alpha20201025 snapshot (g:308e40331f9d2820f8286769b5fc764671187364) ICEs when compiling the following testcase, reduced from test/Preprocessor/annotate_in_macro_arg.c from the clang 10.0.1 test suite: #define M1() M1( #if M1() #endif #pragma pack() % MALLOC_PERTURB_=1 MALLOC_CHECK_=3 gcc-11.0.0 -c ifhvkm83.c ifhvkm83.c:5:9: error: #if with no expression 5 | #if M1() | ^ ifhvkm83.c:7:9: internal compiler error: Segmentation fault 7 | #pragma pack() | ^~~~ 0xdbaf3f crash_signal /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/toplev.c:330 0x192e151 get_location_from_adhoc_loc(line_maps const*, unsigned int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/line-map.c:257 0x192e151 linemap_resolve_location(line_maps*, unsigned int, location_resolution_kind, line_map_ordinary const**) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/line-map.c:1540 0x18e8933 diagnostic_report_current_module(diagnostic_context*, unsigned int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/diagnostic.c:683 0xe15071 diagnostic_report_current_function(diagnostic_context*, diagnostic_info*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/tree-diagnostic.c:39 0xe150d0 default_tree_diagnostic_starter /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/tree-diagnostic.c:48 0x18e6a27 diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/diagnostic.c:1206 0x885aaa c_cpp_diagnostic(cpp_reader*, cpp_diagnostic_level, cpp_warning_reason, rich_location*, char const*, __va_list_tag (*) [1]) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/c-family/c-common.c:6364 0x191df49 cpp_diagnostic_at /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/errors.c:42 0x191df49 cpp_diagnostic /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/errors.c:75 0x191e06e cpp_error(cpp_reader*, cpp_diagnostic_level, char const*, ...) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/errors.c:89 0x1931f58 collect_args /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/macro.c:1267 0x1931f58 funlike_invocation_p /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/macro.c:1326 0x1931f58 enter_macro_context /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/macro.c:1401 0x19326e2 cpp_get_token_1 /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/libcpp/macro.c:2890 0x89fe80 c_lex_with_flags(tree_node**, unsigned int*, unsigned char*, int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/c-family/c-lex.c:457 0x81d67a c_lex_one_token /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/c/c-parser.c:279 0x85005a c_parser_peek_token(c_parser*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/c/c-parser.c:483 0x85005a c_parse_file() /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/c/c-parser.c:21819 0x8abe2d c_common_parse_file() /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201025/work/gcc-11-20201025/gcc/c-family/c-opts.c:1188 I've failed to reproduce it w/ valgrind so far.