1096 lines · plain
1// This test checks various cases around generating packed unwind info.2 3// RUN: llvm-mc -triple thumbv7-pc-win32 -filetype=obj %s | llvm-readobj -u - | FileCheck %s4 5// CHECK: RuntimeFunction {6// CHECK-NEXT: Function: func67// CHECK-NEXT: Fragment: No8// CHECK-NEXT: FunctionLength: 89// CHECK-NEXT: ReturnType: bx <reg>10// CHECK-NEXT: HomedParameters: No11// CHECK-NEXT: Reg: 712// CHECK-NEXT: R: 113// CHECK-NEXT: LinkRegister: No14// CHECK-NEXT: Chaining: No15// CHECK-NEXT: StackAdjustment: 016// CHECK-NEXT: Prologue [17// CHECK-NEXT: ]18// CHECK-NEXT: Epilogue [19// CHECK-NEXT: bx <reg>20// CHECK-NEXT: ]21// CHECK-NEXT: }22// CHECK-NEXT: RuntimeFunction {23// CHECK-NEXT: Function: func724// CHECK-NEXT: Fragment: No25// CHECK-NEXT: FunctionLength: 826// CHECK-NEXT: ReturnType: bx <reg>27// CHECK-NEXT: HomedParameters: No28// CHECK-NEXT: Reg: 029// CHECK-NEXT: R: 030// CHECK-NEXT: LinkRegister: No31// CHECK-NEXT: Chaining: No32// CHECK-NEXT: StackAdjustment: 033// CHECK-NEXT: Prologue [34// CHECK-NEXT: push {r4}35// CHECK-NEXT: ]36// CHECK-NEXT: Epilogue [37// CHECK-NEXT: pop {r4}38// CHECK-NEXT: bx <reg>39// CHECK-NEXT: ]40// CHECK-NEXT: }41// CHECK-NEXT: RuntimeFunction {42// CHECK-NEXT: Function: func843// CHECK-NEXT: Fragment: No44// CHECK-NEXT: FunctionLength: 1045// CHECK-NEXT: ReturnType: bx <reg>46// CHECK-NEXT: HomedParameters: No47// CHECK-NEXT: Reg: 048// CHECK-NEXT: R: 049// CHECK-NEXT: LinkRegister: Yes50// CHECK-NEXT: Chaining: No51// CHECK-NEXT: StackAdjustment: 052// CHECK-NEXT: Prologue [53// CHECK-NEXT: push {r4, lr}54// CHECK-NEXT: ]55// CHECK-NEXT: Epilogue [56// CHECK-NEXT: pop {r4, lr}57// CHECK-NEXT: bx <reg>58// CHECK-NEXT: ]59// CHECK-NEXT: }60// CHECK-NEXT: RuntimeFunction {61// CHECK-NEXT: Function: func962// CHECK-NEXT: Fragment: No63// CHECK-NEXT: FunctionLength: 2464// CHECK-NEXT: ReturnType: b.w <target>65// CHECK-NEXT: HomedParameters: No66// CHECK-NEXT: Reg: 067// CHECK-NEXT: R: 168// CHECK-NEXT: LinkRegister: Yes69// CHECK-NEXT: Chaining: No70// CHECK-NEXT: StackAdjustment: 3271// CHECK-NEXT: Prologue [72// CHECK-NEXT: sub sp, sp, #3273// CHECK-NEXT: vpush {d8}74// CHECK-NEXT: push {lr}75// CHECK-NEXT: ]76// CHECK-NEXT: Epilogue [77// CHECK-NEXT: add sp, sp, #3278// CHECK-NEXT: vpop {d8}79// CHECK-NEXT: pop {lr}80// CHECK-NEXT: b.w <target>81// CHECK-NEXT: ]82// CHECK-NEXT: }83// CHECK-NEXT: RuntimeFunction {84// CHECK-NEXT: Function: func1085// CHECK-NEXT: Fragment: No86// CHECK-NEXT: FunctionLength: 2687// CHECK-NEXT: ReturnType: bx <reg>88// CHECK-NEXT: HomedParameters: No89// CHECK-NEXT: Reg: 190// CHECK-NEXT: R: 191// CHECK-NEXT: LinkRegister: Yes92// CHECK-NEXT: Chaining: Yes93// CHECK-NEXT: StackAdjustment: 1694// CHECK-NEXT: Prologue [95// CHECK-NEXT: sub sp, sp, #1696// CHECK-NEXT: vpush {d8-d9}97// CHECK-NEXT: mov r11, sp98// CHECK-NEXT: push {r11, lr}99// CHECK-NEXT: ]100// CHECK-NEXT: Epilogue [101// CHECK-NEXT: add sp, sp, #16102// CHECK-NEXT: vpop {d8-d9}103// CHECK-NEXT: pop {r11, lr}104// CHECK-NEXT: bx <reg>105// CHECK-NEXT: ]106// CHECK-NEXT: }107// CHECK-NEXT: RuntimeFunction {108// CHECK-NEXT: Function: func11109// CHECK-NEXT: Fragment: No110// CHECK-NEXT: FunctionLength: 24111// CHECK-NEXT: ReturnType: pop {pc}112// CHECK-NEXT: HomedParameters: No113// CHECK-NEXT: Reg: 1114// CHECK-NEXT: R: 1115// CHECK-NEXT: LinkRegister: Yes116// CHECK-NEXT: Chaining: Yes117// CHECK-NEXT: StackAdjustment: 16118// CHECK-NEXT: Prologue [119// CHECK-NEXT: sub sp, sp, #16120// CHECK-NEXT: vpush {d8-d9}121// CHECK-NEXT: mov r11, sp122// CHECK-NEXT: push {r11, lr}123// CHECK-NEXT: ]124// CHECK-NEXT: Epilogue [125// CHECK-NEXT: add sp, sp, #16126// CHECK-NEXT: vpop {d8-d9}127// CHECK-NEXT: pop {r11, pc}128// CHECK-NEXT: ]129// CHECK-NEXT: }130// CHECK-NEXT: RuntimeFunction {131// CHECK-NEXT: Function: func12132// CHECK-NEXT: Fragment: No133// CHECK-NEXT: FunctionLength: 18134// CHECK-NEXT: ReturnType: b.w <target>135// CHECK-NEXT: HomedParameters: No136// CHECK-NEXT: Reg: 6137// CHECK-NEXT: R: 1138// CHECK-NEXT: LinkRegister: No139// CHECK-NEXT: Chaining: No140// CHECK-NEXT: StackAdjustment: 16141// CHECK-NEXT: Prologue [142// CHECK-NEXT: sub sp, sp, #16143// CHECK-NEXT: vpush {d8-d14}144// CHECK-NEXT: ]145// CHECK-NEXT: Epilogue [146// CHECK-NEXT: add sp, sp, #16147// CHECK-NEXT: vpop {d8-d14}148// CHECK-NEXT: b.w <target>149// CHECK-NEXT: ]150// CHECK-NEXT: }151// CHECK-NEXT: RuntimeFunction {152// CHECK-NEXT: Function: func13153// CHECK-NEXT: Fragment: No154// CHECK-NEXT: FunctionLength: 18155// CHECK-NEXT: ReturnType: pop {pc}156// CHECK-NEXT: HomedParameters: No157// CHECK-NEXT: Reg: 6158// CHECK-NEXT: R: 0159// CHECK-NEXT: LinkRegister: Yes160// CHECK-NEXT: Chaining: Yes161// CHECK-NEXT: StackAdjustment: 20162// CHECK-NEXT: Prologue [163// CHECK-NEXT: sub sp, sp, #20164// CHECK-NEXT: add.w r11, sp, #28165// CHECK-NEXT: push {r4-r11, lr}166// CHECK-NEXT: ]167// CHECK-NEXT: Epilogue [168// CHECK-NEXT: add sp, sp, #20169// CHECK-NEXT: pop {r4-r11, pc}170// CHECK-NEXT: ]171// CHECK-NEXT: }172// CHECK-NEXT: RuntimeFunction {173// CHECK-NEXT: Function: func14174// CHECK-NEXT: Fragment: No175// CHECK-NEXT: FunctionLength: 14176// CHECK-NEXT: ReturnType: pop {pc}177// CHECK-NEXT: HomedParameters: No178// CHECK-NEXT: Reg: 7179// CHECK-NEXT: R: 0180// CHECK-NEXT: LinkRegister: Yes181// CHECK-NEXT: Chaining: No182// CHECK-NEXT: StackAdjustment: 20183// CHECK-NEXT: Prologue [184// CHECK-NEXT: sub sp, sp, #20185// CHECK-NEXT: push {r4-r11, lr}186// CHECK-NEXT: ]187// CHECK-NEXT: Epilogue [188// CHECK-NEXT: add sp, sp, #20189// CHECK-NEXT: pop {r4-r11, pc}190// CHECK-NEXT: ]191// CHECK-NEXT: }192// CHECK-NEXT: RuntimeFunction {193// CHECK-NEXT: Function: func15194// CHECK-NEXT: Fragment: No195// CHECK-NEXT: FunctionLength: 20196// CHECK-NEXT: ReturnType: pop {pc}197// CHECK-NEXT: HomedParameters: Yes198// CHECK-NEXT: Reg: 0199// CHECK-NEXT: R: 0200// CHECK-NEXT: LinkRegister: Yes201// CHECK-NEXT: Chaining: No202// CHECK-NEXT: StackAdjustment: 512203// CHECK-NEXT: Prologue [204// CHECK-NEXT: sub sp, sp, #512205// CHECK-NEXT: push {r4, lr}206// CHECK-NEXT: push {r0-r3}207// CHECK-NEXT: ]208// CHECK-NEXT: Epilogue [209// CHECK-NEXT: add sp, sp, #512210// CHECK-NEXT: pop {r4}211// CHECK-NEXT: ldr pc, [sp], #20212// CHECK-NEXT: ]213// CHECK-NEXT: }214// CHECK-NEXT: RuntimeFunction {215// CHECK-NEXT: Function: func16216// CHECK-NEXT: Fragment: No217// CHECK-NEXT: FunctionLength: 20218// CHECK-NEXT: ReturnType: b.w <target>219// CHECK-NEXT: HomedParameters: Yes220// CHECK-NEXT: Reg: 7221// CHECK-NEXT: R: 1222// CHECK-NEXT: LinkRegister: Yes223// CHECK-NEXT: Chaining: Yes224// CHECK-NEXT: StackAdjustment: 0225// CHECK-NEXT: Prologue [226// CHECK-NEXT: mov r11, sp227// CHECK-NEXT: push {r11, lr}228// CHECK-NEXT: push {r0-r3}229// CHECK-NEXT: ]230// CHECK-NEXT: Epilogue [231// CHECK-NEXT: pop {r11, lr}232// CHECK-NEXT: add sp, sp, #16233// CHECK-NEXT: b.w <target>234// CHECK-NEXT: ]235// CHECK-NEXT: }236// CHECK-NEXT: RuntimeFunction {237// CHECK-NEXT: Function: func17238// CHECK-NEXT: Fragment: No239// CHECK-NEXT: FunctionLength: 20240// CHECK-NEXT: ReturnType: bx <reg>241// CHECK-NEXT: HomedParameters: Yes242// CHECK-NEXT: Reg: 0243// CHECK-NEXT: R: 0244// CHECK-NEXT: LinkRegister: No245// CHECK-NEXT: Chaining: No246// CHECK-NEXT: StackAdjustment: 512247// CHECK-NEXT: Prologue [248// CHECK-NEXT: sub sp, sp, #512249// CHECK-NEXT: push {r4}250// CHECK-NEXT: push {r0-r3}251// CHECK-NEXT: ]252// CHECK-NEXT: Epilogue [253// CHECK-NEXT: add sp, sp, #512254// CHECK-NEXT: pop {r4}255// CHECK-NEXT: add sp, sp, #16256// CHECK-NEXT: bx <reg>257// CHECK-NEXT: ]258// CHECK-NEXT: }259// CHECK-NEXT: RuntimeFunction {260// CHECK-NEXT: Function: func18261// CHECK-NEXT: Fragment: No262// CHECK-NEXT: FunctionLength: 6263// CHECK-NEXT: ReturnType: pop {pc}264// CHECK-NEXT: HomedParameters: No265// CHECK-NEXT: Reg: 7266// CHECK-NEXT: R: 1267// CHECK-NEXT: LinkRegister: Yes268// CHECK-NEXT: Chaining: No269// CHECK-NEXT: StackAdjustment: 4270// CHECK-NEXT: Prologue [271// CHECK-NEXT: push {r3, lr}272// CHECK-NEXT: ]273// CHECK-NEXT: Epilogue [274// CHECK-NEXT: pop {r3, pc}275// CHECK-NEXT: ]276// CHECK-NEXT: }277// CHECK-NEXT: RuntimeFunction {278// CHECK-NEXT: Function: func19279// CHECK-NEXT: Fragment: No280// CHECK-NEXT: FunctionLength: 12281// CHECK-NEXT: ReturnType: bx <reg>282// CHECK-NEXT: HomedParameters: Yes283// CHECK-NEXT: Reg: 0284// CHECK-NEXT: R: 0285// CHECK-NEXT: LinkRegister: No286// CHECK-NEXT: Chaining: No287// CHECK-NEXT: StackAdjustment: 16288// CHECK-NEXT: Prologue [289// CHECK-NEXT: push {r0-r4}290// CHECK-NEXT: push {r0-r3}291// CHECK-NEXT: ]292// CHECK-NEXT: Epilogue [293// CHECK-NEXT: pop {r0-r4}294// CHECK-NEXT: add sp, sp, #16295// CHECK-NEXT: bx <reg>296// CHECK-NEXT: ]297// CHECK-NEXT: }298// CHECK-NEXT: RuntimeFunction {299// CHECK-NEXT: Function: func20300// CHECK-NEXT: Fragment: No301// CHECK-NEXT: FunctionLength: 14302// CHECK-NEXT: ReturnType: bx <reg>303// CHECK-NEXT: HomedParameters: Yes304// CHECK-NEXT: Reg: 0305// CHECK-NEXT: R: 0306// CHECK-NEXT: LinkRegister: No307// CHECK-NEXT: Chaining: No308// CHECK-NEXT: StackAdjustment: 16309// CHECK-NEXT: Prologue [310// CHECK-NEXT: push {r0-r4}311// CHECK-NEXT: push {r0-r3}312// CHECK-NEXT: ]313// CHECK-NEXT: Epilogue [314// CHECK-NEXT: add sp, sp, #16315// CHECK-NEXT: pop {r4}316// CHECK-NEXT: add sp, sp, #16317// CHECK-NEXT: bx <reg>318// CHECK-NEXT: ]319// CHECK-NEXT: }320// CHECK-NEXT: RuntimeFunction {321// CHECK-NEXT: Function: func21322// CHECK-NEXT: Fragment: No323// CHECK-NEXT: FunctionLength: 14324// CHECK-NEXT: ReturnType: bx <reg>325// CHECK-NEXT: HomedParameters: Yes326// CHECK-NEXT: Reg: 0327// CHECK-NEXT: R: 0328// CHECK-NEXT: LinkRegister: No329// CHECK-NEXT: Chaining: No330// CHECK-NEXT: StackAdjustment: 16331// CHECK-NEXT: Prologue [332// CHECK-NEXT: sub sp, sp, #16333// CHECK-NEXT: push {r4}334// CHECK-NEXT: push {r0-r3}335// CHECK-NEXT: ]336// CHECK-NEXT: Epilogue [337// CHECK-NEXT: pop {r0-r4}338// CHECK-NEXT: add sp, sp, #16339// CHECK-NEXT: bx <reg>340// CHECK-NEXT: ]341// CHECK-NEXT: }342// CHECK-NEXT: RuntimeFunction {343// CHECK-NEXT: Function: func22344// CHECK-NEXT: Fragment: Yes345// CHECK-NEXT: FunctionLength: 14346// CHECK-NEXT: ReturnType: pop {pc}347// CHECK-NEXT: HomedParameters: Yes348// CHECK-NEXT: Reg: 0349// CHECK-NEXT: R: 0350// CHECK-NEXT: LinkRegister: Yes351// CHECK-NEXT: Chaining: No352// CHECK-NEXT: StackAdjustment: 512353// CHECK-NEXT: Prologue [354// CHECK-NEXT: sub sp, sp, #512355// CHECK-NEXT: push {r4, lr}356// CHECK-NEXT: push {r0-r3}357// CHECK-NEXT: ]358// CHECK-NEXT: Epilogue [359// CHECK-NEXT: add sp, sp, #512360// CHECK-NEXT: pop {r4}361// CHECK-NEXT: ldr pc, [sp], #20362// CHECK-NEXT: ]363// CHECK-NEXT: }364// CHECK-NEXT: RuntimeFunction {365// CHECK-NEXT: Function: func24366// CHECK-NEXT: Fragment: No367// CHECK-NEXT: FunctionLength: 16368// CHECK-NEXT: ReturnType: pop {pc}369// CHECK-NEXT: HomedParameters: No370// CHECK-NEXT: Reg: 3371// CHECK-NEXT: R: 0372// CHECK-NEXT: LinkRegister: Yes373// CHECK-NEXT: Chaining: Yes374// CHECK-NEXT: StackAdjustment: 8375// CHECK-NEXT: Prologue [376// CHECK-NEXT: add.w r11, sp, #24377// CHECK-NEXT: push {r2-r7, r11, lr}378// CHECK-NEXT: ]379// CHECK-NEXT: Epilogue [380// CHECK-NEXT: add sp, sp, #8381// CHECK-NEXT: pop {r4-r7, r11, pc}382// CHECK-NEXT: ]383// CHECK-NEXT: }384// CHECK-NEXT: RuntimeFunction {385// CHECK-NEXT: Function: func25386// CHECK-NEXT: Fragment: No387// CHECK-NEXT: FunctionLength: 16388// CHECK-NEXT: ReturnType: pop {pc}389// CHECK-NEXT: HomedParameters: No390// CHECK-NEXT: Reg: 3391// CHECK-NEXT: R: 0392// CHECK-NEXT: LinkRegister: Yes393// CHECK-NEXT: Chaining: Yes394// CHECK-NEXT: StackAdjustment: 8395// CHECK-NEXT: Prologue [396// CHECK-NEXT: sub sp, sp, #8397// CHECK-NEXT: add.w r11, sp, #16398// CHECK-NEXT: push {r4-r7, r11, lr}399// CHECK-NEXT: ]400// CHECK-NEXT: Epilogue [401// CHECK-NEXT: pop {r2-r7, r11, pc}402// CHECK-NEXT: ]403// CHECK-NEXT: }404// CHECK-NEXT: RuntimeFunction {405// CHECK-NEXT: Function: func26406// CHECK-NEXT: Fragment: No407// CHECK-NEXT: FunctionLength: 8408// CHECK-NEXT: ReturnType: bx <reg>409// CHECK-NEXT: HomedParameters: No410// CHECK-NEXT: Reg: 7411// CHECK-NEXT: R: 1412// CHECK-NEXT: LinkRegister: No413// CHECK-NEXT: Chaining: No414// CHECK-NEXT: StackAdjustment: 12415// CHECK-NEXT: Prologue [416// CHECK-NEXT: push {r1-r3}417// CHECK-NEXT: ]418// CHECK-NEXT: Epilogue [419// CHECK-NEXT: add sp, sp, #12420// CHECK-NEXT: bx <reg>421// CHECK-NEXT: ]422// CHECK-NEXT: }423// CHECK-NEXT: RuntimeFunction {424// CHECK-NEXT: Function: func27425// CHECK-NEXT: Fragment: No426// CHECK-NEXT: FunctionLength: 8427// CHECK-NEXT: ReturnType: bx <reg>428// CHECK-NEXT: HomedParameters: No429// CHECK-NEXT: Reg: 7430// CHECK-NEXT: R: 1431// CHECK-NEXT: LinkRegister: No432// CHECK-NEXT: Chaining: No433// CHECK-NEXT: StackAdjustment: 12434// CHECK-NEXT: Prologue [435// CHECK-NEXT: sub sp, sp, #12436// CHECK-NEXT: ]437// CHECK-NEXT: Epilogue [438// CHECK-NEXT: pop {r1-r3}439// CHECK-NEXT: bx <reg>440// CHECK-NEXT: ]441// CHECK-NEXT: }442// CHECK-NEXT: RuntimeFunction {443// CHECK-NEXT: Function: func28444// CHECK-NEXT: Fragment: No445// CHECK-NEXT: FunctionLength: 8446// CHECK-NEXT: ReturnType: bx <reg>447// CHECK-NEXT: HomedParameters: Yes448// CHECK-NEXT: Reg: 7449// CHECK-NEXT: R: 1450// CHECK-NEXT: LinkRegister: No451// CHECK-NEXT: Chaining: No452// CHECK-NEXT: StackAdjustment: 0453// CHECK-NEXT: Prologue [454// CHECK-NEXT: push {r0-r3}455// CHECK-NEXT: ]456// CHECK-NEXT: Epilogue [457// CHECK-NEXT: add sp, sp, #16458// CHECK-NEXT: bx <reg>459// CHECK-NEXT: ]460// CHECK-NEXT: }461// CHECK-NEXT: RuntimeFunction {462// CHECK-NEXT: Function: func29463// CHECK-NEXT: Fragment: No464// CHECK-NEXT: FunctionLength: 10465// CHECK-NEXT: ReturnType: pop {pc}466// CHECK-NEXT: HomedParameters: Yes467// CHECK-NEXT: Reg: 7468// CHECK-NEXT: R: 1469// CHECK-NEXT: LinkRegister: Yes470// CHECK-NEXT: Chaining: No471// CHECK-NEXT: StackAdjustment: 0472// CHECK-NEXT: Prologue [473// CHECK-NEXT: push {lr}474// CHECK-NEXT: push {r0-r3}475// CHECK-NEXT: ]476// CHECK-NEXT: Epilogue [477// CHECK-NEXT: ldr pc, [sp], #20478// CHECK-NEXT: ]479// CHECK-NEXT: }480// CHECK-NEXT: RuntimeFunction {481// CHECK-NEXT: Function: func30482// CHECK-NEXT: Fragment: No483// CHECK-NEXT: FunctionLength: 6484// CHECK-NEXT: ReturnType: pop {pc}485// CHECK-NEXT: HomedParameters: No486// CHECK-NEXT: Reg: 2487// CHECK-NEXT: R: 0488// CHECK-NEXT: LinkRegister: Yes489// CHECK-NEXT: Chaining: No490// CHECK-NEXT: StackAdjustment: 0491// CHECK-NEXT: Prologue [492// CHECK-NEXT: push {r4-r6, lr}493// CHECK-NEXT: ]494// CHECK-NEXT: Epilogue [495// CHECK-NEXT: pop {r4-r6, pc}496// CHECK-NEXT: ]497// CHECK-NEXT: }498// CHECK-NEXT: RuntimeFunction {499// CHECK-NEXT: Function: func31500// CHECK-NEXT: Fragment: No501// CHECK-NEXT: FunctionLength: 4502// CHECK-NEXT: ReturnType: (no epilogue)503// CHECK-NEXT: HomedParameters: No504// CHECK-NEXT: Reg: 2505// CHECK-NEXT: R: 0506// CHECK-NEXT: LinkRegister: Yes507// CHECK-NEXT: Chaining: No508// CHECK-NEXT: StackAdjustment: 0509// CHECK-NEXT: Prologue [510// CHECK-NEXT: push {r4-r6, lr}511// CHECK-NEXT: ]512// CHECK-NEXT: }513 514// CHECK: Function: notpacked1515// CHECK-NEXT: ExceptionRecord:516// CHECK: Function: notpacked2517// CHECK-NEXT: ExceptionRecord:518// CHECK: Function: notpacked3519// CHECK-NEXT: ExceptionRecord:520// CHECK: Function: notpacked4521// CHECK-NEXT: ExceptionRecord:522// CHECK: Function: notpacked5523// CHECK-NEXT: ExceptionRecord:524// CHECK: Function: notpacked6525// CHECK-NEXT: ExceptionRecord:526// CHECK: Function: notpacked7527// CHECK-NEXT: ExceptionRecord:528// CHECK: Function: notpacked8529// CHECK-NEXT: ExceptionRecord:530// CHECK: Function: notpacked9531// CHECK-NEXT: ExceptionRecord:532 533 .text534 .syntax unified535 536 .seh_proc func6537func6:538 .seh_endprologue539 nop540 nop541 nop542 .seh_startepilogue543 bx lr544 .seh_nop545 .seh_endepilogue546 .seh_endproc547 548 .seh_proc func7549func7:550 push {r4}551 .seh_save_regs {r4}552 .seh_endprologue553 nop554 .seh_startepilogue555 pop {r4}556 .seh_save_regs {r4}557 bx lr558 .seh_nop559 .seh_endepilogue560 .seh_endproc561 562 .seh_proc func8563func8:564 push {r4,lr}565 .seh_save_regs {r4,lr}566 .seh_endprologue567 nop568 .seh_startepilogue569 pop.w {r4,lr}570 .seh_save_regs_w {r4,lr}571 bx lr572 .seh_nop573 .seh_endepilogue574 .seh_endproc575 576 .seh_proc func9577func9:578 push {lr}579 .seh_save_regs {lr}580 vpush {d8}581 .seh_save_fregs {d8}582 sub sp, sp, #32583 .seh_stackalloc 32584 .seh_endprologue585 nop586 .seh_startepilogue587 add sp, sp, #32588 .seh_stackalloc 32589 vpop {d8}590 .seh_save_fregs {d8}591 pop.w {lr}592 .seh_save_regs_w {lr}593 b.w tailcall594 .seh_nop_w595 .seh_endepilogue596 .seh_endproc597 598 .seh_proc func10599func10:600 push.w {r11,lr}601 .seh_save_regs_w {r11,lr}602 mov r11, sp603 .seh_nop604 vpush {d8-d9}605 .seh_save_fregs {d8-d9}606 sub sp, sp, #16607 .seh_stackalloc 16608 .seh_endprologue609 nop610 .seh_startepilogue611 add sp, sp, #16612 .seh_stackalloc 16613 vpop {d8-d9}614 .seh_save_fregs {d8-d9}615 pop.w {r11,lr}616 .seh_save_regs_w {r11,lr}617 bx lr618 .seh_nop619 .seh_endepilogue620 .seh_endproc621 622 .seh_proc func11623func11:624 push.w {r11,lr}625 .seh_save_regs_w {r11,lr}626 mov r11, sp627 .seh_nop628 vpush {d8-d9}629 .seh_save_fregs {d8-d9}630 sub sp, sp, #16631 .seh_stackalloc 16632 .seh_endprologue633 nop634 .seh_startepilogue635 add sp, sp, #16636 .seh_stackalloc 16637 vpop {d8-d9}638 .seh_save_fregs {d8-d9}639 pop.w {r11,pc}640 .seh_save_regs_w {r11,pc}641 .seh_endepilogue642 .seh_endproc643 644 .seh_proc func12645func12:646 vpush {d8-d14}647 .seh_save_fregs {d8-d14}648 sub sp, sp, #16649 .seh_stackalloc 16650 .seh_endprologue651 nop652 .seh_startepilogue653 add sp, sp, #16654 .seh_stackalloc 16655 vpop {d8-d14}656 .seh_save_fregs {d8-d14}657 b.w tailcall658 .seh_nop_w659 .seh_endepilogue660 .seh_endproc661 662 .seh_proc func13663func13:664 push.w {r4-r11,lr}665 .seh_save_regs_w {r4-r11,lr}666 add.w r11, sp, #0x1c667 .seh_nop_w668 sub sp, sp, #20669 .seh_stackalloc 20670 .seh_endprologue671 nop672 .seh_startepilogue673 add sp, sp, #20674 .seh_stackalloc 20675 pop.w {r4-r11,pc}676 .seh_save_regs_w {r4-r11,lr}677 .seh_endepilogue678 .seh_endproc679 680 .seh_proc func14681func14:682 push.w {r4-r11,lr}683 .seh_save_regs_w {r4-r11,lr}684 sub sp, sp, #20685 .seh_stackalloc 20686 .seh_endprologue687 nop688 .seh_startepilogue689 add sp, sp, #20690 .seh_stackalloc 20691 pop.w {r4-r11,pc}692 .seh_save_regs_w {r4-r11,lr}693 .seh_endepilogue694 .seh_endproc695 696 .seh_proc func15697func15:698 push {r0-r3}699 .seh_save_regs {r0-r3}700 push {r4,lr}701 .seh_save_regs {r4,lr}702 sub.w sp, sp, #512703 .seh_stackalloc_w 512704 .seh_endprologue705 nop706 .seh_startepilogue707 add.w sp, sp, #512708 .seh_stackalloc_w 512709 pop {r4}710 .seh_save_regs {r4}711 ldr pc, [sp], #20712 .seh_save_lr 20713 .seh_endepilogue714 .seh_endproc715 716 .seh_proc func16717func16:718 push {r0-r3}719 .seh_save_regs {r0-r3}720 push.w {r11,lr}721 .seh_save_regs_w {r11,lr}722 mov r11, sp723 .seh_nop724 .seh_endprologue725 nop726 .seh_startepilogue727 pop.w {r11, lr}728 .seh_save_regs_w {r11,lr}729 add sp, sp, #16730 .seh_stackalloc 16731 b.w tailcall732 .seh_nop_w733 .seh_endepilogue734 .seh_endproc735 736 .seh_proc func17737func17:738 push {r0-r3}739 .seh_save_regs {r0-r3}740 push {r4}741 .seh_save_regs {r4}742 sub.w sp, sp, #512743 .seh_stackalloc_w 512744 .seh_endprologue745 nop746 .seh_startepilogue747 add.w sp, sp, #512748 .seh_stackalloc_w 512749 pop {r4}750 .seh_save_regs {r4}751 add sp, sp, #16752 .seh_stackalloc 16753 bx lr754 .seh_nop755 .seh_endepilogue756 .seh_endproc757 758 .seh_proc func18759func18:760 push {r3,lr}761 .seh_save_regs {r3,lr}762 .seh_endprologue763 nop764 .seh_startepilogue765 pop {r3,pc}766 .seh_save_regs {r3,pc}767 .seh_endepilogue768 .seh_endproc769 770 .seh_proc func19771func19:772 push {r0-r3}773 .seh_save_regs {r0-r3}774 push {r0-r4}775 .seh_save_regs {r0-r4}776 .seh_endprologue777 nop778 .seh_startepilogue779 pop {r0-r4}780 .seh_save_regs {r0-r4}781 add sp, sp, #16782 .seh_stackalloc 16783 bx lr784 .seh_nop785 .seh_endepilogue786 .seh_endproc787 788 .seh_proc func20789func20:790 push {r0-r3}791 .seh_save_regs {r0-r3}792 push {r0-r4}793 .seh_save_regs {r0-r4}794 .seh_endprologue795 nop796 .seh_startepilogue797 add sp, sp, #16798 .seh_stackalloc 16799 pop {r4}800 .seh_save_regs {r4}801 add sp, sp, #16802 .seh_stackalloc 16803 bx lr804 .seh_nop805 .seh_endepilogue806 .seh_endproc807 808 .seh_proc func21809func21:810 push {r0-r3}811 .seh_save_regs {r0-r3}812 push {r4}813 .seh_save_regs {r4}814 sub sp, sp, #16815 .seh_stackalloc 16816 .seh_endprologue817 nop818 .seh_startepilogue819 pop {r0-r4}820 .seh_save_regs {r0-r4}821 add sp, sp, #16822 .seh_stackalloc 16823 bx lr824 .seh_nop825 .seh_endepilogue826 .seh_endproc827 828 .seh_proc func22829func22:830 .seh_save_regs {r0-r3}831 .seh_save_regs {r4,lr}832 .seh_stackalloc_w 512833 .seh_endprologue_fragment834 nop835 nop836 .seh_startepilogue837 add.w sp, sp, #512838 .seh_stackalloc_w 512839 pop {r4}840 .seh_save_regs {r4}841 ldr pc, [sp], #20842 .seh_save_lr 20843 .seh_endepilogue844 .seh_endproc845 846 .seh_proc func24847func24:848 push.w {r2-r7,r11,lr}849 .seh_save_regs_w {r2-r7,r11,lr}850 add.w r11, sp, #24851 .seh_nop_w852 .seh_endprologue853 nop854 .seh_startepilogue855 add sp, sp, #8856 .seh_stackalloc 8857 pop.w {r4-r7,r11,pc}858 .seh_save_regs_w {r4-r7,r11,pc}859 .seh_endepilogue860 .seh_endproc861 862 .seh_proc func25863func25:864 push.w {r4-r7,r11,lr}865 .seh_save_regs_w {r4-r7,r11,lr}866 add.w r11, sp, #16867 .seh_nop_w868 sub sp, sp, #8869 .seh_stackalloc 8870 .seh_endprologue871 nop872 .seh_startepilogue873 pop.w {r2-r7,r11,pc}874 .seh_save_regs_w {r2-r7,r11,pc}875 .seh_endepilogue876 .seh_endproc877 878 .seh_proc func26879func26:880 push {r1-r3}881 .seh_save_regs {r1-r3}882 .seh_endprologue883 nop884 .seh_startepilogue885 add sp, sp, #12886 .seh_stackalloc 12887 bx lr888 .seh_nop889 .seh_endepilogue890 .seh_endproc891 892 .seh_proc func27893func27:894 sub sp, sp, #12895 .seh_stackalloc 12896 .seh_endprologue897 nop898 .seh_startepilogue899 pop {r1-r3}900 .seh_save_regs {r1-r3}901 bx lr902 .seh_nop903 .seh_endepilogue904 .seh_endproc905 906 .seh_proc func28907func28:908 push {r0-r3}909 .seh_save_regs {r0-r3}910 .seh_endprologue911 nop912 .seh_startepilogue913 add sp, sp, #16914 .seh_stackalloc 16915 bx lr916 .seh_nop917 .seh_endepilogue918 .seh_endproc919 920 .seh_proc func29921func29:922 push {r0-r3}923 .seh_save_regs {r0-r3}924 push {lr}925 .seh_save_regs {lr}926 .seh_endprologue927 nop928 .seh_startepilogue929 ldr pc, [sp], #20930 .seh_save_lr 20931 .seh_endepilogue932 .seh_endproc933 934 .seh_proc func30935func30:936 push {r4-r6,lr}937 .seh_save_regs {r4-r6,lr}938 .seh_endprologue939 nop940 .seh_startepilogue941 pop {r4-r6,pc}942 .seh_save_regs {r4-r6,pc}943 .seh_endepilogue944 .seh_endproc945 946 .seh_proc func31947func31:948 push {r4-r6,lr}949 .seh_save_regs {r4-r6,lr}950 .seh_endprologue951 nop952 .seh_endproc953 954 .seh_proc notpacked1955notpacked1:956 push {r1-r3}957 .seh_save_regs {r1-r3}958 .seh_endprologue959 nop960 .seh_startepilogue961 // Mismatch with the folded prologue962 add sp, sp, #8963 .seh_stackalloc 8964 bx lr965 .seh_nop966 .seh_endepilogue967 .seh_endproc968 969 .seh_proc notpacked2970notpacked2:971 sub sp, sp, #8972 .seh_stackalloc 8973 .seh_endprologue974 nop975 .seh_startepilogue976 // Folded epilogue is a mismatch to the regular stack adjust in the prologue977 pop {r1-r3}978 .seh_save_regs {r1-r3}979 bx lr980 .seh_nop981 .seh_endepilogue982 .seh_endproc983 984 .seh_proc notpacked3985notpacked3:986 // Can't represent d8-d15 in the packed form987 vpush {d8-d15}988 .seh_save_fregs {d8-d15}989 .seh_endprologue990 nop991 .seh_startepilogue992 vpop {d8-d15}993 .seh_save_fregs {d8-d15}994 bx lr995 .seh_nop996 .seh_endepilogue997 .seh_endproc998 999 .seh_proc notpacked41000notpacked4:1001 push {r2-r7}1002 .seh_save_regs {r2-r7}1003 sub sp, sp, #161004 .seh_stackalloc 161005 // Can't have both a folded stack adjustment and a separate one1006 .seh_endprologue1007 nop1008 .seh_startepilogue1009 add sp, sp, #161010 .seh_stackalloc 161011 pop {r2-r7}1012 .seh_save_regs {r2-r7}1013 bx lr1014 .seh_nop1015 .seh_endepilogue1016 .seh_endproc1017 1018 .seh_proc notpacked51019notpacked5:1020 // Can't represent r11 in packed form when it's not contiguous1021 // with the rest and when it's not chained (missing "add.w r11, sp, #.."1022 // and .seh_nop_w).1023 push.w {r4-r7,r11,lr}1024 .seh_save_regs_w {r4-r7,r11,lr}1025 sub sp, sp, #81026 .seh_stackalloc 81027 .seh_endprologue1028 nop1029 .seh_startepilogue1030 pop.w {r2-r7,r11,pc}1031 .seh_save_regs_w {r2-r7,r11,pc}1032 .seh_endepilogue1033 .seh_endproc1034 1035 .seh_proc notpacked61036notpacked6:1037 // Can't pack non-contiguous registers1038 push {r4,r7}1039 .seh_save_regs {r4,r7}1040 .seh_endprologue1041 nop1042 .seh_startepilogue1043 pop {r4,r7}1044 .seh_save_regs {r4,r7}1045 bx lr1046 .seh_nop1047 .seh_endepilogue1048 .seh_endproc1049 1050 .seh_proc notpacked71051notpacked7:1052 // Can't pack float registers ouside of d8-d141053 vpush {d0-d3}1054 .seh_save_fregs {d0-d3}1055 .seh_endprologue1056 nop1057 .seh_startepilogue1058 vpop {d0-d3}1059 .seh_save_fregs {d0-d3}1060 bx lr1061 .seh_nop1062 .seh_endepilogue1063 .seh_endproc1064 1065 .seh_proc notpacked81066notpacked8:1067 push {r4-r7,lr}1068 .seh_save_regs {r4-r7,lr}1069 .seh_endprologue1070 nop1071 .seh_startepilogue1072 pop {r4-r7,pc}1073 .seh_save_regs {r4-r7,pc}1074 .seh_endepilogue1075 // Epilogue isn't at the end of the function; can't be packed.1076 nop1077 .seh_endproc1078 1079 .seh_proc notpacked91080notpacked9:1081 push {r4-r7,lr}1082 .seh_save_regs {r4-r7,lr}1083 .seh_endprologue1084 nop1085 .seh_startepilogue1086 pop {r4-r7,pc}1087 .seh_save_regs {r4-r7,pc}1088 .seh_endepilogue1089 // Multiple epilogues, can't be packed1090 nop1091 .seh_startepilogue1092 pop {r4-r7,pc}1093 .seh_save_regs {r4-r7,pc}1094 .seh_endepilogue1095 .seh_endproc1096