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
87 lines
3.8 KiB
Objective-C
87 lines
3.8 KiB
Objective-C
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -Wno-objc-root-class -fexceptions -fobjc-exceptions -o %t %s
|
|
// RUN: FileCheck -check-prefix=CHECK-X86_64 < %t %s
|
|
// RUN: FileCheck -check-prefix=CHECK-EHTYPE < %t %s
|
|
// rdar://16462586
|
|
|
|
// We need exactly 3 of these.
|
|
// CHECK-EHTYPE: @"OBJC_EHTYPE_$_MySecretNamespace.EH3"
|
|
// CHECK-EHTYPE: @"OBJC_EHTYPE_$_MySecretNamespace.EH3"
|
|
// CHECK-EHTYPE: @"OBJC_EHTYPE_$_MySecretNamespace.EH3"
|
|
// CHECK-EHTYPE-NOT: @"OBJC_EHTYPE_$_MySecretNamespace.EH3"
|
|
|
|
// CHECK-X86_64: @"OBJC_CLASS_$_MySecretNamespace.A" ={{.*}} global {{.*}}, section "__DATA, __objc_data", align 8
|
|
// CHECK-X86_64: @"OBJC_METACLASS_$_MySecretNamespace.A" ={{.*}} global {{.*}}, section "__DATA, __objc_data", align 8
|
|
// CHECK-X86_64: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
|
|
// CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak{{.*}} global {{.*}}, align 8
|
|
// CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH2" = external global
|
|
// CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH3" ={{.*}} global {{.*}}, section "__DATA,__objc_const", align 8
|
|
// CHECK-X86_64: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA,__objc_classlist,regular,no_dead_strip", align 8
|
|
// CHECK-X86_64: define internal void @"\01-[A im0]"
|
|
// CHECK-X86_64: define internal void @"\01-[A(Cat) im1]"
|
|
|
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -Wno-objc-root-class -fobjc-exceptions -fvisibility=hidden -emit-llvm -o %t %s
|
|
// RUN: FileCheck -check-prefix=CHECK-X86_64-HIDDEN < %t %s
|
|
|
|
// CHECK-X86_64-HIDDEN: @"OBJC_CLASS_$_MySecretNamespace.A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
|
|
// CHECK-X86_64-HIDDEN: @"OBJC_METACLASS_$_MySecretNamespace.A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
|
|
// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak hidden global
|
|
// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH2" = external global
|
|
// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH3" = hidden global {{.*}}, section "__DATA,__objc_const", align 8
|
|
// CHECK-X86_64-HIDDEN: define internal void @"\01-[A im0]"
|
|
// CHECK-X86_64-HIDDEN: define internal void @"\01-[A(Cat) im1]"
|
|
|
|
// RUN: %clang_cc1 -triple armv6-apple-darwin10 -target-abi apcs-gnu -Wno-objc-root-class -fobjc-exceptions -emit-llvm -o %t %s
|
|
// RUN: FileCheck -check-prefix=CHECK-ARMV6 < %t %s
|
|
|
|
// CHECK-ARMV6: @"OBJC_CLASS_$_MySecretNamespace.A" ={{.*}} global {{.*}}, section "__DATA, __objc_data", align 4
|
|
// CHECK-ARMV6: @"OBJC_METACLASS_$_MySecretNamespace.A" ={{.*}} global {{.*}}, section "__DATA, __objc_data", align 4
|
|
// CHECK-ARMV6: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
|
|
// CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak{{.*}} global {{.*}}, align 4
|
|
// CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH2" = external global
|
|
// CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH3" ={{.*}} global {{.*}}, section "__DATA,__objc_const", align 4
|
|
// CHECK-ARMV6: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA,__objc_classlist,regular,no_dead_strip", align 4
|
|
// CHECK-ARMV6: define internal void @"\01-[A im0]"
|
|
// CHECK-ARMV6: define internal void @"\01-[A(Cat) im1]"
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.A")))
|
|
@interface A
|
|
@end
|
|
|
|
@implementation A
|
|
-(void) im0 {
|
|
}
|
|
@end
|
|
|
|
@implementation A (Cat)
|
|
-(void) im1 {
|
|
}
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.EH1")))
|
|
@interface EH1
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.EH2")))
|
|
__attribute__((__objc_exception__))
|
|
@interface EH2
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.EH3")))
|
|
__attribute__((__objc_exception__))
|
|
@interface EH3
|
|
@end
|
|
|
|
void f1(void);
|
|
|
|
void f0(id x) {
|
|
@try {
|
|
f1();
|
|
} @catch (EH1 *x) {
|
|
} @catch (EH2 *x) {
|
|
} @catch (EH3 *x) {
|
|
}
|
|
}
|
|
|
|
@implementation EH3
|
|
@end
|