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

            Bug ID: 81007
           Summary: [7/8 Regression] ICE with virtual function in broken
                    class
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Keywords: error-recovery, ice-on-invalid-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 invalid testcase triggers an ICE since GCC 7.1.0
(when compiled with -O2):

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

struct B : A {};

void bar(B& b)
{
  b.foo();
}
===================================================

bug.cc:3:5: error: field 'p' has incomplete type 'A'
   A p;
     ^
bug.cc:1:8: note: definition of 'struct A' is not complete until the closing
brace
 struct A
        ^
bug.cc: In function 'void bar(B&)':
bug.cc:11:8: internal compiler error: Segmentation fault
   b.foo();
   ~~~~~^~
0xd7564f crash_signal
        ../../gcc/gcc/toplev.c:338
0xb878af contains_struct_check(tree_node const*, tree_node_structure_enum, char
const*, int, char const*)
        ../../gcc/gcc/tree.h:3452
0xb878af wi::extended_tree<128>::extended_tree(tree_node const*)
        ../../gcc/gcc/tree.h:5307
0xb878af generic_wide_int<wi::extended_tree<128> >::generic_wide_int<tree_node
const*>(tree_node const* const&)
        ../../gcc/gcc/wide-int.h:745
0xb878af wi::to_offset(tree_node const*)
        ../../gcc/gcc/tree.h:5290
0xb878af int_bit_position(tree_node const*)
        ../../gcc/gcc/tree.h:5453
0xb878af ipa_polymorphic_call_context::restrict_to_inner_class(tree_node*,
bool, bool)
        ../../gcc/gcc/ipa-polymorphic-call.c:273
0xb886d2 contains_type_p
        ../../gcc/gcc/ipa-polymorphic-call.c:478
0xb86f89 ipa_polymorphic_call_context::speculation_consistent_p(tree_node*,
long, bool, tree_node*) const
        ../../gcc/gcc/ipa-polymorphic-call.c:1824
0xb88be5 ipa_polymorphic_call_context::combine_speculation_with(tree_node*,
long, bool, tree_node*)
        ../../gcc/gcc/ipa-polymorphic-call.c:1857
0xb8acc2 ipa_polymorphic_call_context::ipa_polymorphic_call_context(tree_node*,
tree_node*, gimple*, tree_node**)
        ../../gcc/gcc/ipa-polymorphic-call.c:909
0xae23ba possible_polymorphic_call_targets(tree_node*, gimple*, bool*, void**)
        ../../gcc/gcc/ipa-utils.h:126
0xadea93 gimple_fold_call
        ../../gcc/gcc/gimple-fold.c:3705
0xadf622 fold_stmt_1
        ../../gcc/gcc/gimple-fold.c:4456
0xb0fd43 gimplify_call_expr
        ../../gcc/gcc/gimplify.c:3364
0xb05515 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../gcc/gcc/gimplify.c:11269
0xb08938 gimplify_stmt(tree_node**, gimple**)
        ../../gcc/gcc/gimplify.c:6521
0xb0545a gimplify_cleanup_point_expr
        ../../gcc/gcc/gimplify.c:6265
0xb0545a gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../gcc/gcc/gimplify.c:11673
0xb08938 gimplify_stmt(tree_node**, gimple**)
        ../../gcc/gcc/gimplify.c:6521
Please submit a full bug report, [etc.]

Reply via email to