61 lines · cpp
1// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s2 3struct Field {4 Field();5 ~Field();6};7 8struct Base {9 Base();10 ~Base();11};12 13struct A : Base {14 A();15 ~A();16 17 virtual void f();18 19 Field field;20};21 22// CHECK-LABEL: define{{.*}} void @_ZN1AC2Ev(ptr {{[^,]*}} %this) unnamed_addr23// CHECK: call void @_ZN4BaseC2Ev(24// CHECK: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2)25// CHECK: call void @_ZN5FieldC1Ev(26// CHECK: ret void27A::A() { }28 29// CHECK-LABEL: define{{.*}} void @_ZN1AD2Ev(ptr {{[^,]*}} %this) unnamed_addr30// CHECK: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2)31// CHECK: call void @_ZN5FieldD1Ev(32// CHECK: call void @_ZN4BaseD2Ev(33// CHECK: ret void34A::~A() { } 35 36struct B : Base {37 virtual void f();38 39 Field field;40};41 42void f() { B b; }43 44// CHECK-LABEL: define linkonce_odr void @_ZN1BC1Ev(ptr {{[^,]*}} %this) unnamed_addr45// CHECK: call void @_ZN1BC2Ev(46 47// CHECK-LABEL: define linkonce_odr void @_ZN1BD1Ev(ptr {{[^,]*}} %this) unnamed_addr48// CHECK: call void @_ZN1BD2Ev(49 50// CHECK-LABEL: define linkonce_odr void @_ZN1BC2Ev(ptr {{[^,]*}} %this) unnamed_addr51// CHECK: call void @_ZN4BaseC2Ev(52// CHECK: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2)53// CHECK: call void @_ZN5FieldC1Ev54// CHECK: ret void55 56// CHECK-LABEL: define linkonce_odr void @_ZN1BD2Ev(ptr {{[^,]*}} %this) unnamed_addr57// CHECK: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2)58// CHECK: call void @_ZN5FieldD1Ev(59// CHECK: call void @_ZN4BaseD2Ev(60// CHECK: ret void61