]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenCXX/member-functions.cpp
Vendor import of clang trunk r238337:
[FreeBSD/FreeBSD.git] / test / CodeGenCXX / member-functions.cpp
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-LABEL: define void @_ZN1C1fEv
9 void C::f() {
10 }
11
12 // CHECK-LABEL: 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-LABEL: 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-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
65 struct T {
66   T operator+(const T&);
67 };
68
69 // CHECK-LABEL: 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 @_ZN1SC2Ev{{.*}} unnamed_addr
79
80 // S::v()
81 // CHECK: define linkonce_odr void @_ZN1S1vEv{{.*}}unnamed_addr
82
83 // S::~S()
84 // CHECK: define linkonce_odr void @_ZN1SD2Ev{{.*}} unnamed_addr