зеркало из https://github.com/microsoft/clang.git
55 строки
1.1 KiB
Objective-C
55 строки
1.1 KiB
Objective-C
// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
|
|
|
|
@interface NSObject
|
|
+ (id)alloc;
|
|
- (id)init;
|
|
- (id)retain;
|
|
@end
|
|
|
|
@interface NSString : NSObject
|
|
@end
|
|
|
|
// CHECK: define void @test1()
|
|
void test1() {
|
|
// CHECK: {{call.*@objc_msgSend}}
|
|
// CHECK: {{call.*@objc_msgSend}}
|
|
// CHECK: {{call.*@objc_msgSend}}
|
|
// CHECK: bitcast i8*
|
|
NSString *str1 = [[[NSString alloc] init] retain];
|
|
}
|
|
|
|
// CHECK: define void @test2()
|
|
void test2() {
|
|
// CHECK: {{call.*@objc_msgSend}}
|
|
// CHECK: {{call.*@objc_msgSend}}
|
|
// CHECK: {{call.*@objc_msgSend}}
|
|
// CHECK: bitcast i8*
|
|
NSString *str1 = NSString.alloc.init.retain;
|
|
}
|
|
|
|
@interface Test2 : NSString
|
|
- (id)init;
|
|
@end
|
|
|
|
@implementation Test2
|
|
// CHECK: define internal i8* @"\01-[Test2 init]"
|
|
- (id)init {
|
|
// CHECK: {{call.*@objc_msgSendSuper}}
|
|
// CHECK-NEXT: bitcast i8*
|
|
return [super init];
|
|
}
|
|
@end
|
|
|
|
@interface Test3 : NSString
|
|
- (id)init;
|
|
@end
|
|
|
|
@implementation Test3
|
|
// CHECK: define internal i8* @"\01-[Test3 init]"
|
|
- (id)init {
|
|
// CHECK: {{call.*@objc_msgSendSuper}}
|
|
// CHECK-NEXT: bitcast i8*
|
|
return [super init];
|
|
}
|
|
@end
|