1 // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin9 -o - %s | FileCheck %s 2 3 struct C { 4 void f(); 5 void g(int, ...); 6 }; 7 8 // CHECK: define void @_ZN1C1fEv 9 void C::f() { 10 } 11 12 // CHECK: define void @_Z5test1v 13 void 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 24 struct 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: define void @_ZN1S1fEv 38 void S::f() { 39 } 40 41 void 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: define linkonce_odr void @_ZN1S9f_inline1Ev 55 56 // S::f_inline2() 57 // CHECK: define linkonce_odr void @_ZN1S9f_inline2Ev 58 59 // S::g() 60 // CHECK: define linkonce_odr void @_ZN1S1gEv 61 62 // S::~S() 63 // CHECK: define linkonce_odr void @_ZN1SD1Ev{{.*}} unnamed_addr 64 65 struct T { 66 T operator+(const T&); 67 }; 68 69 // CHECK: define void @_Z5test3v 70 void 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