https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119732
Bug ID: 119732
Summary: ICE (segfault) in reference_related_p(tree_node*,
tree_node*)
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: ice-on-invalid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mkretz at gcc dot gnu.org
Target Milestone: ---
Test case (https://compiler-explorer.com/z/3613dKebx):
Compile with -std=c++20 (or higher)
--------------------
struct array {};
template <typename _Tp>
static array convert_mask() {
return {[]<int... _Js> { Impl0_convert_mask<_Tp>(_Js); }()...};
}
void test()
{
convert_mask<array>();
}
--------------------
# /home/mkretz/.local/gcc15/bin/g++ -std=c++26 -Wall -Wextra -Wno-psabi -Werror
-O2 -g0 -fmax-errors=1 -march=core2 -S -o constexpr.core2.s constexpr.core2.ii
constexpr.core2.ii: In instantiation of ‘array convert_mask() [with _Tp =
array]’:
constexpr.core2.ii:10:22: required from here
10 | convert_mask<array>();
| ~~~~~~~~~~~~~~~~~~~^~
constexpr.core2.ii:5:66: internal compiler error: Segmentation fault
5 | return {[]<int... _Js> { Impl0_convert_mask<_Tp>(_Js); }()...};
| ^
0x22a56ff internal_error(char const*, ...)
/home/mkretz/src/gcc-master/gcc/diagnostic-global-context.cc:517
0xfd55df crash_signal
/home/mkretz/src/gcc-master/gcc/toplev.cc:322
0x70352804532f ???
./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x7eedfe reference_related_p(tree_node*, tree_node*)
/home/mkretz/src/gcc-master/gcc/cp/call.cc:1675
0x88a805 reshape_init_r
/home/mkretz/src/gcc-master/gcc/cp/decl.cc:7503
0x88b27b reshape_init(tree_node*, tree_node*, int)
/home/mkretz/src/gcc-master/gcc/cp/decl.cc:7712
0x7fcb15 implicit_conversion
/home/mkretz/src/gcc-master/gcc/cp/call.cc:2176
0x7fcfb9 perform_implicit_conversion_flags(tree_node*, tree_node*, int, int)
/home/mkretz/src/gcc-master/gcc/cp/call.cc:14001
0xa1b394 check_return_expr(tree_node*, bool*, bool*)
/home/mkretz/src/gcc-master/gcc/cp/typeck.cc:11476
0x9d8d72 finish_return_stmt(tree_node*)
/home/mkretz/src/gcc-master/gcc/cp/semantics.cc:1585
0x9a407e tsubst_stmt
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:18875
0x9a3470 tsubst_stmt
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:18851
0x9a3470 tsubst_stmt
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:18865
0x9a417a tsubst_stmt
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:18851
0x9a417a tsubst_stmt
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:19230
0x9bfbf6 tsubst_stmt
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:27729
0x9bfbf6 instantiate_body
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:27729
0x9a2aad instantiate_decl(tree_node*, bool, bool)
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:28013
0x9c98c3 instantiate_pending_templates(int)
/home/mkretz/src/gcc-master/gcc/cp/pt.cc:28090
0x89c725 c_parse_final_cleanups()
/home/mkretz/src/gcc-master/gcc/cp/decl2.cc:5571