This reverts commit d618f1c3b12effd0c2bdb7d02108d3551f389d3d. This commit wasn't reviewed ahead of time and significant concerns were raised immediately after it landed. According to our developer policy this warrants immediate revert of the commit. https://llvm.org/docs/DeveloperPolicy.html#patch-reversion-policy Differential Revision: https://reviews.llvm.org/D155509
74 lines
2.4 KiB
Objective-C
74 lines
2.4 KiB
Objective-C
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s \
|
|
// RUN: -fobjc-dispatch-method=legacy | \
|
|
// RUN: FileCheck -check-prefix CHECK-FRAGILE_LEGACY %s
|
|
//
|
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s \
|
|
// RUN: -fobjc-dispatch-method=legacy | \
|
|
// RUN: FileCheck -check-prefix CHECK-NONFRAGILE_LEGACY %s
|
|
//
|
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s \
|
|
// RUN: -fobjc-dispatch-method=non-legacy | \
|
|
// RUN: FileCheck -check-prefix CHECK-NONFRAGILE_NONLEGACY %s
|
|
//
|
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s \
|
|
// RUN: -fobjc-dispatch-method=mixed | \
|
|
// RUN: FileCheck -check-prefix CHECK-NONFRAGILE_MIXED %s
|
|
//
|
|
// <rdar://problem/7866951>
|
|
|
|
// There are basically four ways that we end up doing message dispatch for the
|
|
// NeXT runtime. They are:
|
|
// (1) fragile ABI, legacy dispatch
|
|
// (2) non-fragile ABI, legacy dispatch
|
|
// (2) non-fragile ABI, non-legacy dispatch
|
|
// (2) non-fragile ABI, mixed dispatch
|
|
//
|
|
// Note that fragile ABI and non-fragile ABI legacy dispatch are not the same,
|
|
// they use some different API calls (objc_msgSendSuper vs objc_msgSendSuper2).
|
|
|
|
// CHECK-FRAGILE_LEGACY: ModuleID
|
|
// CHECK-FRAGILE_LEGACY-NOT: declare ptr @objc_msgSendSuper2_fixup(
|
|
// CHECK-FRAGILE_LEGACY-NOT: declare ptr @objc_msgSend_fixup(
|
|
// CHECK-FRAGILE_LEGACY: declare ptr @objc_msgSendSuper(
|
|
// CHECK-FRAGILE_LEGACY: declare ptr @objc_msgSend(
|
|
|
|
// CHECK-NONFRAGILE_LEGACY: ModuleID
|
|
// CHECK-NONFRAGILE_LEGACY-NOT: declare ptr @objc_msgSendSuper2_fixup(
|
|
// CHECK-NONFRAGILE_LEGACY-NOT: declare ptr @objc_msgSend_fixup(
|
|
// CHECK-NONFRAGILE_LEGACY: declare ptr @objc_msgSendSuper2(
|
|
// CHECK-NONFRAGILE_LEGACY: declare ptr @objc_msgSend(
|
|
|
|
// CHECK-NONFRAGILE_NONLEGACY: ModuleID
|
|
// CHECK-NONFRAGILE_NONLEGACY: declare ptr @objc_msgSendSuper2_fixup(
|
|
// CHECK-NONFRAGILE_NONLEGACY: declare ptr @objc_msgSend_fixup(
|
|
|
|
// CHECK-NONFRAGILE_MIXED: declare ptr @objc_msgSendSuper2_fixup(
|
|
// CHECK-NONFRAGILE_MIXED: declare ptr @objc_msgSendSuper2(
|
|
// CHECK-NONFRAGILE_MIXED: declare ptr @objc_msgSend_fixup(
|
|
// CHECK-NONFRAGILE_MIXED: declare ptr @objc_msgSend(
|
|
|
|
@interface NSObject
|
|
+ (id)alloc;
|
|
- (id)init;
|
|
@end
|
|
|
|
@interface I0 : NSObject
|
|
-(void) im0;
|
|
@end
|
|
|
|
@implementation I0
|
|
+(id) alloc {
|
|
return [super alloc];
|
|
}
|
|
-(id) init {
|
|
[super init];
|
|
return self;
|
|
}
|
|
-(void) im0 {}
|
|
@end
|
|
|
|
void f0(I0 *a) {
|
|
[I0 alloc];
|
|
[a im0];
|
|
}
|