11851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s 21851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 31851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlssonstruct Field { 41851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson Field(); 51851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson ~Field(); 61851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson}; 71851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 81851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlssonstruct Base { 91851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson Base(); 101851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson ~Base(); 111851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson}; 121851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 131851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlssonstruct A : Base { 141851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson A(); 151851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson ~A(); 161851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 171851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson virtual void f(); 181851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 191851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson Field field; 201851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson}; 211851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 220691a5c83246604a89654e0dfc25870e742035b4Rafael Espindola// CHECK: define void @_ZN1AC2Ev(%struct.A* %this) unnamed_addr 231851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: call void @_ZN4BaseC2Ev( 24ccd83d748c82c5255100f38e3f07537b949853b3Anders Carlsson// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2) 251851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: call void @_ZN5FieldC1Ev( 261851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: ret void 271851a12605bc6f1ea70d11974a315340ebaab6ebAnders CarlssonA::A() { } 281851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 290691a5c83246604a89654e0dfc25870e742035b4Rafael Espindola// CHECK: define void @_ZN1AD2Ev(%struct.A* %this) unnamed_addr 30ccd83d748c82c5255100f38e3f07537b949853b3Anders Carlsson// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2) 311851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: call void @_ZN5FieldD1Ev( 321851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: call void @_ZN4BaseD2Ev( 331851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: ret void 341851a12605bc6f1ea70d11974a315340ebaab6ebAnders CarlssonA::~A() { } 351851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 361851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlssonstruct B : Base { 371851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson virtual void f(); 381851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 391851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson Field field; 401851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson}; 411851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 421851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlssonvoid f() { B b; } 431851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 449cbe4f0ba01ec304e1e3d071c071f7bca33631c0Chris Lattner// CHECK: define linkonce_odr void @_ZN1BC1Ev(%struct.B* %this) unnamed_addr 45c0bf462cf35fe050bddbd8bff967298e4a67e79dJohn McCall// CHECK: call void @_ZN1BC2Ev( 461851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson 479cbe4f0ba01ec304e1e3d071c071f7bca33631c0Chris Lattner// CHECK: define linkonce_odr void @_ZN1BD1Ev(%struct.B* %this) unnamed_addr 48ccd83d748c82c5255100f38e3f07537b949853b3Anders Carlsson// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2) 491851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: call void @_ZN5FieldD1Ev( 501851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: call void @_ZN4BaseD2Ev( 511851a12605bc6f1ea70d11974a315340ebaab6ebAnders Carlsson// CHECK: ret void 52c0bf462cf35fe050bddbd8bff967298e4a67e79dJohn McCall 539cbe4f0ba01ec304e1e3d071c071f7bca33631c0Chris Lattner// CHECK: define linkonce_odr void @_ZN1BC2Ev(%struct.B* %this) unnamed_addr 54c0bf462cf35fe050bddbd8bff967298e4a67e79dJohn McCall// CHECK: call void @_ZN4BaseC2Ev( 55ccd83d748c82c5255100f38e3f07537b949853b3Anders Carlsson// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2) 56c0bf462cf35fe050bddbd8bff967298e4a67e79dJohn McCall// CHECK: call void @_ZN5FieldC1Ev 57c0bf462cf35fe050bddbd8bff967298e4a67e79dJohn McCall// CHECK: ret void 58