https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123669
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |jason at gcc dot gnu.org
Ever confirmed|0 |1
Summary|[14/15/16 Regression] ICE |[14/15/16 Regression] ICE
|in write_expression |in write_expression
|(mangle.cc) with requires |(mangle.cc) with requires
|expression in lambda |expression in lambda
|trailing return type |trailing return type since
| |r14-6064
Status|UNCONFIRMED |NEW
Priority|P3 |P2
Last reconfirmed| |2026-01-21
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
namespace std {
template<bool, typename _Tp = void>
struct enable_if
{ };
template<typename _Tp>
struct enable_if<true, _Tp>
{ using type = _Tp; };
template<bool _Cond, typename _Tp = void>
using enable_if_t = typename enable_if<_Cond, _Tp>::type;
}
template <typename T> void unresolved_func(T t);
int main() {
auto lambda =
[]<typename T>(T t) -> std::enable_if_t < requires(T t) {
unresolved_func(t);
}
> {};
lambda(42);
}
This changed from a sorry into ICE in
r14-6064-gc3f281a0c1ca50e4df5049923aa2f5d1c3c39ff6
/opt/notnfs/gcc-bisect/obj/gcc/cc1plus.r14-6063 -quiet -quiet -std=c++23
pr123699.C
pr123699.C: In instantiation of ‘main()::<lambda(T)> [with T = int]’:
pr123699.C:16:7: required from here
16 | []<typename T>(T t) -> std::enable_if_t < requires(T t) {
| ^
pr123699.C:16:7: sorry, unimplemented: mangling requires_expr
pr123699.C: In instantiation of ‘main()::<lambda(T)> [with T = int]’:
pr123699.C:16:7: required from here
pr123699.C:16:7: sorry, unimplemented: mangling requires_expr
/opt/notnfs/gcc-bisect/obj/gcc/cc1plus.r14-6064 -quiet -quiet -std=c++23
pr123699.C
pr123699.C: In instantiation of ‘main()::<lambda(T)> [with T = int]’:
pr123699.C:16:7: required from here
16 | []<typename T>(T t) -> std::enable_if_t < requires(T t) {
| ^
pr123699.C:16:7: internal compiler error: in write_expression, at
cp/mangle.cc:3398
0x5f399b write_expression
../../gcc/cp/mangle.cc:3398
0x5f6b5c write_expression
../../gcc/cp/mangle.cc:3831
0x5f2101 write_requirement
../../gcc/cp/mangle.cc:3090
0x5f2710 write_requires_expr
../../gcc/cp/mangle.cc:3142
0x5f6377 write_expression
../../gcc/cp/mangle.cc:3724
0x5f84d2 write_template_arg
../../gcc/cp/mangle.cc:4102
0x5f2ae1 write_template_args
../../gcc/cp/mangle.cc:3205
0x5e7aac write_prefix
../../gcc/cp/mangle.cc:1329
0x5e7623 write_nested_name
../../gcc/cp/mangle.cc:1259
0x5eed36 write_type
../../gcc/cp/mangle.cc:2509
0x5f1b5b write_bare_function_type
../../gcc/cp/mangle.cc:2992
0x5e5cf4 write_encoding
../../gcc/cp/mangle.cc:949
0x5e503e write_mangled_name
../../gcc/cp/mangle.cc:810
0x5f962e mangle_decl_string
../../gcc/cp/mangle.cc:4383
0x5f967e get_mangled_id
../../gcc/cp/mangle.cc:4404
0x5f99bc mangle_decl(tree_node*)
../../gcc/cp/mangle.cc:4442
0x14d0dbf decl_assembler_name(tree_node*)
../../gcc/tree.cc:719
0x14d1383 assign_assembler_name_if_needed(tree_node*)
../../gcc/tree.cc:834
0xa4b4d4 cgraph_node::analyze()
../../gcc/cgraphunit.cc:677
0xa4d5aa analyze_functions
../../gcc/cgraphunit.cc:1247
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.