brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 31c6e63 Raw
130 lines · plain
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-dispatch-method=mixed -emit-llvm -o - %s | FileCheck %s2 3// CHECK: @_objc_empty_cache = external global4// CHECK: @_objc_empty_vtable = external global5// CHECK: @"OBJC_CLASS_$_A" = global6// CHECK: @"OBJC_METACLASS_$_A" ={{.*}} global {{.*}} section "__DATA, __objc_data", align 87// CHECK: @OBJC_CLASS_NAME_{{[0-9]*}} = private unnamed_addr constant {{.*}} section "__TEXT,__objc_classname,cstring_literals", align 18// CHECK: @OBJC_METH_VAR_NAME_{{[0-9]*}} = private unnamed_addr constant {{.*}} section "__TEXT,__objc_methname,cstring_literals", align 19// CHECK: @OBJC_METH_VAR_TYPE_{{[0-9]*}} = private unnamed_addr constant {{.*}} section "__TEXT,__objc_methtype,cstring_literals", align 110// CHECK: @"_OBJC_$_CLASS_METHODS_A" = internal global {{.*}} section "__DATA, __objc_const", align 811// CHECK: @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_P" = internal global {{.*}} section "__DATA, __objc_const", align 812// CHECK: @"_OBJC_$_PROTOCOL_CLASS_METHODS_P" = internal global {{.*}} section "__DATA, __objc_const", align 813// CHECK: @"_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}}, align 814// CHECK: @"_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA,__objc_protolist,coalesced,no_dead_strip", align 815// CHECK: @"_OBJC_CLASS_PROTOCOLS_$_A" = internal global {{.*}} section "__DATA, __objc_const", align 816// CHECK: @"_OBJC_METACLASS_RO_$_A" = internal global {{.*}} section "__DATA, __objc_const", align 817// CHECK: @"_OBJC_$_INSTANCE_METHODS_A" = internal global {{.*}} section "__DATA, __objc_const", align 818// CHECK: @"OBJC_IVAR_$_A._ivar" ={{.*}} constant {{.*}} section "__DATA, __objc_ivar", align 19// CHECK: @"_OBJC_$_INSTANCE_VARIABLES_A" = internal global {{.*}} section "__DATA, __objc_const", align 820// CHECK: @OBJC_PROP_NAME_ATTR_{{[0-9]*}} = private unnamed_addr constant {{.*}} section "__TEXT,__objc_methname,cstring_literals", align 121// CHECK: @"_OBJC_$_PROP_LIST_A" = internal global {{.*}} section "__DATA, __objc_const", align 822// CHECK: @"_OBJC_CLASS_RO_$_A" = internal global {{.*}} section "__DATA, __objc_const", align 823// CHECK: @"_OBJC_$_CATEGORY_INSTANCE_METHODS_A_$_Cat" = internal global {{.*}} section "__DATA, __objc_const", align 824// CHECK: @"_OBJC_$_CATEGORY_CLASS_METHODS_A_$_Cat" = internal global {{.*}} section "__DATA, __objc_const", align 825// CHECK: @"_OBJC_$_CATEGORY_A_$_Cat" = internal global {{.*}} section "__DATA, __objc_const", align 826// CHECK: @"OBJC_CLASSLIST_SUP_REFS_$_{{[0-9]*}}" = private global {{.*}} section "__DATA,__objc_superrefs,regular,no_dead_strip", align 827// CHECK: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global {{.*}} section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"28// CHECK: @"OBJC_CLASSLIST_SUP_REFS_$_{{[\.0-9]*}}" = private global {{.*}} section "__DATA,__objc_superrefs,regular,no_dead_strip", align 829// CHECK: @"OBJC_CLASS_$_B" = external global30// CHECK: @"OBJC_CLASSLIST_REFERENCES_$_{{[0-9]*}}" = internal global {{.*}} section "__DATA,__objc_classrefs,regular,no_dead_strip", align 831// CHECK: @_objc_msgSend_fixup_alloc = weak hidden global {{.*}} section "__DATA,__objc_msgrefs,coalesced", align 1632// CHECK: @"OBJC_LABEL_CLASS_$" = private global {{.*}} section "__DATA,__objc_classlist,regular,no_dead_strip", align 833// CHECK: @"OBJC_LABEL_CATEGORY_$" = private global {{.*}} section "__DATA,__objc_catlist,regular,no_dead_strip", align 834// CHECK: @objc_msgSend_fpret(35// CHECK: @objc_msgSend_fixup(36 37 38/*39 40Here is a handy command for looking at llvm-gcc's output:41llvm-gcc -m64 -emit-llvm -S -o - metadata-symbols-64.m | \42  grep '=.*global' | \43  sed -e 's#global.*, section#global ... section#' | \44  sort45 46*/47 48@interface B49@end50@interface C51@end52 53@protocol P54+(void) fm0;55-(void) im0;56@end57 58@interface A<P> {59  int _ivar;60}61 62@property (assign) int ivar;63 64+(void) fm0;65-(void) im0;66@end67 68@implementation A69@synthesize ivar = _ivar;70+(void) fm0 {71}72-(void) im0 {73}74@end75 76@implementation A (Cat)77+(void) fm1 {78}79-(void) im1 {80}81@end82 83@interface D : A84@end85 86@implementation D87+(void) fm2 {88  [super fm1];89}90-(void) im2 {91  [super im1];92}93@end94 95// Test for FP dispatch method APIs96@interface Example 97@end98 99float FLOAT;100double DOUBLE;101long double LONGDOUBLE;102id    ID;103 104@implementation Example105 - (double) RET_DOUBLE106   {107        return DOUBLE;108   }109 - (float) RET_FLOAT110   {111        return FLOAT;112   }113 - (long double) RET_LONGDOUBLE114   {115        return LONGDOUBLE;116   }117@end118 119void f0(id x) {120   Example* pe;121   double dd = [pe RET_DOUBLE];122   dd = [pe RET_FLOAT];123   dd = [pe RET_LONGDOUBLE];124 125   [B im0];126   [C im1];127   [D alloc];128}129 130