| // REQUIRES: arm-registered-target |
| // RUN: llvm-mc -filetype=obj -triple thumbv7-windows-gnu %s -o %t.o |
| // RUN: llvm-readobj --unwind %t.o | FileCheck --strict-whitespace %s |
| |
| // CHECK: RuntimeFunction { |
| // CHECK-NEXT: Function: func6 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 8 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 7 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 0 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func7 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 8 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 0 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: push {r4} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r4} |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func8 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 10 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 0 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: push {r4, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r4, lr} |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func9 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 24 |
| // CHECK-NEXT: ReturnType: b.w <target> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 32 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #32 |
| // CHECK-NEXT: vpush {d8} |
| // CHECK-NEXT: push {lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #32 |
| // CHECK-NEXT: vpop {d8} |
| // CHECK-NEXT: pop {lr} |
| // CHECK-NEXT: b.w <target> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func10 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 26 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 1 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: Yes |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #16 |
| // CHECK-NEXT: vpush {d8-d9} |
| // CHECK-NEXT: mov r11, sp |
| // CHECK-NEXT: push {r11, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: vpop {d8-d9} |
| // CHECK-NEXT: pop {r11, lr} |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func11 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 24 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 1 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: Yes |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #16 |
| // CHECK-NEXT: vpush {d8-d9} |
| // CHECK-NEXT: mov r11, sp |
| // CHECK-NEXT: push {r11, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: vpop {d8-d9} |
| // CHECK-NEXT: pop {r11, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func12 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 18 |
| // CHECK-NEXT: ReturnType: b.w <target> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 6 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #16 |
| // CHECK-NEXT: vpush {d8-d14} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: vpop {d8-d14} |
| // CHECK-NEXT: b.w <target> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func13 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 18 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 6 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: Yes |
| // CHECK-NEXT: StackAdjustment: 20 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #20 |
| // CHECK-NEXT: add.w r11, sp, #28 |
| // CHECK-NEXT: push {r4-r11, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #20 |
| // CHECK-NEXT: pop {r4-r11, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func14 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 14 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 7 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 20 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #20 |
| // CHECK-NEXT: push {r4-r11, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #20 |
| // CHECK-NEXT: pop {r4-r11, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func15 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 20 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 512 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #512 |
| // CHECK-NEXT: push {r4, lr} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #512 |
| // CHECK-NEXT: pop {r4} |
| // CHECK-NEXT: ldr pc, [sp], #20 |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func16 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 20 |
| // CHECK-NEXT: ReturnType: b.w <target> |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 7 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: Yes |
| // CHECK-NEXT: StackAdjustment: 0 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: mov r11, sp |
| // CHECK-NEXT: push {r11, lr} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r11, lr} |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: b.w <target> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func17 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 20 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 512 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #512 |
| // CHECK-NEXT: push {r4} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #512 |
| // CHECK-NEXT: pop {r4} |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func18 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 6 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 7 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 4 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: push {r3, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r3, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func19 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 12 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: push {r0-r4} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r0-r4} |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func20 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 14 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: push {r0-r4} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: pop {r4} |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func21 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 14 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #16 |
| // CHECK-NEXT: push {r4} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r0-r4} |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func22 |
| // CHECK-NEXT: Fragment: Yes |
| // CHECK-NEXT: FunctionLength: 14 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 512 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #512 |
| // CHECK-NEXT: push {r4, lr} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #512 |
| // CHECK-NEXT: pop {r4} |
| // CHECK-NEXT: ldr pc, [sp], #20 |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func23 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 12 |
| // CHECK-NEXT: ReturnType: (no epilogue) |
| // CHECK-NEXT: HomedParameters: Yes |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 512 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #512 |
| // CHECK-NEXT: push {r4, lr} |
| // CHECK-NEXT: push {r0-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func24 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 16 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 3 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: Yes |
| // CHECK-NEXT: StackAdjustment: 8 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: add.w r11, sp, #24 |
| // CHECK-NEXT: push {r2-r7, r11, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #8 |
| // CHECK-NEXT: pop {r4-r7, r11, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func25 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 16 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 3 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: Yes |
| // CHECK-NEXT: StackAdjustment: 8 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #8 |
| // CHECK-NEXT: add.w r11, sp, #16 |
| // CHECK-NEXT: push {r4-r7, r11, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r2-r7, r11, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func26 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 8 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 7 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 12 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: push {r1-r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #12 |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func27 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 8 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 7 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 12 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #12 |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: pop {r1-r3} |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func28 |
| // CHECK-NEXT: Fragment: No |
| // CHECK-NEXT: FunctionLength: 8 |
| // CHECK-NEXT: ReturnType: bx <reg> |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 0 |
| // CHECK-NEXT: R: 1 |
| // CHECK-NEXT: LinkRegister: No |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 4 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: vpush {d8} |
| // CHECK-NEXT: push {r3} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: vpop {d8} |
| // CHECK-NEXT: pop {r3} |
| // CHECK-NEXT: bx <reg> |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: RuntimeFunction { |
| // CHECK-NEXT: Function: func29 |
| // CHECK-NEXT: Fragment: Yes |
| // CHECK-NEXT: FunctionLength: 6 |
| // CHECK-NEXT: ReturnType: pop {pc} |
| // CHECK-NEXT: HomedParameters: No |
| // CHECK-NEXT: Reg: 2 |
| // CHECK-NEXT: R: 0 |
| // CHECK-NEXT: LinkRegister: Yes |
| // CHECK-NEXT: Chaining: No |
| // CHECK-NEXT: StackAdjustment: 16 |
| // CHECK-NEXT: Prologue [ |
| // CHECK-NEXT: sub sp, sp, #16 |
| // CHECK-NEXT: push {r4-r6, lr} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Epilogue [ |
| // CHECK-NEXT: add sp, sp, #16 |
| // CHECK-NEXT: pop {r4-r6, pc} |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| .thumb |
| .syntax unified |
| |
| func6: |
| nop |
| nop |
| nop |
| bx lr |
| |
| func7: |
| push {r4} |
| nop |
| pop {r4} |
| bx lr |
| |
| func8: |
| push {r4,lr} |
| nop |
| pop {r4,lr} |
| bx lr |
| |
| func9: |
| push {lr} |
| vpush {d8} |
| sub sp, sp, #32 |
| nop |
| add sp, sp, #32 |
| vpop {d8} |
| pop {lr} |
| b tailcall |
| |
| func10: |
| push {r11,lr} |
| mov r11, sp |
| vpush {d8-d9} |
| sub sp, sp, #16 |
| nop |
| add sp, sp, #16 |
| vpop {d8-d9} |
| pop {r11,lr} |
| bx lr |
| |
| func11: |
| push {r11,lr} |
| mov r11, sp |
| vpush {d8-d9} |
| sub sp, sp, #16 |
| nop |
| add sp, sp, #16 |
| vpop {d8-d9} |
| pop {r11,pc} |
| |
| func12: |
| vpush {d8-d14} |
| sub sp, sp, #16 |
| nop |
| add sp, sp, #16 |
| vpop {d8-d14} |
| b tailcall |
| |
| func13: |
| push {r4-r11,lr} |
| add r11, sp, #0x1c |
| sub sp, sp, #20 |
| nop |
| add sp, sp, #20 |
| pop {r4-r11,pc} |
| |
| func14: |
| push {r4-r11,lr} |
| sub sp, sp, #20 |
| nop |
| add sp, sp, #20 |
| pop {r4-r11,pc} |
| |
| func15: |
| push {r0-r3} |
| push {r4,lr} |
| sub sp, sp, #512 |
| nop |
| add sp, sp, #512 |
| pop {r4} |
| ldr pc, [sp], #20 |
| |
| func16: |
| push {r0-r3} |
| push {r11,lr} |
| mov r11, sp |
| nop |
| pop {r11, lr} |
| add sp, sp, #16 |
| b tailcall |
| |
| func17: |
| push {r0-r3} |
| push {r4} |
| sub sp, sp, #512 |
| nop |
| add sp, sp, #512 |
| pop {r4} |
| add sp, sp, #16 |
| bx lr |
| |
| func18: |
| push {r3,lr} |
| nop |
| pop {r3,pc} |
| |
| func19: |
| push {r0-r3} |
| push {r0-r4} |
| nop |
| pop {r0-r4} |
| add sp, sp, #16 |
| bx lr |
| |
| func20: |
| push {r0-r3} |
| push {r0-r4} |
| nop |
| add sp, sp, #16 |
| pop {r4} |
| add sp, sp, #16 |
| bx lr |
| |
| func21: |
| push {r0-r3} |
| push {r4} |
| sub sp, sp, #16 |
| nop |
| pop {r0-r4} |
| add sp, sp, #16 |
| bx lr |
| |
| func22: |
| nop |
| nop |
| add sp, sp, #512 |
| pop {r4} |
| ldr pc, [sp], #20 |
| |
| func23: |
| push {r0-r3} |
| push {r4,lr} |
| sub sp, sp, #512 |
| nop |
| nop |
| |
| func24: |
| push {r2-r7,r11,lr} |
| add r11, sp, #24 |
| nop |
| add sp, sp, #8 |
| pop {r4-r7,r11,pc} |
| |
| func25: |
| push {r4-r7,r11,lr} |
| add r11, sp, #16 |
| sub sp, sp, #8 |
| nop |
| pop {r2-r7,r11,pc} |
| |
| func26: |
| push {r1-r3} |
| nop |
| add sp, sp, #12 |
| bx lr |
| |
| func27: |
| sub sp, sp, #12 |
| nop |
| pop {r1-r3} |
| bx lr |
| |
| func28: |
| push {r3} |
| vpush {d8} |
| nop |
| vpop {d8} |
| pop {r3} |
| bx lr |
| |
| func29: |
| nop |
| pop {r4-r11,pc} |
| |
| .section .pdata,"dr" |
| .rva func6 |
| .long 0x000f2011 |
| .rva func7 |
| .long 0x00002011 |
| .rva func8 |
| .long 0x00102015 |
| .rva func9 |
| .long 0x02184031 |
| .rva func10 |
| .long 0x01392035 |
| .rva func11 |
| .long 0x01390031 |
| .rva func12 |
| .long 0x010e4025 |
| .rva func13 |
| .long 0x01760025 |
| .rva func14 |
| .long 0x0157001d |
| .rva func15 |
| .long 0x20108029 |
| .rva func16 |
| .long 0x003fc029 |
| .rva func17 |
| .long 0x2000a029 |
| .rva func18 |
| .long 0xff1f000d |
| .rva func19 |
| .long 0xffc0a019 |
| .rva func20 |
| .long 0xfdc0a01d |
| .rva func21 |
| .long 0xfec0a01d |
| .rva func22 |
| .long 0x2010801e |
| .rva func23 |
| .long 0x2010e019 |
| .rva func24 |
| .long 0xfd730021 |
| .rva func25 |
| .long 0xfe730021 |
| .rva func26 |
| .long 0xfd8f2011 |
| .rva func27 |
| .long 0xfe8f2011 |
| .rva func28 |
| .long 0xff082011 |
| .rva func29 |
| .long 0x0112000e |