https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124493
Bug ID: 124493
Summary: [reflection] crash with invalid
splice-specialization-specifier
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mpolacek at gcc dot gnu.org
Target Milestone: ---
```
struct Y { };
template<decltype(^^::) R>
constexpr auto f (typename [:R:]<0> x) { return x; }
constexpr auto a = f<^^Y>(Y{});
```
$ ./cc1plus -quiet -std=c++26 -freflection ice4.C
ice4.C: In substitution of ‘template<decltype (^^namespace :: { }) R> constexpr
auto f([: R :]<0>) [with decltype (^^namespace :: { }) R = ^^Y]’:
ice4.C:8:26: required from here
8 | constexpr auto a = f<^^Y>(Y{});
| ~~~~~~^~~~~
ice4.C:7:16: internal compiler error: Segmentation fault
7 | constexpr auto f (typename [:R:]<0> x) { return x; }
| ^
0x319b292 internal_error(char const*, ...)
/home/mpolacek/src/gcc/gcc/diagnostic-global-context.cc:787
0x12dc93a crash_signal
/home/mpolacek/src/gcc/gcc/toplev.cc:325
0x7fd01a2c628f ???
/usr/src/debug/glibc-2.42-10.fc43.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x4031d1 tree_check(tree_node*, char const*, int, char const*, tree_code)
/home/mpolacek/src/gcc/gcc/tree.h:3779
0x7d30d3 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*,
int)
/home/mpolacek/src/gcc/gcc/cp/pt.cc:10217
0x8a8497 finish_template_type(tree_node*, tree_node*, int)
/home/mpolacek/src/gcc/gcc/cp/semantics.cc:4438
0x7fec12 tsubst(tree_node*, tree_node*, int, tree_node*)
/home/mpolacek/src/gcc/gcc/cp/pt.cc:17798
0x7f96d2 tsubst_splice_scope
/home/mpolacek/src/gcc/gcc/cp/pt.cc:16755
0x7fea5d tsubst(tree_node*, tree_node*, int, tree_node*)
/home/mpolacek/src/gcc/gcc/cp/pt.cc:17770
0x7f82ff tsubst_arg_types
/home/mpolacek/src/gcc/gcc/cp/pt.cc:16372
0x7f8a16 tsubst_function_type
/home/mpolacek/src/gcc/gcc/cp/pt.cc:16526
0x7fd26d tsubst(tree_node*, tree_node*, int, tree_node*)
/home/mpolacek/src/gcc/gcc/cp/pt.cc:17462
0x7ecf7d tsubst_function_decl
/home/mpolacek/src/gcc/gcc/cp/pt.cc:15128
0x7f45ed tsubst_decl
/home/mpolacek/src/gcc/gcc/cp/pt.cc:15707
0x822911 instantiate_template(tree_node*, tree_node*, int)
/home/mpolacek/src/gcc/gcc/cp/pt.cc:23528
0x824bc0 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool,
bool)
/home/mpolacek/src/gcc/gcc/cp/pt.cc:24068
0x41094b add_template_candidate_real
/home/mpolacek/src/gcc/gcc/cp/call.cc:3776
0x410f3c add_template_candidate
/home/mpolacek/src/gcc/gcc/cp/call.cc:3866
0x41c81c add_candidates
/home/mpolacek/src/gcc/gcc/cp/call.cc:6957
0x415aed perform_overload_resolution
/home/mpolacek/src/gcc/gcc/cp/call.cc:5184