blob: c9e76b6f26725a509d5edf72d8c18ad71db027b8 [file] [log] [blame]
Daniel Dunbar94e67c62010-04-25 20:39:19 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -emit-llvm -o %t %s
2// RUN: FileCheck -check-prefix=CHECK-X86_64 < %t %s
Daniel Dunbar4fcfde42009-11-08 01:45:36 +00003// RUN: grep '@"OBJC_EHTYPE_$_EH3"' %t | count 3
Daniel Dunbar6ab187a2009-04-07 05:48:37 +00004
Daniel Dunbar94e67c62010-04-25 20:39:19 +00005// CHECK-X86_64: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
6// CHECK-X86_64: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
7// CHECK-X86_64: @"\01L_OBJC_CLASS_NAME_" = {{.*}}, section "__TEXT,__cstring,cstring_literals", align 1
8// CHECK-X86_64: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 8
9// CHECK-X86_64: @"OBJC_EHTYPE_$_EH2" = external global
10// CHECK-X86_64: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 8
11// CHECK-X86_64: @"\01L_OBJC_LABEL_CLASS_$" = internal global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
12// CHECK-X86_64: define internal void @"\01-[A im0]"
13// CHECK-X86_64: define internal void @"\01-[A(Cat) im1]"
Daniel Dunbar6ab187a2009-04-07 05:48:37 +000014
Daniel Dunbar94e67c62010-04-25 20:39:19 +000015// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -fvisibility hidden -emit-llvm -o %t %s
16// RUN: FileCheck -check-prefix=CHECK-X86_64-HIDDEN < %t %s
17
18// CHECK-X86_64-HIDDEN: @"OBJC_CLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
19// CHECK-X86_64-HIDDEN: @"OBJC_METACLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
20// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH1" = weak hidden global {{.*}}, section "__DATA,__datacoal_nt,coalesced"
21// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH2" = external global
22// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH3" = hidden global {{.*}}, section "__DATA,__objc_const", align 8
23// CHECK-X86_64-HIDDEN: define internal void @"\01-[A im0]"
24// CHECK-X86_64-HIDDEN: define internal void @"\01-[A(Cat) im1]"
Daniel Dunbar6ab187a2009-04-07 05:48:37 +000025
Daniel Dunbar6ab187a2009-04-07 05:48:37 +000026
27@interface A
28@end
29
30@implementation A
31-(void) im0 {
32}
33@end
34
35@implementation A (Cat)
36-(void) im1 {
37}
38@end
39
Daniel Dunbar7e075cb2009-04-07 06:43:45 +000040@interface EH1
41@end
42
43__attribute__((__objc_exception__))
44@interface EH2
Daniel Dunbar6ab187a2009-04-07 05:48:37 +000045@end
46
Daniel Dunbar8158a2f2009-04-08 04:21:03 +000047__attribute__((__objc_exception__))
48@interface EH3
49@end
50
Daniel Dunbar6ab187a2009-04-07 05:48:37 +000051void f1();
52
53void f0(id x) {
54 @try {
55 f1();
Daniel Dunbar7e075cb2009-04-07 06:43:45 +000056 } @catch (EH1 *x) {
57 } @catch (EH2 *x) {
Daniel Dunbar8158a2f2009-04-08 04:21:03 +000058 } @catch (EH3 *x) {
Daniel Dunbar6ab187a2009-04-07 05:48:37 +000059 }
60}
Daniel Dunbar8158a2f2009-04-08 04:21:03 +000061
62@implementation EH3
63@end