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