https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118060
Bug ID: 118060
Summary: ICE (internal compiler error) on requires clause
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ing.russomauro at gmail dot com
Target Milestone: ---
Replicated on https://godbolt.org/z/axeTxorqW
with 13.2, 14.2, trunk versions.
SOURCE CODE:
#include <algorithm>
#include <concepts>
//template<typename T>
//concept C = true;
template<typename T>
struct S final {
S() = default; // may remove, still internal error
// template<C U> also internal error
template<typename U>
requires requires (U u){ {*(std::begin(u))} -> std::same_as<T>; }
// internal error disappears with one of these alternatives (remove '*' or
std::begin):
//requires requires (U u){ {std::begin(u)} -> std::same_as<T>; }
//requires requires (U u){ {*((int*)nullptr)} -> std::same_as<T>; }
S(const U& u) : S(){}
};
int main()
{
S s{}; // error
S s2{0}; // error
S s2{0,0}; // error
return 0;
}
MESSAGE FROM COMPILER:
<source>: In function 'int main()':
<source>:x:y: internal compiler error: Segmentation fault
y | requires requires (U u){ {*(std::begin(u))} -> std::same_as<T>; }
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x2931885 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag
(*) [1], diagnostic_t)
???:0
0x2948656 internal_error(char const*, ...)
???:0
0xb74c84 convert_to_void(tree_node*, impl_conv_void, int)
???:0
0xb4ec96 tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*)
???:0
0xb49e1a tsubst_constraint_info(tree_node*, tree_node*, int, tree_node*)
???:0
0xd00dd6 do_auto_deduction(tree_node*, tree_node*, tree_node*, int,
auto_deduction_context, tree_node*, int, tree_node*)
???:0
0xbbd621 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int,
cp_decomp*)
???:0
0xce1f2a c_parse_file()
???:0
0xe41159 c_common_parse_file()
???:0
Hard to look for duplicates, seems different from:
PR92838, PR103198