xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenObjC/metadata_symbols.m (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -o %t %s
2f4a2713aSLionel Sambuc// RUN: FileCheck -check-prefix=CHECK-X86_64 < %t %s
3f4a2713aSLionel Sambuc// RUN: FileCheck -check-prefix=CHECK-EHTYPE < %t %s
4f4a2713aSLionel Sambuc
5f4a2713aSLionel Sambuc// We need exactly 3 of these.
6f4a2713aSLionel Sambuc// CHECK-EHTYPE: @"OBJC_EHTYPE_$_EH3"
7f4a2713aSLionel Sambuc// CHECK-EHTYPE: @"OBJC_EHTYPE_$_EH3"
8f4a2713aSLionel Sambuc// CHECK-EHTYPE: @"OBJC_EHTYPE_$_EH3"
9f4a2713aSLionel Sambuc// CHECK-EHTYPE-NOT: @"OBJC_EHTYPE_$_EH3"
10f4a2713aSLionel Sambuc
11f4a2713aSLionel Sambuc// CHECK-X86_64: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
12f4a2713aSLionel Sambuc// CHECK-X86_64: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
13*0a6a1f1dSLionel Sambuc// CHECK-X86_64: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
14f4a2713aSLionel Sambuc// CHECK-X86_64: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 8
15f4a2713aSLionel Sambuc// CHECK-X86_64: @"OBJC_EHTYPE_$_EH2" = external global
16f4a2713aSLionel Sambuc// CHECK-X86_64: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 8
17*0a6a1f1dSLionel Sambuc// CHECK-X86_64: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
18f4a2713aSLionel Sambuc// CHECK-X86_64: define internal void @"\01-[A im0]"
19f4a2713aSLionel Sambuc// CHECK-X86_64: define internal void @"\01-[A(Cat) im1]"
20f4a2713aSLionel Sambuc
21f4a2713aSLionel Sambuc// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-exceptions -fvisibility hidden -emit-llvm -o %t %s
22f4a2713aSLionel Sambuc// RUN: FileCheck -check-prefix=CHECK-X86_64-HIDDEN < %t %s
23f4a2713aSLionel Sambuc
24f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: @"OBJC_CLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
25f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: @"OBJC_METACLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
26f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH1" = weak hidden global {{.*}}, section "__DATA,__datacoal_nt,coalesced"
27f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH2" = external global
28f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH3" = hidden global {{.*}}, section "__DATA,__objc_const", align 8
29f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: define internal void @"\01-[A im0]"
30f4a2713aSLionel Sambuc// CHECK-X86_64-HIDDEN: define internal void @"\01-[A(Cat) im1]"
31f4a2713aSLionel Sambuc
32f4a2713aSLionel Sambuc// RUN: %clang_cc1 -triple armv6-apple-darwin10 -target-abi apcs-gnu -fobjc-exceptions -emit-llvm -o %t %s
33f4a2713aSLionel Sambuc// RUN: FileCheck -check-prefix=CHECK-ARMV6 < %t %s
34f4a2713aSLionel Sambuc
35f4a2713aSLionel Sambuc// CHECK-ARMV6: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 4
36f4a2713aSLionel Sambuc// CHECK-ARMV6: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 4
37*0a6a1f1dSLionel Sambuc// CHECK-ARMV6: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
38f4a2713aSLionel Sambuc// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 4
39f4a2713aSLionel Sambuc// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH2" = external global
40f4a2713aSLionel Sambuc// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 4
41*0a6a1f1dSLionel Sambuc// CHECK-ARMV6: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 4
42f4a2713aSLionel Sambuc// CHECK-ARMV6: define internal void @"\01-[A im0]"
43f4a2713aSLionel Sambuc// CHECK-ARMV6: define internal void @"\01-[A(Cat) im1]"
44f4a2713aSLionel Sambuc
45f4a2713aSLionel Sambuc@interface A
46f4a2713aSLionel Sambuc@end
47f4a2713aSLionel Sambuc
48f4a2713aSLionel Sambuc@implementation A
49f4a2713aSLionel Sambuc-(void) im0 {
50f4a2713aSLionel Sambuc}
51f4a2713aSLionel Sambuc@end
52f4a2713aSLionel Sambuc
53f4a2713aSLionel Sambuc@implementation A (Cat)
54f4a2713aSLionel Sambuc-(void) im1 {
55f4a2713aSLionel Sambuc}
56f4a2713aSLionel Sambuc@end
57f4a2713aSLionel Sambuc
58f4a2713aSLionel Sambuc@interface EH1
59f4a2713aSLionel Sambuc@end
60f4a2713aSLionel Sambuc
61f4a2713aSLionel Sambuc__attribute__((__objc_exception__))
62f4a2713aSLionel Sambuc@interface EH2
63f4a2713aSLionel Sambuc@end
64f4a2713aSLionel Sambuc
65f4a2713aSLionel Sambuc__attribute__((__objc_exception__))
66f4a2713aSLionel Sambuc@interface EH3
67f4a2713aSLionel Sambuc@end
68f4a2713aSLionel Sambuc
69f4a2713aSLionel Sambucvoid f1();
70f4a2713aSLionel Sambuc
71f4a2713aSLionel Sambucvoid f0(id x) {
72f4a2713aSLionel Sambuc  @try {
73f4a2713aSLionel Sambuc    f1();
74f4a2713aSLionel Sambuc  } @catch (EH1 *x) {
75f4a2713aSLionel Sambuc  } @catch (EH2 *x) {
76f4a2713aSLionel Sambuc  } @catch (EH3 *x) {
77f4a2713aSLionel Sambuc  }
78f4a2713aSLionel Sambuc}
79f4a2713aSLionel Sambuc
80f4a2713aSLionel Sambuc@implementation EH3
81f4a2713aSLionel Sambuc@end
82