[Bug c++/105202] New: ICE: defaulted comparison operators for enumerated types segfault
falbrechtskirchinger at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Apr 8 08:31:31 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105202
Bug ID: 105202
Summary: ICE: defaulted comparison operators for enumerated
types segfault
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: falbrechtskirchinger at gmail dot com
Target Milestone: ---
Versions:
g++
(Compiler-Explorer-Build-gcc-45fb78c9c456ace1d914c836d15af38ae345b902-binutils-2.36.1)
12.0.1 20220407 (experimental)
g++-12.0.1 (Gentoo 12.0.1 p2, commit d43fbc7d3f7621e1c8f153c1471d2a5cd20bfdc8)
12.0.1 20220201 (experimental)
Code:
enum class foo {};
bool operator<(foo, foo) = default;
Compile with: g++ -std=c++20
Error:
ice_defaulted_operator.cpp:2:28: internal compiler error: Segmentation fault
2 | bool operator<(foo, foo) = default;
| ^~~~~~~
Stack trace from Compiler Explorer:
0x218e8e9 internal_error(char const*, ...)
???:0
0x146ee90 strip_array_types(tree_node*)
???:0
0xa7c328 cp_type_quals(tree_node const*)
???:0
0xa6d323 cp_build_qualified_type_real(tree_node*, int, int)
???:0
0x8cbf04 defaultable_fn_check(tree_node*)
???:0
0x84c170 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
???:0
0x9870ad c_parse_file()
???:0
0xb196e2 c_common_parse_file()
???:0
Comparison with other compilers:
https://godbolt.org/z/qnq5Gnqc5
This obviously shouldn't segfault. Clang seems to give the most reasonable
error message.
More information about the Gcc-bugs
mailing list