Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin9 -o - %s | FileCheck %s |
2 | |||||
Anders Carlsson | 2b77ba8 | 2009-04-04 20:47:02 +0000 | [diff] [blame] | 3 | struct C { |
4 | void f(); | ||||
Anders Carlsson | e9918d2 | 2009-04-08 20:31:57 +0000 | [diff] [blame] | 5 | void g(int, ...); |
Anders Carlsson | 2b77ba8 | 2009-04-04 20:47:02 +0000 | [diff] [blame] | 6 | }; |
7 | |||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 8 | // CHECK: define void @_ZN1C1fEv |
Anders Carlsson | 2b77ba8 | 2009-04-04 20:47:02 +0000 | [diff] [blame] | 9 | void C::f() { |
10 | } | ||||
11 | |||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 12 | // CHECK: define void @_Z5test1v |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 13 | void test1() { |
Anders Carlsson | 2b77ba8 | 2009-04-04 20:47:02 +0000 | [diff] [blame] | 14 | C c; |
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 15 | |
16 | // CHECK: call void @_ZN1C1fEv | ||||
Anders Carlsson | 2b77ba8 | 2009-04-04 20:47:02 +0000 | [diff] [blame] | 17 | c.f(); |
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 18 | |
19 | // CHECK: call void (%struct.C*, i32, ...)* @_ZN1C1gEiz | ||||
Anders Carlsson | e9918d2 | 2009-04-08 20:31:57 +0000 | [diff] [blame] | 20 | c.g(1, 2, 3); |
21 | } | ||||
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 22 | |
23 | |||||
24 | struct S { | ||||
Chris Lattner | b4880ba | 2009-05-12 21:21:08 +0000 | [diff] [blame] | 25 | inline S() { } |
Chris Lattner | b4880ba | 2009-05-12 21:21:08 +0000 | [diff] [blame] | 26 | inline ~S() { } |
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 27 | |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 28 | void f_inline1() { } |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 29 | inline void f_inline2() { } |
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 30 | |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 31 | static void g() { } |
Anders Carlsson | 167b824 | 2009-05-15 18:35:39 +0000 | [diff] [blame] | 32 | static void f(); |
Richard Smith | ef4d5ce | 2012-09-28 22:46:07 +0000 | [diff] [blame] | 33 | |
Richard Smith | ef4d5ce | 2012-09-28 22:46:07 +0000 | [diff] [blame] | 34 | virtual void v() {} |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 35 | }; |
36 | |||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 37 | // CHECK: define void @_ZN1S1fEv |
Anders Carlsson | 167b824 | 2009-05-15 18:35:39 +0000 | [diff] [blame] | 38 | void S::f() { |
39 | } | ||||
40 | |||||
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 41 | void test2() { |
42 | S s; | ||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 43 | |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 44 | s.f_inline1(); |
45 | s.f_inline2(); | ||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 46 | |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 47 | S::g(); |
Chris Lattner | 0c337ed | 2009-05-12 21:02:27 +0000 | [diff] [blame] | 48 | } |
Anders Carlsson | 0f29463 | 2009-05-27 04:18:27 +0000 | [diff] [blame] | 49 | |
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 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 | |||||
Anders Carlsson | 0f29463 | 2009-05-27 04:18:27 +0000 | [diff] [blame] | 65 | struct T { |
66 | T operator+(const T&); | ||||
67 | }; | ||||
68 | |||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 69 | // CHECK: define void @_Z5test3v |
Anders Carlsson | 0f29463 | 2009-05-27 04:18:27 +0000 | [diff] [blame] | 70 | void test3() { |
71 | T t1, t2; | ||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 72 | |
73 | // CHECK: call void @_ZN1TplERKS_ | ||||
Anders Carlsson | 0f29463 | 2009-05-27 04:18:27 +0000 | [diff] [blame] | 74 | T result = t1 + t2; |
75 | } | ||||
Dmitri Gribenko | 319d8fc | 2013-01-28 21:43:46 +0000 | [diff] [blame] | 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 |