1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -o - %s | FileCheck %s |
2 | // rdar://8409336 |
3 | |
4 | struct TFENode { |
5 | void GetURL() const; |
6 | }; |
7 | |
8 | @interface TNodeIconAndNameCell |
9 | - (const TFENode&) node; |
10 | @end |
11 | |
12 | @implementation TNodeIconAndNameCell |
13 | - (const TFENode&) node { |
14 | // CHECK: call dereferenceable({{[0-9]+}}) %struct.TFENode* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend |
15 | // CHECK-NEXT: call void @_ZNK7TFENode6GetURLEv(%struct.TFENode* %{{.*}}) |
16 | self.node.GetURL(); |
17 | } // expected-warning {{control reaches end of non-void function}} |
18 | @end |
19 | |
20 | // rdar://8437240 |
21 | struct X { |
22 | int x; |
23 | }; |
24 | |
25 | void f0(const X &parent); |
26 | @interface A |
27 | - (const X&) target; |
28 | @end |
29 | void f1(A *a) { |
30 | // CHECK: [[PRP:%.*]] = call dereferenceable({{[0-9]+}}) %struct.X* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend |
31 | // CHECK-NEXT:call void @_Z2f0RK1X(%struct.X* dereferenceable({{[0-9]+}}) [[PRP]]) |
32 | f0(a.target); |
33 | |
34 | // CHECK: [[MSG:%.*]] = call dereferenceable({{[0-9]+}}) %struct.X* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend |
35 | // CHECK-NEXT:call void @_Z2f0RK1X(%struct.X* dereferenceable({{[0-9]+}}) [[MSG]]) |
36 | f0([a target]); |
37 | } |
38 | |
39 | @interface Test2 |
40 | @property (readonly) int myProperty; |
41 | - (int) myProperty; |
42 | - (double) myGetter; |
43 | @end |
44 | void test2() { |
45 | Test2 *obj; |
46 | (void) obj.myProperty; |
47 | (void) obj.myGetter; |
48 | static_cast<void>(obj.myProperty); |
49 | static_cast<void>(obj.myGetter); |
50 | void(obj.myProperty); |
51 | void(obj.myGetter); |
52 | } |
53 | // CHECK-LABEL: define void @_Z5test2v() |
54 | // CHECK: call i32 bitcast |
55 | // CHECK: call double bitcast |
56 | // CHECK: call i32 bitcast |
57 | // CHECK: call double bitcast |
58 | // CHECK: call i32 bitcast |
59 | // CHECK: call double bitcast |
60 | |
61 | // PR8751 |
62 | int test3(Test2 *obj) { return obj.myProperty; } |
63 | |