|  | // 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 {{.*}} } } |