1// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s 2 3@interface NSObject 4+ (id)alloc; 5- (id)init; 6- (id)retain; 7@end 8 9@interface NSString : NSObject 10@end 11 12// CHECK-LABEL: define {{.*}}void @test1() 13void test1(void) { 14 // CHECK: {{call.*@objc_msgSend}} 15 // CHECK: {{call.*@objc_msgSend}} 16 // CHECK: {{call.*@objc_msgSend}} 17 NSString *str1 = [[[NSString alloc] init] retain]; 18} 19 20// CHECK-LABEL: define {{.*}}void @test2() 21void test2(void) { 22 // CHECK: {{call.*@objc_msgSend}} 23 // CHECK: {{call.*@objc_msgSend}} 24 // CHECK: {{call.*@objc_msgSend}} 25 NSString *str1 = NSString.alloc.init.retain; 26} 27 28@interface Test2 : NSString 29- (id)init; 30@end 31 32@implementation Test2 33// CHECK: define internal {{.*}}ptr @"\01-[Test2 init]" 34- (id)init { 35 // CHECK: {{call.*@objc_msgSendSuper}} 36 return [super init]; 37} 38@end 39 40@interface Test3 : NSString 41- (id)init; 42@end 43 44@implementation Test3 45// CHECK: define internal {{.*}}ptr @"\01-[Test3 init]" 46- (id)init { 47 // CHECK: {{call.*@objc_msgSendSuper}} 48 return [super init]; 49} 50@end 51