Files
clang-p2996/llvm/test/DebugInfo/AArch64/asan-stack-vars.mir
Jay Foad 719bac55df [MIRParser] Diagnose too large align values in MachineMemOperands
When parsing MachineMemOperands, MIRParser treated the "align" keyword
the same as "basealign". Really "basealign" should specify the
alignment of the MachinePointerInfo base value, and "align" should
specify the alignment of that base value plus the offset.

This worked OK when the specified alignment was no larger than the
alignment of the offset, but in cases like this it just caused
confusion:

    STW killed %18, 4, %stack.1.ap2.i.i :: (store (s32) into %stack.1.ap2.i.i + 4, align 8)

MIRPrinter would never have printed this, with an offset of 4 but an
align of 8, so it must have been written by hand. MIRParser would
interpret "align 8" as "basealign 8", but I think it is better to give
an error and force the user to write "basealign 8" if that is what they
really meant.

Differential Revision: https://reviews.llvm.org/D120400

Change-Id: I7eeeefc55c2df3554ba8d89f8809a2f45ada32d8
2022-02-24 15:32:08 +00:00

683 lines
41 KiB
YAML

# RUN: llc -O0 -start-before=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump -v - | FileCheck %s
#
# Derived from (clang -O0 -g -fsanitize=address -fobjc-arc)
# @protocol NSObject
# @end
# @interface NSObject<NSObject>{}
# + (instancetype)alloc;
# @end
# struct CGSize {
# double width;
# double height;
# };
# typedef struct CGSize CGSize;
# @interface Object : NSObject
# - (instancetype)initWithSize:(CGSize)size;
# - (id)aMessage;
# @end
# @implementation MyObject
# + (id)doWithSize:(CGSize)imageSize andObject:(id)object {
# return [object aMessage];
# }
# @end
#
# CHECK: .debug_info contents:
# CHECK: DW_TAG_subprogram
# CHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
# CHECK-NEXT: DW_AT_high_pc [DW_FORM_addr] ([[FN_END:.*]])
# CHECK: "_cmd"
# CHECK: DW_TAG_formal_parameter
# CHECK-NEXT: DW_AT_location
# CHECK-NEXT: [0x{{.*}}, 0x{{.*}}):
# CHECK-NOT: DW_AT_
# CHECK: [0x{{.*}}, [[FN_END]]):
# CHECK-NEXT: DW_AT_name {{.*}}"imageSize"
--- |
; ModuleID = 'test/DebugInfo/AArch64/asan-stack-vars.ll'
source_filename = "m.m"
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-ios"
%0 = type opaque
%struct._class_t = type { %struct._class_t*, %struct._class_t*, %struct._objc_cache*, i8* (i8*, i8*)**, %struct._class_ro_t* }
%struct._objc_cache = type opaque
%struct._class_ro_t = type { i32, i32, i32, i8*, i8*, %struct.__method_list_t*, %struct._objc_protocol_list*, %struct._ivar_list_t*, i8*, %struct._prop_list_t* }
%struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] }
%struct._objc_method = type { i8*, i8*, i8* }
%struct._objc_protocol_list = type { i64, [0 x %struct._protocol_t*] }
%struct._protocol_t = type { i8*, i8*, %struct._objc_protocol_list*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct._prop_list_t*, i32, i32, i8**, i8*, %struct._prop_list_t* }
%struct._ivar_list_t = type { i32, i32, [0 x %struct._ivar_t] }
%struct._ivar_t = type { i32*, i8*, i8*, i32, i32 }
%struct._prop_list_t = type { i32, i32, [0 x %struct._prop_t] }
%struct._prop_t = type { i8*, i8* }
%struct.CGSize = type { double, double }
@"OBJC_CLASS_$_Object" = external global %struct._class_t
@"OBJC_CLASSLIST_REFERENCES_$_" = private global %struct._class_t* @"OBJC_CLASS_$_Object", section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [6 x i8] c"alloc\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@OBJC_SELECTOR_REFERENCES_ = private externally_initialized global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @OBJC_METH_VAR_NAME_, i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8
@OBJC_METH_VAR_NAME_.1 = private unnamed_addr constant [14 x i8] c"initWithSize:\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@OBJC_SELECTOR_REFERENCES_.2 = private externally_initialized global i8* getelementptr inbounds ([14 x i8], [14 x i8]* @OBJC_METH_VAR_NAME_.1, i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8
@OBJC_METH_VAR_NAME_.3 = private unnamed_addr constant [9 x i8] c"aMessage\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@OBJC_SELECTOR_REFERENCES_.4 = private externally_initialized global i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_METH_VAR_NAME_.3, i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8
@_objc_empty_cache = external global %struct._objc_cache
@"OBJC_CLASS_$_MyObject" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_MyObject", %struct._class_t* null, %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** null, %struct._class_ro_t* @"\01l_OBJC_CLASS_RO_$_MyObject" }, section "__DATA, __objc_data", align 8
@"OBJC_METACLASS_$_MyObject" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_MyObject", %struct._class_t* @"OBJC_CLASS_$_MyObject", %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** null, %struct._class_ro_t* @"\01l_OBJC_METACLASS_RO_$_MyObject" }, section "__DATA, __objc_data", align 8
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"MyObject\00", section "__TEXT,__objc_classname,cstring_literals", align 1
@OBJC_METH_VAR_NAME_.5 = private unnamed_addr constant [12 x i8] c"doWithSize:\00", section "__TEXT,__objc_methname,cstring_literals", align 1
@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
@"\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 { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @OBJC_METH_VAR_NAME_.5, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @OBJC_METH_VAR_TYPE_, i32 0, i32 0), i8* bitcast (i8* (i8*, i8*, [2 x double])* @"\01+[MyObject doWithSize:]" to i8*) }] }, section "__DATA, __objc_const", align 8
@"\01l_OBJC_METACLASS_RO_$_MyObject" = private global %struct._class_ro_t { i32 131, i32 40, i32 40, i8* null, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_CLASS_NAME_, i32 0, i32 0), %struct.__method_list_t* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_CLASS_METHODS_MyObject" to %struct.__method_list_t*), %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8
@"\01l_OBJC_CLASS_RO_$_MyObject" = private global %struct._class_ro_t { i32 130, i32 0, i32 0, i8* null, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_CLASS_NAME_, i32 0, i32 0), %struct.__method_list_t* null, %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8
@"OBJC_LABEL_CLASS_$" = private global [1 x i8*] [i8* bitcast (%struct._class_t* @"OBJC_CLASS_$_MyObject" to i8*)], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
@llvm.compiler.used = appending global [12 x i8*] [i8* bitcast (%struct._class_t** @"OBJC_CLASSLIST_REFERENCES_$_" to i8*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @OBJC_METH_VAR_NAME_, i32 0, i32 0), i8* bitcast (i8** @OBJC_SELECTOR_REFERENCES_ to i8*), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @OBJC_METH_VAR_NAME_.1, i32 0, i32 0), i8* bitcast (i8** @OBJC_SELECTOR_REFERENCES_.2 to i8*), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_METH_VAR_NAME_.3, i32 0, i32 0), i8* bitcast (i8** @OBJC_SELECTOR_REFERENCES_.4 to i8*), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_CLASS_NAME_, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @OBJC_METH_VAR_NAME_.5, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @OBJC_METH_VAR_TYPE_, i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_CLASS_METHODS_MyObject" to i8*), i8* bitcast ([1 x i8*]* @"OBJC_LABEL_CLASS_$" to i8*)], section "llvm.metadata"
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_ctor, i8* null }]
@__asan_shadow_memory_dynamic_address = external global i64
@___asan_gen_ = private unnamed_addr constant [34 x i8] c"2 32 16 9 imageSize 64 8 6 object\00", align 1
@__stack_chk_guard = external global i8*
; Function Attrs: noinline sanitize_address ssp uwtable
define internal i8* @"\01+[MyObject doWithSize:]"(i8* %self, i8* %_cmd, [2 x double] %imageSize.coerce) #0 !dbg !14 {
entry:
%StackGuardSlot = alloca i8*
%0 = call i8* @llvm.stackguard()
call void @llvm.stackprotector(i8* %0, i8** %StackGuardSlot)
%1 = load i64, i64* @__asan_shadow_memory_dynamic_address
%self.addr = alloca i8*, align 8
%_cmd.addr = alloca i8*, align 8
%MyAlloca = alloca [96 x i8], align 32, !dbg !35
%2 = ptrtoint [96 x i8]* %MyAlloca to i64, !dbg !35
%3 = add i64 %2, 32, !dbg !35
%4 = inttoptr i64 %3 to %struct.CGSize*, !dbg !35
%5 = add i64 %2, 64, !dbg !35
%6 = inttoptr i64 %5 to %0**, !dbg !35
%7 = inttoptr i64 %2 to i64*, !dbg !35
store i64 1102416563, i64* %7, !dbg !35
%8 = add i64 %2, 8, !dbg !35
%9 = inttoptr i64 %8 to i64*, !dbg !35
store i64 ptrtoint ([34 x i8]* @___asan_gen_ to i64), i64* %9, !dbg !35
%10 = add i64 %2, 16, !dbg !35
%11 = inttoptr i64 %10 to i64*, !dbg !35
store i64 ptrtoint (i8* (i8*, i8*, [2 x double])* @"\01+[MyObject doWithSize:]" to i64), i64* %11, !dbg !35
%12 = lshr i64 %2, 3, !dbg !35
%13 = add i64 %12, %1, !dbg !35
%14 = add i64 %13, 0, !dbg !35
%15 = inttoptr i64 %14 to i64*, !dbg !35
store i64 -940689368107847183, i64* %15, align 1, !dbg !35
%16 = add i64 %13, 9, !dbg !35
%17 = inttoptr i64 %16 to i16*, !dbg !35
store i16 -3085, i16* %17, align 1, !dbg !35
%18 = add i64 %13, 11, !dbg !35
%19 = inttoptr i64 %18 to i8*, !dbg !35
store i8 -13, i8* %19, align 1, !dbg !35
call void @llvm.dbg.declare(metadata %struct.CGSize* %4, metadata !36, metadata !DIExpression(DW_OP_deref)), !dbg !37
call void @llvm.dbg.declare(metadata %0** %6, metadata !38, metadata !DIExpression(DW_OP_deref)), !dbg !44
%20 = bitcast %struct.CGSize* %4 to [2 x double]*
%21 = ptrtoint [2 x double]* %20 to i64
%22 = lshr i64 %21, 3
%23 = add i64 %22, %1
%24 = inttoptr i64 %23 to i16*
%25 = load i16, i16* %24
%26 = icmp ne i16 %25, 0
br i1 %26, label %27, label %28
; <label>:27: ; preds = %entry
call void @__asan_report_store16(i64 %21)
call void asm sideeffect "", ""()
unreachable
; <label>:28: ; preds = %entry
store [2 x double] %imageSize.coerce, [2 x double]* %20, align 8
store i8* %self, i8** %self.addr, align 8
call void @llvm.dbg.declare(metadata i8** %self.addr, metadata !45, metadata !DIExpression()), !dbg !47
store i8* %_cmd, i8** %_cmd.addr, align 8
call void @llvm.dbg.declare(metadata i8** %_cmd.addr, metadata !48, metadata !DIExpression()), !dbg !47
%29 = load %struct._class_t*, %struct._class_t** @"OBJC_CLASSLIST_REFERENCES_$_", align 8, !dbg !50
%30 = add i64 lshr (i64 ptrtoint (i8** @OBJC_SELECTOR_REFERENCES_ to i64), i64 3), %1, !dbg !50
%31 = inttoptr i64 %30 to i8*, !dbg !50
%32 = load i8, i8* %31, !dbg !50
%33 = icmp ne i8 %32, 0, !dbg !50
br i1 %33, label %34, label %35, !dbg !50
; <label>:34: ; preds = %28
call void @__asan_report_load8(i64 ptrtoint (i8** @OBJC_SELECTOR_REFERENCES_ to i64)), !dbg !50
call void asm sideeffect "", ""(), !dbg !50
unreachable, !dbg !50
; <label>:35: ; preds = %28
%36 = load i8*, i8** @OBJC_SELECTOR_REFERENCES_, align 8, !dbg !50, !invariant.load !2
%37 = bitcast %struct._class_t* %29 to i8*, !dbg !50
%call = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* %37, i8* %36), !dbg !50
%38 = bitcast i8* %call to %0*, !dbg !50
%39 = add i64 lshr (i64 ptrtoint (i8** @OBJC_SELECTOR_REFERENCES_.2 to i64), i64 3), %1, !dbg !51
%40 = inttoptr i64 %39 to i8*, !dbg !51
%41 = load i8, i8* %40, !dbg !51
%42 = icmp ne i8 %41, 0, !dbg !51
br i1 %42, label %43, label %44, !dbg !51
; <label>:43: ; preds = %35
call void @__asan_report_load8(i64 ptrtoint (i8** @OBJC_SELECTOR_REFERENCES_.2 to i64)), !dbg !51
call void asm sideeffect "", ""(), !dbg !51
unreachable, !dbg !51
; <label>:44: ; preds = %35
%45 = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.2, align 8, !dbg !51, !invariant.load !2
%46 = bitcast %0* %38 to i8*, !dbg !51
%47 = bitcast %struct.CGSize* %4 to [2 x double]*, !dbg !51
%48 = ptrtoint [2 x double]* %47 to i64, !dbg !51
%49 = lshr i64 %48, 3, !dbg !51
%50 = add i64 %49, %1, !dbg !51
%51 = inttoptr i64 %50 to i16*, !dbg !51
%52 = load i16, i16* %51, !dbg !51
%53 = icmp ne i16 %52, 0, !dbg !51
br i1 %53, label %54, label %55, !dbg !51
; <label>:54: ; preds = %44
call void @__asan_report_load16(i64 %48), !dbg !51
call void asm sideeffect "", ""(), !dbg !51
unreachable, !dbg !51
; <label>:55: ; preds = %44
%56 = load [2 x double], [2 x double]* %47, align 8, !dbg !51
%call1 = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, [2 x double])*)(i8* %46, i8* %45, [2 x double] %56), !dbg !51
%57 = bitcast i8* %call1 to %0*, !dbg !51
%58 = ptrtoint %0** %6 to i64, !dbg !44
%59 = lshr i64 %58, 3, !dbg !44
%60 = add i64 %59, %1, !dbg !44
%61 = inttoptr i64 %60 to i8*, !dbg !44
%62 = load i8, i8* %61, !dbg !44
%63 = icmp ne i8 %62, 0, !dbg !44
br i1 %63, label %64, label %65, !dbg !44
; <label>:64: ; preds = %55
call void @__asan_report_store8(i64 %58), !dbg !44
call void asm sideeffect "", ""(), !dbg !44
unreachable, !dbg !44
; <label>:65: ; preds = %55
store %0* %57, %0** %6, align 8, !dbg !44
%66 = load %0*, %0** %6, align 8, !dbg !52
%67 = add i64 lshr (i64 ptrtoint (i8** @OBJC_SELECTOR_REFERENCES_.4 to i64), i64 3), %1, !dbg !53
%68 = inttoptr i64 %67 to i8*, !dbg !53
%69 = load i8, i8* %68, !dbg !53
%70 = icmp ne i8 %69, 0, !dbg !53
br i1 %70, label %71, label %72, !dbg !53
; <label>:71: ; preds = %65
call void @__asan_report_load8(i64 ptrtoint (i8** @OBJC_SELECTOR_REFERENCES_.4 to i64)), !dbg !53
call void asm sideeffect "", ""(), !dbg !53
unreachable, !dbg !53
; <label>:72: ; preds = %65
%73 = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.4, align 8, !dbg !53, !invariant.load !2
%74 = bitcast %0* %66 to i8*, !dbg !53
%call2 = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* %74, i8* %73), !dbg !53
call void asm sideeffect "mov\09fp, fp\09\09; marker for objc_retainAutoreleaseReturnValue", ""(), !dbg !53
%75 = call i8* @objc_retainAutoreleasedReturnValue(i8* %call2) #3, !dbg !53
%76 = bitcast %0** %6 to i8**, !dbg !54
call void @objc_storeStrong(i8** %76, i8* null) #3, !dbg !54
%77 = tail call i8* @objc_autoreleaseReturnValue(i8* %75) #3, !dbg !54
store i64 1172321806, i64* %7, !dbg !54
%78 = add i64 %13, 0, !dbg !54
%79 = inttoptr i64 %78 to i64*, !dbg !54
store i64 0, i64* %79, align 1, !dbg !54
%80 = add i64 %13, 9, !dbg !54
%81 = inttoptr i64 %80 to i16*, !dbg !54
store i16 0, i16* %81, align 1, !dbg !54
%82 = add i64 %13, 11, !dbg !54
%83 = inttoptr i64 %82 to i8*, !dbg !54
store i8 0, i8* %83, align 1, !dbg !54
%84 = call i8* @llvm.stackguard()
%85 = load volatile i8*, i8** %StackGuardSlot
%86 = icmp eq i8* %84, %85
br i1 %86, label %SP_return, label %CallStackCheckFailBlk, !prof !55
SP_return: ; preds = %72
ret i8* %77, !dbg !54
CallStackCheckFailBlk: ; preds = %72
call void @__stack_chk_fail(), !dbg !47
unreachable, !dbg !47
}
; Function Attrs: nounwind readnone speculatable
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
; Function Attrs: nonlazybind
declare i8* @objc_msgSend(i8*, i8*, ...) #2
declare i8* @objc_retainAutoreleasedReturnValue(i8* returned)
declare void @objc_storeStrong(i8**, i8*)
declare i8* @objc_autoreleaseReturnValue(i8* returned)
define internal void @asan.module_ctor() {
call void @__asan_init()
call void @__asan_version_mismatch_check_v8()
ret void
}
declare void @__asan_init()
declare void @__asan_version_mismatch_check_v8()
declare void @__asan_report_load8(i64)
declare void @__asan_report_load16(i64)
declare void @__asan_report_store8(i64)
declare void @__asan_report_store16(i64)
; Function Attrs: nounwind
declare void @llvm.stackprotector(i8*, i8**) #3
; Function Attrs: nounwind
declare i8* @llvm.stackguard() #3
declare void @__stack_chk_fail()
attributes #0 = { noinline sanitize_address ssp uwtable }
attributes #1 = { nounwind readnone speculatable }
attributes #2 = { nonlazybind }
attributes #3 = { nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11, !12}
!llvm.ident = !{!13}
!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)
!1 = !DIFile(filename: "m.m", directory: "/")
!2 = !{}
!3 = !{!4}
!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "MyObject", scope: !1, file: !1, line: 15, flags: DIFlagObjcClassComplete, elements: !2, runtimeLang: DW_LANG_ObjC)
!5 = !{i32 1, !"Objective-C Version", i32 2}
!6 = !{i32 1, !"Objective-C Image Info Version", i32 0}
!7 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"}
!8 = !{i32 4, !"Objective-C Garbage Collection", i32 0}
!9 = !{i32 1, !"Objective-C Class Properties", i32 64}
!10 = !{i32 2, !"Dwarf Version", i32 2}
!11 = !{i32 2, !"Debug Info Version", i32 3}
!12 = !{i32 7, !"PIC Level", i32 2}
!13 = !{!"clang version 5.0.0 (trunk 295779) (llvm/trunk 295777)"}
!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)
!15 = !DISubroutineType(types: !16)
!16 = !{!17, !24, !26, !29}
!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "id", file: !1, baseType: !18)
!18 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !19, size: 64)
!19 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_object", file: !1, elements: !20)
!20 = !{!21}
!21 = !DIDerivedType(tag: DW_TAG_member, name: "isa", scope: !19, file: !1, baseType: !22, size: 64)
!22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !23, size: 64)
!23 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_class", file: !1, flags: DIFlagFwdDecl)
!24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25, flags: DIFlagArtificial | DIFlagObjectPointer)
!25 = !DIDerivedType(tag: DW_TAG_typedef, name: "Class", file: !1, baseType: !22)
!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", file: !1, baseType: !27, flags: DIFlagArtificial)
!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64)
!28 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_selector", file: !1, flags: DIFlagFwdDecl)
!29 = !DIDerivedType(tag: DW_TAG_typedef, name: "CGSize", file: !1, line: 10, baseType: !30)
!30 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "CGSize", file: !1, line: 6, size: 128, elements: !31)
!31 = !{!32, !34}
!32 = !DIDerivedType(tag: DW_TAG_member, name: "width", scope: !30, file: !1, line: 7, baseType: !33, size: 64)
!33 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
!34 = !DIDerivedType(tag: DW_TAG_member, name: "height", scope: !30, file: !1, line: 8, baseType: !33, size: 64, offset: 64)
!35 = !DILocation(line: 16, scope: !14)
!36 = !DILocalVariable(name: "imageSize", arg: 3, scope: !14, file: !1, line: 16, type: !29)
!37 = !DILocation(line: 16, column: 26, scope: !14)
!38 = !DILocalVariable(name: "object", scope: !14, file: !1, line: 17, type: !39)
!39 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64)
!40 = !DICompositeType(tag: DW_TAG_structure_type, name: "Object", scope: !1, file: !1, line: 11, elements: !41, runtimeLang: DW_LANG_ObjC)
!41 = !{!42}
!42 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !40, baseType: !43)
!43 = !DICompositeType(tag: DW_TAG_structure_type, name: "NSObject", scope: !1, file: !1, line: 3, elements: !2, runtimeLang: DW_LANG_ObjC)
!44 = !DILocation(line: 17, column: 11, scope: !14)
!45 = !DILocalVariable(name: "self", arg: 1, scope: !14, type: !46, flags: DIFlagArtificial | DIFlagObjectPointer)
!46 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25)
!47 = !DILocation(line: 0, scope: !14)
!48 = !DILocalVariable(name: "_cmd", arg: 2, scope: !14, type: !49, flags: DIFlagArtificial)
!49 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", file: !1, baseType: !27)
!50 = !DILocation(line: 17, column: 21, scope: !14)
!51 = !DILocation(line: 17, column: 20, scope: !14)
!52 = !DILocation(line: 18, column: 11, scope: !14)
!53 = !DILocation(line: 18, column: 10, scope: !14)
!54 = !DILocation(line: 19, column: 1, scope: !14)
!55 = !{!"branch_weights", i32 2147481600, i32 2048}
...
---
name: "\x01+[MyObject doWithSize:]"
alignment: 4
tracksRegLiveness: true
liveins:
- { reg: '$x0' }
- { reg: '$x1' }
- { reg: '$d0' }
- { reg: '$d1' }
frameInfo:
stackSize: 352
maxAlignment: 32
adjustsStack: true
hasCalls: true
stackProtector: '%stack.0.StackGuardSlot'
maxCallFrameSize: 0
localFrameSize: 144
stack:
- { id: 0, name: StackGuardSlot, offset: -40, size: 8, alignment: 8,
stack-id: default, local-offset: -8 }
- { id: 1, name: self.addr, offset: -168, size: 8, alignment: 8, stack-id: default,
local-offset: -136, debug-info-variable: '!45', debug-info-expression: '!DIExpression()',
debug-info-location: '!47' }
- { id: 2, name: _cmd.addr, offset: -176, size: 8, alignment: 8, stack-id: default,
local-offset: -144, debug-info-variable: '!48', debug-info-expression: '!DIExpression()',
debug-info-location: '!47' }
- { id: 3, name: MyAlloca, offset: -160, size: 96, alignment: 32, stack-id: default,
local-offset: -128 }
- { id: 4, type: spill-slot, offset: -184, size: 8, alignment: 8, stack-id: default }
- { id: 5, type: spill-slot, offset: -192, size: 8, alignment: 8, stack-id: default }
- { id: 6, type: spill-slot, offset: -200, size: 8, alignment: 8, stack-id: default }
- { id: 7, type: spill-slot, offset: -208, size: 8, alignment: 8, stack-id: default }
- { id: 8, type: spill-slot, offset: -216, size: 8, alignment: 8, stack-id: default }
- { id: 9, type: spill-slot, offset: -224, size: 8, alignment: 8, stack-id: default }
- { id: 10, type: spill-slot, offset: -232, size: 8, alignment: 8, stack-id: default }
- { id: 11, type: spill-slot, offset: -240, size: 8, alignment: 8, stack-id: default }
- { id: 12, type: spill-slot, offset: -248, size: 8, alignment: 8, stack-id: default }
- { id: 13, type: spill-slot, offset: -256, size: 8, alignment: 8, stack-id: default }
- { id: 14, type: spill-slot, offset: -264, size: 8, alignment: 8, stack-id: default }
- { id: 15, type: spill-slot, offset: -272, size: 8, alignment: 8, stack-id: default }
- { id: 16, type: spill-slot, offset: -280, size: 8, alignment: 8, stack-id: default }
- { id: 17, type: spill-slot, offset: -288, size: 8, alignment: 8, stack-id: default }
- { id: 18, type: spill-slot, offset: -296, size: 8, alignment: 8, stack-id: default }
- { id: 19, type: spill-slot, offset: -304, size: 8, alignment: 8, stack-id: default }
- { id: 20, type: spill-slot, offset: -312, size: 8, alignment: 8, stack-id: default }
- { id: 21, type: spill-slot, offset: -320, size: 8, alignment: 8, stack-id: default }
- { id: 22, type: spill-slot, offset: -328, size: 8, alignment: 8, stack-id: default }
- { id: 23, type: spill-slot, offset: -336, size: 8, alignment: 8, stack-id: default }
- { id: 24, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
callee-saved-register: '$lr' }
- { id: 25, type: spill-slot, offset: -16, size: 8, alignment: 8, stack-id: default,
callee-saved-register: '$fp' }
- { id: 26, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default,
callee-saved-register: '$x27' }
- { id: 27, type: spill-slot, offset: -32, size: 8, alignment: 8, stack-id: default,
callee-saved-register: '$x28' }
body: |
bb.0.entry:
liveins: $x0, $x1, $d0, $d1, $x27, $x28, $lr
early-clobber $sp = frame-setup STPXpre killed $x28, killed $x27, $sp, -4 :: (store (s64) into %stack.27), (store (s64) into %stack.26)
frame-setup STPXi killed $fp, killed $lr, $sp, 2 :: (store (s64) into %stack.25), (store (s64) into %stack.24)
$fp = frame-setup ADDXri $sp, 16, 0
$x9 = frame-setup SUBXri $sp, 320, 0
$sp = ANDXri killed $x9, 7930
frame-setup CFI_INSTRUCTION def_cfa $w29, 16
frame-setup CFI_INSTRUCTION offset $w30, -8
frame-setup CFI_INSTRUCTION offset $w29, -16
frame-setup CFI_INSTRUCTION offset $w27, -24
frame-setup CFI_INSTRUCTION offset $w28, -32
renamable $x8 = ADRP target-flags(aarch64-page) @"\01+[MyObject doWithSize:]"
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @"\01+[MyObject doWithSize:]", 0
renamable $x9 = ADRP target-flags(aarch64-page) @___asan_gen_
renamable $x9 = ADDXri killed renamable $x9, target-flags(aarch64-pageoff, aarch64-nc) @___asan_gen_, 0
$x10 = ADDXri $sp, 192, 0
renamable $x11 = ADRP target-flags(aarch64-page, aarch64-got) @__asan_shadow_memory_dynamic_address
renamable $x11 = LDRXui killed renamable $x11, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__asan_shadow_memory_dynamic_address
$x12 = ADRP target-flags(aarch64-page, aarch64-got) @__stack_chk_guard
$x12 = LDRXui $x12, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__stack_chk_guard
$x12 = LDRXui killed $x12, 0 :: (dereferenceable invariant load (s64) from @__stack_chk_guard)
$x13 = ADRP target-flags(aarch64-page, aarch64-got) @__stack_chk_guard
$x13 = LDRXui $x13, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__stack_chk_guard
$x13 = LDRXui killed $x13, 0 :: (dereferenceable invariant load (s64) from @__stack_chk_guard)
STRXui killed renamable $x13, $sp, 39 :: (volatile store (s64) into %stack.0.StackGuardSlot)
renamable $x11 = LDRXui killed renamable $x11, 0 :: (load (s64) from @__asan_shadow_memory_dynamic_address)
renamable $x13 = ADDXri renamable $x10, 32, 0, debug-location !35
renamable $x14 = ADDXri renamable $x10, 64, 0, debug-location !35
$x15 = MOVZXi 35507, 0, debug-location !35
$x15 = MOVKXi $x15, 16821, 16, debug-location !35
STRXui killed renamable $x15, $sp, 24, debug-location !35 :: (store (s768) into %stack.3.MyAlloca, basealign 32)
STRXui killed renamable $x9, $sp, 25, debug-location !35 :: (store (s768) into %stack.3.MyAlloca + 1, basealign 32)
STRXui killed renamable $x8, $sp, 26, debug-location !35 :: (store (s768) into %stack.3.MyAlloca + 2, basealign 32)
renamable $x8 = UBFMXri renamable $x10, 3, 63, debug-location !35
renamable $x9 = ADDXrs renamable $x11, renamable $x10, 67, debug-location !35
$x15 = MOVZXi 61937, 0, debug-location !35
$x15 = MOVKXi $x15, 61937, 16, debug-location !35
$x15 = MOVKXi $x15, 62194, 48, debug-location !35
STRXroX killed renamable $x15, renamable $x8, renamable $x11, 0, 0, debug-location !35 :: (store (s64) into %ir.15, align 1)
renamable $x15 = ADDXrs renamable $x8, renamable $x11, 0, debug-location !35
$w16 = MOVZWi 62451, 0, debug-location !35
STURHHi killed renamable $w16, killed renamable $x15, 9, debug-location !35 :: (store (s16) into %ir.17, align 1)
renamable $x8 = ADDXrs killed renamable $x8, renamable $x11, 0, debug-location !35
$w16 = MOVZWi 243, 0, debug-location !35
STRBBui killed renamable $w16, killed renamable $x8, 11, debug-location !35 :: (store (s8) into %ir.19)
DBG_VALUE renamable $x13, 0, !36, !DIExpression(DW_OP_deref), debug-location !37
DBG_VALUE renamable $x14, 0, !38, !DIExpression(DW_OP_deref), debug-location !44
$x8 = ORRXrs $xzr, $x13, 0
renamable $x15 = UBFMXri renamable $x8, 3, 63
renamable $w16 = LDRHHroX killed renamable $x15, renamable $x11, 0, 0 :: (load (s16) from %ir.24)
renamable $w16 = UBFMWri killed renamable $w16, 0, 15
STRXui killed $x1, $sp, 21 :: (store (s64) into %stack.4)
STRDui killed $d1, $sp, 20 :: (store (s64) into %stack.5)
STRDui killed $d0, $sp, 19 :: (store (s64) into %stack.6)
STRXui killed $x0, $sp, 18 :: (store (s64) into %stack.7)
STRXui killed $x13, $sp, 17 :: (store (s64) into %stack.8)
DBG_VALUE $sp, 0, !36, !DIExpression(DW_OP_plus_uconst, 136, DW_OP_deref, DW_OP_deref), debug-location !37
STRXui killed $x14, $sp, 16 :: (store (s64) into %stack.9)
DBG_VALUE $sp, 0, !38, !DIExpression(DW_OP_plus_uconst, 128, DW_OP_deref, DW_OP_deref), debug-location !44
STRXui killed $x10, $sp, 15 :: (store (s64) into %stack.10)
STRXui killed $x12, $sp, 14 :: (store (s64) into %stack.11)
STRXui killed $x11, $sp, 13 :: (store (s64) into %stack.12)
STRXui killed $x9, $sp, 12 :: (store (s64) into %stack.13)
STRXui killed $x8, $sp, 11 :: (store (s64) into %stack.14)
CBZW killed renamable $w16, %bb.2
bb.1 (%ir-block.27):
successors:
$x0 = LDRXui $sp, 11 :: (load (s64) from %stack.14)
BL @__asan_report_store16, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp
INLINEASM &"", 1
BRK 1
bb.2 (%ir-block.28):
renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_, 0
renamable $x9 = ORRXri $xzr, 4097
renamable $x8 = LSRVXr killed renamable $x8, killed renamable $x9
renamable $x9 = ADRP target-flags(aarch64-page) @"OBJC_CLASSLIST_REFERENCES_$_"
renamable $x9 = ADDXri killed renamable $x9, target-flags(aarch64-pageoff, aarch64-nc) @"OBJC_CLASSLIST_REFERENCES_$_", 0
$d0 = LDRDui $sp, 19 :: (load (s64) from %stack.6)
$x10 = LDRXui $sp, 11 :: (load (s64) from %stack.14)
STRDui killed renamable $d0, renamable $x10, 0 :: (store (s64) into %ir.20)
$d1 = LDRDui $sp, 20 :: (load (s64) from %stack.5)
STRDui killed renamable $d1, killed renamable $x10, 1 :: (store (s64) into %ir.20 + 8)
$x11 = LDRXui $sp, 18 :: (load (s64) from %stack.7)
STRXui killed renamable $x11, $sp, 23 :: (store (s64) into %stack.1.self.addr)
$x12 = LDRXui $sp, 21 :: (load (s64) from %stack.4)
STRXui killed renamable $x12, $sp, 22 :: (store (s64) into %stack.2._cmd.addr)
renamable $x9 = LDRXui killed renamable $x9, 0, debug-location !50 :: (load (s64) from @"OBJC_CLASSLIST_REFERENCES_$_")
$x13 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
renamable $w14 = LDRBBroX killed renamable $x8, killed renamable $x13, 0, 0, debug-location !50 :: (load (s8) from %ir.31)
renamable $w14 = UBFMWri killed renamable $w14, 0, 7, debug-location !50
STRXui killed $x9, $sp, 10 :: (store (s64) into %stack.15)
CBZW killed renamable $w14, %bb.4, debug-location !50
bb.3 (%ir-block.34):
successors:
$x0 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_, debug-location !50
renamable $x0 = ADDXri $x0, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_, 0, debug-location !50
BL @__asan_report_load8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !50
INLINEASM &"", 1, debug-location !50
BRK 1, debug-location !50
bb.4 (%ir-block.35):
renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_, 0
renamable $x1 = LDRXui killed renamable $x8, 0, debug-location !50 :: (invariant load (s64) from @OBJC_SELECTOR_REFERENCES_)
$x8 = LDRXui $sp, 10 :: (load (s64) from %stack.15)
$x0 = ORRXrs $xzr, killed $x8, 0, debug-location !50
BL @objc_msgSend, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, implicit-def $x0, debug-location !50
renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.2
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.2, 0
renamable $x1 = ORRXri $xzr, 4097
renamable $x8 = LSRVXr killed renamable $x8, killed renamable $x1
$x1 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
renamable $w9 = LDRBBroX killed renamable $x8, killed renamable $x1, 0, 0, debug-location !51 :: (load (s8) from %ir.40)
renamable $w9 = UBFMWri killed renamable $w9, 0, 7, debug-location !51
STRXui killed $x0, $sp, 9 :: (store (s64) into %stack.16)
CBZW killed renamable $w9, %bb.6, debug-location !51
bb.5 (%ir-block.43):
successors:
$x0 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.2, debug-location !51
renamable $x0 = ADDXri $x0, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.2, 0, debug-location !51
BL @__asan_report_load8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !51
INLINEASM &"", 1, debug-location !51
BRK 1, debug-location !51
bb.6 (%ir-block.44):
renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.2
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.2, 0
renamable $x1 = LDRXui killed renamable $x8, 0, debug-location !51 :: (invariant load (s64) from @OBJC_SELECTOR_REFERENCES_.2)
$x8 = LDRXui $sp, 9 :: (load (s64) from %stack.16)
$x9 = LDRXui $sp, 17 :: (load (s64) from %stack.8)
renamable $x10 = UBFMXri renamable $x9, 3, 63, debug-location !51
$x11 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
renamable $w12 = LDRHHroX killed renamable $x10, killed renamable $x11, 0, 0, debug-location !51 :: (load (s16) from %ir.51)
renamable $w12 = UBFMWri killed renamable $w12, 0, 15, debug-location !51
STRXui killed $x1, $sp, 8 :: (store (s64) into %stack.17)
STRXui killed $x8, $sp, 7 :: (store (s64) into %stack.18)
STRXui killed $x9, $sp, 6 :: (store (s64) into %stack.19)
CBZW killed renamable $w12, %bb.8, debug-location !51
bb.7 (%ir-block.54):
successors:
$x0 = LDRXui $sp, 6 :: (load (s64) from %stack.19)
BL @__asan_report_load16, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !51
INLINEASM &"", 1, debug-location !51
BRK 1, debug-location !51
bb.8 (%ir-block.55):
$x8 = LDRXui $sp, 6 :: (load (s64) from %stack.19)
renamable $d1 = LDRDui renamable $x8, 1, debug-location !51 :: (load (s64) from %ir.47 + 8)
renamable $d0 = LDRDui killed renamable $x8, 0, debug-location !51 :: (load (s64) from %ir.47)
$x0 = LDRXui $sp, 7 :: (load (s64) from %stack.18)
$x1 = LDRXui $sp, 8 :: (load (s64) from %stack.17)
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
$x8 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
renamable $x1 = UBFMXri killed renamable $x8, 3, 63, debug-location !44
$lr = LDRXui $sp, 13 :: (load (s64) from %stack.12)
renamable $w9 = LDRBBroX killed renamable $x1, killed renamable $lr, 0, 0, debug-location !44 :: (load (s8) from %ir.61)
renamable $w9 = UBFMWri killed renamable $w9, 0, 7, debug-location !44
STRXui killed $x0, $sp, 5 :: (store (s64) into %stack.20)
CBZW killed renamable $w9, %bb.10, debug-location !44
bb.9 (%ir-block.64):
successors:
$x0 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
BL @__asan_report_store8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !44
INLINEASM &"", 1, debug-location !44
BRK 1, debug-location !44
bb.10 (%ir-block.65):
renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.4
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.4, 0
renamable $x9 = ORRXri $xzr, 4097
renamable $x8 = LSRVXr killed renamable $x8, killed renamable $x9
$x9 = LDRXui $sp, 5 :: (load (s64) from %stack.20)
$x10 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
STRXui killed renamable $x9, renamable $x10, 0, debug-location !44 :: (store (s64) into %ir.6)
renamable $x11 = LDRXui killed renamable $x10, 0, debug-location !52 :: (load (s64) from %ir.6)
$x12 = LDRXui $sp, 13 :: (load (s64) from %stack.12)
renamable $w13 = LDRBBroX killed renamable $x8, killed renamable $x12, 0, 0, debug-location !53 :: (load (s8) from %ir.68)
renamable $w13 = UBFMWri killed renamable $w13, 0, 7, debug-location !53
STRXui killed $x11, $sp, 4 :: (store (s64) into %stack.21)
CBZW killed renamable $w13, %bb.12, debug-location !53
bb.11 (%ir-block.71):
successors:
$x0 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.4, debug-location !53
renamable $x0 = ADDXri $x0, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.4, 0, debug-location !53
BL @__asan_report_load8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $sp, debug-location !53
INLINEASM &"", 1, debug-location !53
BRK 1, debug-location !53
bb.12 (%ir-block.72):
renamable $x8 = ADRP target-flags(aarch64-page) @OBJC_SELECTOR_REFERENCES_.4
renamable $x8 = ADDXri killed renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @OBJC_SELECTOR_REFERENCES_.4, 0
renamable $x1 = LDRXui killed renamable $x8, 0, debug-location !53 :: (invariant load (s64) from @OBJC_SELECTOR_REFERENCES_.4)
$x8 = LDRXui $sp, 4 :: (load (s64) from %stack.21)
$x0 = ORRXrs $xzr, killed $x8, 0, debug-location !53
BL @objc_msgSend, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, implicit-def $x0, debug-location !53
INLINEASM &"mov\09fp, fp\09\09; marker for objc_retainAutoreleaseReturnValue", 1, debug-location !53
BL @objc_retainAutoreleasedReturnValue, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $x0, debug-location !53
$x8 = LDRXui $sp, 16 :: (load (s64) from %stack.9)
STRXui killed $x0, $sp, 3 :: (store (s64) into %stack.22)
$x0 = ORRXrs $xzr, killed $x8, 0, debug-location !54
$x8 = ORRXrs $xzr, killed $xzr, 0, debug-location !54
$x1 = ORRXrs $xzr, killed $x8, 0, debug-location !54
BL @objc_storeStrong, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit killed $x1, debug-location !54
$x0 = LDRXui $sp, 3 :: (load (s64) from %stack.22)
BL @objc_autoreleaseReturnValue, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $x0, debug-location !54
$x8 = MOVZXi 13838, 0, debug-location !54
$x8 = MOVKXi $x8, 17888, 16, debug-location !54
$x1 = LDRXui $sp, 15 :: (load (s64) from %stack.10)
STRXui killed renamable $x8, killed renamable $x1, 0, debug-location !54 :: (store (s64) into %ir.7)
$x8 = LDRXui $sp, 12 :: (load (s64) from %stack.13)
STRXui $xzr, renamable $x8, 0, debug-location !54 :: (store (s64) into %ir.79, align 1)
STURHHi $wzr, renamable $x8, 9, debug-location !54 :: (store (s16) into %ir.81, align 1)
STRBBui $wzr, killed renamable $x8, 11, debug-location !54 :: (store (s8) into %ir.83)
$lr = ADRP target-flags(aarch64-page, aarch64-got) @__stack_chk_guard
$lr = LDRXui $lr, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @__stack_chk_guard
$lr = LDRXui killed $lr, 0 :: (dereferenceable invariant load (s64) from @__stack_chk_guard)
renamable $x9 = LDRXui $sp, 39 :: (load (s64) from %stack.0.StackGuardSlot)
$xzr = SUBSXrs killed renamable $lr, killed renamable $x9, 0, implicit-def $nzcv, implicit-def $nzcv
STRXui killed $x0, $sp, 2 :: (store (s64) into %stack.23)
Bcc 1, %bb.14, implicit $nzcv
bb.13.SP_return:
$x0 = LDRXui $sp, 2 :: (load (s64) from %stack.23)
$sp = frame-destroy SUBXri $fp, 16, 0, debug-location !54
$fp, $lr = frame-destroy LDPXi $sp, 2, debug-location !54 :: (load (s64) from %stack.25), (load (s64) from %stack.24)
early-clobber $sp, $x28, $x27 = frame-destroy LDPXpost $sp, 4, debug-location !54 :: (load (s64) from %stack.27), (load (s64) from %stack.26)
RET undef $lr, implicit killed $x0, debug-location !54
bb.14.CallStackCheckFailBlk:
BL @__stack_chk_fail, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, debug-location !47
BRK 1, debug-location !47
...
---
name: asan.module_ctor
alignment: 4
tracksRegLiveness: true
frameInfo:
stackSize: 16
maxAlignment: 8
adjustsStack: true
hasCalls: true
maxCallFrameSize: 0
stack:
- { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
callee-saved-register: '$lr' }
- { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 8, stack-id: default,
callee-saved-register: '$fp' }
body: |
bb.0 (%ir-block.0):
liveins: $lr
early-clobber $sp = frame-setup STPXpre killed $fp, killed $lr, $sp, -2 :: (store (s64) into %stack.1), (store (s64) into %stack.0)
frame-setup CFI_INSTRUCTION def_cfa_offset 16
frame-setup CFI_INSTRUCTION offset $w30, -8
frame-setup CFI_INSTRUCTION offset $w29, -16
BL @__asan_init, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp
BL @__asan_version_mismatch_check_v8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp
early-clobber $sp, $fp, $lr = frame-destroy LDPXpost $sp, 2 :: (load (s64) from %stack.1), (load (s64) from %stack.0)
RET undef $lr
...