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

            Bug ID: 84445
           Summary: ICE with __builtin_launder and virtual function
           Product: gcc
           Version: 8.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 triggers an ICE since GCC 7.1.0:

=================================================
struct A
{
  virtual void foo();
};

void bar(A* p)
{
  __builtin_launder(p)->foo();
}
=================================================

bug.cc: In function 'void bar(A*)':
bug.cc:8:29: internal compiler error: tree check: expected record_type or
union_type or qual_union_type, have pointer_type in lookup_base, at
cp/search.c:195
   __builtin_launder(p)->foo();
                             ^
0x78a40a tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        ../../gcc/gcc/tree.c:9335
0x99b71e tree_check3(tree_node*, char const*, int, char const*, tree_code,
tree_code, tree_code)
        ../../gcc/gcc/tree.h:3172
0x99b71e lookup_base(tree_node*, tree_node*, int, base_kind*, int)
        ../../gcc/gcc/cp/search.c:195
0x847cf4 build_vtbl_ref_1
        ../../gcc/gcc/cp/class.c:706
0x847d5b build_vfn_ref(tree_node*, tree_node*)
        ../../gcc/gcc/cp/class.c:737
0x81b76f build_over_call
        ../../gcc/gcc/cp/call.c:8227
0x81d803 build_new_method_call_1
        ../../gcc/gcc/cp/call.c:9280
0x81d803 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
        ../../gcc/gcc/cp/call.c:9355
0x930636 cp_parser_postfix_expression
        ../../gcc/gcc/cp/parser.c:7207
0x930d90 cp_parser_unary_expression
        ../../gcc/gcc/cp/parser.c:8318
0x91117f cp_parser_cast_expression
        ../../gcc/gcc/cp/parser.c:9086
0x91198a cp_parser_binary_expression
        ../../gcc/gcc/cp/parser.c:9187
0x913164 cp_parser_assignment_expression
        ../../gcc/gcc/cp/parser.c:9476
0x913878 cp_parser_expression
        ../../gcc/gcc/cp/parser.c:9645
0x915538 cp_parser_expression_statement
        ../../gcc/gcc/cp/parser.c:11112
0x91b8ad cp_parser_statement
        ../../gcc/gcc/cp/parser.c:10916
0x91cdc0 cp_parser_statement_seq_opt
        ../../gcc/gcc/cp/parser.c:11255
0x91ce97 cp_parser_compound_statement
        ../../gcc/gcc/cp/parser.c:11209
0x933610 cp_parser_function_body
        ../../gcc/gcc/cp/parser.c:21750
0x933610 cp_parser_ctor_initializer_opt_and_function_body
        ../../gcc/gcc/cp/parser.c:21787
Please submit a full bug report, [etc.]

Reply via email to