1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s |
2 | // rdar://13598026 |
3 | |
4 | @interface NSObject @end |
5 | |
6 | @class NSString; |
7 | |
8 | int __CFConstantStringClassReference[24]; |
9 | |
10 | @interface Bar : NSObject |
11 | +(void)format:(NSString *)format,...; |
12 | @end |
13 | |
14 | @interface Foo : NSObject |
15 | @end |
16 | |
17 | |
18 | static inline void _inlineFunction() { |
19 | [Bar format:@" "]; |
20 | } |
21 | |
22 | @implementation Foo |
23 | |
24 | |
25 | +(NSString *)someMethod { |
26 | return @""; |
27 | } |
28 | |
29 | -(void)someMethod { |
30 | _inlineFunction(); |
31 | } |
32 | @end |
33 | |
34 | // CHECK: @__CFConstantStringClassReference = common global [24 x i32] zeroinitializer, align 16 |
35 | // CHECK: @_unnamed_cfstring_{{.*}} = private global %struct.__NSConstantString_tag { i32* getelementptr inbounds ([24 x i32], [24 x i32]* @__CFConstantStringClassReference, i32 0, i32 0) |
36 | |
37 | // CHECK-LABEL: define internal void @_inlineFunction() |
38 | // CHECK: [[ZERO:%.*]] = load %struct._class_t*, %struct._class_t** @"OBJC_CLASSLIST_REFERENCES_ |
39 | // CHECK-NEXT: [[ONE:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_ |
40 | // CHECK-NEXT: [[TWO:%.*]] = bitcast %struct._class_t* [[ZERO]] to i8* |
41 | // CHECK-NEXT: call void (i8*, i8*, [[T:%.*]]*, ...) bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, [[T:%.*]]*, ...)*)(i8* [[TWO]], i8* [[ONE]], [[T:%.*]]* bitcast (%struct.__NSConstantString_tag* @_unnamed_cfstring_{{.*}} to [[T:%.*]]*)) |
42 | // CHECK-NEXT: ret void |
43 | |