https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123621
Bug ID: 123621
Summary: [reflection] internal compiler error: in
reflection_mangle_prefix, at cp/reflect.cc:8605
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: ---
This (existing reflect/expr13.C)
```
#include <type_traits>
template <auto I>
struct X {};
struct Y {
int name;
};
template <typename S>
constexpr auto foo (S s) {
return X<^^S::name> {};
}
constexpr auto a = foo (Y { 42 });
static_assert (std::is_same_v <decltype (a), const X <^^Y::name>>);
```
ICEs:
expr13.C:19:21: error: static assertion failed
19 | static_assert (std::is_same_v <decltype (a), const X <^^Y::name>>);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
• ‘const struct X<^^Y::name>’ is not the same as ‘const struct X<^^Y::name>’
In file included from expr13.C:4:
/home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/type_traits:3821:25:
internal compiler error: in reflection_mangle_prefix, at cp/reflect.cc:8605
3821 | inline constexpr bool is_same_v = __is_same(_Tp, _Up);
| ^~~~~~~~~
0x317d3aa internal_error(char const*, ...)
/home/mpolacek/src/gcc/gcc/diagnostic-global-context.cc:787
0x318bc19 fancy_abort(char const*, int, char const*)
/home/mpolacek/src/gcc/gcc/diagnostics/context.cc:1805
0x878eba reflection_mangle_prefix(tree_node*, char*)
/home/mpolacek/src/gcc/gcc/cp/reflect.cc:8605
0x6302ea write_reflection
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4146
0x6316c0 write_template_arg_literal
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4337
0x631e49 write_template_arg
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4423
0x62b0d4 write_template_args
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:3298
0x61ec8d write_name
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:1135
0x62a608 write_class_enum_type
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:3166
0x627133 write_type
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:2574
0x626b52 write_type
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:2497
0x631dcc write_template_arg
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4415
0x62b0d4 write_template_args
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:3298
0x61ec8d write_name
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:1135
0x61d601 write_encoding
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:939
0x61cada write_mangled_name
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:821
0x633255 mangle_decl_string
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4716
0x63329a get_mangled_id
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4732
0x6335d8 mangle_decl(tree_node*)
/home/mpolacek/src/gcc/gcc/cp/mangle.cc:4770
0x1713f37 decl_assembler_name(tree_node*)
/home/mpolacek/src/gcc/gcc/tree.cc:856