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

            Bug ID: 92365
           Summary: ice unexpected expression ‘int16_t()’ of kind
                    cast_expr
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For this C++ code:

typedef short int16_t;
class a {
public:
  a(char *);
};
enum b {};
class c {
public:
  b g;
};
void d() {
  c e;
  a f(reinterpret_cast<char *>(d));
  switch (e.g)
    int16_t f;
}


compiled by recent gcc trunk and compiler flag -std=c++98, does this:

bug559.cc: In function ‘void d()’:
bug559.cc:15:13: internal compiler error: unexpected expression ‘int16_t()’ of
kind cast_expr
   15 |     int16_t f;
      |             ^
0x90ed37 cxx_eval_constant_expression
        ../../trunk/gcc/cp/constexpr.c:5669
0x90f1e2 cxx_eval_outermost_constant_expr
        ../../trunk/gcc/cp/constexpr.c:5858
0x91413a maybe_constant_value(tree_node*, tree_node*, bool)
        ../../trunk/gcc/cp/constexpr.c:6128
0x91413a fold_non_dependent_expr(tree_node*, int, bool, tree_node*)
        ../../trunk/gcc/cp/constexpr.c:6239

Problem first seems to occur between 277650 and 277700.

Reply via email to