noalias
- The first argument (
x0
) is a stack argument for CPS.
Before:
.p2align 2 ; -- Begin function _k_1a
__k_1a: ; @_k_1a
; %bb.0: ; %entry
stp d9, d8, [sp, #-64]! ; 16-byte Folded Spill
ldr x10, [x0, #8]
Lloh20:
adrp x9, "_Foo.pen:f"@PAGE+8
stp x22, x21, [sp, #16] ; 16-byte Folded Spill
fmov d8, d0
stp x20, x19, [sp, #32] ; 16-byte Folded Spill
mov x19, x0
sub x8, x10, #32
stp x29, x30, [sp, #48] ; 16-byte Folded Spill
add x10, x10, #8
str x8, [x0, #8]
Lloh21:
ldr x21, [x9, "_Foo.pen:f"@PAGEOFF+8]
ldr x9, [x0, #16]
ldr x0, [x0]
cmp x10, x9
b.ls LBB6_2
; %bb.1: ; %then.i
lsl x20, x9, #1
mov x1, x20
bl __pen_realloc
ldr x8, [x19, #8]
str x0, [x19]
str x20, [x19, #16]
LBB6_2: ; %_fmm_stack_extend.exit
add x9, x8, #32
add x8, x0, x8
Lloh22:
adrp x1, __k_15@PAGE
Lloh23:
add x1, x1, __k_15@PAGEOFF
Lloh24:
adrp x2, "_Foo.pen:f"@PAGE+8
Lloh25:
add x2, x2, "_Foo.pen:f"@PAGEOFF+8
str x9, [x19, #8]
mov x0, x19
str d8, [x8, #32]
ldr x8, [x19, #8]
add x8, x8, #8
str x8, [x19, #8]
blr x21
ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
ldp x20, x19, [sp, #32] ; 16-byte Folded Reload
ldp x22, x21, [sp, #16] ; 16-byte Folded Reload
ldp d9, d8, [sp], #64 ; 16-byte Folded Reload
ret
.loh AdrpLdr Lloh20, Lloh21
.loh AdrpAdd Lloh24, Lloh25
.loh AdrpAdd Lloh22, Lloh23
; -- End function
After:
.p2align 2 ; -- Begin function _k_1a
__k_1a: ; @_k_1a
; %bb.0: ; %entry
stp d9, d8, [sp, #-64]! ; 16-byte Folded Spill
stp x22, x21, [sp, #16] ; 16-byte Folded Spill
ldr x22, [x0, #8]
Lloh20:
adrp x8, "_Foo.pen:f"@PAGE+8
stp x20, x19, [sp, #32] ; 16-byte Folded Spill
stp x29, x30, [sp, #48] ; 16-byte Folded Spill
fmov d8, d0
sub x9, x22, #32
mov x19, x0
str x9, [x0, #8]
add x9, x22, #8
Lloh21:
ldr x21, [x8, "_Foo.pen:f"@PAGEOFF+8]
ldr x8, [x0, #16]
ldr x0, [x0]
cmp x9, x8
b.ls LBB6_2
; %bb.1: ; %then.i
lsl x20, x8, #1
mov x1, x20
bl __pen_realloc
str x20, [x19, #16]
str x0, [x19]
LBB6_2: ; %_fmm_stack_extend.exit
str x22, [x19, #8]
Lloh22:
adrp x1, __k_15@PAGE
Lloh23:
add x1, x1, __k_15@PAGEOFF
str d8, [x0, x22]
ldr x8, [x19, #8]
Lloh24:
adrp x2, "_Foo.pen:f"@PAGE+8
Lloh25:
add x2, x2, "_Foo.pen:f"@PAGEOFF+8
mov x0, x19
add x8, x8, #8
str x8, [x19, #8]
blr x21
ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
ldp x20, x19, [sp, #32] ; 16-byte Folded Reload
ldp x22, x21, [sp, #16] ; 16-byte Folded Reload
ldp d9, d8, [sp], #64 ; 16-byte Folded Reload
ret
.loh AdrpLdr Lloh20, Lloh21
.loh AdrpAdd Lloh24, Lloh25
.loh AdrpAdd Lloh22, Lloh23
; -- End function