[Bug c++/124487] mangling type pack index
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 13 16:04:33 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124487
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 63922
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=63922&action=edit
gcc16-pr124487-wip.patch
WIP patch.
Unfortunately this breaks pack-indexing9.C testcase:
FAIL: g++.dg/cpp26/pack-indexing9.C -std=c++26 (internal compiler error: tree
check: expected type_pack_expansion or expr_pack_expansion, have tree_vec in
write_type, at cp/mangle.cc:2750)
FAIL: g++.dg/cpp26/pack-indexing9.C -std=c++26 (test for warnings, line 19)
FAIL: g++.dg/cpp26/pack-indexing9.C -std=c++26 (test for excess errors)
while some adjustment is certainly needed, we shouldn't expect a sorry message,
the ICE is on
<pack_index_type 0x7fffe99cfb28
type <tree_vec 0x7fffe982b330 length:3
elt:0 <integer_type 0x7fffe98233f0 char public type_6 QI
size <integer_cst 0x7fffe981b3c0 constant 8>
unit-size <integer_cst 0x7fffe981b3d8 constant 1>
align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffe98233f0 precision:8 min <integer_cst 0x7fffe981b408 -128> max
<integer_cst 0x7fffe981b438 127>
pointer_to_this <pointer_type 0x7fffe982df18>>
elt:1 <integer_type 0x7fffe98235e8 int public type_6 SI
size <integer_cst 0x7fffe981b510 constant 32>
unit-size <integer_cst 0x7fffe981b528 constant 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffe98235e8 precision:32 min <integer_cst 0x7fffe981b4c8 -2147483648> max
<integer_cst 0x7fffe981b4e0 2147483647>
pointer_to_this <pointer_type 0x7fffe982ab28>>
elt:2 <real_type 0x7fffe982a348 double type_6 DF
size <integer_cst 0x7fffe981b2d0 constant 64>
unit-size <integer_cst 0x7fffe981b2e8 constant 8>
align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffe982a348 precision:64
pointer_to_this <pointer_type 0x7fffe982a9d8>>>
VOID
align:8 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality pack
<tree_vec 0x7fffe982b330>
index <template_parm_index 0x7fffe982b360 type <integer_type 0x7fffe98235e8
int>
readonly constant
decl <const_decl 0x7fffe980f7f8 I type <integer_type 0x7fffe98235e8
int>
readonly constant decl_0 VOID pack-indexing9.C:19:14
align:1 warn_if_not_align:0 initial <template_parm_index
0x7fffe982b360>>
index 0 level 1 orig_level 2>>
So, clearly PACK_INDEX_PACK is no longer some pack expansion, but the expanded
pack. Guess for mangling we need what it has been expanded from?
More information about the Gcc-bugs
mailing list