// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin9 -o - %s | FileCheck %s struct C { void f(); void g(int, ...); }; // CHECK: define void @_ZN1C1fEv void C::f() { } // CHECK: define void @_Z5test1v void test1() { C c; // CHECK: call void @_ZN1C1fEv c.f(); // CHECK: call void (%struct.C*, i32, ...)* @_ZN1C1gEiz c.g(1, 2, 3); } struct S { inline S() { } inline ~S() { } void f_inline1() { } inline void f_inline2() { } static void g() { } static void f(); virtual void v() {} }; // CHECK: define void @_ZN1S1fEv void S::f() { } void test2() { S s; s.f_inline1(); s.f_inline2(); S::g(); } // S::S() // CHECK: define linkonce_odr void @_ZN1SC1Ev{{.*}} unnamed_addr // S::f_inline1() // CHECK: define linkonce_odr void @_ZN1S9f_inline1Ev // S::f_inline2() // CHECK: define linkonce_odr void @_ZN1S9f_inline2Ev // S::g() // CHECK: define linkonce_odr void @_ZN1S1gEv // S::~S() // CHECK: define linkonce_odr void @_ZN1SD1Ev{{.*}} unnamed_addr struct T { T operator+(const T&); }; // CHECK: define void @_Z5test3v void test3() { T t1, t2; // CHECK: call void @_ZN1TplERKS_ T result = t1 + t2; } // S::~S() // CHECK: define linkonce_odr void @_ZN1SD2Ev{{.*}} unnamed_addr // S::S() // CHECK: define linkonce_odr void @_ZN1SC2Ev{{.*}} unnamed_addr // S::v() // CHECK: define linkonce_odr void @_ZN1S1vEv{{.*}}unnamed_addr