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