Skip to content

Introduce MCAsmInfo::UsesSetToEquateSymbol and prefer = to .set #142289

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions clang/test/CodeGen/alias.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@ const int wacom_usb_ids[] = {1, 1, 2, 3, 5, 8, 13, 0};
extern const int __mod_usb_device_table __attribute__ ((alias("wacom_usb_ids")));
// CHECKBASIC-DAG: @__mod_usb_device_table ={{.*}} alias i32, ptr @wacom_usb_ids
// CHECKASM-DAG: .globl __mod_usb_device_table
// CHECKASM-DAG: .set __mod_usb_device_table, wacom_usb_ids
// CHECKASM-DAG: __mod_usb_device_table = wacom_usb_ids
// CHECKASM-NOT: .size __mod_usb_device_table

extern int g1;
extern int g1 __attribute((alias("g0")));
// CHECKBASIC-DAG: @g1 ={{.*}} alias i32, ptr @g0
// CHECKASM-DAG: .globl g1
// CHECKASM-DAG: .set g1, g0
// CHECKASM-DAG: g1 = g0
// CHECKASM-NOT: .size g1

extern __thread int __libc_errno __attribute__ ((alias ("TL_WITH_ALIAS")));
// CHECKBASIC-DAG: @__libc_errno ={{.*}} thread_local alias i32, ptr @TL_WITH_ALIAS
// CHECKASM-DAG: .globl __libc_errno
// CHECKASM-DAG: .set __libc_errno, TL_WITH_ALIAS
// CHECKASM-DAG: __libc_errno = TL_WITH_ALIAS
// CHECKASM-NOT: .size __libc_errno

void f0(void) { }
Expand Down
4 changes: 4 additions & 0 deletions llvm/include/llvm/MC/MCAsmInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ class MCAsmInfo {
/// This is appended to emitted labels. Defaults to ":"
const char *LabelSuffix;

/// Use .set instead of = to equate a symbol to an expression.
bool UsesSetToEquateSymbol = false;

// Print the EH begin symbol with an assignment. Defaults to false.
bool UseAssignmentForEHBegin = false;

Expand Down Expand Up @@ -520,6 +523,7 @@ class MCAsmInfo {
bool shouldAllowAdditionalComments() const { return AllowAdditionalComments; }
const char *getLabelSuffix() const { return LabelSuffix; }

bool usesSetToEquateSymbol() const { return UsesSetToEquateSymbol; }
bool useAssignmentForEHBegin() const { return UseAssignmentForEHBegin; }
bool needsLocalForSize() const { return NeedsLocalForSize; }
StringRef getPrivateGlobalPrefix() const { return PrivateGlobalPrefix; }
Expand Down
6 changes: 4 additions & 2 deletions llvm/lib/MC/MCAsmStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -695,9 +695,11 @@ void MCAsmStreamer::emitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
if (E->inlineAssignedExpr())
EmitSet = false;
if (EmitSet) {
OS << ".set ";
bool UseSet = MAI->usesSetToEquateSymbol();
if (UseSet)
OS << ".set ";
Symbol->print(OS, MAI);
OS << ", ";
OS << (UseSet ? ", " : " = ");
Value->print(OS, MAI);

EmitEOL();
Expand Down
1 change: 1 addition & 0 deletions llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCAsmInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ AMDGPUMCAsmInfo::AMDGPUMCAsmInfo(const Triple &TT,
CommentString = ";";
InlineAsmStart = ";#ASMSTART";
InlineAsmEnd = ";#ASMEND";
UsesSetToEquateSymbol = true;

//===--- Data Emission Directives -------------------------------------===//
UsesELFSectionDirectiveForBSS = true;
Expand Down
1 change: 1 addition & 0 deletions llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCAsmInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ HexagonMCAsmInfo::HexagonMCAsmInfo(const Triple &TT) {
LCOMMDirectiveAlignmentType = LCOMM::ByteAlignment;
InlineAsmStart = "# InlineAsm Start";
InlineAsmEnd = "# InlineAsm End";
UsesSetToEquateSymbol = true;
ZeroDirective = "\t.space\t";
AscizDirective = "\t.string\t";

Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,5 +155,7 @@ PPCXCOFFMCAsmInfo::PPCXCOFFMCAsmInfo(bool Is64Bit, const Triple &T) {
// Support $ as PC in inline asm
DollarIsPC = true;

UsesSetToEquateSymbol = true;

initializeVariantKinds(variantKindDescs);
}
1 change: 1 addition & 0 deletions llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ SystemZMCAsmInfoGOFF::SystemZMCAsmInfoGOFF(const Triple &TT) {
CalleeSaveStackSlotSize = 8;
CodePointerSize = 8;
CommentString = "*";
UsesSetToEquateSymbol = true;
ExceptionsType = ExceptionHandling::ZOS;
IsHLASM = true;
IsLittleEndian = false;
Expand Down
14 changes: 7 additions & 7 deletions llvm/test/CodeGen/AArch64/arm64ec-alias.ll
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,30 @@ define dso_local void @patchable_func() hybrid_patchable {
@patchable_alias = alias void (), ptr @patchable_func

; CHECK: .weak_anti_dep func_alias
; CHECK-NEXT: .set func_alias, "#func_alias"
; CHECK-NEXT: func_alias = "#func_alias"
; CHECK-NEXT: .weak_anti_dep func_alias2
; CHECK-NEXT: .set func_alias2, "#func_alias2"
; CHECK-NEXT: func_alias2 = "#func_alias2"
; CHECK-NEXT: .weak_anti_dep func
; CHECK-NEXT: .set func, "#func"
; CHECK-NEXT: func = "#func"
; CHECK: .weak_anti_dep patchable_alias
; CHECK-NEXT: .set patchable_alias, "#patchable_alias"
; CHECK-NEXT: patchable_alias = "#patchable_alias"

; CHECK: .globl "#func_alias"
; CHECK-NEXT: .def "#func_alias";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#func_alias", "#func"
; CHECK-NEXT: "#func_alias" = "#func"
; CHECK-NEXT: .globl "#func_alias2"
; CHECK-NEXT: .def "#func_alias2";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#func_alias2", "#func_alias"
; CHECK-NEXT: "#func_alias2" = "#func_alias"

; CHECK: .globl "#patchable_alias"
; CHECK-NEXT: .def "#patchable_alias";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#patchable_alias", "#patchable_func"
; CHECK-NEXT: "#patchable_alias" = "#patchable_func"
18 changes: 9 additions & 9 deletions llvm/test/CodeGen/AArch64/arm64ec-hybrid-patchable.ll
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ define dso_local void @caller() nounwind {
; CHECK-NEXT: .p2align 2
; CHECK-NEXT: "#caller": // @"#caller"
; CHECK-NEXT: .weak_anti_dep caller
; CHECK-NEXT: .set caller, "#caller"{{$}}
; CHECK-NEXT: caller = "#caller"{{$}}
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
; CHECK-NEXT: bl "#func"
Expand Down Expand Up @@ -253,13 +253,13 @@ define dso_local void @caller() nounwind {
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .weak func
; CHECK-NEXT: .set func, "EXP+#func"{{$}}
; CHECK-NEXT: func = "EXP+#func"{{$}}
; CHECK-NEXT: .weak "#func"
; CHECK-NEXT: .def "#func";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#func", "#func$hybpatch_thunk"{{$}}
; CHECK-NEXT: "#func" = "#func$hybpatch_thunk"{{$}}
; CHECK-NEXT: .def "EXP+#has_varargs";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
Expand All @@ -269,13 +269,13 @@ define dso_local void @caller() nounwind {
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .weak has_varargs
; CHECK-NEXT: .set has_varargs, "EXP+#has_varargs"
; CHECK-NEXT: has_varargs = "EXP+#has_varargs"
; CHECK-NEXT: .weak "#has_varargs"
; CHECK-NEXT: .def "#has_varargs";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#has_varargs", "#has_varargs$hybpatch_thunk"
; CHECK-NEXT: "#has_varargs" = "#has_varargs$hybpatch_thunk"
; CHECK-NEXT: .def "EXP+#has_sret";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
Expand All @@ -285,13 +285,13 @@ define dso_local void @caller() nounwind {
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .weak has_sret
; CHECK-NEXT: .set has_sret, "EXP+#has_sret"
; CHECK-NEXT: has_sret = "EXP+#has_sret"
; CHECK-NEXT: .weak "#has_sret"
; CHECK-NEXT: .def "#has_sret";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#has_sret", "#has_sret$hybpatch_thunk"
; CHECK-NEXT: "#has_sret" = "#has_sret$hybpatch_thunk"
; CHECK-NEXT: .def "EXP+#exp";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
Expand All @@ -301,13 +301,13 @@ define dso_local void @caller() nounwind {
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .weak exp
; CHECK-NEXT: .set exp, "EXP+#exp"
; CHECK-NEXT: exp = "EXP+#exp"
; CHECK-NEXT: .weak "#exp"
; CHECK-NEXT: .def "#exp";
; CHECK-NEXT: .scl 2;
; CHECK-NEXT: .type 32;
; CHECK-NEXT: .endef
; CHECK-NEXT: .set "#exp", "#exp$hybpatch_thunk"
; CHECK-NEXT: "#exp" = "#exp$hybpatch_thunk"

; SYM: [53](sec 15)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 #func$hybpatch_thunk
; SYM: [58](sec 16)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 #has_varargs$hybpatch_thunk
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/CodeGen/AArch64/arm64ec-symbols.ll
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ define void @caller() nounwind {
}

; CHECK: .weak_anti_dep caller
; CHECK-NEXT: .set caller, "#caller"{{$}}
; CHECK-NEXT: caller = "#caller"{{$}}

; CHECK: .weak_anti_dep func
; CHECK-NEXT: .set func, "#func"{{$}}
; CHECK-NEXT: func = "#func"{{$}}
; CHECK-NEXT: .weak_anti_dep "#func"
; CHECK-NEXT: .set "#func", "#func$exit_thunk"{{$}}
; CHECK-NEXT: "#func" = "#func$exit_thunk"{{$}}

; SYM: [ 8](sec 4)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 #caller
; SYM: [21](sec 7)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 #func$exit_thunk
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ define void @varargs_caller() nounwind {
; CHECK-NEXT: stp x9, x8, [sp]
; CHECK-NEXT: str xzr, [sp, #16]
; CHECK-NEXT: .weak_anti_dep varargs_callee
; CHECK-NEXT: .set varargs_callee, "#varargs_callee"
; CHECK-NEXT: varargs_callee = "#varargs_callee"
; CHECK-NEXT: .weak_anti_dep "#varargs_callee"
; CHECK-NEXT: .set "#varargs_callee", varargs_callee
; CHECK-NEXT: "#varargs_callee" = varargs_callee
; CHECK-NEXT: bl "#varargs_callee"
; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
; CHECK-NEXT: add sp, sp, #48
Expand Down Expand Up @@ -86,9 +86,9 @@ define void @varargs_many_argscalleer() nounwind {
; CHECK-NEXT: stp x9, x8, [sp]
; CHECK-NEXT: stp q0, q0, [sp, #16]
; CHECK-NEXT: .weak_anti_dep varargs_many_argscallee
; CHECK-NEXT: .set varargs_many_argscallee, "#varargs_many_argscallee"
; CHECK-NEXT: varargs_many_argscallee = "#varargs_many_argscallee"
; CHECK-NEXT: .weak_anti_dep "#varargs_many_argscallee"
; CHECK-NEXT: .set "#varargs_many_argscallee", varargs_many_argscallee
; CHECK-NEXT: "#varargs_many_argscallee" = varargs_many_argscallee
; CHECK-NEXT: bl "#varargs_many_argscallee"
; CHECK-NEXT: ldr x30, [sp, #48] // 8-byte Folded Reload
; CHECK-NEXT: add sp, sp, #64
Expand Down Expand Up @@ -116,9 +116,9 @@ define void @varargs_caller_tail() nounwind {
; CHECK-NEXT: stp x9, x8, [sp]
; CHECK-NEXT: str xzr, [sp, #16]
; CHECK-NEXT: .weak_anti_dep varargs_callee
; CHECK-NEXT: .set varargs_callee, "#varargs_callee"
; CHECK-NEXT: varargs_callee = "#varargs_callee"
; CHECK-NEXT: .weak_anti_dep "#varargs_callee"
; CHECK-NEXT: .set "#varargs_callee", varargs_callee
; CHECK-NEXT: "#varargs_callee" = varargs_callee
; CHECK-NEXT: bl "#varargs_callee"
; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
; CHECK-NEXT: add x4, sp, #48
Expand All @@ -129,9 +129,9 @@ define void @varargs_caller_tail() nounwind {
; CHECK-NEXT: mov x5, xzr
; CHECK-NEXT: add sp, sp, #48
; CHECK-NEXT: .weak_anti_dep varargs_callee
; CHECK-NEXT: .set varargs_callee, "#varargs_callee"
; CHECK-NEXT: varargs_callee = "#varargs_callee"
; CHECK-NEXT: .weak_anti_dep "#varargs_callee"
; CHECK-NEXT: .set "#varargs_callee", varargs_callee
; CHECK-NEXT: "#varargs_callee" = varargs_callee
; CHECK-NEXT: b "#varargs_callee"
call void (double, ...) @varargs_callee(double 1.0, i32 2, double 3.0, i32 4, double 5.0, <2 x double> <double 0.0, double 0.0>)
tail call void (double, ...) @varargs_callee(double 1.0, i32 4, i32 3, i32 2)
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/AArch64/ehcontguard.ll
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
; RUN: llc < %s -mtriple=aarch64-windows | FileCheck %s
; EHCont Guard is currently only available on Windows

; CHECK: .set "@feat.00", 16384
; CHECK: "@feat.00" = 16384

; CHECK: .section .gehcont$y

Expand Down
8 changes: 4 additions & 4 deletions llvm/test/CodeGen/AArch64/global-merge-1.ll
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ define void @f1(i32 %a1, i32 %a2) {
;CHECK: .type .L_MergedGlobals,@object // @_MergedGlobals
;CHECK: .local .L_MergedGlobals
;CHECK: .comm .L_MergedGlobals,8,4
;CHECK: .set m, .L_MergedGlobals
;CHECK: .set n, .L_MergedGlobals+4
;CHECK: m = .L_MergedGlobals
;CHECK: n = .L_MergedGlobals+4

;CHECK-APPLE-IOS: .zerofill __DATA,__bss,__MergedGlobals,8,2 ; @_MergedGlobals
;CHECK-APPLE-IOS-NOT: .set _m, l__MergedGlobals
;CHECK-APPLE-IOS-NOT: .set _n, l__MergedGlobals+4
;CHECK-APPLE-IOS-NOT: _m = l__MergedGlobals
;CHECK-APPLE-IOS-NOT: _n = l__MergedGlobals+4
12 changes: 6 additions & 6 deletions llvm/test/CodeGen/AArch64/global-merge-2.ll
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,21 @@ define dso_local void @g1(i32 %a1, i32 %a2) {
;CHECK: .comm .L_MergedGlobals,12,4

;CHECK: .globl x
;CHECK: .set x, .L_MergedGlobals
;CHECK: x = .L_MergedGlobals
;CHECK: .size x, 4
;CHECK: .globl y
;CHECK: .set y, .L_MergedGlobals+4
;CHECK: y = .L_MergedGlobals+4
;CHECK: .size y, 4
;CHECK: .globl z
;CHECK: .set z, .L_MergedGlobals+8
;CHECK: z = .L_MergedGlobals+8
;CHECK: .size z, 4

;CHECK-APPLE-IOS: .zerofill __DATA,__common,__MergedGlobals_x,12,2

;CHECK-APPLE-IOS: .globl _x
;CHECK-APPLE-IOS: .set {{.*}}, __MergedGlobals_x
;CHECK-APPLE-IOS: {{.*}} = __MergedGlobals_x
;CHECK-APPLE-IOS: .globl _y
;CHECK-APPLE-IOS: .set _y, __MergedGlobals_x+4
;CHECK-APPLE-IOS: _y = __MergedGlobals_x+4
;CHECK-APPLE-IOS: .globl _z
;CHECK-APPLE-IOS: .set _z, __MergedGlobals_x+8
;CHECK-APPLE-IOS: _z = __MergedGlobals_x+8
;CHECK-APPLE-IOS: .subsections_via_symbols
10 changes: 5 additions & 5 deletions llvm/test/CodeGen/AArch64/global-merge-3.ll
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ define dso_local void @f1(i32 %a1, i32 %a2, i32 %a3) {

;CHECK-APPLE-IOS: .globl __MergedGlobals_x
;CHECK-APPLE-IOS: .zerofill __DATA,__common,__MergedGlobals_x,800,2
;CHECK-APPLE-IOS: .set _x, __MergedGlobals_x
;CHECK-APPLE-IOS: .set _y, __MergedGlobals_x+400
;CHECK-APPLE-IOS: _x = __MergedGlobals_x
;CHECK-APPLE-IOS: _y = __MergedGlobals_x+400

;CHECK: .type .L_MergedGlobals,@object // @_MergedGlobals
;CHECK: .local .L_MergedGlobals
;CHECK: .comm .L_MergedGlobals,800,4
;CHECK: globl x
;CHECK: .set x, .L_MergedGlobals
;CHECK: x = .L_MergedGlobals
;CHECK: globl y
;CHECK: .set y, .L_MergedGlobals+400
;CHECK-NOT: .set z, .L_MergedGlobals
;CHECK: y = .L_MergedGlobals+400
;CHECK-NOT: z = .L_MergedGlobals
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/AArch64/global-merge-hidden-minsize.ll
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ attributes #0 = { minsize optsize }

; CHECK: .globl x
; CHECK: .hidden x
; CHECK: .set x, .L_MergedGlobals
; CHECK: x = .L_MergedGlobals
; CHECK: .size x, 4

; CHECK: .globl y
; CHECK: .hidden y
; CHECK: .set y, .L_MergedGlobals+4
; CHECK: y = .L_MergedGlobals+4
; CHECK: .size y, 4
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/AArch64/ifunc-asm.ll
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ entry:
@global_ifunc = ifunc i32 (i32), ptr @the_resolver
; ELF: .globl global_ifunc
; ELF-NEXT: .type global_ifunc,@gnu_indirect_function
; ELF-NEXT: .set global_ifunc, the_resolver
; ELF-NEXT: global_ifunc = the_resolver

; MACHO: .section __DATA,__data
; MACHO-NEXT: .p2align 3, 0x0
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/CodeGen/AArch64/seh-finally.ll
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ entry:
; CHECK: add x29, sp, #16
; CHECK: mov x0, #-2
; CHECK: stur x0, [x29, #16]
; CHECK: .set .Lsimple_seh$frame_escape_0, -8
; CHECK: .Lsimple_seh$frame_escape_0 = -8
; CHECK: ldur w0, [x29, #-8]
; CHECK: bl foo

Expand Down Expand Up @@ -89,7 +89,7 @@ entry:
; CHECK: mov x19, sp
; CHECK: mov x0, #-2
; CHECK: stur x0, [x29, #24]
; CHECK: .set .Lstack_realign$frame_escape_0, 0
; CHECK: .Lstack_realign$frame_escape_0 = 0
; CHECK: ldr w0, [x19]
; CHECK: bl foo

Expand Down Expand Up @@ -137,7 +137,7 @@ entry:
; CHECK: add x29, sp, #32
; CHECK: mov x1, #-2
; CHECK: stur x1, [x29, #16]
; CHECK: .set .Lvla_present$frame_escape_0, -4
; CHECK: .Lvla_present$frame_escape_0 = -4
; CHECK: stur w0, [x29, #-4]
; CHECK: ldur w8, [x29, #-4]
; CHECK: mov x9, sp
Expand Down Expand Up @@ -204,7 +204,7 @@ entry:
; CHECK: mov x19, sp
; CHECK: mov x1, #-2
; CHECK: stur x1, [x29, #24]
; CHECK: .set .Lvla_and_realign$frame_escape_0, 32
; CHECK: .Lvla_and_realign$frame_escape_0 = 32
; CHECK: str w0, [x29, #36]
; CHECK: ldr w8, [x29, #36]
; CHECK: mov x9, sp
Expand Down
Loading