https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101943
Bug ID: 101943 Summary: [12 Regression] ICE: Segmentation fault (in cat_tag_for) Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-12.0.0-alpha20210815 snapshot (g:bbf19f9c20515da9fcd23f08c8139427374e8d77) ICEs when compiling the following testcase, extracted from test/CXX/class/class.compare/class.compare.default/p2.cpp from the clang 12.0.0 test suite, w/ -std=c++20: struct A1 { int x; bool operator<=>(const A1&) const = default; }; void f(A1 a) { void(a <=> a); } % gcc-12.0.0 -std=c++20 -c xbo4cxcm.cpp xbo4cxcm.cpp: In function 'void f(A1)': xbo4cxcm.cpp:8:14: error: use of deleted function 'constexpr bool A1::operator<=>(const A1&) const' 8 | void(a <=> a); | ^ xbo4cxcm.cpp:4:8: note: 'constexpr bool A1::operator<=>(const A1&) const' is implicitly deleted because the default definition would be ill-formed: 4 | bool operator<=>(const A1&) const = default; | ^~~~~~~~ xbo4cxcm.cpp:2:7: error: 'strong_ordering' is not a member of 'std' 2 | int x; | ^ xbo4cxcm.cpp:1:1: note: 'std::strong_ordering' is defined in header '<compare>'; did you forget to '#include <compare>'? +++ |+#include <compare> 1 | struct A1 { xbo4cxcm.cpp:2:7: note: forming type of 'operator<=>' 2 | int x; | ^ xbo4cxcm.cpp:4:8: internal compiler error: Segmentation fault 4 | bool operator<=>(const A1&) const = default; | ^~~~~~~~ 0x11210bf crash_signal /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/toplev.c:328 0xa03000 cat_tag_for /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/method.c:1032 0xa05302 genericize_spaceship(unsigned int, tree_node*, tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/method.c:1076 0xa05ecb build_comparison_op /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/method.c:1507 0xa0d92c maybe_explain_implicit_delete(tree_node*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/method.c:2749 0x9bffd5 mark_used(tree_node*, int) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/decl2.c:5658 0x90717e build_over_call /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/call.c:9557 0x90d9d0 build_new_op_1 /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/call.c:6547 0x90e18d build_new_op(op_location_t const&, tree_code, int, tree_node*, tree_node*, tree_node*, tree_node**, int) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/call.c:6806 0xb5516d build_x_binary_op(op_location_t const&, tree_code, tree_node*, tree_code, tree_node*, tree_code, tree_node**, int) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/typeck.c:4330 0xa6acb8 cp_parser_binary_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:10062 0xa6b45d cp_parser_assignment_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:10200 0xa6fcb6 cp_parser_parenthesized_expression_list /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:8310 0xa70b12 cp_parser_functional_cast /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:31561 0xa810b0 cp_parser_postfix_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:7492 0xa6ab02 cp_parser_binary_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:9896 0xa6b45d cp_parser_assignment_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:10200 0xa6ca82 cp_parser_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:10370 0xa70298 cp_parser_expression_statement /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:12539 0xa7c2f3 cp_parser_statement /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210815/work/gcc-12-20210815/gcc/cp/parser.c:12335