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

            Bug ID: 89709
           Summary: [9 Regression] ICE with constexpr and "-O"
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org
  Target Milestone: ---

The following valid code snippet (compiled with "-O") triggers an ICE on trunk:

=============================
struct A
{
  int i;
};

A a;

constexpr int* foo()
{
  return &a.i;
}

bool bar()
{
  return foo() == &a.i;
}
=============================

bug.cc: In function 'bool bar()':
bug.cc:15:22: internal compiler error: in operand_equal_p, at fold-const.c:2962
   15 |   return foo() == &a.i;
      |                      ^
0x6e8344 operand_equal_p(tree_node const*, tree_node const*, unsigned int)
        ../../gcc/gcc/fold-const.c:2962
0x141f84d generic_simplify_EQ_EXPR
        /tmp/gccbuild/src-9/build/gcc/generic-match.c:41813
0x144dc1d generic_simplify(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        /tmp/gccbuild/src-9/build/gcc/generic-match.c:52806
0xc4e885 fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        ../../gcc/gcc/fold-const.c:9378
0xc56c99 fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        ../../gcc/gcc/fold-const.c:12350
0x8c112a cp_fold
        ../../gcc/gcc/cp/cp-gimplify.c:2448
0x8c30ec cp_fold_maybe_rvalue(tree_node*, bool)
        ../../gcc/gcc/cp/cp-gimplify.c:2126
0xa29908 maybe_warn_about_returning_address_of_local
        ../../gcc/gcc/cp/typeck.c:9183
0xa3f9c6 check_return_expr(tree_node*, bool*)
        ../../gcc/gcc/cp/typeck.c:9751
0x9f955f finish_return_stmt(tree_node*)
        ../../gcc/gcc/cp/semantics.c:895
0x979f77 cp_parser_jump_statement
        ../../gcc/gcc/cp/parser.c:12848
0x979f77 cp_parser_statement
        ../../gcc/gcc/cp/parser.c:11120
0x97a678 cp_parser_statement_seq_opt
        ../../gcc/gcc/cp/parser.c:11586
0x97a758 cp_parser_compound_statement
        ../../gcc/gcc/cp/parser.c:11540
0x992c95 cp_parser_function_body
        ../../gcc/gcc/cp/parser.c:22521
0x992c95 cp_parser_ctor_initializer_opt_and_function_body
        ../../gcc/gcc/cp/parser.c:22558
0x99351b cp_parser_function_definition_after_declarator
        ../../gcc/gcc/cp/parser.c:27621
0x994269 cp_parser_function_definition_from_specifiers_and_declarator
        ../../gcc/gcc/cp/parser.c:27537
0x994269 cp_parser_init_declarator
        ../../gcc/gcc/cp/parser.c:20196
0x976f62 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:13470
Please submit a full bug report, [etc.]

The regression was introduced between 2018-12-14 and 2019-01-12.

Reply via email to