| // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK |
| |
| struct polymorphic_base { |
| virtual void func() {} |
| virtual ~polymorphic_base() {} |
| }; |
| |
| struct Empty {}; |
| struct derived_virtual : virtual Empty {}; |
| struct derived : polymorphic_base {}; |
| |
| // CHECK: %struct.Holder1 = type { %struct.polymorphic_base } |
| // CHECK: %struct.polymorphic_base = type { ptr } |
| // CHECK: %struct.Holder2 = type { %struct.derived_virtual } |
| // CHECK: %struct.derived_virtual = type { ptr } |
| // CHECK: %struct.Holder3 = type { %struct.derived } |
| // CHECK: %struct.derived = type { %struct.polymorphic_base } |
| |
| struct Holder1 { |
| polymorphic_base a{}; |
| } g_holder1; |
| |
| // CHECK: @{{.*}} = {{.*}}global %struct.Holder1 { %struct.polymorphic_base { ptr {{.*}} } } |
| |
| struct Holder2 { |
| derived_virtual a{}; |
| } g_holder2; |
| |
| // CHECK: @{{.*}} = {{.*}}global %struct.Holder2 zeroinitializer |
| |
| struct Holder3 { |
| derived a{}; |
| } g_holder3; |
| |
| // CHECK: @{{.*}} = {{.*}}global { { ptr } } { { ptr } { ptr {{.*}} } } |