https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95508

            Bug ID: 95508
           Summary: [10/11 Regression] ICE on unexpected expression
                    implicit_conv_expr since r10-7096
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

Since r10-7096-gd417b4f5414d9076300ab41974a14424f722688c the following testcase
ICEs:
template <typename>
struct A;
template <typename>
struct B {
  operator int () { return 0; }
};
template <>
struct A<unsigned> : B<int> {};
struct D {
  template <typename>
  int foo () { return e[f]; }
  int e[6];
  A<unsigned> f;
};
rh1837006.C: In member function ‘int D::foo()’:
rh1837006.C:11:26: internal compiler error: unexpected expression
‘(int)((D*)this)->D::f’ of kind implicit_conv_expr
   11 |   int foo () { return e[f]; }
      |                          ^
0xaf874b cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6541
0xaf8cef cxx_eval_outermost_constant_expr
        ../../gcc/cp/constexpr.c:6746
0xafd0db maybe_constant_value(tree_node*, tree_node*, bool)
        ../../gcc/cp/constexpr.c:7019
0xcc3e00 cp_build_array_ref(unsigned int, tree_node*, tree_node*, int)
        ../../gcc/cp/typeck.c:3568
...

Reply via email to