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

Reply via email to