1// RUN: %clang -c -o %t %s 2// RUN: %llvm_jitlink -preload libobjc.A.dylib %t 3// 4// REQUIRES: jit-compatible-osx-swift-runtime 5// 6// Test that Objective-C class and instance methods work. 7 8 .section __TEXT,__text,regular,pure_instructions 9 .build_version macos, 12, 0 sdk_version 12, 0 10 .p2align 2 ; -- Begin function +[ZeroGen classZero] 11"+[ZeroGen classZero]": ; @"\01+[ZeroGen classZero]" 12 .cfi_startproc 13; %bb.0: 14 sub sp, sp, #16 ; =16 15 .cfi_def_cfa_offset 16 16 str x0, [sp, #8] 17 str x1, [sp] 18 mov w0, #0 19 add sp, sp, #16 ; =16 20 ret 21 .cfi_endproc 22 ; -- End function 23 .p2align 2 ; -- Begin function -[ZeroGen objZero] 24"-[ZeroGen objZero]": ; @"\01-[ZeroGen objZero]" 25 .cfi_startproc 26; %bb.0: 27 sub sp, sp, #16 ; =16 28 .cfi_def_cfa_offset 16 29 str x0, [sp, #8] 30 str x1, [sp] 31 mov w0, #0 32 add sp, sp, #16 ; =16 33 ret 34 .cfi_endproc 35 ; -- End function 36 .globl _main ; -- Begin function main 37 .p2align 2 38_main: ; @main 39 .cfi_startproc 40; %bb.0: 41 sub sp, sp, #48 ; =48 42 stp x29, x30, [sp, #32] ; 16-byte Folded Spill 43 add x29, sp, #32 ; =32 44 .cfi_def_cfa w29, 16 45 .cfi_offset w30, -8 46 .cfi_offset w29, -16 47 stur wzr, [x29, #-4] 48 adrp x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGE 49 str x8, [sp, #8] ; 8-byte Folded Spill 50 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF] 51 bl _objc_alloc_init 52 ldr x8, [sp, #8] ; 8-byte Folded Reload 53 str x0, [sp, #16] 54 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF] 55 adrp x8, _OBJC_SELECTOR_REFERENCES_@PAGE 56 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_@PAGEOFF] 57 bl _objc_msgSend 58 cbz w0, LBB2_2 59; %bb.1: 60 mov w8, #1 61 stur w8, [x29, #-4] 62 b LBB2_5 63LBB2_2: 64 ldr x0, [sp, #16] 65 adrp x8, _OBJC_SELECTOR_REFERENCES_.2@PAGE 66 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_.2@PAGEOFF] 67 bl _objc_msgSend 68 cbz w0, LBB2_4 69; %bb.3: 70 mov w8, #1 71 stur w8, [x29, #-4] 72 b LBB2_5 73LBB2_4: 74 stur wzr, [x29, #-4] 75LBB2_5: 76 ldur w0, [x29, #-4] 77 ldp x29, x30, [sp, #32] ; 16-byte Folded Reload 78 add sp, sp, #48 ; =48 79 ret 80 .cfi_endproc 81 ; -- End function 82 .section __TEXT,__objc_classname,cstring_literals 83l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_ 84 .asciz "ZeroGen" 85 86 .section __TEXT,__objc_methname,cstring_literals 87l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_ 88 .asciz "classZero" 89 90 .section __TEXT,__objc_methtype,cstring_literals 91l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_ 92 .asciz "i16@0:8" 93 94 .section __DATA,__objc_const 95 .p2align 3 ; @"_OBJC_$_CLASS_METHODS_ZeroGen" 96__OBJC_$_CLASS_METHODS_ZeroGen: 97 .long 24 ; 0x18 98 .long 1 ; 0x1 99 .quad l_OBJC_METH_VAR_NAME_ 100 .quad l_OBJC_METH_VAR_TYPE_ 101 .quad "+[ZeroGen classZero]" 102 103 .p2align 3 ; @"_OBJC_METACLASS_RO_$_ZeroGen" 104__OBJC_METACLASS_RO_$_ZeroGen: 105 .long 1 ; 0x1 106 .long 40 ; 0x28 107 .long 40 ; 0x28 108 .space 4 109 .quad 0 110 .quad l_OBJC_CLASS_NAME_ 111 .quad __OBJC_$_CLASS_METHODS_ZeroGen 112 .quad 0 113 .quad 0 114 .quad 0 115 .quad 0 116 117 .section __DATA,__objc_data 118 .globl _OBJC_METACLASS_$_ZeroGen ; @"OBJC_METACLASS_$_ZeroGen" 119 .p2align 3 120_OBJC_METACLASS_$_ZeroGen: 121 .quad _OBJC_METACLASS_$_NSObject 122 .quad _OBJC_METACLASS_$_NSObject 123 .quad __objc_empty_cache 124 .quad 0 125 .quad __OBJC_METACLASS_RO_$_ZeroGen 126 127 .section __TEXT,__objc_methname,cstring_literals 128l_OBJC_METH_VAR_NAME_.1: ; @OBJC_METH_VAR_NAME_.1 129 .asciz "objZero" 130 131 .section __DATA,__objc_const 132 .p2align 3 ; @"_OBJC_$_INSTANCE_METHODS_ZeroGen" 133__OBJC_$_INSTANCE_METHODS_ZeroGen: 134 .long 24 ; 0x18 135 .long 1 ; 0x1 136 .quad l_OBJC_METH_VAR_NAME_.1 137 .quad l_OBJC_METH_VAR_TYPE_ 138 .quad "-[ZeroGen objZero]" 139 140 .p2align 3 ; @"_OBJC_CLASS_RO_$_ZeroGen" 141__OBJC_CLASS_RO_$_ZeroGen: 142 .long 0 ; 0x0 143 .long 8 ; 0x8 144 .long 8 ; 0x8 145 .space 4 146 .quad 0 147 .quad l_OBJC_CLASS_NAME_ 148 .quad __OBJC_$_INSTANCE_METHODS_ZeroGen 149 .quad 0 150 .quad 0 151 .quad 0 152 .quad 0 153 154 .section __DATA,__objc_data 155 .globl _OBJC_CLASS_$_ZeroGen ; @"OBJC_CLASS_$_ZeroGen" 156 .p2align 3 157_OBJC_CLASS_$_ZeroGen: 158 .quad _OBJC_METACLASS_$_ZeroGen 159 .quad _OBJC_CLASS_$_NSObject 160 .quad __objc_empty_cache 161 .quad 0 162 .quad __OBJC_CLASS_RO_$_ZeroGen 163 164 .section __DATA,__objc_classrefs,regular,no_dead_strip 165 .p2align 3 ; @"OBJC_CLASSLIST_REFERENCES_$_" 166_OBJC_CLASSLIST_REFERENCES_$_: 167 .quad _OBJC_CLASS_$_ZeroGen 168 169 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip 170 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_ 171_OBJC_SELECTOR_REFERENCES_: 172 .quad l_OBJC_METH_VAR_NAME_ 173 174 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_.2 175_OBJC_SELECTOR_REFERENCES_.2: 176 .quad l_OBJC_METH_VAR_NAME_.1 177 178 .section __DATA,__objc_classlist,regular,no_dead_strip 179 .p2align 3 ; @"OBJC_LABEL_CLASS_$" 180l_OBJC_LABEL_CLASS_$: 181 .quad _OBJC_CLASS_$_ZeroGen 182 183 .section __DATA,__objc_imageinfo,regular,no_dead_strip 184L_OBJC_IMAGE_INFO: 185 .long 0 186 .long 64 187 188.subsections_via_symbols 189