xref: /llvm-project/llvm/test/DebugInfo/AArch64/asan-stack-vars.mir (revision 3a05e01d1a76984fe1532bd237edbbb7ed9db6ea)
1# RUN: llc -O0 -start-before=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump -v - | FileCheck %s
2#
3# Derived from (clang -O0 -g -fsanitize=address -fobjc-arc)
4#   @protocol NSObject
5#   @end
6#   @interface NSObject<NSObject>{}
7#   + (instancetype)alloc;
8#   @end
9#   struct CGSize {
10#     double width;
11#     double height;
12#   };
13#   typedef struct CGSize CGSize;
14#   @interface Object : NSObject
15#   - (instancetype)initWithSize:(CGSize)size;
16#   - (id)aMessage;
17#   @end
18#   @implementation MyObject
19#   + (id)doWithSize:(CGSize)imageSize andObject:(id)object {
20#     return [object aMessage];
21#   }
22#   @end
23#
24# CHECK: .debug_info contents:
25# CHECK: DW_TAG_subprogram
26# CHECK-NEXT:   DW_AT_low_pc [DW_FORM_addr]     (0x0000000000000000)
27# CHECK-NEXT:   DW_AT_high_pc [DW_FORM_addr]    ([[FN_END:.*]])
28# CHECK: "_cmd"
29# CHECK: DW_TAG_formal_parameter
30# CHECK-NEXT: DW_AT_location
31# CHECK-NEXT:   [0x{{.*}}, 0x{{.*}}):
32# CHECK-NOT:    DW_AT_
33# CHECK:        [0x{{.*}}, [[FN_END]]):
34# CHECK-NEXT: DW_AT_name {{.*}}"imageSize"
35--- |
36  ; ModuleID = 'test/DebugInfo/AArch64/asan-stack-vars.ll'
37  source_filename = "m.m"
38  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
39  target triple = "arm64-apple-ios"
40
41  %0 = type opaque
42  %struct._class_t = type { ptr, ptr, ptr, ptr, ptr }
43  %struct._objc_cache = type opaque
44  %struct._class_ro_t = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
45  %struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] }
46  %struct._objc_method = type { ptr, ptr, ptr }
47  %struct._objc_protocol_list = type { i64, [0 x ptr] }
48  %struct._protocol_t = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, ptr }
49  %struct._ivar_list_t = type { i32, i32, [0 x %struct._ivar_t] }
50  %struct._ivar_t = type { ptr, ptr, ptr, i32, i32 }
51  %struct._prop_list_t = type { i32, i32, [0 x %struct._prop_t] }
52  %struct._prop_t = type { ptr, ptr }
53  %struct.CGSize = type { double, double }
54
55  @"OBJC_CLASS_$_Object" = external global %struct._class_t
56  @"OBJC_CLASSLIST_REFERENCES_$_" = private global ptr @"OBJC_CLASS_$_Object", section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8
57  @OBJC_METH_VAR_NAME_ = private unnamed_addr constant [6 x i8] c"alloc\00", section "__TEXT,__objc_methname,cstring_literals", align 1
58  @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global ptr @OBJC_METH_VAR_NAME_, section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8
59  @OBJC_METH_VAR_NAME_.1 = private unnamed_addr constant [14 x i8] c"initWithSize:\00", section "__TEXT,__objc_methname,cstring_literals", align 1
60  @OBJC_SELECTOR_REFERENCES_.2 = private externally_initialized global ptr @OBJC_METH_VAR_NAME_.1, section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8
61  @OBJC_METH_VAR_NAME_.3 = private unnamed_addr constant [9 x i8] c"aMessage\00", section "__TEXT,__objc_methname,cstring_literals", align 1
62  @OBJC_SELECTOR_REFERENCES_.4 = private externally_initialized global ptr @OBJC_METH_VAR_NAME_.3, section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8
63  @_objc_empty_cache = external global %struct._objc_cache
64  @"OBJC_CLASS_$_MyObject" = global %struct._class_t { ptr @"OBJC_METACLASS_$_MyObject", ptr null, ptr @_objc_empty_cache, ptr null, ptr @"\01l_OBJC_CLASS_RO_$_MyObject" }, section "__DATA, __objc_data", align 8
65  @"OBJC_METACLASS_$_MyObject" = global %struct._class_t { ptr @"OBJC_METACLASS_$_MyObject", ptr @"OBJC_CLASS_$_MyObject", ptr @_objc_empty_cache, ptr null, ptr @"\01l_OBJC_METACLASS_RO_$_MyObject" }, section "__DATA, __objc_data", align 8
66  @OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"MyObject\00", section "__TEXT,__objc_classname,cstring_literals", align 1
67  @OBJC_METH_VAR_NAME_.5 = private unnamed_addr constant [12 x i8] c"doWithSize:\00", section "__TEXT,__objc_methname,cstring_literals", align 1
68  @OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [21 x i8] c"@32@0:8{CGSize=dd}16\00", section "__TEXT,__objc_methtype,cstring_literals", align 1
69  @"\01l_OBJC_$_CLASS_METHODS_MyObject" = private global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { ptr @OBJC_METH_VAR_NAME_.5, ptr @OBJC_METH_VAR_TYPE_, ptr @"\01+[MyObject doWithSize:]" }] }, section "__DATA, __objc_const", align 8
70  @"\01l_OBJC_METACLASS_RO_$_MyObject" = private global %struct._class_ro_t { i32 131, i32 40, i32 40, ptr null, ptr @OBJC_CLASS_NAME_, ptr @"\01l_OBJC_$_CLASS_METHODS_MyObject", ptr null, ptr null, ptr null, ptr null }, section "__DATA, __objc_const", align 8
71  @"\01l_OBJC_CLASS_RO_$_MyObject" = private global %struct._class_ro_t { i32 130, i32 0, i32 0, ptr null, ptr @OBJC_CLASS_NAME_, ptr null, ptr null, ptr null, ptr null, ptr null }, section "__DATA, __objc_const", align 8
72  @"OBJC_LABEL_CLASS_$" = private global [1 x ptr] [ptr @"OBJC_CLASS_$_MyObject"], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
73  @llvm.compiler.used = appending global [12 x ptr] [ptr @"OBJC_CLASSLIST_REFERENCES_$_", ptr @OBJC_METH_VAR_NAME_, ptr @OBJC_SELECTOR_REFERENCES_, ptr @OBJC_METH_VAR_NAME_.1, ptr @OBJC_SELECTOR_REFERENCES_.2, ptr @OBJC_METH_VAR_NAME_.3, ptr @OBJC_SELECTOR_REFERENCES_.4, ptr @OBJC_CLASS_NAME_, ptr @OBJC_METH_VAR_NAME_.5, ptr @OBJC_METH_VAR_TYPE_, ptr @"\01l_OBJC_$_CLASS_METHODS_MyObject", ptr @"OBJC_LABEL_CLASS_$"], section "llvm.metadata"
74  @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @asan.module_ctor, ptr null }]
75  @__asan_shadow_memory_dynamic_address = external global i64
76  @___asan_gen_ = private unnamed_addr constant [34 x i8] c"2 32 16 9 imageSize 64 8 6 object\00", align 1
77  @__stack_chk_guard = external global ptr
78
79  ; Function Attrs: noinline sanitize_address ssp uwtable
80  define internal ptr @"\01+[MyObject doWithSize:]"(ptr %self, ptr %_cmd, [2 x double] %imageSize.coerce) #0 !dbg !14 {
81  entry:
82    %StackGuardSlot = alloca ptr
83    %0 = call ptr @llvm.stackguard()
84    call void @llvm.stackprotector(ptr %0, ptr %StackGuardSlot)
85    %1 = load i64, ptr @__asan_shadow_memory_dynamic_address
86    %self.addr = alloca ptr, align 8
87    %_cmd.addr = alloca ptr, align 8
88    %MyAlloca = alloca [96 x i8], align 32, !dbg !35
89    %2 = ptrtoint ptr %MyAlloca to i64, !dbg !35
90    %3 = add i64 %2, 32, !dbg !35
91    %4 = inttoptr i64 %3 to ptr, !dbg !35
92    %5 = add i64 %2, 64, !dbg !35
93    %6 = inttoptr i64 %5 to ptr, !dbg !35
94    %7 = inttoptr i64 %2 to ptr, !dbg !35
95    store i64 1102416563, ptr %7, !dbg !35
96    %8 = add i64 %2, 8, !dbg !35
97    %9 = inttoptr i64 %8 to ptr, !dbg !35
98    store i64 ptrtoint (ptr @___asan_gen_ to i64), ptr %9, !dbg !35
99    %10 = add i64 %2, 16, !dbg !35
100    %11 = inttoptr i64 %10 to ptr, !dbg !35
101    store i64 ptrtoint (ptr @"\01+[MyObject doWithSize:]" to i64), ptr %11, !dbg !35
102    %12 = lshr i64 %2, 3, !dbg !35
103    %13 = add i64 %12, %1, !dbg !35
104    %14 = add i64 %13, 0, !dbg !35
105    %15 = inttoptr i64 %14 to ptr, !dbg !35
106    store i64 -940689368107847183, ptr %15, align 1, !dbg !35
107    %16 = add i64 %13, 9, !dbg !35
108    %17 = inttoptr i64 %16 to ptr, !dbg !35
109    store i16 -3085, ptr %17, align 1, !dbg !35
110    %18 = add i64 %13, 11, !dbg !35
111    %19 = inttoptr i64 %18 to ptr, !dbg !35
112    store i8 -13, ptr %19, align 1, !dbg !35
113    call void @llvm.dbg.declare(metadata ptr %4, metadata !36, metadata !DIExpression(DW_OP_deref)), !dbg !37
114    call void @llvm.dbg.declare(metadata ptr %6, metadata !38, metadata !DIExpression(DW_OP_deref)), !dbg !44
115    %20 = bitcast ptr %4 to ptr
116    %21 = ptrtoint ptr %20 to i64
117    %22 = lshr i64 %21, 3
118    %23 = add i64 %22, %1
119    %24 = inttoptr i64 %23 to ptr
120    %25 = load i16, ptr %24
121    %26 = icmp ne i16 %25, 0
122    br i1 %26, label %27, label %28
123
124  ; <label>:27:                                     ; preds = %entry
125    call void @__asan_report_store16(i64 %21)
126    call void asm sideeffect "", ""()
127    unreachable
128
129  ; <label>:28:                                     ; preds = %entry
130    store [2 x double] %imageSize.coerce, ptr %20, align 8
131    store ptr %self, ptr %self.addr, align 8
132    call void @llvm.dbg.declare(metadata ptr %self.addr, metadata !45, metadata !DIExpression()), !dbg !47
133    store ptr %_cmd, ptr %_cmd.addr, align 8
134    call void @llvm.dbg.declare(metadata ptr %_cmd.addr, metadata !48, metadata !DIExpression()), !dbg !47
135    %29 = load ptr, ptr @"OBJC_CLASSLIST_REFERENCES_$_", align 8, !dbg !50
136    %lshr1 = lshr i64 ptrtoint (ptr @OBJC_SELECTOR_REFERENCES_ to i64), 3, !dbg !50
137    %30 = add i64 %lshr1, %1, !dbg !50
138    %31 = inttoptr i64 %30 to ptr, !dbg !50
139    %32 = load i8, ptr %31, !dbg !50
140    %33 = icmp ne i8 %32, 0, !dbg !50
141    br i1 %33, label %34, label %35, !dbg !50
142
143  ; <label>:34:                                     ; preds = %28
144    call void @__asan_report_load8(i64 ptrtoint (ptr @OBJC_SELECTOR_REFERENCES_ to i64)), !dbg !50
145    call void asm sideeffect "", ""(), !dbg !50
146    unreachable, !dbg !50
147
148  ; <label>:35:                                     ; preds = %28
149    %36 = load ptr, ptr @OBJC_SELECTOR_REFERENCES_, align 8, !dbg !50, !invariant.load !2
150    %37 = bitcast ptr %29 to ptr, !dbg !50
151    %call = call ptr @objc_msgSend(ptr %37, ptr %36), !dbg !50
152    %38 = bitcast ptr %call to ptr, !dbg !50
153    %lshr2 = lshr i64 ptrtoint (ptr @OBJC_SELECTOR_REFERENCES_.2 to i64), 3, !dbg !51
154    %39 = add i64 %lshr2, %1, !dbg !51
155    %40 = inttoptr i64 %39 to ptr, !dbg !51
156    %41 = load i8, ptr %40, !dbg !51
157    %42 = icmp ne i8 %41, 0, !dbg !51
158    br i1 %42, label %43, label %44, !dbg !51
159
160  ; <label>:43:                                     ; preds = %35
161    call void @__asan_report_load8(i64 ptrtoint (ptr @OBJC_SELECTOR_REFERENCES_.2 to i64)), !dbg !51
162    call void asm sideeffect "", ""(), !dbg !51
163    unreachable, !dbg !51
164
165  ; <label>:44:                                     ; preds = %35
166    %45 = load ptr, ptr @OBJC_SELECTOR_REFERENCES_.2, align 8, !dbg !51, !invariant.load !2
167    %46 = bitcast ptr %38 to ptr, !dbg !51
168    %47 = bitcast ptr %4 to ptr, !dbg !51
169    %48 = ptrtoint ptr %47 to i64, !dbg !51
170    %49 = lshr i64 %48, 3, !dbg !51
171    %50 = add i64 %49, %1, !dbg !51
172    %51 = inttoptr i64 %50 to ptr, !dbg !51
173    %52 = load i16, ptr %51, !dbg !51
174    %53 = icmp ne i16 %52, 0, !dbg !51
175    br i1 %53, label %54, label %55, !dbg !51
176
177  ; <label>:54:                                     ; preds = %44
178    call void @__asan_report_load16(i64 %48), !dbg !51
179    call void asm sideeffect "", ""(), !dbg !51
180    unreachable, !dbg !51
181
182  ; <label>:55:                                     ; preds = %44
183    %56 = load [2 x double], ptr %47, align 8, !dbg !51
184    %call1 = call ptr @objc_msgSend(ptr %46, ptr %45, [2 x double] %56), !dbg !51
185    %57 = bitcast ptr %call1 to ptr, !dbg !51
186    %58 = ptrtoint ptr %6 to i64, !dbg !44
187    %59 = lshr i64 %58, 3, !dbg !44
188    %60 = add i64 %59, %1, !dbg !44
189    %61 = inttoptr i64 %60 to ptr, !dbg !44
190    %62 = load i8, ptr %61, !dbg !44
191    %63 = icmp ne i8 %62, 0, !dbg !44
192    br i1 %63, label %64, label %65, !dbg !44
193
194  ; <label>:64:                                     ; preds = %55
195    call void @__asan_report_store8(i64 %58), !dbg !44
196    call void asm sideeffect "", ""(), !dbg !44
197    unreachable, !dbg !44
198
199  ; <label>:65:                                     ; preds = %55
200    store ptr %57, ptr %6, align 8, !dbg !44
201    %66 = load ptr, ptr %6, align 8, !dbg !52
202    %lshr3 = lshr i64 ptrtoint (ptr @OBJC_SELECTOR_REFERENCES_.4 to i64), 3, !dbg !53
203    %67 = add i64 %lshr3, %1, !dbg !53
204    %68 = inttoptr i64 %67 to ptr, !dbg !53
205    %69 = load i8, ptr %68, !dbg !53
206    %70 = icmp ne i8 %69, 0, !dbg !53
207    br i1 %70, label %71, label %72, !dbg !53
208
209  ; <label>:71:                                     ; preds = %65
210    call void @__asan_report_load8(i64 ptrtoint (ptr @OBJC_SELECTOR_REFERENCES_.4 to i64)), !dbg !53
211    call void asm sideeffect "", ""(), !dbg !53
212    unreachable, !dbg !53
213
214  ; <label>:72:                                     ; preds = %65
215    %73 = load ptr, ptr @OBJC_SELECTOR_REFERENCES_.4, align 8, !dbg !53, !invariant.load !2
216    %74 = bitcast ptr %66 to ptr, !dbg !53
217    %call2 = call ptr @objc_msgSend(ptr %74, ptr %73), !dbg !53
218    call void asm sideeffect "mov\09fp, fp\09\09; marker for objc_retainAutoreleaseReturnValue", ""(), !dbg !53
219    %75 = call ptr @objc_retainAutoreleasedReturnValue(ptr %call2) #3, !dbg !53
220    %76 = bitcast ptr %6 to ptr, !dbg !54
221    call void @objc_storeStrong(ptr %76, ptr null) #3, !dbg !54
222    %77 = tail call ptr @objc_autoreleaseReturnValue(ptr %75) #3, !dbg !54
223    store i64 1172321806, ptr %7, !dbg !54
224    %78 = add i64 %13, 0, !dbg !54
225    %79 = inttoptr i64 %78 to ptr, !dbg !54
226    store i64 0, ptr %79, align 1, !dbg !54
227    %80 = add i64 %13, 9, !dbg !54
228    %81 = inttoptr i64 %80 to ptr, !dbg !54
229    store i16 0, ptr %81, align 1, !dbg !54
230    %82 = add i64 %13, 11, !dbg !54
231    %83 = inttoptr i64 %82 to ptr, !dbg !54
232    store i8 0, ptr %83, align 1, !dbg !54
233    %84 = call ptr @llvm.stackguard()
234    %85 = load volatile ptr, ptr %StackGuardSlot
235    %86 = icmp eq ptr %84, %85
236    br i1 %86, label %SP_return, label %CallStackCheckFailBlk, !prof !55
237
238  SP_return:                                        ; preds = %72
239    ret ptr %77, !dbg !54
240
241  CallStackCheckFailBlk:                            ; preds = %72
242    call void @__stack_chk_fail(), !dbg !47
243    unreachable, !dbg !47
244  }
245
246  ; Function Attrs: nounwind readnone speculatable
247  declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
248
249  ; Function Attrs: nonlazybind
250  declare ptr @objc_msgSend(ptr, ptr, ...) #2
251
252  declare ptr @objc_retainAutoreleasedReturnValue(ptr returned)
253
254  declare void @objc_storeStrong(ptr, ptr)
255
256  declare ptr @objc_autoreleaseReturnValue(ptr returned)
257
258  define internal void @asan.module_ctor() {
259    call void @__asan_init()
260    call void @__asan_version_mismatch_check_v8()
261    ret void
262  }
263
264  declare void @__asan_init()
265
266  declare void @__asan_version_mismatch_check_v8()
267
268  declare void @__asan_report_load8(i64)
269
270  declare void @__asan_report_load16(i64)
271
272  declare void @__asan_report_store8(i64)
273
274  declare void @__asan_report_store16(i64)
275
276  ; Function Attrs: nounwind
277  declare void @llvm.stackprotector(ptr, ptr) #3
278
279  ; Function Attrs: nounwind
280  declare ptr @llvm.stackguard() #3
281
282  declare void @__stack_chk_fail()
283
284  attributes #0 = { noinline sanitize_address ssp uwtable }
285  attributes #1 = { nounwind readnone speculatable }
286  attributes #2 = { nonlazybind }
287  attributes #3 = { nounwind }
288
289  !llvm.dbg.cu = !{!0}
290  !llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11, !12}
291  !llvm.ident = !{!13}
292
293  !0 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !1, producer: "clang version 5.0.0 (trunk 295779) (llvm/trunk 295777)", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, enums: !2, retainedTypes: !3)
294  !1 = !DIFile(filename: "m.m", directory: "/")
295  !2 = !{}
296  !3 = !{!4}
297  !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "MyObject", scope: !1, file: !1, line: 15, flags: DIFlagObjcClassComplete, elements: !2, runtimeLang: DW_LANG_ObjC)
298  !5 = !{i32 1, !"Objective-C Version", i32 2}
299  !6 = !{i32 1, !"Objective-C Image Info Version", i32 0}
300  !7 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"}
301  !8 = !{i32 4, !"Objective-C Garbage Collection", i32 0}
302  !9 = !{i32 1, !"Objective-C Class Properties", i32 64}
303  !10 = !{i32 2, !"Dwarf Version", i32 2}
304  !11 = !{i32 2, !"Debug Info Version", i32 3}
305  !12 = !{i32 7, !"PIC Level", i32 2}
306  !13 = !{!"clang version 5.0.0 (trunk 295779) (llvm/trunk 295777)"}
307  !14 = distinct !DISubprogram(name: "+[MyObject doWithSize:]", scope: !1, file: !1, line: 16, type: !15, isLocal: true, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
308  !15 = !DISubroutineType(types: !16)
309  !16 = !{!17, !24, !26, !29}
310  !17 = !DIDerivedType(tag: DW_TAG_typedef, name: "id", file: !1, baseType: !18)
311  !18 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !19, size: 64)
312  !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_object", file: !1, elements: !20)
313  !20 = !{!21}
314  !21 = !DIDerivedType(tag: DW_TAG_member, name: "isa", scope: !19, file: !1, baseType: !22, size: 64)
315  !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !23, size: 64)
316  !23 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_class", file: !1, flags: DIFlagFwdDecl)
317  !24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25, flags: DIFlagArtificial | DIFlagObjectPointer)
318  !25 = !DIDerivedType(tag: DW_TAG_typedef, name: "Class", file: !1, baseType: !22)
319  !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", file: !1, baseType: !27, flags: DIFlagArtificial)
320  !27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64)
321  !28 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_selector", file: !1, flags: DIFlagFwdDecl)
322  !29 = !DIDerivedType(tag: DW_TAG_typedef, name: "CGSize", file: !1, line: 10, baseType: !30)
323  !30 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "CGSize", file: !1, line: 6, size: 128, elements: !31)
324  !31 = !{!32, !34}
325  !32 = !DIDerivedType(tag: DW_TAG_member, name: "width", scope: !30, file: !1, line: 7, baseType: !33, size: 64)
326  !33 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
327  !34 = !DIDerivedType(tag: DW_TAG_member, name: "height", scope: !30, file: !1, line: 8, baseType: !33, size: 64, offset: 64)
328  !35 = !DILocation(line: 16, scope: !14)
329  !36 = !DILocalVariable(name: "imageSize", arg: 3, scope: !14, file: !1, line: 16, type: !29)
330  !37 = !DILocation(line: 16, column: 26, scope: !14)
331  !38 = !DILocalVariable(name: "object", scope: !14, file: !1, line: 17, type: !39)
332  !39 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64)
333  !40 = !DICompositeType(tag: DW_TAG_structure_type, name: "Object", scope: !1, file: !1, line: 11, elements: !41, runtimeLang: DW_LANG_ObjC)
334  !41 = !{!42}
335  !42 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !40, baseType: !43)
336  !43 = !DICompositeType(tag: DW_TAG_structure_type, name: "NSObject", scope: !1, file: !1, line: 3, elements: !2, runtimeLang: DW_LANG_ObjC)
337  !44 = !DILocation(line: 17, column: 11, scope: !14)
338  !45 = !DILocalVariable(name: "self", arg: 1, scope: !14, type: !46, flags: DIFlagArtificial | DIFlagObjectPointer)
339  !46 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25)
340  !47 = !DILocation(line: 0, scope: !14)
341  !48 = !DILocalVariable(name: "_cmd", arg: 2, scope: !14, type: !49, flags: DIFlagArtificial)
342  !49 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", file: !1, baseType: !27)
343  !50 = !DILocation(line: 17, column: 21, scope: !14)
344  !51 = !DILocation(line: 17, column: 20, scope: !14)
345  !52 = !DILocation(line: 18, column: 11, scope: !14)
346  !53 = !DILocation(line: 18, column: 10, scope: !14)
347  !54 = !DILocation(line: 19, column: 1, scope: !14)
348  !55 = !{!"branch_weights", i32 2147481600, i32 2048}
349
350...
351---
352name:            "\x01+[MyObject doWithSize:]"
353alignment:       4
354tracksRegLiveness: true
355liveins:
356  - { reg: '$x0' }
357  - { reg: '$x1' }
358  - { reg: '$d0' }
359  - { reg: '$d1' }
360frameInfo:
361  stackSize:       352
362  maxAlignment:    32
363  adjustsStack:    true
364  hasCalls:        true
365  stackProtector:  '%stack.0.StackGuardSlot'
366  maxCallFrameSize: 0
367  localFrameSize:  144
368stack:
369  - { id: 0, name: StackGuardSlot, offset: -40, size: 8, alignment: 8,
370      stack-id: default, local-offset: -8 }
371  - { id: 1, name: self.addr, offset: -168, size: 8, alignment: 8, stack-id: default,
372      local-offset: -136, debug-info-variable: '!45', debug-info-expression: '!DIExpression()',
373      debug-info-location: '!47' }
374  - { id: 2, name: _cmd.addr, offset: -176, size: 8, alignment: 8, stack-id: default,
375      local-offset: -144, debug-info-variable: '!48', debug-info-expression: '!DIExpression()',
376      debug-info-location: '!47' }
377  - { id: 3, name: MyAlloca, offset: -160, size: 96, alignment: 32, stack-id: default,
378      local-offset: -128 }
379  - { id: 4, type: spill-slot, offset: -184, size: 8, alignment: 8, stack-id: default }
380  - { id: 5, type: spill-slot, offset: -192, size: 8, alignment: 8, stack-id: default }
381  - { id: 6, type: spill-slot, offset: -200, size: 8, alignment: 8, stack-id: default }
382  - { id: 7, type: spill-slot, offset: -208, size: 8, alignment: 8, stack-id: default }
383  - { id: 8, type: spill-slot, offset: -216, size: 8, alignment: 8, stack-id: default }
384  - { id: 9, type: spill-slot, offset: -224, size: 8, alignment: 8, stack-id: default }
385  - { id: 10, type: spill-slot, offset: -232, size: 8, alignment: 8, stack-id: default }
386  - { id: 11, type: spill-slot, offset: -240, size: 8, alignment: 8, stack-id: default }
387  - { id: 12, type: spill-slot, offset: -248, size: 8, alignment: 8, stack-id: default }
388  - { id: 13, type: spill-slot, offset: -256, size: 8, alignment: 8, stack-id: default }
389  - { id: 14, type: spill-slot, offset: -264, size: 8, alignment: 8, stack-id: default }
390  - { id: 15, type: spill-slot, offset: -272, size: 8, alignment: 8, stack-id: default }
391  - { id: 16, type: spill-slot, offset: -280, size: 8, alignment: 8, stack-id: default }
392  - { id: 17, type: spill-slot, offset: -288, size: 8, alignment: 8, stack-id: default }
393  - { id: 18, type: spill-slot, offset: -296, size: 8, alignment: 8, stack-id: default }
394  - { id: 19, type: spill-slot, offset: -304, size: 8, alignment: 8, stack-id: default }
395  - { id: 20, type: spill-slot, offset: -312, size: 8, alignment: 8, stack-id: default }
396  - { id: 21, type: spill-slot, offset: -320, size: 8, alignment: 8, stack-id: default }
397  - { id: 22, type: spill-slot, offset: -328, size: 8, alignment: 8, stack-id: default }
398  - { id: 23, type: spill-slot, offset: -336, size: 8, alignment: 8, stack-id: default }
399  - { id: 24, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
400      callee-saved-register: '$lr' }
401  - { id: 25, type: spill-slot, offset: -16, size: 8, alignment: 8, stack-id: default,
402      callee-saved-register: '$fp' }
403  - { id: 26, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default,
404      callee-saved-register: '$x27' }
405  - { id: 27, type: spill-slot, offset: -32, size: 8, alignment: 8, stack-id: default,
406      callee-saved-register: '$x28' }
407body:             |
408  bb.0.entry:
409    liveins: $x0, $x1, $d0, $d1, $x27, $x28, $lr
410
411    early-clobber $sp = frame-setup STPXpre killed $x28, killed $x27, $sp, -4 :: (store (s64) into %stack.27), (store (s64) into %stack.26)
412    frame-setup STPXi killed $fp, killed $lr, $sp, 2 :: (store (s64) into %stack.25), (store (s64) into %stack.24)
413    $fp = frame-setup ADDXri $sp, 16, 0
414    $x9 = frame-setup SUBXri $sp, 320, 0
415    $sp = ANDXri killed $x9, 7930
416    frame-setup CFI_INSTRUCTION def_cfa $w29, 16
417    frame-setup CFI_INSTRUCTION offset $w30, -8
418    frame-setup CFI_INSTRUCTION offset $w29, -16
419    frame-setup CFI_INSTRUCTION offset $w27, -24
420    frame-setup CFI_INSTRUCTION offset $w28, -32
421    renamable $x8 = ADRP target-flags(aarch64-page) @"\01+[MyObject doWithSize:]"
422    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @"\01+[MyObject doWithSize:]", 0
423    renamable $x9 = ADRP target-flags(aarch64-page) @___asan_gen_
424    renamable $x9 = ADDXri killed renamable $x9, target-flags(aarch64-pageoff, aarch64-nc) @___asan_gen_, 0
425    $x10 = ADDXri $sp, 192, 0
426    renamable $x11 = ADRP target-flags(aarch64-page, aarch64-got) @__asan_shadow_memory_dynamic_address
427    renamable $x11 = LDRXui killed renamable $x11, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__asan_shadow_memory_dynamic_address
428    $x12 = ADRP target-flags(aarch64-page, aarch64-got) @__stack_chk_guard
429    $x12 = LDRXui $x12, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__stack_chk_guard
430    $x12 = LDRXui killed $x12, 0 :: (dereferenceable invariant load (s64) from @__stack_chk_guard)
431    $x13 = ADRP target-flags(aarch64-page, aarch64-got) @__stack_chk_guard
432    $x13 = LDRXui $x13, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__stack_chk_guard
433    $x13 = LDRXui killed $x13, 0 :: (dereferenceable invariant load (s64) from @__stack_chk_guard)
434    STRXui killed renamable $x13, $sp, 39 :: (volatile store (s64) into %stack.0.StackGuardSlot)
435    renamable $x11 = LDRXui killed renamable $x11, 0 :: (load (s64) from @__asan_shadow_memory_dynamic_address)
436    renamable $x13 = ADDXri renamable $x10, 32, 0, debug-location !35
437    renamable $x14 = ADDXri renamable $x10, 64, 0, debug-location !35
438    $x15 = MOVZXi 35507, 0, debug-location !35
439    $x15 = MOVKXi $x15, 16821, 16, debug-location !35
440    STRXui killed renamable $x15, $sp, 24, debug-location !35 :: (store (s768) into %stack.3.MyAlloca, basealign 32)
441    STRXui killed renamable $x9, $sp, 25, debug-location !35 :: (store (s768) into %stack.3.MyAlloca + 1, basealign 32)
442    STRXui killed renamable $x8, $sp, 26, debug-location !35 :: (store (s768) into %stack.3.MyAlloca + 2, basealign 32)
443    renamable $x8 = UBFMXri renamable $x10, 3, 63, debug-location !35
444    renamable $x9 = ADDXrs renamable $x11, renamable $x10, 67, debug-location !35
445    $x15 = MOVZXi 61937, 0, debug-location !35
446    $x15 = MOVKXi $x15, 61937, 16, debug-location !35
447    $x15 = MOVKXi $x15, 62194, 48, debug-location !35
448    STRXroX killed renamable $x15, renamable $x8, renamable $x11, 0, 0, debug-location !35 :: (store (s64) into %ir.15, align 1)
449    renamable $x15 = ADDXrs renamable $x8, renamable $x11, 0, debug-location !35
450    $w16 = MOVZWi 62451, 0, debug-location !35
451    STURHHi killed renamable $w16, killed renamable $x15, 9, debug-location !35 :: (store (s16) into %ir.17, align 1)
452    renamable $x8 = ADDXrs killed renamable $x8, renamable $x11, 0, debug-location !35
453    $w16 = MOVZWi 243, 0, debug-location !35
454    STRBBui killed renamable $w16, killed renamable $x8, 11, debug-location !35 :: (store (s8) into %ir.19)
455    DBG_VALUE renamable $x13, 0, !36, !DIExpression(DW_OP_deref), debug-location !37
456    DBG_VALUE renamable $x14, 0, !38, !DIExpression(DW_OP_deref), debug-location !44
457    $x8 = ORRXrs $xzr, $x13, 0
458    renamable $x15 = UBFMXri renamable $x8, 3, 63
459    renamable $w16 = LDRHHroX killed renamable $x15, renamable $x11, 0, 0 :: (load (s16) from %ir.24)
460    renamable $w16 = UBFMWri killed renamable $w16, 0, 15
461    STRXui killed $x1, $sp, 21 :: (store (s64) into %stack.4)
462    STRDui killed $d1, $sp, 20 :: (store (s64) into %stack.5)
463    STRDui killed $d0, $sp, 19 :: (store (s64) into %stack.6)
464    STRXui killed $x0, $sp, 18 :: (store (s64) into %stack.7)
465    STRXui killed $x13, $sp, 17 :: (store (s64) into %stack.8)
466    DBG_VALUE $sp, 0, !36, !DIExpression(DW_OP_plus_uconst, 136, DW_OP_deref, DW_OP_deref), debug-location !37
467    STRXui killed $x14, $sp, 16 :: (store (s64) into %stack.9)
468    DBG_VALUE $sp, 0, !38, !DIExpression(DW_OP_plus_uconst, 128, DW_OP_deref, DW_OP_deref), debug-location !44
469    STRXui killed $x10, $sp, 15 :: (store (s64) into %stack.10)
470    STRXui killed $x12, $sp, 14 :: (store (s64) into %stack.11)
471    STRXui killed $x11, $sp, 13 :: (store (s64) into %stack.12)
472    STRXui killed $x9, $sp, 12 :: (store (s64) into %stack.13)
473    STRXui killed $x8, $sp, 11 :: (store (s64) into %stack.14)
474    CBZW killed renamable $w16, %bb.2
475
476  bb.1 (%ir-block.27):
477    successors:
478
479    $x0 = LDRXui $sp, 11 :: (load (s64) from %stack.14)
480    BL @__asan_report_store16, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp
481    INLINEASM &"", 1
482    BRK 1
483
484  bb.2 (%ir-block.28):
485    renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_
486    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_, 0
487    renamable $x9 = ORRXri $xzr, 4097
488    renamable $x8 = LSRVXr killed renamable $x8, killed renamable $x9
489    renamable $x9 = ADRP target-flags(aarch64-page) @"OBJC_CLASSLIST_REFERENCES_$_"
490    renamable $x9 = ADDXri killed renamable $x9, target-flags(aarch64-pageoff, aarch64-nc) @"OBJC_CLASSLIST_REFERENCES_$_", 0
491    $d0 = LDRDui $sp, 19 :: (load (s64) from %stack.6)
492    $x10 = LDRXui $sp, 11 :: (load (s64) from %stack.14)
493    STRDui killed renamable $d0, renamable $x10, 0 :: (store (s64) into %ir.20)
494    $d1 = LDRDui $sp, 20 :: (load (s64) from %stack.5)
495    STRDui killed renamable $d1, killed renamable $x10, 1 :: (store (s64) into %ir.20 + 8)
496    $x11 = LDRXui $sp, 18 :: (load (s64) from %stack.7)
497    STRXui killed renamable $x11, $sp, 23 :: (store (s64) into %stack.1.self.addr)
498    $x12 = LDRXui $sp, 21 :: (load (s64) from %stack.4)
499    STRXui killed renamable $x12, $sp, 22 :: (store (s64) into %stack.2._cmd.addr)
500    renamable $x9 = LDRXui killed renamable $x9, 0, debug-location !50 :: (load (s64) from @"OBJC_CLASSLIST_REFERENCES_$_")
501    $x13 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
502    renamable $w14 = LDRBBroX killed renamable $x8, killed renamable $x13, 0, 0, debug-location !50 :: (load (s8) from %ir.31)
503    renamable $w14 = UBFMWri killed renamable $w14, 0, 7, debug-location !50
504    STRXui killed $x9, $sp, 10 :: (store (s64) into %stack.15)
505    CBZW killed renamable $w14, %bb.4, debug-location !50
506
507  bb.3 (%ir-block.34):
508    successors:
509
510    $x0 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_, debug-location !50
511    renamable $x0 = ADDXri $x0, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_, 0, debug-location !50
512    BL @__asan_report_load8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !50
513    INLINEASM &"", 1, debug-location !50
514    BRK 1, debug-location !50
515
516  bb.4 (%ir-block.35):
517    renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_
518    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_, 0
519    renamable $x1 = LDRXui killed renamable $x8, 0, debug-location !50 :: (invariant load (s64) from @OBJC_SELECTOR_REFERENCES_)
520    $x8 = LDRXui $sp, 10 :: (load (s64) from %stack.15)
521    $x0 = ORRXrs $xzr, killed $x8, 0, debug-location !50
522    BL @objc_msgSend, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, implicit-def $x0, debug-location !50
523    renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.2
524    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.2, 0
525    renamable $x1 = ORRXri $xzr, 4097
526    renamable $x8 = LSRVXr killed renamable $x8, killed renamable $x1
527    $x1 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
528    renamable $w9 = LDRBBroX killed renamable $x8, killed renamable $x1, 0, 0, debug-location !51 :: (load (s8) from %ir.40)
529    renamable $w9 = UBFMWri killed renamable $w9, 0, 7, debug-location !51
530    STRXui killed $x0, $sp, 9 :: (store (s64) into %stack.16)
531    CBZW killed renamable $w9, %bb.6, debug-location !51
532
533  bb.5 (%ir-block.43):
534    successors:
535
536    $x0 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.2, debug-location !51
537    renamable $x0 = ADDXri $x0, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.2, 0, debug-location !51
538    BL @__asan_report_load8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !51
539    INLINEASM &"", 1, debug-location !51
540    BRK 1, debug-location !51
541
542  bb.6 (%ir-block.44):
543    renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.2
544    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.2, 0
545    renamable $x1 = LDRXui killed renamable $x8, 0, debug-location !51 :: (invariant load (s64) from @OBJC_SELECTOR_REFERENCES_.2)
546    $x8 = LDRXui $sp, 9 :: (load (s64) from %stack.16)
547    $x9 = LDRXui $sp, 17 :: (load (s64) from %stack.8)
548    renamable $x10 = UBFMXri renamable $x9, 3, 63, debug-location !51
549    $x11 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
550    renamable $w12 = LDRHHroX killed renamable $x10, killed renamable $x11, 0, 0, debug-location !51 :: (load (s16) from %ir.51)
551    renamable $w12 = UBFMWri killed renamable $w12, 0, 15, debug-location !51
552    STRXui killed $x1, $sp, 8 :: (store (s64) into %stack.17)
553    STRXui killed $x8, $sp, 7 :: (store (s64) into %stack.18)
554    STRXui killed $x9, $sp, 6 :: (store (s64) into %stack.19)
555    CBZW killed renamable $w12, %bb.8, debug-location !51
556
557  bb.7 (%ir-block.54):
558    successors:
559
560    $x0 = LDRXui $sp, 6 :: (load (s64) from %stack.19)
561    BL @__asan_report_load16, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !51
562    INLINEASM &"", 1, debug-location !51
563    BRK 1, debug-location !51
564
565  bb.8 (%ir-block.55):
566    $x8 = LDRXui $sp, 6 :: (load (s64) from %stack.19)
567    renamable $d1 = LDRDui renamable $x8, 1, debug-location !51 :: (load (s64) from %ir.47 + 8)
568    renamable $d0 = LDRDui killed renamable $x8, 0, debug-location !51 :: (load (s64) from %ir.47)
569    $x0 = LDRXui $sp, 7 :: (load (s64) from %stack.18)
570    $x1 = LDRXui $sp, 8 :: (load (s64) from %stack.17)
571    BL @objc_msgSend, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, implicit killed $d0, implicit killed $d1, implicit-def $sp, implicit-def $x0, debug-location !51
572    $x8 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
573    renamable $x1 = UBFMXri killed renamable $x8, 3, 63, debug-location !44
574    $lr = LDRXui $sp, 13 :: (load (s64) from %stack.12)
575    renamable $w9 = LDRBBroX killed renamable $x1, killed renamable $lr, 0, 0, debug-location !44 :: (load (s8) from %ir.61)
576    renamable $w9 = UBFMWri killed renamable $w9, 0, 7, debug-location !44
577    STRXui killed $x0, $sp, 5 :: (store (s64) into %stack.20)
578    CBZW killed renamable $w9, %bb.10, debug-location !44
579
580  bb.9 (%ir-block.64):
581    successors:
582
583    $x0 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
584    BL @__asan_report_store8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !44
585    INLINEASM &"", 1, debug-location !44
586    BRK 1, debug-location !44
587
588  bb.10 (%ir-block.65):
589    renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.4
590    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.4, 0
591    renamable $x9 = ORRXri $xzr, 4097
592    renamable $x8 = LSRVXr killed renamable $x8, killed renamable $x9
593    $x9 = LDRXui $sp, 5 :: (load (s64) from %stack.20)
594    $x10 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
595    STRXui killed renamable $x9, renamable $x10, 0, debug-location !44 :: (store (s64) into %ir.6)
596    renamable $x11 = LDRXui killed renamable $x10, 0, debug-location !52 :: (load (s64) from %ir.6)
597    $x12 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
598    renamable $w13 = LDRBBroX killed renamable $x8, killed renamable $x12, 0, 0, debug-location !53 :: (load (s8) from %ir.68)
599    renamable $w13 = UBFMWri killed renamable $w13, 0, 7, debug-location !53
600    STRXui killed $x11, $sp, 4 :: (store (s64) into %stack.21)
601    CBZW killed renamable $w13, %bb.12, debug-location !53
602
603  bb.11 (%ir-block.71):
604    successors:
605
606    $x0 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.4, debug-location !53
607    renamable $x0 = ADDXri $x0, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.4, 0, debug-location !53
608    BL @__asan_report_load8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !53
609    INLINEASM &"", 1, debug-location !53
610    BRK 1, debug-location !53
611
612  bb.12 (%ir-block.72):
613    renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.4
614    renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.4, 0
615    renamable $x1 = LDRXui killed renamable $x8, 0, debug-location !53 :: (invariant load (s64) from @OBJC_SELECTOR_REFERENCES_.4)
616    $x8 = LDRXui $sp, 4 :: (load (s64) from %stack.21)
617    $x0 = ORRXrs $xzr, killed $x8, 0, debug-location !53
618    BL @objc_msgSend, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, implicit-def $x0, debug-location !53
619    INLINEASM &"mov\09fp, fp\09\09; marker for objc_retainAutoreleaseReturnValue", 1, debug-location !53
620    BL @objc_retainAutoreleasedReturnValue, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $x0, debug-location !53
621    $x8 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
622    STRXui killed $x0, $sp, 3 :: (store (s64) into %stack.22)
623    $x0 = ORRXrs $xzr, killed $x8, 0, debug-location !54
624    $x8 = ORRXrs $xzr, killed $xzr, 0, debug-location !54
625    $x1 = ORRXrs $xzr, killed $x8, 0, debug-location !54
626    BL @objc_storeStrong, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, debug-location !54
627    $x0 = LDRXui $sp, 3 :: (load (s64) from %stack.22)
628    BL @objc_autoreleaseReturnValue, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $x0, debug-location !54
629    $x8 = MOVZXi 13838, 0, debug-location !54
630    $x8 = MOVKXi $x8, 17888, 16, debug-location !54
631    $x1 = LDRXui $sp, 15 :: (load (s64) from %stack.10)
632    STRXui killed renamable $x8, killed renamable $x1, 0, debug-location !54 :: (store (s64) into %ir.7)
633    $x8 = LDRXui $sp, 12 :: (load (s64) from %stack.13)
634    STRXui $xzr, renamable $x8, 0, debug-location !54 :: (store (s64) into %ir.79, align 1)
635    STURHHi $wzr, renamable $x8, 9, debug-location !54 :: (store (s16) into %ir.81, align 1)
636    STRBBui $wzr, killed renamable $x8, 11, debug-location !54 :: (store (s8) into %ir.83)
637    $lr = ADRP target-flags(aarch64-page, aarch64-got) @__stack_chk_guard
638    $lr = LDRXui $lr, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__stack_chk_guard
639    $lr = LDRXui killed $lr, 0 :: (dereferenceable invariant load (s64) from @__stack_chk_guard)
640    renamable $x9 = LDRXui $sp, 39 :: (load (s64) from %stack.0.StackGuardSlot)
641    $xzr = SUBSXrs killed renamable $lr, killed renamable $x9, 0, implicit-def $nzcv, implicit-def $nzcv
642    STRXui killed $x0, $sp, 2 :: (store (s64) into %stack.23)
643    Bcc 1, %bb.14, implicit $nzcv
644
645  bb.13.SP_return:
646    $x0 = LDRXui $sp, 2 :: (load (s64) from %stack.23)
647    $sp = frame-destroy SUBXri $fp, 16, 0, debug-location !54
648    $fp, $lr = frame-destroy LDPXi $sp, 2, debug-location !54 :: (load (s64) from %stack.25), (load (s64) from %stack.24)
649    early-clobber $sp, $x28, $x27 = frame-destroy LDPXpost $sp, 4, debug-location !54 :: (load (s64) from %stack.27), (load (s64) from %stack.26)
650    RET undef $lr, implicit killed $x0, debug-location !54
651
652  bb.14.CallStackCheckFailBlk:
653    BL @__stack_chk_fail, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, debug-location !47
654    BRK 1, debug-location !47
655
656...
657---
658name:            asan.module_ctor
659alignment:       4
660tracksRegLiveness: true
661frameInfo:
662  stackSize:       16
663  maxAlignment:    8
664  adjustsStack:    true
665  hasCalls:        true
666  maxCallFrameSize: 0
667stack:
668  - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
669      callee-saved-register: '$lr' }
670  - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 8, stack-id: default,
671      callee-saved-register: '$fp' }
672body:             |
673  bb.0 (%ir-block.0):
674    liveins: $lr
675
676    early-clobber $sp = frame-setup STPXpre killed $fp, killed $lr, $sp, -2 :: (store (s64) into %stack.1), (store (s64) into %stack.0)
677    frame-setup CFI_INSTRUCTION def_cfa_offset 16
678    frame-setup CFI_INSTRUCTION offset $w30, -8
679    frame-setup CFI_INSTRUCTION offset $w29, -16
680    BL @__asan_init, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp
681    BL @__asan_version_mismatch_check_v8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp
682    early-clobber $sp, $fp, $lr = frame-destroy LDPXpost $sp, 2 :: (load (s64) from %stack.1), (load (s64) from %stack.0)
683    RET undef $lr
684
685...
686