1// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin9 -o - %s | FileCheck %s 2 3struct C { 4 void f(); 5 void g(int, ...); 6}; 7 8// CHECK-LABEL: define void @_ZN1C1fEv 9void C::f() { 10} 11 12// CHECK-LABEL: define void @_Z5test1v 13void test1() { 14 C c; 15 16 // CHECK: call void @_ZN1C1fEv 17 c.f(); 18 19 // CHECK: call void (%struct.C*, i32, ...)* @_ZN1C1gEiz 20 c.g(1, 2, 3); 21} 22 23 24struct S { 25 inline S() { } 26 inline ~S() { } 27 28 void f_inline1() { } 29 inline void f_inline2() { } 30 31 static void g() { } 32 static void f(); 33 34 virtual void v() {} 35}; 36 37// CHECK-LABEL: define void @_ZN1S1fEv 38void S::f() { 39} 40 41void test2() { 42 S s; 43 44 s.f_inline1(); 45 s.f_inline2(); 46 47 S::g(); 48} 49 50// S::S() 51// CHECK: define linkonce_odr void @_ZN1SC1Ev{{.*}} unnamed_addr 52 53// S::f_inline1() 54// CHECK-LABEL: define linkonce_odr void @_ZN1S9f_inline1Ev 55 56// S::f_inline2() 57// CHECK-LABEL: define linkonce_odr void @_ZN1S9f_inline2Ev 58 59// S::g() 60// CHECK-LABEL: define linkonce_odr void @_ZN1S1gEv 61 62// S::~S() 63// CHECK: define linkonce_odr void @_ZN1SD1Ev{{.*}} unnamed_addr 64 65struct T { 66 T operator+(const T&); 67}; 68 69// CHECK-LABEL: define void @_Z5test3v 70void test3() { 71 T t1, t2; 72 73 // CHECK: call void @_ZN1TplERKS_ 74 T result = t1 + t2; 75} 76 77// S::~S() 78// CHECK: define linkonce_odr void @_ZN1SD2Ev{{.*}} unnamed_addr 79 80// S::S() 81// CHECK: define linkonce_odr void @_ZN1SC2Ev{{.*}} unnamed_addr 82 83// S::v() 84// CHECK: define linkonce_odr void @_ZN1S1vEv{{.*}}unnamed_addr 85 86