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 |
85 | |