From 9c93dd29bcee6299ab5c9ae42b5d187c6bb15be9 Mon Sep 17 00:00:00 2001 From: ens-sc Date: Mon, 11 Nov 2024 12:18:55 +0300 Subject: [PATCH 1/5] [llvm] Set ScalableVector stack id in proper place Without this patch ScalableVector frame index property is used before assignment. More precisely, let's take a look at RISCVFrameLowering::assignCalleeSavedSpillSlots. In this function we divide callee saved registers on scalar and vector ones, based on ScalableVector property of their frame indexes: ``` ... const auto &UnmanagedCSI = getUnmanagedCSI(*MF, CSI); const auto &RVVCSI = getRVVCalleeSavedInfo(*MF, CSI); ... ``` But we assign ScalableVector property several lines below: ``` ... auto storeRegToStackSlot = [&](decltype(UnmanagedCSI) CSInfo) { for (auto &CS : CSInfo) { // Insert the spill to the stack frame. Register Reg = CS.getReg(); const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(Reg); TII.storeRegToStackSlot(MBB, MI, Reg, !MBB.isLiveIn(Reg), CS.getFrameIdx(), RC, TRI, Register()); } }; storeRegToStackSlot(UnmanagedCSI); ... ``` Due to it, list of RVV callee saved registers will always be empty. Currently this problem doesn't appear, but if you slightly change the code and, for example, put some instructions between scalar and vector spills, the resulting code will be ill formed. --- llvm/lib/Target/RISCV/RISCVFrameLowering.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp index deb0b627225c6..0de1f1d821a6e 100644 --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp @@ -1607,6 +1607,8 @@ bool RISCVFrameLowering::assignCalleeSavedSpillSlots( int FrameIdx = MFI.CreateFixedSpillStackObject(Size, Offset); assert(FrameIdx < 0); CS.setFrameIdx(FrameIdx); + if (RISCVRegisterInfo::isRVVRegClass(RC)) + MFI.setStackID(FrameIdx, TargetStackID::ScalableVector); continue; } } @@ -1623,6 +1625,8 @@ bool RISCVFrameLowering::assignCalleeSavedSpillSlots( if ((unsigned)FrameIdx > MaxCSFrameIndex) MaxCSFrameIndex = FrameIdx; CS.setFrameIdx(FrameIdx); + if (RISCVRegisterInfo::isRVVRegClass(RC)) + MFI.setStackID(FrameIdx, TargetStackID::ScalableVector); } // Allocate a fixed object that covers the full push or libcall size. From 2230ab12bc73c7ca25ee29cc071164f2752c5bb7 Mon Sep 17 00:00:00 2001 From: ens-sc Date: Mon, 16 Sep 2024 14:10:46 +0300 Subject: [PATCH 2/5] [llvm] Add NCD search on Array of basic blocks --- llvm/include/llvm/CodeGen/MachineDominators.h | 5 +++++ llvm/lib/CodeGen/MachineDominators.cpp | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/llvm/include/llvm/CodeGen/MachineDominators.h b/llvm/include/llvm/CodeGen/MachineDominators.h index 74cf94398736d..88800d91ef51a 100644 --- a/llvm/include/llvm/CodeGen/MachineDominators.h +++ b/llvm/include/llvm/CodeGen/MachineDominators.h @@ -185,6 +185,11 @@ class MachineDominatorTree : public DomTreeBase { return Base::findNearestCommonDominator(A, B); } + /// Returns the nearest common dominator of the given blocks. + /// If that tree node is a virtual root, a nullptr will be returned. + MachineBasicBlock * + findNearestCommonDominator(ArrayRef Blocks) const; + MachineDomTreeNode *operator[](MachineBasicBlock *BB) const { applySplitCriticalEdges(); return Base::getNode(BB); diff --git a/llvm/lib/CodeGen/MachineDominators.cpp b/llvm/lib/CodeGen/MachineDominators.cpp index a2cc8fdfa7c9f..384f90c6da66c 100644 --- a/llvm/lib/CodeGen/MachineDominators.cpp +++ b/llvm/lib/CodeGen/MachineDominators.cpp @@ -189,3 +189,19 @@ void MachineDominatorTree::applySplitCriticalEdges() const { NewBBs.clear(); CriticalEdgesToSplit.clear(); } + +MachineBasicBlock *MachineDominatorTree::findNearestCommonDominator( + ArrayRef Blocks) const { + assert(!Blocks.empty()); + + MachineBasicBlock *NCD = Blocks.front(); + for (MachineBasicBlock *BB : Blocks.drop_front()) { + NCD = Base::findNearestCommonDominator(NCD, BB); + + // Stop when the root is reached. + if (Base::isVirtualRoot(Base::getNode(NCD))) + return nullptr; + } + + return NCD; +} From 5bc9d8bbeb2565832bb2b99a9ed50c9119bd299a Mon Sep 17 00:00:00 2001 From: ens-sc Date: Mon, 22 Apr 2024 14:50:17 +0300 Subject: [PATCH 3/5] [llvm] support multiple save/restore points in mir Currently mir supports only one save and one restore point specification: ``` savePoint: '%bb.1' restorePoint: '%bb.2' ``` This patch provide possibility to have multiple save and multiple restore points in mir: ``` savePoints: - point: '%bb.1' restorePoints: - point: '%bb.2' ``` --- llvm/include/llvm/CodeGen/MIRYamlMapping.h | 39 +- llvm/lib/CodeGen/MIRParser/MIRParser.cpp | 43 ++- llvm/lib/CodeGen/MIRPrinter.cpp | 26 +- .../GlobalISel/store-merging-debug.mir | 4 +- .../aarch64-ldst-no-premature-sp-pop.mir | 4 +- .../AArch64/aarch64-mov-debug-locs.mir | 4 +- llvm/test/CodeGen/AArch64/aarch64st1.mir | 4 +- .../cfi-fixup-multi-block-prologue.mir | 4 +- .../AArch64/cfi-fixup-multi-section.mir | 4 +- llvm/test/CodeGen/AArch64/cfi-fixup.mir | 12 +- .../dont-shrink-wrap-stack-mayloadorstore.mir | 20 +- .../AArch64/early-ifcvt-regclass-mismatch.mir | 4 +- .../emit_fneg_with_non_register_operand.mir | 4 +- llvm/test/CodeGen/AArch64/irg-nomem.mir | 4 +- .../CodeGen/AArch64/jump-table-duplicate.mir | 4 +- .../AArch64/ldst-nopreidx-sp-redzone.mir | 12 +- .../CodeGen/AArch64/live-debugvalues-sve.mir | 6 +- llvm/test/CodeGen/AArch64/loop-sink-limit.mir | 4 +- llvm/test/CodeGen/AArch64/loop-sink.mir | 32 +- .../AArch64/machine-latecleanup-inlineasm.mir | 4 +- .../CodeGen/AArch64/nested-iv-regalloc.mir | 4 +- ...egalloc-last-chance-recolor-with-split.mir | 4 +- .../shrinkwrap-split-restore-point.mir | 4 +- .../AArch64/sink-and-fold-drop-dbg.mir | 4 +- .../AArch64/sink-and-fold-illegal-shift.mir | 4 +- .../sink-and-fold-preserve-debugloc.mir | 8 +- llvm/test/CodeGen/AArch64/split-deadloop.mir | 4 +- .../AArch64/stack-probing-last-in-block.mir | 4 +- .../AArch64/tail-dup-redundant-phi.mir | 4 +- .../CodeGen/AArch64/taildup-addrtaken.mir | 4 +- .../AArch64/wineh-frame-predecrement.mir | 4 +- .../CodeGen/AArch64/wineh-frame-scavenge.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame1.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame2.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame3.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame4.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame5.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame6.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame7.mir | 4 +- llvm/test/CodeGen/AArch64/wineh-frame8.mir | 4 +- .../CodeGen/AArch64/wineh-save-lrpair1.mir | 4 +- .../CodeGen/AArch64/wineh-save-lrpair2.mir | 4 +- .../CodeGen/AArch64/wineh-save-lrpair3.mir | 4 +- llvm/test/CodeGen/AArch64/wineh2.mir | 4 +- llvm/test/CodeGen/AArch64/wineh3.mir | 4 +- llvm/test/CodeGen/AArch64/wineh4.mir | 4 +- llvm/test/CodeGen/AArch64/wineh5.mir | 4 +- llvm/test/CodeGen/AArch64/wineh6.mir | 4 +- llvm/test/CodeGen/AArch64/wineh7.mir | 4 +- llvm/test/CodeGen/AArch64/wineh8.mir | 4 +- llvm/test/CodeGen/AArch64/wineh9.mir | 4 +- .../test/CodeGen/AArch64/wineh_shrinkwrap.mir | 4 +- ...er-multiple-mem-operands-nontemporal-1.mir | 4 +- ...er-multiple-mem-operands-nontemporal-2.mir | 4 +- .../CodeGen/ARM/cmse-vlldm-no-reorder.mir | 4 +- llvm/test/CodeGen/ARM/codesize-ifcvt.mir | 12 +- .../CodeGen/ARM/constant-island-movwt.mir | 4 +- .../test/CodeGen/ARM/constant-islands-cfg.mir | 4 +- .../CodeGen/ARM/constant-islands-split-IT.mir | 4 +- .../CodeGen/ARM/execute-only-save-cpsr.mir | 16 +- llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir | 4 +- llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir | 4 +- llvm/test/CodeGen/ARM/inlineasmbr-if-cvt.mir | 4 +- .../CodeGen/ARM/invalidated-save-point.ll | 4 +- .../test/CodeGen/ARM/jump-table-dbg-value.mir | 4 +- llvm/test/CodeGen/ARM/stack_frame_offset.mir | 12 +- .../CodeGen/Hexagon/cext-opt-block-addr.mir | 8 +- .../CodeGen/Hexagon/early-if-predicator.mir | 4 +- .../Hexagon/machine-sink-float-usr.mir | 8 +- .../Hexagon/pipeliner/swp-phi-start.mir | 4 +- .../test/CodeGen/MIR/ARM/thumb2-sub-sp-t3.mir | 4 +- llvm/test/CodeGen/MIR/Generic/frame-info.mir | 4 +- .../MIR/Hexagon/addrmode-opt-nonreaching.mir | 4 +- .../MIR/RISCV/machine-function-info.mir | 4 +- .../MIR/X86/branch-folder-with-label.mir | 12 +- llvm/test/CodeGen/MIR/X86/diexpr-win32.mir | 8 +- .../CodeGen/MIR/X86/fake-use-tailcall.mir | 4 +- .../X86/frame-info-save-restore-points.mir | 12 +- .../MIR/X86/inline-asm-rm-exhaustion.mir | 12 +- ...elay-slot-filler-bundled-insts-def-use.mir | 4 +- .../Mips/delay-slot-filler-bundled-insts.mir | 4 +- .../guards-verify-call.mir | 4 +- .../guards-verify-tailcall.mir | 4 +- .../test/CodeGen/Mips/instverify/dext-pos.mir | 4 +- .../CodeGen/Mips/instverify/dext-size.mir | 4 +- .../Mips/instverify/dextm-pos-size.mir | 4 +- .../CodeGen/Mips/instverify/dextm-pos.mir | 4 +- .../CodeGen/Mips/instverify/dextm-size.mir | 4 +- .../Mips/instverify/dextu-pos-size.mir | 4 +- .../CodeGen/Mips/instverify/dextu-pos.mir | 4 +- .../Mips/instverify/dextu-size-valid.mir | 4 +- .../CodeGen/Mips/instverify/dextu-size.mir | 4 +- .../CodeGen/Mips/instverify/dins-pos-size.mir | 4 +- .../test/CodeGen/Mips/instverify/dins-pos.mir | 4 +- .../CodeGen/Mips/instverify/dins-size.mir | 4 +- .../Mips/instverify/dinsm-pos-size.mir | 4 +- .../CodeGen/Mips/instverify/dinsm-pos.mir | 4 +- .../CodeGen/Mips/instverify/dinsm-size.mir | 4 +- .../Mips/instverify/dinsu-pos-size.mir | 4 +- .../CodeGen/Mips/instverify/dinsu-pos.mir | 4 +- .../CodeGen/Mips/instverify/dinsu-size.mir | 4 +- .../CodeGen/Mips/instverify/ext-pos-size.mir | 4 +- llvm/test/CodeGen/Mips/instverify/ext-pos.mir | 4 +- .../test/CodeGen/Mips/instverify/ext-size.mir | 4 +- .../CodeGen/Mips/instverify/ins-pos-size.mir | 4 +- llvm/test/CodeGen/Mips/instverify/ins-pos.mir | 4 +- .../test/CodeGen/Mips/instverify/ins-size.mir | 4 +- .../longbranch/branch-limits-fp-micromips.mir | 8 +- .../branch-limits-fp-micromipsr6.mir | 8 +- .../Mips/longbranch/branch-limits-fp-mips.mir | 8 +- .../longbranch/branch-limits-fp-mipsr6.mir | 8 +- .../branch-limits-int-microMIPS.mir | 32 +- .../branch-limits-int-micromipsr6.mir | 48 +-- .../longbranch/branch-limits-int-mips64.mir | 24 +- .../longbranch/branch-limits-int-mips64r6.mir | 48 +-- .../longbranch/branch-limits-int-mipsr6.mir | 48 +-- .../Mips/longbranch/branch-limits-int.mir | 24 +- .../Mips/longbranch/branch-limits-msa.mir | 40 +- llvm/test/CodeGen/Mips/micromips-eva.mir | 8 +- .../Mips/micromips-short-delay-slot.mir | 4 +- .../micromips-lwp-swp.mir | 16 +- .../micromips-no-lwp-swp.mir | 16 +- .../mirparser/target-flags-pic-mxgot-tls.mir | 4 +- .../Mips/mirparser/target-flags-pic-o32.mir | 4 +- .../Mips/mirparser/target-flags-pic.mir | 4 +- .../mirparser/target-flags-static-tls.mir | 4 +- .../test/CodeGen/Mips/msa/emergency-spill.mir | 4 +- .../Mips/sll-micromips-r6-encoding.mir | 4 +- .../CodeGen/Mips/unaligned-memops-mapping.mir | 8 +- llvm/test/CodeGen/NVPTX/proxy-reg-erasure.mir | 4 +- ...HoistingDueToBlockHotnessNoProfileData.mir | 4 +- ...leHoistingDueToBlockHotnessProfileData.mir | 4 +- .../NoCRFieldRedefWhenSpillingCRBIT.mir | 4 +- .../CodeGen/PowerPC/alignlongjumptest.mir | 4 +- .../CodeGen/PowerPC/block-placement-1.mir | 8 +- llvm/test/CodeGen/PowerPC/block-placement.mir | 4 +- .../test/CodeGen/PowerPC/collapse-rotates.mir | 4 +- ...rt-rr-to-ri-instrs-R0-special-handling.mir | 28 +- .../convert-rr-to-ri-instrs-out-of-range.mir | 80 ++-- .../PowerPC/convert-rr-to-ri-instrs.mir | 356 +++++++++--------- .../PowerPC/ctrloop-do-not-duplicate-mi.mir | 4 +- llvm/test/CodeGen/PowerPC/livevars-crash2.mir | 4 +- .../test/CodeGen/PowerPC/peephole-phi-acc.mir | 16 +- ...ole-replaceInstr-after-eliminate-extsw.mir | 4 +- llvm/test/CodeGen/PowerPC/phi-eliminate.mir | 4 +- .../PowerPC/remove-copy-crunsetcrbit.mir | 4 +- .../CodeGen/PowerPC/remove-implicit-use.mir | 4 +- .../remove-redundant-li-skip-imp-kill.mir | 4 +- .../CodeGen/PowerPC/remove-self-copies.mir | 4 +- .../CodeGen/PowerPC/rlwinm_rldicl_to_andi.mir | 24 +- .../CodeGen/PowerPC/schedule-addi-load.mir | 4 +- llvm/test/CodeGen/PowerPC/setcr_bc.mir | 4 +- llvm/test/CodeGen/PowerPC/setcr_bc2.mir | 4 +- llvm/test/CodeGen/PowerPC/setcr_bc3.mir | 4 +- .../CodeGen/PowerPC/tls_get_addr_fence1.mir | 4 +- .../CodeGen/PowerPC/tls_get_addr_fence2.mir | 4 +- .../CodeGen/PowerPC/two-address-crash.mir | 4 +- llvm/test/CodeGen/RISCV/live-sp.mir | 4 +- llvm/test/CodeGen/RISCV/pr53662.mir | 6 +- .../RISCV/rvv/addi-rvv-stack-object.mir | 4 +- .../test/CodeGen/RISCV/rvv/emergency-slot.mir | 4 +- .../RISCV/rvv/large-rvv-stack-size.mir | 4 +- .../CodeGen/RISCV/rvv/rvv-stack-align.mir | 12 +- .../RISCV/rvv/undef-earlyclobber-chain.mir | 4 +- .../rvv/wrong-stack-offset-for-rvv-object.mir | 4 +- .../CodeGen/RISCV/stack-slot-coloring.mir | 4 +- .../RISCV/zcmp-prolog-epilog-crash.mir | 6 +- .../Thumb2/LowOverheadLoops/add_reduce.mir | 4 +- .../begin-vpt-without-inst.mir | 4 +- .../biquad-cascade-default.mir | 4 +- .../biquad-cascade-optsize-strd-lr.mir | 4 +- .../biquad-cascade-optsize.mir | 4 +- .../Thumb2/LowOverheadLoops/cond-mov.mir | 4 +- .../Thumb2/LowOverheadLoops/disjoint-vcmp.mir | 4 +- .../LowOverheadLoops/dont-ignore-vctp.mir | 4 +- .../dont-remove-loop-update.mir | 4 +- .../Thumb2/LowOverheadLoops/emptyblock.mir | 4 +- .../LowOverheadLoops/end-positive-offset.mir | 4 +- .../LowOverheadLoops/extract-element.mir | 4 +- .../LowOverheadLoops/incorrect-sub-16.mir | 4 +- .../LowOverheadLoops/incorrect-sub-32.mir | 4 +- .../LowOverheadLoops/incorrect-sub-8.mir | 4 +- .../LowOverheadLoops/inloop-vpnot-1.mir | 4 +- .../LowOverheadLoops/inloop-vpnot-2.mir | 4 +- .../LowOverheadLoops/inloop-vpnot-3.mir | 4 +- .../LowOverheadLoops/inloop-vpsel-1.mir | 4 +- .../LowOverheadLoops/inloop-vpsel-2.mir | 4 +- .../LowOverheadLoops/it-block-chain-store.mir | 8 +- .../LowOverheadLoops/it-block-chain.mir | 4 +- .../LowOverheadLoops/it-block-itercount.mir | 4 +- .../LowOverheadLoops/it-block-random.mir | 4 +- .../LowOverheadLoops/loop-dec-copy-chain.mir | 4 +- .../loop-dec-copy-prev-iteration.mir | 4 +- .../LowOverheadLoops/loop-dec-liveout.mir | 4 +- .../lstp-insertion-position.mir | 8 +- .../Thumb2/LowOverheadLoops/massive.mir | 4 +- .../Thumb2/LowOverheadLoops/matrix-debug.mir | 4 +- .../Thumb2/LowOverheadLoops/matrix.mir | 4 +- .../Thumb2/LowOverheadLoops/mov-after-dls.mir | 4 +- .../LowOverheadLoops/mov-after-dlstp.mir | 4 +- .../LowOverheadLoops/mov-lr-terminator.mir | 4 +- .../move-def-before-start.mir | 4 +- .../LowOverheadLoops/move-start-after-def.mir | 4 +- .../LowOverheadLoops/multiblock-massive.mir | 4 +- .../LowOverheadLoops/multiple-do-loops.mir | 12 +- .../mve-reduct-livein-arg.mir | 4 +- .../Thumb2/LowOverheadLoops/no-dec-cbnz.mir | 4 +- .../LowOverheadLoops/no-dec-reorder.mir | 4 +- .../Thumb2/LowOverheadLoops/no-dec.mir | 4 +- .../LowOverheadLoops/no-vpsel-liveout.mir | 4 +- .../LowOverheadLoops/non-masked-load.mir | 4 +- .../LowOverheadLoops/non-masked-store.mir | 4 +- .../LowOverheadLoops/out-of-range-cbz.mir | 4 +- .../LowOverheadLoops/remove-elem-moves.mir | 4 +- .../LowOverheadLoops/revert-after-call.mir | 4 +- .../LowOverheadLoops/revert-after-read.mir | 4 +- .../LowOverheadLoops/revert-after-write.mir | 4 +- .../LowOverheadLoops/revert-non-header.mir | 4 +- .../LowOverheadLoops/revert-non-loop.mir | 4 +- .../Thumb2/LowOverheadLoops/revert-while.mir | 4 +- .../LowOverheadLoops/safe-def-no-mov.mir | 4 +- .../LowOverheadLoops/safe-retaining.mir | 2 +- .../Thumb2/LowOverheadLoops/size-limit.mir | 4 +- .../Thumb2/LowOverheadLoops/skip-debug.mir | 4 +- .../LowOverheadLoops/skip-vpt-debug.mir | 4 +- .../Thumb2/LowOverheadLoops/switch.mir | 4 +- .../LowOverheadLoops/unrolled-and-vector.mir | 4 +- .../LowOverheadLoops/unsafe-cpsr-loop-def.mir | 4 +- .../LowOverheadLoops/unsafe-cpsr-loop-use.mir | 4 +- .../LowOverheadLoops/unsafe-use-after.mir | 4 +- .../CodeGen/Thumb2/LowOverheadLoops/vaddv.mir | 76 ++-- .../vctp-add-operand-liveout.mir | 4 +- .../Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir | 4 +- .../Thumb2/LowOverheadLoops/vctp-in-vpt.mir | 16 +- .../Thumb2/LowOverheadLoops/vctp-subi3.mir | 4 +- .../Thumb2/LowOverheadLoops/vctp-subri.mir | 4 +- .../Thumb2/LowOverheadLoops/vctp-subri12.mir | 4 +- .../Thumb2/LowOverheadLoops/vctp16-reduce.mir | 4 +- .../LowOverheadLoops/vmaxmin_vpred_r.mir | 4 +- .../LowOverheadLoops/vmldava_in_vpt.mir | 4 +- .../LowOverheadLoops/vpt-block-debug.mir | 4 +- .../Thumb2/LowOverheadLoops/vpt-blocks.mir | 28 +- .../while-negative-offset.mir | 4 +- .../CodeGen/Thumb2/LowOverheadLoops/while.mir | 4 +- .../CodeGen/Thumb2/LowOverheadLoops/wlstp.mir | 12 +- .../wrong-liveout-lsr-shift.mir | 4 +- .../wrong-vctp-opcode-liveout.mir | 4 +- .../wrong-vctp-operand-liveout.mir | 4 +- .../test/CodeGen/Thumb2/bti-pac-replace-1.mir | 4 +- .../CodeGen/Thumb2/ifcvt-neon-deprecated.mir | 4 +- .../Thumb2/mve-vpt-2-blocks-1-pred.mir | 4 +- .../Thumb2/mve-vpt-2-blocks-2-preds.mir | 4 +- .../Thumb2/mve-vpt-2-blocks-ctrl-flow.mir | 4 +- .../mve-vpt-2-blocks-non-consecutive-ins.mir | 4 +- llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks.mir | 4 +- .../Thumb2/mve-vpt-3-blocks-kill-vpr.mir | 4 +- .../CodeGen/Thumb2/mve-vpt-block-1-ins.mir | 4 +- .../CodeGen/Thumb2/mve-vpt-block-2-ins.mir | 4 +- .../CodeGen/Thumb2/mve-vpt-block-4-ins.mir | 4 +- .../CodeGen/Thumb2/mve-vpt-block-elses.mir | 4 +- .../Thumb2/mve-vpt-block-fold-vcmp.mir | 4 +- .../CodeGen/Thumb2/mve-vpt-block-optnone.mir | 4 +- llvm/test/CodeGen/Thumb2/mve-vpt-preuse.mir | 4 +- .../Thumb2/pipeliner-preserve-ties.mir | 4 +- .../test/CodeGen/VE/Scalar/fold-imm-addsl.mir | 16 +- .../test/CodeGen/VE/Scalar/fold-imm-cmpsl.mir | 8 +- .../multivalue-dont-move-def-past-use.mir | 4 +- llvm/test/CodeGen/X86/PR37310.mir | 4 +- .../X86/StackColoring-use-between-allocas.mir | 4 +- .../X86/align-basic-block-sections.mir | 4 +- .../X86/amx_tile_pair_configure_O0.mir | 4 +- .../X86/amx_tile_pair_configure_O2.mir | 4 +- llvm/test/CodeGen/X86/amx_tile_pair_copy.mir | 4 +- .../X86/amx_tile_pair_preconfigure_O0.mir | 4 +- .../X86/amx_tile_pair_preconfigure_O2.mir | 4 +- .../CodeGen/X86/apx/domain-reassignment.mir | 36 +- llvm/test/CodeGen/X86/apx/memfold-nd2rmw.mir | 4 +- .../test/CodeGen/X86/attr-function-return.mir | 4 +- .../CodeGen/X86/avoid-sfb-g-no-change.mir | 8 +- .../CodeGen/X86/avoid-sfb-g-no-change2.mir | 4 +- .../CodeGen/X86/avoid-sfb-g-no-change3.mir | 4 +- llvm/test/CodeGen/X86/avoid-sfb-offset.mir | 4 +- llvm/test/CodeGen/X86/avx512f-256-set0.mir | 4 +- .../X86/basic-block-address-map-mir-parse.mir | 4 +- .../X86/basic-block-sections-mir-parse.mir | 4 +- .../CodeGen/X86/break-false-dep-crash.mir | 4 +- .../X86/callbr-asm-outputs-regallocfast.mir | 4 +- llvm/test/CodeGen/X86/cf-opt-memops.mir | 4 +- .../CodeGen/X86/cfi-epilogue-with-return.mir | 6 +- .../X86/cfi-epilogue-without-return.mir | 6 +- .../X86/conditional-tailcall-samedest.mir | 4 +- llvm/test/CodeGen/X86/cse-two-preds.mir | 4 +- llvm/test/CodeGen/X86/domain-reassignment.mir | 36 +- llvm/test/CodeGen/X86/movtopush.mir | 4 +- .../CodeGen/X86/peephole-test-after-add.mir | 12 +- llvm/test/CodeGen/X86/pr30821.mir | 4 +- llvm/test/CodeGen/X86/pr38952.mir | 4 +- llvm/test/CodeGen/X86/pr48064.mir | 12 +- llvm/test/CodeGen/X86/scheduler-asm-moves.mir | 4 +- .../CodeGen/X86/shrink_wrap_dbg_value.mir | 10 +- .../CodeGen/X86/statepoint-fixup-call.mir | 4 +- .../X86/statepoint-fixup-copy-prop-neg.mir | 4 +- .../CodeGen/X86/statepoint-fixup-invoke.mir | 4 +- .../X86/statepoint-fixup-shared-ehpad.mir | 4 +- .../X86/statepoint-fixup-undef-def.mir | 4 +- .../CodeGen/X86/statepoint-fixup-undef.mir | 4 +- .../X86/statepoint-invoke-ra-enter-at-end.mir | 4 +- .../X86/statepoint-invoke-ra-hoist-copies.mir | 4 +- .../statepoint-invoke-ra-inline-spiller.mir | 4 +- ...tatepoint-invoke-ra-remove-back-copies.mir | 4 +- .../test/CodeGen/X86/statepoint-invoke-ra.mir | 4 +- .../CodeGen/X86/statepoint-vreg-folding.mir | 4 +- llvm/test/CodeGen/X86/tied-depbreak.mir | 4 +- llvm/test/CodeGen/X86/unfoldMemoryOperand.mir | 4 +- .../CodeGen/X86/win64-eh-empty-block-2.mir | 4 +- .../X86/zero-call-used-regs-debug-info.mir | 4 +- .../ARM/machine-cp-updates-dbg-reg.mir | 4 +- .../ARM/move-dbg-values-imm-test.mir | 4 +- .../MIR/AArch64/implicit-def-dead-scope.mir | 4 +- .../MIR/ARM/live-debug-values-reg-copy.mir | 4 +- ...ebugvalues-transfer-variadic-instr-ref.mir | 4 +- .../DebugInfo/MIR/Mips/last-inst-bundled.mir | 4 +- .../MIR/Mips/live-debug-values-reg-copy.mir | 4 +- .../MIR/X86/dbg-call-site-spilled-arg.mir | 4 +- llvm/test/DebugInfo/MIR/X86/debug-loc-0.mir | 4 +- .../MIR/X86/instr-ref-join-def-vphi.mir | 4 +- .../DebugInfo/MIR/X86/kill-after-spill.mir | 4 +- .../MIR/X86/live-debug-values-reg-copy.mir | 4 +- .../MIR/X86/live-debug-values-restore.mir | 4 +- .../live-debug-vars-unused-arg-debugonly.mir | 4 +- .../MIR/X86/live-debug-vars-unused-arg.mir | 4 +- .../X86/instr-ref-track-clobbers.mir | 4 +- .../DebugInfo/X86/live-debug-vars-dse.mir | 4 +- .../MachineVerifier/verify-inlineasmbr.mir | 4 +- .../Inputs/x86-MIFlags.mir | 4 +- .../Inputs/x86-MIFlags.mir.expected | 4 +- .../llvm-reduce/mir/preserve-frame-info.mir | 12 +- 337 files changed, 1341 insertions(+), 1265 deletions(-) diff --git a/llvm/include/llvm/CodeGen/MIRYamlMapping.h b/llvm/include/llvm/CodeGen/MIRYamlMapping.h index 09a6ca936fe1f..be8a8e593ef92 100644 --- a/llvm/include/llvm/CodeGen/MIRYamlMapping.h +++ b/llvm/include/llvm/CodeGen/MIRYamlMapping.h @@ -610,6 +610,20 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::MachineJumpTable::Entry) namespace llvm { namespace yaml { +struct SRPEntry { + StringValue Point; + + bool operator==(const SRPEntry &Other) const { return Point == Other.Point; } +}; + +using SaveRestorePoints = std::vector; + +template <> struct MappingTraits { + static void mapping(IO &YamlIO, SRPEntry &Entry) { + YamlIO.mapRequired("point", Entry.Point); + } +}; + template <> struct MappingTraits { static void mapping(IO &YamlIO, MachineJumpTable &JT) { YamlIO.mapRequired("kind", JT.Kind); @@ -618,6 +632,14 @@ template <> struct MappingTraits { } }; +} // namespace yaml +} // namespace llvm + +LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::SRPEntry) + +namespace llvm { +namespace yaml { + /// Serializable representation of MachineFrameInfo. /// /// Doesn't serialize attributes like 'StackAlignment', 'IsStackRealignable' and @@ -645,8 +667,8 @@ struct MachineFrameInfo { bool HasTailCall = false; bool IsCalleeSavedInfoValid = false; unsigned LocalFrameSize = 0; - StringValue SavePoint; - StringValue RestorePoint; + SaveRestorePoints SavePoints; + SaveRestorePoints RestorePoints; bool operator==(const MachineFrameInfo &Other) const { return IsFrameAddressTaken == Other.IsFrameAddressTaken && @@ -667,7 +689,8 @@ struct MachineFrameInfo { HasMustTailInVarArgFunc == Other.HasMustTailInVarArgFunc && HasTailCall == Other.HasTailCall && LocalFrameSize == Other.LocalFrameSize && - SavePoint == Other.SavePoint && RestorePoint == Other.RestorePoint && + SavePoints == Other.SavePoints && + RestorePoints == Other.RestorePoints && IsCalleeSavedInfoValid == Other.IsCalleeSavedInfoValid; } }; @@ -699,10 +722,12 @@ template <> struct MappingTraits { YamlIO.mapOptional("isCalleeSavedInfoValid", MFI.IsCalleeSavedInfoValid, false); YamlIO.mapOptional("localFrameSize", MFI.LocalFrameSize, (unsigned)0); - YamlIO.mapOptional("savePoint", MFI.SavePoint, - StringValue()); // Don't print it out when it's empty. - YamlIO.mapOptional("restorePoint", MFI.RestorePoint, - StringValue()); // Don't print it out when it's empty. + YamlIO.mapOptional( + "savePoints", MFI.SavePoints, + SaveRestorePoints()); // Don't print it out when it's empty. + YamlIO.mapOptional( + "restorePoints", MFI.RestorePoints, + SaveRestorePoints()); // Don't print it out when it's empty. } }; diff --git a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp index e2543f883f91c..f7c1e162d2a96 100644 --- a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp @@ -124,6 +124,10 @@ class MIRParserImpl { bool initializeFrameInfo(PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF); + bool initializeSaveRestorePoints(PerFunctionMIParsingState &PFS, + const yaml::SaveRestorePoints &YamlSRP, + bool IsSavePoints); + bool initializeCallSiteInfo(PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF); @@ -832,18 +836,9 @@ bool MIRParserImpl::initializeFrameInfo(PerFunctionMIParsingState &PFS, MFI.setHasTailCall(YamlMFI.HasTailCall); MFI.setCalleeSavedInfoValid(YamlMFI.IsCalleeSavedInfoValid); MFI.setLocalFrameSize(YamlMFI.LocalFrameSize); - if (!YamlMFI.SavePoint.Value.empty()) { - MachineBasicBlock *MBB = nullptr; - if (parseMBBReference(PFS, MBB, YamlMFI.SavePoint)) - return true; - MFI.setSavePoint(MBB); - } - if (!YamlMFI.RestorePoint.Value.empty()) { - MachineBasicBlock *MBB = nullptr; - if (parseMBBReference(PFS, MBB, YamlMFI.RestorePoint)) - return true; - MFI.setRestorePoint(MBB); - } + initializeSaveRestorePoints(PFS, YamlMFI.SavePoints, true /*IsSavePoints*/); + initializeSaveRestorePoints(PFS, YamlMFI.RestorePoints, + false /*IsSavePoints*/); std::vector CSIInfo; // Initialize the fixed frame objects. @@ -1058,8 +1053,28 @@ bool MIRParserImpl::initializeConstantPool(PerFunctionMIParsingState &PFS, return false; } -bool MIRParserImpl::initializeJumpTableInfo(PerFunctionMIParsingState &PFS, - const yaml::MachineJumpTable &YamlJTI) { +bool MIRParserImpl::initializeSaveRestorePoints( + PerFunctionMIParsingState &PFS, const yaml::SaveRestorePoints &YamlSRP, + bool IsSavePoints) { + MachineFunction &MF = PFS.MF; + MachineFrameInfo &MFI = MF.getFrameInfo(); + + if (!YamlSRP.empty()) { + const auto &Entry = YamlSRP.front(); + const auto &MBBSource = Entry.Point; + MachineBasicBlock *MBB = nullptr; + if (parseMBBReference(PFS, MBB, MBBSource.Value)) + return true; + if (IsSavePoints) + MFI.setSavePoint(MBB); + else + MFI.setRestorePoint(MBB); + } + return false; +} + +bool MIRParserImpl::initializeJumpTableInfo( + PerFunctionMIParsingState &PFS, const yaml::MachineJumpTable &YamlJTI) { MachineJumpTableInfo *JTI = PFS.MF.getOrCreateJumpTableInfo(YamlJTI.Kind); for (const auto &Entry : YamlJTI.Entries) { std::vector Blocks; diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp index c8f6341c1224d..2d0728a645280 100644 --- a/llvm/lib/CodeGen/MIRPrinter.cpp +++ b/llvm/lib/CodeGen/MIRPrinter.cpp @@ -118,6 +118,8 @@ class MIRPrinter { const TargetRegisterInfo *TRI); void convert(ModuleSlotTracker &MST, yaml::MachineFrameInfo &YamlMFI, const MachineFrameInfo &MFI); + void convert(ModuleSlotTracker &MST, yaml::SaveRestorePoints &YamlSRP, + MachineBasicBlock *SaveRestorePoint); void convert(yaml::MachineFunction &MF, const MachineConstantPool &ConstantPool); void convert(ModuleSlotTracker &MST, yaml::MachineJumpTable &YamlJTI, @@ -392,14 +394,10 @@ void MIRPrinter::convert(ModuleSlotTracker &MST, YamlMFI.HasTailCall = MFI.hasTailCall(); YamlMFI.IsCalleeSavedInfoValid = MFI.isCalleeSavedInfoValid(); YamlMFI.LocalFrameSize = MFI.getLocalFrameSize(); - if (MFI.getSavePoint()) { - raw_string_ostream StrOS(YamlMFI.SavePoint.Value); - StrOS << printMBBReference(*MFI.getSavePoint()); - } - if (MFI.getRestorePoint()) { - raw_string_ostream StrOS(YamlMFI.RestorePoint.Value); - StrOS << printMBBReference(*MFI.getRestorePoint()); - } + if (MFI.getSavePoint()) + convert(MST, YamlMFI.SavePoints, MFI.getSavePoint()); + if (MFI.getRestorePoint()) + convert(MST, YamlMFI.RestorePoints, MFI.getRestorePoint()); } void MIRPrinter::convertEntryValueObjects(yaml::MachineFunction &YMF, @@ -618,6 +616,18 @@ void MIRPrinter::convert(yaml::MachineFunction &MF, } } +void MIRPrinter::convert(ModuleSlotTracker &MST, + yaml::SaveRestorePoints &YamlSRP, + MachineBasicBlock *SRP) { + std::string Str; + yaml::SRPEntry Entry; + raw_string_ostream StrOS(Str); + StrOS << printMBBReference(*SRP); + Entry.Point = StrOS.str(); + Str.clear(); + YamlSRP.push_back(Entry); +} + void MIRPrinter::convert(ModuleSlotTracker &MST, yaml::MachineJumpTable &YamlJTI, const MachineJumpTableInfo &JTI) { diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/store-merging-debug.mir b/llvm/test/CodeGen/AArch64/GlobalISel/store-merging-debug.mir index d52ef0f3da74c..2e8f3c460b2fe 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/store-merging-debug.mir +++ b/llvm/test/CodeGen/AArch64/GlobalISel/store-merging-debug.mir @@ -86,8 +86,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/aarch64-ldst-no-premature-sp-pop.mir b/llvm/test/CodeGen/AArch64/aarch64-ldst-no-premature-sp-pop.mir index ba621cf77f9ae..07e80538e793f 100644 --- a/llvm/test/CodeGen/AArch64/aarch64-ldst-no-premature-sp-pop.mir +++ b/llvm/test/CodeGen/AArch64/aarch64-ldst-no-premature-sp-pop.mir @@ -59,8 +59,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 16 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, type: default, offset: -16, size: 16, diff --git a/llvm/test/CodeGen/AArch64/aarch64-mov-debug-locs.mir b/llvm/test/CodeGen/AArch64/aarch64-mov-debug-locs.mir index 16e2de751381a..31589a86599ff 100644 --- a/llvm/test/CodeGen/AArch64/aarch64-mov-debug-locs.mir +++ b/llvm/test/CodeGen/AArch64/aarch64-mov-debug-locs.mir @@ -157,8 +157,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/aarch64st1.mir b/llvm/test/CodeGen/AArch64/aarch64st1.mir index 22a024d37bc64..439db1e97aa79 100644 --- a/llvm/test/CodeGen/AArch64/aarch64st1.mir +++ b/llvm/test/CodeGen/AArch64/aarch64st1.mir @@ -58,8 +58,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir index 31fa3832367be..6851fdba1239a 100644 --- a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir +++ b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir @@ -80,8 +80,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 30000 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: p, type: default, offset: -30016, size: 30000, alignment: 1, diff --git a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir index a24972d138832..fe5c90a5e6dc5 100644 --- a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir +++ b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir @@ -47,8 +47,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16, diff --git a/llvm/test/CodeGen/AArch64/cfi-fixup.mir b/llvm/test/CodeGen/AArch64/cfi-fixup.mir index f522df6bb3fa0..dd75cec7f6e0b 100644 --- a/llvm/test/CodeGen/AArch64/cfi-fixup.mir +++ b/llvm/test/CodeGen/AArch64/cfi-fixup.mir @@ -65,8 +65,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16, @@ -248,8 +248,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16, @@ -403,8 +403,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16, diff --git a/llvm/test/CodeGen/AArch64/dont-shrink-wrap-stack-mayloadorstore.mir b/llvm/test/CodeGen/AArch64/dont-shrink-wrap-stack-mayloadorstore.mir index 1c4447bffd872..85f8abcbf7fe6 100644 --- a/llvm/test/CodeGen/AArch64/dont-shrink-wrap-stack-mayloadorstore.mir +++ b/llvm/test/CodeGen/AArch64/dont-shrink-wrap-stack-mayloadorstore.mir @@ -6,17 +6,23 @@ ; RUN: llc -x=mir -simplify-mir -run-pass=shrink-wrap -o - %s | FileCheck %s ; CHECK: name: compiler_pop_stack ; CHECK: frameInfo: - ; CHECK: savePoint: '%bb.1' - ; CHECK: restorePoint: '%bb.7' + ; CHECK: savePoints: + ; CHECK-NEXT: - point: '%bb.1' + ; CHECK: restorePoints: + ; CHECK-NEXT: - point: '%bb.7' ; CHECK: name: compiler_pop_stack_no_memoperands ; CHECK: frameInfo: - ; CHECK: savePoint: '%bb.1' - ; CHECK: restorePoint: '%bb.7' + ; CHECK: savePoints: + ; CHECK-NEXT: - point: '%bb.1' + ; CHECK: restorePoints: + ; CHECK-NEXT: - point: '%bb.7' ; CHECK: name: f ; CHECK: frameInfo: - ; CHECK: savePoint: '%bb.2' - ; CHECK-NEXT: restorePoint: '%bb.4' - ; CHECK-NEXT: stack: + ; CHECK: savePoints: + ; CHECK-NEXT: - point: '%bb.2' + ; CHECK: restorePoints: + ; CHECK-NEXT: - point: '%bb.4' + ; CHECK: stack: target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64" diff --git a/llvm/test/CodeGen/AArch64/early-ifcvt-regclass-mismatch.mir b/llvm/test/CodeGen/AArch64/early-ifcvt-regclass-mismatch.mir index a7f67f8b682c3..6324db0cb2c0f 100644 --- a/llvm/test/CodeGen/AArch64/early-ifcvt-regclass-mismatch.mir +++ b/llvm/test/CodeGen/AArch64/early-ifcvt-regclass-mismatch.mir @@ -105,8 +105,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/emit_fneg_with_non_register_operand.mir b/llvm/test/CodeGen/AArch64/emit_fneg_with_non_register_operand.mir index f9878adfe5e44..3c98a1a128413 100644 --- a/llvm/test/CodeGen/AArch64/emit_fneg_with_non_register_operand.mir +++ b/llvm/test/CodeGen/AArch64/emit_fneg_with_non_register_operand.mir @@ -75,8 +75,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: true localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/AArch64/irg-nomem.mir b/llvm/test/CodeGen/AArch64/irg-nomem.mir index 3b000fafbed46..78438151405e6 100644 --- a/llvm/test/CodeGen/AArch64/irg-nomem.mir +++ b/llvm/test/CodeGen/AArch64/irg-nomem.mir @@ -47,8 +47,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/jump-table-duplicate.mir b/llvm/test/CodeGen/AArch64/jump-table-duplicate.mir index a2532a854923f..81cf5953895ca 100644 --- a/llvm/test/CodeGen/AArch64/jump-table-duplicate.mir +++ b/llvm/test/CodeGen/AArch64/jump-table-duplicate.mir @@ -92,8 +92,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/ldst-nopreidx-sp-redzone.mir b/llvm/test/CodeGen/AArch64/ldst-nopreidx-sp-redzone.mir index f1f9e5fbc9b08..b431de2d9b35b 100644 --- a/llvm/test/CodeGen/AArch64/ldst-nopreidx-sp-redzone.mir +++ b/llvm/test/CodeGen/AArch64/ldst-nopreidx-sp-redzone.mir @@ -103,8 +103,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 480 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: StackGuardSlot, type: default, offset: -40, size: 8, @@ -216,8 +216,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 480 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: StackGuardSlot, type: default, offset: -40, size: 8, @@ -327,8 +327,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 480 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: StackGuardSlot, type: default, offset: -40, size: 8, diff --git a/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir b/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir index 612453ab53f43..4be16228814a3 100644 --- a/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir +++ b/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir @@ -120,8 +120,10 @@ frameInfo: adjustsStack: true hasCalls: true maxCallFrameSize: 0 - savePoint: '%bb.1' - restorePoint: '%bb.1' + savePoints: + - point: '%bb.1' + restorePoints: + - point: '%bb.1' stack: - { id: 0, size: 16, alignment: 16, stack-id: scalable-vector } machineFunctionInfo: {} diff --git a/llvm/test/CodeGen/AArch64/loop-sink-limit.mir b/llvm/test/CodeGen/AArch64/loop-sink-limit.mir index 3e18f95cab848..76e1892d33f43 100644 --- a/llvm/test/CodeGen/AArch64/loop-sink-limit.mir +++ b/llvm/test/CodeGen/AArch64/loop-sink-limit.mir @@ -79,8 +79,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/loop-sink.mir b/llvm/test/CodeGen/AArch64/loop-sink.mir index 36d39ffbadc29..b4ebb0b466b2f 100644 --- a/llvm/test/CodeGen/AArch64/loop-sink.mir +++ b/llvm/test/CodeGen/AArch64/loop-sink.mir @@ -299,8 +299,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -547,8 +547,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -674,8 +674,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -804,8 +804,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -944,8 +944,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -1070,8 +1070,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -1211,8 +1211,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -1358,8 +1358,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir b/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir index 9a8e5c6341bca..fa6da9e0e26bf 100644 --- a/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir +++ b/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir @@ -90,8 +90,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/nested-iv-regalloc.mir b/llvm/test/CodeGen/AArch64/nested-iv-regalloc.mir index ff29c78b5a0ce..6f1d884fbb6fd 100644 --- a/llvm/test/CodeGen/AArch64/nested-iv-regalloc.mir +++ b/llvm/test/CodeGen/AArch64/nested-iv-regalloc.mir @@ -189,8 +189,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/AArch64/regalloc-last-chance-recolor-with-split.mir b/llvm/test/CodeGen/AArch64/regalloc-last-chance-recolor-with-split.mir index 9bd3ad9165cee..cc0c6753b50d5 100644 --- a/llvm/test/CodeGen/AArch64/regalloc-last-chance-recolor-with-split.mir +++ b/llvm/test/CodeGen/AArch64/regalloc-last-chance-recolor-with-split.mir @@ -257,8 +257,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/shrinkwrap-split-restore-point.mir b/llvm/test/CodeGen/AArch64/shrinkwrap-split-restore-point.mir index 5b43dde0ae250..ce3e6cefe82c6 100644 --- a/llvm/test/CodeGen/AArch64/shrinkwrap-split-restore-point.mir +++ b/llvm/test/CodeGen/AArch64/shrinkwrap-split-restore-point.mir @@ -708,8 +708,8 @@ registers: [] liveins: - { reg: '$w0', virtual-reg: '' } frameInfo: - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] body: | ; CHECK-LABEL: name: noshrink_bb_as_inlineasmbr_target ; CHECK: bb.0.entry: diff --git a/llvm/test/CodeGen/AArch64/sink-and-fold-drop-dbg.mir b/llvm/test/CodeGen/AArch64/sink-and-fold-drop-dbg.mir index b0280f268f3ff..56fbe8d7ff22e 100644 --- a/llvm/test/CodeGen/AArch64/sink-and-fold-drop-dbg.mir +++ b/llvm/test/CodeGen/AArch64/sink-and-fold-drop-dbg.mir @@ -99,8 +99,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: true localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/AArch64/sink-and-fold-illegal-shift.mir b/llvm/test/CodeGen/AArch64/sink-and-fold-illegal-shift.mir index d2f6a3ab1aeeb..7698942de2277 100644 --- a/llvm/test/CodeGen/AArch64/sink-and-fold-illegal-shift.mir +++ b/llvm/test/CodeGen/AArch64/sink-and-fold-illegal-shift.mir @@ -65,8 +65,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/AArch64/sink-and-fold-preserve-debugloc.mir b/llvm/test/CodeGen/AArch64/sink-and-fold-preserve-debugloc.mir index be5737d297b29..e209c56732f02 100644 --- a/llvm/test/CodeGen/AArch64/sink-and-fold-preserve-debugloc.mir +++ b/llvm/test/CodeGen/AArch64/sink-and-fold-preserve-debugloc.mir @@ -115,8 +115,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] @@ -187,8 +187,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/AArch64/split-deadloop.mir b/llvm/test/CodeGen/AArch64/split-deadloop.mir index d5f8303ab13ec..d90259a37d8ea 100644 --- a/llvm/test/CodeGen/AArch64/split-deadloop.mir +++ b/llvm/test/CodeGen/AArch64/split-deadloop.mir @@ -66,8 +66,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir b/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir index 6c8ec7e4c4fa9..62d73c2c0d1bb 100644 --- a/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir +++ b/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir @@ -65,8 +65,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 200000 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: p, type: default, offset: 0, size: 200000, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/tail-dup-redundant-phi.mir b/llvm/test/CodeGen/AArch64/tail-dup-redundant-phi.mir index bc141ff5084ca..19fd53d4ddfaa 100644 --- a/llvm/test/CodeGen/AArch64/tail-dup-redundant-phi.mir +++ b/llvm/test/CodeGen/AArch64/tail-dup-redundant-phi.mir @@ -172,8 +172,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/taildup-addrtaken.mir b/llvm/test/CodeGen/AArch64/taildup-addrtaken.mir index 5acebceff291d..e09aed220f523 100644 --- a/llvm/test/CodeGen/AArch64/taildup-addrtaken.mir +++ b/llvm/test/CodeGen/AArch64/taildup-addrtaken.mir @@ -75,8 +75,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/wineh-frame-predecrement.mir b/llvm/test/CodeGen/AArch64/wineh-frame-predecrement.mir index 1bed8f6b547a2..c9decd0f98ad5 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame-predecrement.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame-predecrement.mir @@ -45,8 +45,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh-frame-scavenge.mir b/llvm/test/CodeGen/AArch64/wineh-frame-scavenge.mir index 09799ee266491..ba0458923f18f 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame-scavenge.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame-scavenge.mir @@ -61,8 +61,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh-frame1.mir b/llvm/test/CodeGen/AArch64/wineh-frame1.mir index 37a0394415a31..ed77d8c120614 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame1.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame1.mir @@ -64,8 +64,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/AArch64/wineh-frame2.mir b/llvm/test/CodeGen/AArch64/wineh-frame2.mir index ca785b93b9714..04da26f39ae4c 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame2.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame2.mir @@ -52,8 +52,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/AArch64/wineh-frame3.mir b/llvm/test/CodeGen/AArch64/wineh-frame3.mir index 30d804eeb8e54..8d14296a224ad 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame3.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame3.mir @@ -44,8 +44,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/AArch64/wineh-frame4.mir b/llvm/test/CodeGen/AArch64/wineh-frame4.mir index 73d30cab947ae..6430962c98c28 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame4.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame4.mir @@ -44,8 +44,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/AArch64/wineh-frame5.mir b/llvm/test/CodeGen/AArch64/wineh-frame5.mir index 180c20f0148f5..fd57e43aa74c6 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame5.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame5.mir @@ -96,8 +96,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 492 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: B, type: default, offset: 0, size: 492, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh-frame6.mir b/llvm/test/CodeGen/AArch64/wineh-frame6.mir index 188a905a0ab75..4e17c0300de60 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame6.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame6.mir @@ -85,8 +85,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 24 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: c.addr, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh-frame7.mir b/llvm/test/CodeGen/AArch64/wineh-frame7.mir index 6d44ad3716111..b0d43a5c94c19 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame7.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame7.mir @@ -101,8 +101,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 2993276 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: retval, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh-frame8.mir b/llvm/test/CodeGen/AArch64/wineh-frame8.mir index be14dcd29c66d..aeec8ebf9f978 100644 --- a/llvm/test/CodeGen/AArch64/wineh-frame8.mir +++ b/llvm/test/CodeGen/AArch64/wineh-frame8.mir @@ -60,8 +60,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 8 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: a.addr, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh-save-lrpair1.mir b/llvm/test/CodeGen/AArch64/wineh-save-lrpair1.mir index 7959ad611ed40..b1994bdc3f7d0 100644 --- a/llvm/test/CodeGen/AArch64/wineh-save-lrpair1.mir +++ b/llvm/test/CodeGen/AArch64/wineh-save-lrpair1.mir @@ -52,8 +52,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/wineh-save-lrpair2.mir b/llvm/test/CodeGen/AArch64/wineh-save-lrpair2.mir index 2ec296f7b9e7e..91af4a76c73b3 100644 --- a/llvm/test/CodeGen/AArch64/wineh-save-lrpair2.mir +++ b/llvm/test/CodeGen/AArch64/wineh-save-lrpair2.mir @@ -45,8 +45,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/wineh-save-lrpair3.mir b/llvm/test/CodeGen/AArch64/wineh-save-lrpair3.mir index e45cf9ff3e4c8..87822ceb6425d 100644 --- a/llvm/test/CodeGen/AArch64/wineh-save-lrpair3.mir +++ b/llvm/test/CodeGen/AArch64/wineh-save-lrpair3.mir @@ -46,8 +46,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/AArch64/wineh2.mir b/llvm/test/CodeGen/AArch64/wineh2.mir index 572df37bf2b51..2116cea890000 100644 --- a/llvm/test/CodeGen/AArch64/wineh2.mir +++ b/llvm/test/CodeGen/AArch64/wineh2.mir @@ -64,8 +64,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/wineh3.mir b/llvm/test/CodeGen/AArch64/wineh3.mir index 395180ee540cd..08f8ad4a6caf3 100644 --- a/llvm/test/CodeGen/AArch64/wineh3.mir +++ b/llvm/test/CodeGen/AArch64/wineh3.mir @@ -52,8 +52,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/wineh4.mir b/llvm/test/CodeGen/AArch64/wineh4.mir index baeb31167f096..2d03d6c2dad74 100644 --- a/llvm/test/CodeGen/AArch64/wineh4.mir +++ b/llvm/test/CodeGen/AArch64/wineh4.mir @@ -81,8 +81,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/wineh5.mir b/llvm/test/CodeGen/AArch64/wineh5.mir index 053db98e6d39b..e1c27358ade24 100644 --- a/llvm/test/CodeGen/AArch64/wineh5.mir +++ b/llvm/test/CodeGen/AArch64/wineh5.mir @@ -110,8 +110,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 2993276 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: retval, type: default, offset: -36, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh6.mir b/llvm/test/CodeGen/AArch64/wineh6.mir index f3d5fc8921a57..a3fa7c2b89f48 100644 --- a/llvm/test/CodeGen/AArch64/wineh6.mir +++ b/llvm/test/CodeGen/AArch64/wineh6.mir @@ -54,8 +54,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 24 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: default, offset: -20, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/AArch64/wineh7.mir b/llvm/test/CodeGen/AArch64/wineh7.mir index ada4ebcf5057e..16ade9769ff3b 100644 --- a/llvm/test/CodeGen/AArch64/wineh7.mir +++ b/llvm/test/CodeGen/AArch64/wineh7.mir @@ -52,8 +52,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: variable-sized, offset: -48, diff --git a/llvm/test/CodeGen/AArch64/wineh8.mir b/llvm/test/CodeGen/AArch64/wineh8.mir index f1fad8b70ff27..c79fdbb28bca8 100644 --- a/llvm/test/CodeGen/AArch64/wineh8.mir +++ b/llvm/test/CodeGen/AArch64/wineh8.mir @@ -80,8 +80,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/wineh9.mir b/llvm/test/CodeGen/AArch64/wineh9.mir index 3586ea5bc43b4..89eabfcb1bd5c 100644 --- a/llvm/test/CodeGen/AArch64/wineh9.mir +++ b/llvm/test/CodeGen/AArch64/wineh9.mir @@ -57,8 +57,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 8 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: x.addr, type: default, offset: -24, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/AArch64/wineh_shrinkwrap.mir b/llvm/test/CodeGen/AArch64/wineh_shrinkwrap.mir index aad271313c850..beda75559ec3a 100644 --- a/llvm/test/CodeGen/AArch64/wineh_shrinkwrap.mir +++ b/llvm/test/CodeGen/AArch64/wineh_shrinkwrap.mir @@ -102,8 +102,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4000 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: A, type: default, offset: 0, size: 4000, alignment: 4, diff --git a/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-1.mir b/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-1.mir index 18df16988d8e4..a336e86509c0a 100644 --- a/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-1.mir +++ b/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-1.mir @@ -90,8 +90,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, isImmutable: false, isAliased: false, callee-saved-register: '' } diff --git a/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-2.mir b/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-2.mir index 9cc688dd0c532..820b5352f2c84 100644 --- a/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-2.mir +++ b/llvm/test/CodeGen/AMDGPU/memory-legalizer-multiple-mem-operands-nontemporal-2.mir @@ -70,8 +70,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, isImmutable: false, isAliased: false, callee-saved-register: '' } diff --git a/llvm/test/CodeGen/ARM/cmse-vlldm-no-reorder.mir b/llvm/test/CodeGen/ARM/cmse-vlldm-no-reorder.mir index 29429fd5a23eb..60e4df1d482a3 100644 --- a/llvm/test/CodeGen/ARM/cmse-vlldm-no-reorder.mir +++ b/llvm/test/CodeGen/ARM/cmse-vlldm-no-reorder.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/ARM/codesize-ifcvt.mir b/llvm/test/CodeGen/ARM/codesize-ifcvt.mir index 3acbcf127d8a3..200d4463e5c2b 100644 --- a/llvm/test/CodeGen/ARM/codesize-ifcvt.mir +++ b/llvm/test/CodeGen/ARM/codesize-ifcvt.mir @@ -142,8 +142,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -304,8 +304,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -472,8 +472,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/ARM/constant-island-movwt.mir b/llvm/test/CodeGen/ARM/constant-island-movwt.mir index 7b3e59eca8472..587d4b9562ab0 100644 --- a/llvm/test/CodeGen/ARM/constant-island-movwt.mir +++ b/llvm/test/CodeGen/ARM/constant-island-movwt.mir @@ -341,8 +341,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/ARM/constant-islands-cfg.mir b/llvm/test/CodeGen/ARM/constant-islands-cfg.mir index d85e7bf4bdeb3..dc1cb21ce8b62 100644 --- a/llvm/test/CodeGen/ARM/constant-islands-cfg.mir +++ b/llvm/test/CodeGen/ARM/constant-islands-cfg.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: body: | diff --git a/llvm/test/CodeGen/ARM/constant-islands-split-IT.mir b/llvm/test/CodeGen/ARM/constant-islands-split-IT.mir index 236cd34f7fba5..38a678421dfad 100644 --- a/llvm/test/CodeGen/ARM/constant-islands-split-IT.mir +++ b/llvm/test/CodeGen/ARM/constant-islands-split-IT.mir @@ -47,8 +47,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 28 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] callSites: [] constants: diff --git a/llvm/test/CodeGen/ARM/execute-only-save-cpsr.mir b/llvm/test/CodeGen/ARM/execute-only-save-cpsr.mir index 67e05218a4f19..b368ab000ad9f 100644 --- a/llvm/test/CodeGen/ARM/execute-only-save-cpsr.mir +++ b/llvm/test/CodeGen/ARM/execute-only-save-cpsr.mir @@ -118,8 +118,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 2052 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: var, type: default, offset: 0, size: 4, alignment: 4, @@ -204,8 +204,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 2052 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: var, type: default, offset: 0, size: 4, alignment: 4, @@ -296,8 +296,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 2052 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: var, type: default, offset: 0, size: 4, alignment: 4, @@ -388,8 +388,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 2052 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: var, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir b/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir index bd343ebef26ad..c2cc420c637b4 100644 --- a/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir +++ b/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir @@ -61,8 +61,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: res, type: default, offset: -2, size: 2, alignment: 2, diff --git a/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir b/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir index 1f8e6b0ad4216..a093bc70295a6 100644 --- a/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir +++ b/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir @@ -62,8 +62,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: res, type: default, offset: -2, size: 2, alignment: 2, diff --git a/llvm/test/CodeGen/ARM/inlineasmbr-if-cvt.mir b/llvm/test/CodeGen/ARM/inlineasmbr-if-cvt.mir index ad45edc9835f5..16694cbeaa89b 100644 --- a/llvm/test/CodeGen/ARM/inlineasmbr-if-cvt.mir +++ b/llvm/test/CodeGen/ARM/inlineasmbr-if-cvt.mir @@ -69,8 +69,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/ARM/invalidated-save-point.ll b/llvm/test/CodeGen/ARM/invalidated-save-point.ll index bb602308a1793..0dc55b7efb02b 100644 --- a/llvm/test/CodeGen/ARM/invalidated-save-point.ll +++ b/llvm/test/CodeGen/ARM/invalidated-save-point.ll @@ -4,8 +4,8 @@ ; this point. Notably, if it isn't is will be invalid and reference a ; deleted block (%bb.-1.if.end) -; CHECK: savePoint: '' -; CHECK: restorePoint: '' +; CHECK: savePoints: [] +; CHECK: restorePoints: [] target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" target triple = "thumbv7" diff --git a/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir b/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir index 413f5ef52929b..4c732378efcc5 100644 --- a/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir +++ b/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir @@ -98,8 +98,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/ARM/stack_frame_offset.mir b/llvm/test/CodeGen/ARM/stack_frame_offset.mir index e387e079aa20d..7474dda14e965 100644 --- a/llvm/test/CodeGen/ARM/stack_frame_offset.mir +++ b/llvm/test/CodeGen/ARM/stack_frame_offset.mir @@ -51,8 +51,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, callee-saved-register: '', callee-saved-restored: true, @@ -103,8 +103,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, callee-saved-register: '', callee-saved-restored: true, @@ -155,8 +155,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Hexagon/cext-opt-block-addr.mir b/llvm/test/CodeGen/Hexagon/cext-opt-block-addr.mir index 9f140132dcd6c..17d4d6e15b195 100644 --- a/llvm/test/CodeGen/Hexagon/cext-opt-block-addr.mir +++ b/llvm/test/CodeGen/Hexagon/cext-opt-block-addr.mir @@ -76,8 +76,8 @@ frameInfo: hasTailCall: true isCalleeSavedInfoValid: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] @@ -141,8 +141,8 @@ frameInfo: hasTailCall: false isCalleeSavedInfoValid: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/Hexagon/early-if-predicator.mir b/llvm/test/CodeGen/Hexagon/early-if-predicator.mir index 1cb2f1e933731..dc817ee29c88f 100644 --- a/llvm/test/CodeGen/Hexagon/early-if-predicator.mir +++ b/llvm/test/CodeGen/Hexagon/early-if-predicator.mir @@ -53,8 +53,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Hexagon/machine-sink-float-usr.mir b/llvm/test/CodeGen/Hexagon/machine-sink-float-usr.mir index 45621d98da3ef..e7fb29aebd37d 100644 --- a/llvm/test/CodeGen/Hexagon/machine-sink-float-usr.mir +++ b/llvm/test/CodeGen/Hexagon/machine-sink-float-usr.mir @@ -152,8 +152,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -228,8 +228,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Hexagon/pipeliner/swp-phi-start.mir b/llvm/test/CodeGen/Hexagon/pipeliner/swp-phi-start.mir index 413d13d642db2..976c06f5a1cf5 100644 --- a/llvm/test/CodeGen/Hexagon/pipeliner/swp-phi-start.mir +++ b/llvm/test/CodeGen/Hexagon/pipeliner/swp-phi-start.mir @@ -100,8 +100,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/MIR/ARM/thumb2-sub-sp-t3.mir b/llvm/test/CodeGen/MIR/ARM/thumb2-sub-sp-t3.mir index e8e35ef2f4d49..ef4572ffc70ad 100644 --- a/llvm/test/CodeGen/MIR/ARM/thumb2-sub-sp-t3.mir +++ b/llvm/test/CodeGen/MIR/ARM/thumb2-sub-sp-t3.mir @@ -59,8 +59,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 4004 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: v, type: default, offset: 0, size: 4000, alignment: 1, diff --git a/llvm/test/CodeGen/MIR/Generic/frame-info.mir b/llvm/test/CodeGen/MIR/Generic/frame-info.mir index d5e014cf62991..ed7e32b99e6d2 100644 --- a/llvm/test/CodeGen/MIR/Generic/frame-info.mir +++ b/llvm/test/CodeGen/MIR/Generic/frame-info.mir @@ -46,8 +46,8 @@ tracksRegLiveness: true # CHECK-NEXT: hasTailCall: false # CHECK-NEXT: isCalleeSavedInfoValid: false # CHECK-NEXT: localFrameSize: 0 -# CHECK-NEXT: savePoint: '' -# CHECK-NEXT: restorePoint: '' +# CHECK-NEXT: savePoints: [] +# CHECK-NEXT: restorePoints: [] # CHECK: body frameInfo: maxAlignment: 4 diff --git a/llvm/test/CodeGen/MIR/Hexagon/addrmode-opt-nonreaching.mir b/llvm/test/CodeGen/MIR/Hexagon/addrmode-opt-nonreaching.mir index f6296d8ddf374..96e0925047378 100644 --- a/llvm/test/CodeGen/MIR/Hexagon/addrmode-opt-nonreaching.mir +++ b/llvm/test/CodeGen/MIR/Hexagon/addrmode-opt-nonreaching.mir @@ -127,8 +127,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/MIR/RISCV/machine-function-info.mir b/llvm/test/CodeGen/MIR/RISCV/machine-function-info.mir index 1861c61c30f63..585c63ffd08f7 100644 --- a/llvm/test/CodeGen/MIR/RISCV/machine-function-info.mir +++ b/llvm/test/CodeGen/MIR/RISCV/machine-function-info.mir @@ -58,8 +58,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: -8, size: 8, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/MIR/X86/branch-folder-with-label.mir b/llvm/test/CodeGen/MIR/X86/branch-folder-with-label.mir index ce225d4567e91..9ef8ea720cb9d 100644 --- a/llvm/test/CodeGen/MIR/X86/branch-folder-with-label.mir +++ b/llvm/test/CodeGen/MIR/X86/branch-folder-with-label.mir @@ -172,8 +172,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -215,8 +215,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true, debug-info-variable: '', @@ -289,8 +289,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/MIR/X86/diexpr-win32.mir b/llvm/test/CodeGen/MIR/X86/diexpr-win32.mir index b1bcf24f8c5f4..891b534faa797 100644 --- a/llvm/test/CodeGen/MIR/X86/diexpr-win32.mir +++ b/llvm/test/CodeGen/MIR/X86/diexpr-win32.mir @@ -174,8 +174,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -8, size: 4, alignment: 4, stack-id: default, callee-saved-register: '$esi' } @@ -232,8 +232,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 4, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '' } diff --git a/llvm/test/CodeGen/MIR/X86/fake-use-tailcall.mir b/llvm/test/CodeGen/MIR/X86/fake-use-tailcall.mir index 6c2cb0e55222b..5448d9604de4f 100644 --- a/llvm/test/CodeGen/MIR/X86/fake-use-tailcall.mir +++ b/llvm/test/CodeGen/MIR/X86/fake-use-tailcall.mir @@ -87,8 +87,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir b/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir index 0c68a3a3ed1a7..66f8640f11b27 100644 --- a/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir +++ b/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir @@ -30,14 +30,18 @@ liveins: - { reg: '$edi' } - { reg: '$esi' } # CHECK: frameInfo: -# CHECK: savePoint: '%bb.2' -# CHECK-NEXT: restorePoint: '%bb.2' +# CHECK: savePoints: +# CHECK-NEXT: - point: '%bb.2' +# CHECK: restorePoints: +# CHECK-NEXT: - point: '%bb.2' # CHECK: stack frameInfo: maxAlignment: 4 hasCalls: true - savePoint: '%bb.2' - restorePoint: '%bb.2' + savePoints: + - point: '%bb.2' + restorePoints: + - point: '%bb.2' stack: - { id: 0, name: tmp, offset: 0, size: 4, alignment: 4 } body: | diff --git a/llvm/test/CodeGen/MIR/X86/inline-asm-rm-exhaustion.mir b/llvm/test/CodeGen/MIR/X86/inline-asm-rm-exhaustion.mir index 6ca19aba1a65d..3503edd99f648 100644 --- a/llvm/test/CodeGen/MIR/X86/inline-asm-rm-exhaustion.mir +++ b/llvm/test/CodeGen/MIR/X86/inline-asm-rm-exhaustion.mir @@ -69,8 +69,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -132,8 +132,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, @@ -200,8 +200,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 16, stack-id: default, isImmutable: false, isAliased: false, callee-saved-register: '', diff --git a/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts-def-use.mir b/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts-def-use.mir index a86fcfe3920b4..3ac86e9f12e53 100644 --- a/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts-def-use.mir +++ b/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts-def-use.mir @@ -52,8 +52,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts.mir b/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts.mir index 9cde85bd211a9..ead6b17ab6820 100644 --- a/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts.mir +++ b/llvm/test/CodeGen/Mips/delay-slot-filler-bundled-insts.mir @@ -72,8 +72,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-call.mir b/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-call.mir index fe72a1720fb01..63c82d6d191dd 100644 --- a/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-call.mir +++ b/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-call.mir @@ -41,8 +41,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-tailcall.mir b/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-tailcall.mir index e87af5892e34b..32ef337379ebe 100644 --- a/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-tailcall.mir +++ b/llvm/test/CodeGen/Mips/indirect-jump-hazard/guards-verify-tailcall.mir @@ -42,8 +42,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dext-pos.mir b/llvm/test/CodeGen/Mips/instverify/dext-pos.mir index 02dd9085c31e8..8ffdf94bee326 100644 --- a/llvm/test/CodeGen/Mips/instverify/dext-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/dext-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dext-size.mir b/llvm/test/CodeGen/Mips/instverify/dext-size.mir index 97cb085eac505..7272963ea6dc8 100644 --- a/llvm/test/CodeGen/Mips/instverify/dext-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dext-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextm-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/dextm-pos-size.mir index e76af1be9493f..0071abcedf981 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextm-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextm-pos-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextm-pos.mir b/llvm/test/CodeGen/Mips/instverify/dextm-pos.mir index 2649683824472..9ebdde174cab4 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextm-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextm-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextm-size.mir b/llvm/test/CodeGen/Mips/instverify/dextm-size.mir index fc24a2756c6ab..eaa557076df5d 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextm-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextm-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextu-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/dextu-pos-size.mir index 7001221bb0db1..7bc97e235b784 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextu-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextu-pos-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextu-pos.mir b/llvm/test/CodeGen/Mips/instverify/dextu-pos.mir index b9e3b8c169e42..a3f11c0173bf6 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextu-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextu-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextu-size-valid.mir b/llvm/test/CodeGen/Mips/instverify/dextu-size-valid.mir index 6663b96494ab9..3ec97a5e890df 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextu-size-valid.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextu-size-valid.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dextu-size.mir b/llvm/test/CodeGen/Mips/instverify/dextu-size.mir index 8407a7a836f76..d789c8e5dbe5c 100644 --- a/llvm/test/CodeGen/Mips/instverify/dextu-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dextu-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dins-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/dins-pos-size.mir index d72837850cfbe..d131015dd42c9 100644 --- a/llvm/test/CodeGen/Mips/instverify/dins-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dins-pos-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dins-pos.mir b/llvm/test/CodeGen/Mips/instverify/dins-pos.mir index 71d4242c948c1..f57b9dcbf921a 100644 --- a/llvm/test/CodeGen/Mips/instverify/dins-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/dins-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dins-size.mir b/llvm/test/CodeGen/Mips/instverify/dins-size.mir index 35848a936e5c0..a8a719c17377e 100644 --- a/llvm/test/CodeGen/Mips/instverify/dins-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dins-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dinsm-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/dinsm-pos-size.mir index a00d3cf715a79..32ddee19e0fe9 100644 --- a/llvm/test/CodeGen/Mips/instverify/dinsm-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dinsm-pos-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dinsm-pos.mir b/llvm/test/CodeGen/Mips/instverify/dinsm-pos.mir index 0bbbdd2322459..8a05370d40847 100644 --- a/llvm/test/CodeGen/Mips/instverify/dinsm-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/dinsm-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dinsm-size.mir b/llvm/test/CodeGen/Mips/instverify/dinsm-size.mir index c1f5f044bdeea..61aa7c11901da 100644 --- a/llvm/test/CodeGen/Mips/instverify/dinsm-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dinsm-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dinsu-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/dinsu-pos-size.mir index 9f9953a855658..30e71b6bb22af 100644 --- a/llvm/test/CodeGen/Mips/instverify/dinsu-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dinsu-pos-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dinsu-pos.mir b/llvm/test/CodeGen/Mips/instverify/dinsu-pos.mir index 12e999d5d488f..2498d35867a7d 100644 --- a/llvm/test/CodeGen/Mips/instverify/dinsu-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/dinsu-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/dinsu-size.mir b/llvm/test/CodeGen/Mips/instverify/dinsu-size.mir index f204a3373f76f..2443f4ee94e6c 100644 --- a/llvm/test/CodeGen/Mips/instverify/dinsu-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/dinsu-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/ext-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/ext-pos-size.mir index c7b16fd50ab0e..f1a851835933f 100644 --- a/llvm/test/CodeGen/Mips/instverify/ext-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/ext-pos-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/ext-pos.mir b/llvm/test/CodeGen/Mips/instverify/ext-pos.mir index ce2abeb3cdcf4..fb1d875346574 100644 --- a/llvm/test/CodeGen/Mips/instverify/ext-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/ext-pos.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/ext-size.mir b/llvm/test/CodeGen/Mips/instverify/ext-size.mir index 57737ea60283d..8e587e9c92fa3 100644 --- a/llvm/test/CodeGen/Mips/instverify/ext-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/ext-size.mir @@ -32,8 +32,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/ins-pos-size.mir b/llvm/test/CodeGen/Mips/instverify/ins-pos-size.mir index 1e48f1e8a236c..bdd9b96727c3f 100644 --- a/llvm/test/CodeGen/Mips/instverify/ins-pos-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/ins-pos-size.mir @@ -35,8 +35,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/ins-pos.mir b/llvm/test/CodeGen/Mips/instverify/ins-pos.mir index c72e6f5a3be30..e0170735e02da 100644 --- a/llvm/test/CodeGen/Mips/instverify/ins-pos.mir +++ b/llvm/test/CodeGen/Mips/instverify/ins-pos.mir @@ -35,8 +35,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/instverify/ins-size.mir b/llvm/test/CodeGen/Mips/instverify/ins-size.mir index 92319bd3ff8a6..6a53816bee3cc 100644 --- a/llvm/test/CodeGen/Mips/instverify/ins-size.mir +++ b/llvm/test/CodeGen/Mips/instverify/ins-size.mir @@ -35,8 +35,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromips.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromips.mir index b686a5e8f1294..df76ff204773b 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromips.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromips.mir @@ -62,8 +62,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -162,8 +162,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromipsr6.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromipsr6.mir index aa6dfed58d5a5..121ce28deedc1 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromipsr6.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-micromipsr6.mir @@ -62,8 +62,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -154,8 +154,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mips.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mips.mir index 22625d726811a..d3892ae2daeeb 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mips.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mips.mir @@ -61,8 +61,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -165,8 +165,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mipsr6.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mipsr6.mir index a16573fac3c58..b05ccb9e9c9bc 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mipsr6.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-fp-mipsr6.mir @@ -63,8 +63,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -163,8 +163,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-microMIPS.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-microMIPS.mir index 9a85a50113b4a..5989298350f98 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-microMIPS.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-microMIPS.mir @@ -123,8 +123,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -214,8 +214,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -309,8 +309,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -404,8 +404,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -499,8 +499,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -594,8 +594,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -685,8 +685,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -780,8 +780,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-micromipsr6.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-micromipsr6.mir index 67ac46cbe5827..8f0cfbd4f2613 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-micromipsr6.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-micromipsr6.mir @@ -167,8 +167,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -254,8 +254,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -341,8 +341,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -428,8 +428,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -515,8 +515,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -602,8 +602,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -689,8 +689,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -776,8 +776,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -863,8 +863,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -950,8 +950,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1037,8 +1037,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1124,8 +1124,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64.mir index 4f293b70075a2..3c0c7b6c9ccc0 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64.mir @@ -107,8 +107,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -209,8 +209,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -311,8 +311,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -413,8 +413,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -515,8 +515,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -617,8 +617,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64r6.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64r6.mir index da4c0f0acd6d4..7ccf00edb2bab 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64r6.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mips64r6.mir @@ -179,8 +179,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -256,8 +256,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -333,8 +333,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -431,8 +431,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -529,8 +529,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -627,8 +627,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -725,8 +725,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -823,8 +823,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -921,8 +921,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1019,8 +1019,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1117,8 +1117,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1215,8 +1215,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mipsr6.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mipsr6.mir index bc110992c571e..6ce4dd8de1c99 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mipsr6.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int-mipsr6.mir @@ -167,8 +167,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -254,8 +254,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -341,8 +341,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -428,8 +428,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -515,8 +515,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -602,8 +602,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -689,8 +689,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -776,8 +776,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -863,8 +863,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -950,8 +950,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1037,8 +1037,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1124,8 +1124,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int.mir index 4174f3321dfea..76b366ef77ccb 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-int.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-int.mir @@ -101,8 +101,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -200,8 +200,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -299,8 +299,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -398,8 +398,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -497,8 +497,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -596,8 +596,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/longbranch/branch-limits-msa.mir b/llvm/test/CodeGen/Mips/longbranch/branch-limits-msa.mir index c83859bad0fcb..a115ddfcc3f67 100644 --- a/llvm/test/CodeGen/Mips/longbranch/branch-limits-msa.mir +++ b/llvm/test/CodeGen/Mips/longbranch/branch-limits-msa.mir @@ -248,8 +248,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -365,8 +365,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -479,8 +479,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -593,8 +593,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -704,8 +704,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -815,8 +815,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -932,8 +932,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1046,8 +1046,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1160,8 +1160,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1271,8 +1271,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/micromips-eva.mir b/llvm/test/CodeGen/Mips/micromips-eva.mir index 3851a6961e03f..04412ba8d50c2 100644 --- a/llvm/test/CodeGen/Mips/micromips-eva.mir +++ b/llvm/test/CodeGen/Mips/micromips-eva.mir @@ -91,8 +91,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -157,8 +157,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: z.addr, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Mips/micromips-short-delay-slot.mir b/llvm/test/CodeGen/Mips/micromips-short-delay-slot.mir index 216fec6a7f6ef..6da159fdffee2 100644 --- a/llvm/test/CodeGen/Mips/micromips-short-delay-slot.mir +++ b/llvm/test/CodeGen/Mips/micromips-short-delay-slot.mir @@ -43,8 +43,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-lwp-swp.mir b/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-lwp-swp.mir index 7ffdb409fd2b6..35a9ea6194e3a 100644 --- a/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-lwp-swp.mir +++ b/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-lwp-swp.mir @@ -44,8 +44,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -112,8 +112,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -180,8 +180,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -248,8 +248,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-no-lwp-swp.mir b/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-no-lwp-swp.mir index 2b136a3ff499a..66b613cada54f 100644 --- a/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-no-lwp-swp.mir +++ b/llvm/test/CodeGen/Mips/micromips-sizereduction/micromips-no-lwp-swp.mir @@ -42,8 +42,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -101,8 +101,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -160,8 +160,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -219,8 +219,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-mxgot-tls.mir b/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-mxgot-tls.mir index 6002705965cae..1e46c6950cf36 100644 --- a/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-mxgot-tls.mir +++ b/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-mxgot-tls.mir @@ -136,8 +136,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-o32.mir b/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-o32.mir index d9703c74fc5ce..a8e30391ce344 100644 --- a/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-o32.mir +++ b/llvm/test/CodeGen/Mips/mirparser/target-flags-pic-o32.mir @@ -63,8 +63,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/mirparser/target-flags-pic.mir b/llvm/test/CodeGen/Mips/mirparser/target-flags-pic.mir index 803a2d701fae4..487cc961c5c97 100644 --- a/llvm/test/CodeGen/Mips/mirparser/target-flags-pic.mir +++ b/llvm/test/CodeGen/Mips/mirparser/target-flags-pic.mir @@ -63,8 +63,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/mirparser/target-flags-static-tls.mir b/llvm/test/CodeGen/Mips/mirparser/target-flags-static-tls.mir index 3cfa28aa7d4fe..61d8c053ef975 100644 --- a/llvm/test/CodeGen/Mips/mirparser/target-flags-static-tls.mir +++ b/llvm/test/CodeGen/Mips/mirparser/target-flags-static-tls.mir @@ -128,8 +128,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/msa/emergency-spill.mir b/llvm/test/CodeGen/Mips/msa/emergency-spill.mir index 2089464528661..a05f7228db925 100644 --- a/llvm/test/CodeGen/Mips/msa/emergency-spill.mir +++ b/llvm/test/CodeGen/Mips/msa/emergency-spill.mir @@ -97,8 +97,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: retval, type: default, offset: 0, size: 16, alignment: 16, diff --git a/llvm/test/CodeGen/Mips/sll-micromips-r6-encoding.mir b/llvm/test/CodeGen/Mips/sll-micromips-r6-encoding.mir index 45807b2e48b0d..c14f5119276af 100644 --- a/llvm/test/CodeGen/Mips/sll-micromips-r6-encoding.mir +++ b/llvm/test/CodeGen/Mips/sll-micromips-r6-encoding.mir @@ -33,8 +33,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/Mips/unaligned-memops-mapping.mir b/llvm/test/CodeGen/Mips/unaligned-memops-mapping.mir index df5ef982a19f7..e5560acf2bc1f 100644 --- a/llvm/test/CodeGen/Mips/unaligned-memops-mapping.mir +++ b/llvm/test/CodeGen/Mips/unaligned-memops-mapping.mir @@ -45,8 +45,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -91,8 +91,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/NVPTX/proxy-reg-erasure.mir b/llvm/test/CodeGen/NVPTX/proxy-reg-erasure.mir index 7f80d011901d3..9ca52541eb2b8 100644 --- a/llvm/test/CodeGen/NVPTX/proxy-reg-erasure.mir +++ b/llvm/test/CodeGen/NVPTX/proxy-reg-erasure.mir @@ -66,8 +66,8 @@ frameInfo: hasTailCall: false isCalleeSavedInfoValid: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessNoProfileData.mir b/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessNoProfileData.mir index d3d3b194b3ce5..b204d9f60cced 100644 --- a/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessNoProfileData.mir +++ b/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessNoProfileData.mir @@ -123,8 +123,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessProfileData.mir b/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessProfileData.mir index e8ad54b9c6cd4..13997ef992d25 100644 --- a/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessProfileData.mir +++ b/llvm/test/CodeGen/PowerPC/DisableHoistingDueToBlockHotnessProfileData.mir @@ -168,8 +168,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/PowerPC/NoCRFieldRedefWhenSpillingCRBIT.mir b/llvm/test/CodeGen/PowerPC/NoCRFieldRedefWhenSpillingCRBIT.mir index 41e21248a3f0e..ffd0cd78ca988 100644 --- a/llvm/test/CodeGen/PowerPC/NoCRFieldRedefWhenSpillingCRBIT.mir +++ b/llvm/test/CodeGen/PowerPC/NoCRFieldRedefWhenSpillingCRBIT.mir @@ -71,8 +71,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/PowerPC/alignlongjumptest.mir b/llvm/test/CodeGen/PowerPC/alignlongjumptest.mir index 314844a2f3bf8..593150c5b5f6b 100644 --- a/llvm/test/CodeGen/PowerPC/alignlongjumptest.mir +++ b/llvm/test/CodeGen/PowerPC/alignlongjumptest.mir @@ -43,8 +43,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/PowerPC/block-placement-1.mir b/llvm/test/CodeGen/PowerPC/block-placement-1.mir index f91ab630112ca..d8e9ffe601d4e 100644 --- a/llvm/test/CodeGen/PowerPC/block-placement-1.mir +++ b/llvm/test/CodeGen/PowerPC/block-placement-1.mir @@ -140,8 +140,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -186,8 +186,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/PowerPC/block-placement.mir b/llvm/test/CodeGen/PowerPC/block-placement.mir index dab8dfbb7c37c..46f05495f3c65 100644 --- a/llvm/test/CodeGen/PowerPC/block-placement.mir +++ b/llvm/test/CodeGen/PowerPC/block-placement.mir @@ -111,8 +111,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/PowerPC/collapse-rotates.mir b/llvm/test/CodeGen/PowerPC/collapse-rotates.mir index 938b27f19d5ca..4fea03cf2aebb 100644 --- a/llvm/test/CodeGen/PowerPC/collapse-rotates.mir +++ b/llvm/test/CodeGen/PowerPC/collapse-rotates.mir @@ -45,8 +45,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-R0-special-handling.mir b/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-R0-special-handling.mir index e1d028548803f..fa353ac1d3402 100644 --- a/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-R0-special-handling.mir +++ b/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-R0-special-handling.mir @@ -111,8 +111,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -165,8 +165,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -219,8 +219,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -272,8 +272,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -322,8 +322,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -370,8 +370,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -417,8 +417,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-out-of-range.mir b/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-out-of-range.mir index cdd6be56b46d5..9a6974423e908 100644 --- a/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-out-of-range.mir +++ b/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-out-of-range.mir @@ -242,8 +242,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -292,8 +292,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -348,8 +348,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -411,8 +411,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -470,8 +470,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -528,8 +528,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -590,8 +590,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -648,8 +648,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -707,8 +707,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -765,8 +765,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -821,8 +821,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -876,8 +876,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -931,8 +931,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -986,8 +986,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1040,8 +1040,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1093,8 +1093,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1146,8 +1146,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1199,8 +1199,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1252,8 +1252,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1305,8 +1305,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs.mir b/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs.mir index fa06dd551a0d4..d54eb31647274 100644 --- a/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs.mir +++ b/llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs.mir @@ -1044,8 +1044,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1100,8 +1100,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1160,8 +1160,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1221,8 +1221,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1280,8 +1280,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1335,8 +1335,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1385,8 +1385,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1439,8 +1439,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1494,8 +1494,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1548,8 +1548,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1602,8 +1602,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1655,8 +1655,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1708,8 +1708,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1762,8 +1762,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1818,8 +1818,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1877,8 +1877,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -1938,8 +1938,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2002,8 +2002,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2072,8 +2072,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2149,8 +2149,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2229,8 +2229,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2306,8 +2306,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2384,8 +2384,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2461,8 +2461,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2542,8 +2542,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2621,8 +2621,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2697,8 +2697,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2772,8 +2772,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2845,8 +2845,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2920,8 +2920,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -2993,8 +2993,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3077,8 +3077,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: default, offset: 0, size: 16, alignment: 16, @@ -3183,8 +3183,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3256,8 +3256,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3329,8 +3329,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3402,8 +3402,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3465,8 +3465,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3515,8 +3515,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3562,8 +3562,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3608,8 +3608,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3658,8 +3658,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3713,8 +3713,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3768,8 +3768,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3823,8 +3823,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3874,8 +3874,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3920,8 +3920,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -3970,8 +3970,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4024,8 +4024,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4078,8 +4078,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4131,8 +4131,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4183,8 +4183,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4235,8 +4235,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4284,8 +4284,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4339,8 +4339,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4404,8 +4404,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4467,8 +4467,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4522,8 +4522,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4575,8 +4575,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4628,8 +4628,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4681,8 +4681,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4739,8 +4739,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4797,8 +4797,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4859,8 +4859,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4917,8 +4917,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -4976,8 +4976,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5036,8 +5036,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5091,8 +5091,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5144,8 +5144,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5209,8 +5209,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5282,8 +5282,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5357,8 +5357,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5430,8 +5430,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5505,8 +5505,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5578,8 +5578,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5652,8 +5652,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5723,8 +5723,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5794,8 +5794,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5867,8 +5867,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -5938,8 +5938,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6011,8 +6011,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6074,8 +6074,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6126,8 +6126,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6178,8 +6178,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6236,8 +6236,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6297,8 +6297,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6351,8 +6351,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6401,8 +6401,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6448,8 +6448,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -6494,8 +6494,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/ctrloop-do-not-duplicate-mi.mir b/llvm/test/CodeGen/PowerPC/ctrloop-do-not-duplicate-mi.mir index d8bd70acbfae4..39bb035034725 100644 --- a/llvm/test/CodeGen/PowerPC/ctrloop-do-not-duplicate-mi.mir +++ b/llvm/test/CodeGen/PowerPC/ctrloop-do-not-duplicate-mi.mir @@ -117,8 +117,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/PowerPC/livevars-crash2.mir b/llvm/test/CodeGen/PowerPC/livevars-crash2.mir index deaae3936cefb..e30c4e6ade9b1 100644 --- a/llvm/test/CodeGen/PowerPC/livevars-crash2.mir +++ b/llvm/test/CodeGen/PowerPC/livevars-crash2.mir @@ -136,8 +136,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/PowerPC/peephole-phi-acc.mir b/llvm/test/CodeGen/PowerPC/peephole-phi-acc.mir index f615fcf9f8157..7b39b694bb745 100644 --- a/llvm/test/CodeGen/PowerPC/peephole-phi-acc.mir +++ b/llvm/test/CodeGen/PowerPC/peephole-phi-acc.mir @@ -223,8 +223,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -337,8 +337,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -485,8 +485,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -696,8 +696,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/PowerPC/peephole-replaceInstr-after-eliminate-extsw.mir b/llvm/test/CodeGen/PowerPC/peephole-replaceInstr-after-eliminate-extsw.mir index 088bdb8f241f3..6bd0439886677 100644 --- a/llvm/test/CodeGen/PowerPC/peephole-replaceInstr-after-eliminate-extsw.mir +++ b/llvm/test/CodeGen/PowerPC/peephole-replaceInstr-after-eliminate-extsw.mir @@ -447,8 +447,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/PowerPC/phi-eliminate.mir b/llvm/test/CodeGen/PowerPC/phi-eliminate.mir index 72f778286abe4..38591efffe805 100644 --- a/llvm/test/CodeGen/PowerPC/phi-eliminate.mir +++ b/llvm/test/CodeGen/PowerPC/phi-eliminate.mir @@ -122,8 +122,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/PowerPC/remove-copy-crunsetcrbit.mir b/llvm/test/CodeGen/PowerPC/remove-copy-crunsetcrbit.mir index f3ef95bbb79a4..902a68c752f32 100644 --- a/llvm/test/CodeGen/PowerPC/remove-copy-crunsetcrbit.mir +++ b/llvm/test/CodeGen/PowerPC/remove-copy-crunsetcrbit.mir @@ -99,8 +99,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/PowerPC/remove-implicit-use.mir b/llvm/test/CodeGen/PowerPC/remove-implicit-use.mir index f5b931e1e4238..86a20e729ad6e 100644 --- a/llvm/test/CodeGen/PowerPC/remove-implicit-use.mir +++ b/llvm/test/CodeGen/PowerPC/remove-implicit-use.mir @@ -56,8 +56,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/PowerPC/remove-redundant-li-skip-imp-kill.mir b/llvm/test/CodeGen/PowerPC/remove-redundant-li-skip-imp-kill.mir index 913877b0d4318..067618022a34e 100644 --- a/llvm/test/CodeGen/PowerPC/remove-redundant-li-skip-imp-kill.mir +++ b/llvm/test/CodeGen/PowerPC/remove-redundant-li-skip-imp-kill.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/PowerPC/remove-self-copies.mir b/llvm/test/CodeGen/PowerPC/remove-self-copies.mir index b5713a9349f69..948f5ad7df246 100644 --- a/llvm/test/CodeGen/PowerPC/remove-self-copies.mir +++ b/llvm/test/CodeGen/PowerPC/remove-self-copies.mir @@ -65,8 +65,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/rlwinm_rldicl_to_andi.mir b/llvm/test/CodeGen/PowerPC/rlwinm_rldicl_to_andi.mir index a1d8539dd8cb6..f2f29a927c6f9 100644 --- a/llvm/test/CodeGen/PowerPC/rlwinm_rldicl_to_andi.mir +++ b/llvm/test/CodeGen/PowerPC/rlwinm_rldicl_to_andi.mir @@ -107,8 +107,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -167,8 +167,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -227,8 +227,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -284,8 +284,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -338,8 +338,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -392,8 +392,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/schedule-addi-load.mir b/llvm/test/CodeGen/PowerPC/schedule-addi-load.mir index 1717238b2b7a0..9ff3c885f4b26 100644 --- a/llvm/test/CodeGen/PowerPC/schedule-addi-load.mir +++ b/llvm/test/CodeGen/PowerPC/schedule-addi-load.mir @@ -68,8 +68,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/PowerPC/setcr_bc.mir b/llvm/test/CodeGen/PowerPC/setcr_bc.mir index bc8bb5582137f..a5d61e25817d1 100644 --- a/llvm/test/CodeGen/PowerPC/setcr_bc.mir +++ b/llvm/test/CodeGen/PowerPC/setcr_bc.mir @@ -64,8 +64,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/PowerPC/setcr_bc2.mir b/llvm/test/CodeGen/PowerPC/setcr_bc2.mir index 5986c885f189e..8da4d1edb4bd8 100644 --- a/llvm/test/CodeGen/PowerPC/setcr_bc2.mir +++ b/llvm/test/CodeGen/PowerPC/setcr_bc2.mir @@ -64,8 +64,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/PowerPC/setcr_bc3.mir b/llvm/test/CodeGen/PowerPC/setcr_bc3.mir index 2d037d03bb6b7..37ef2c41d2580 100644 --- a/llvm/test/CodeGen/PowerPC/setcr_bc3.mir +++ b/llvm/test/CodeGen/PowerPC/setcr_bc3.mir @@ -37,8 +37,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/PowerPC/tls_get_addr_fence1.mir b/llvm/test/CodeGen/PowerPC/tls_get_addr_fence1.mir index 73bd475e9d498..e95c43d2dd4de 100644 --- a/llvm/test/CodeGen/PowerPC/tls_get_addr_fence1.mir +++ b/llvm/test/CodeGen/PowerPC/tls_get_addr_fence1.mir @@ -43,8 +43,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/tls_get_addr_fence2.mir b/llvm/test/CodeGen/PowerPC/tls_get_addr_fence2.mir index ffeb066b94785..dcb8b8ecbb2f7 100644 --- a/llvm/test/CodeGen/PowerPC/tls_get_addr_fence2.mir +++ b/llvm/test/CodeGen/PowerPC/tls_get_addr_fence2.mir @@ -43,8 +43,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/PowerPC/two-address-crash.mir b/llvm/test/CodeGen/PowerPC/two-address-crash.mir index cd2e69d8612b9..61b9c903b6995 100644 --- a/llvm/test/CodeGen/PowerPC/two-address-crash.mir +++ b/llvm/test/CodeGen/PowerPC/two-address-crash.mir @@ -62,8 +62,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/RISCV/live-sp.mir b/llvm/test/CodeGen/RISCV/live-sp.mir index 9f40870feb00f..29e11196f14ab 100644 --- a/llvm/test/CodeGen/RISCV/live-sp.mir +++ b/llvm/test/CodeGen/RISCV/live-sp.mir @@ -54,8 +54,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/RISCV/pr53662.mir b/llvm/test/CodeGen/RISCV/pr53662.mir index ce5e5e811f2c6..08dbab5571d88 100644 --- a/llvm/test/CodeGen/RISCV/pr53662.mir +++ b/llvm/test/CodeGen/RISCV/pr53662.mir @@ -10,8 +10,10 @@ --- name: b frameInfo: - savePoint: '%bb.0' - restorePoint: '%bb.1' + savePoints: + - point: '%bb.0' + restorePoints: + - point: '%bb.1' body: | ; CHECK-LABEL: name: b ; CHECK: bb.0: diff --git a/llvm/test/CodeGen/RISCV/rvv/addi-rvv-stack-object.mir b/llvm/test/CodeGen/RISCV/rvv/addi-rvv-stack-object.mir index 080a89e41f0d5..9d33992b8a160 100644 --- a/llvm/test/CodeGen/RISCV/rvv/addi-rvv-stack-object.mir +++ b/llvm/test/CodeGen/RISCV/rvv/addi-rvv-stack-object.mir @@ -33,8 +33,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: local0, type: default, offset: 0, size: 16, alignment: 16, diff --git a/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir b/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir index 9e6a36d68833d..7eb94a988389d 100644 --- a/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir +++ b/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir @@ -34,8 +34,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 2048, alignment: 128, diff --git a/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir b/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir index 559362e6d6274..b6b2b2cf578e7 100644 --- a/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir +++ b/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir @@ -68,8 +68,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 2048, alignment: 128, diff --git a/llvm/test/CodeGen/RISCV/rvv/rvv-stack-align.mir b/llvm/test/CodeGen/RISCV/rvv/rvv-stack-align.mir index 749bd4c13879b..c0f172422adfc 100644 --- a/llvm/test/CodeGen/RISCV/rvv/rvv-stack-align.mir +++ b/llvm/test/CodeGen/RISCV/rvv/rvv-stack-align.mir @@ -169,8 +169,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 16, alignment: 8, @@ -214,8 +214,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 16, alignment: 16, @@ -259,8 +259,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 16, alignment: 32, diff --git a/llvm/test/CodeGen/RISCV/rvv/undef-earlyclobber-chain.mir b/llvm/test/CodeGen/RISCV/rvv/undef-earlyclobber-chain.mir index 69078710e9ccf..8d47aa769f59a 100644 --- a/llvm/test/CodeGen/RISCV/rvv/undef-earlyclobber-chain.mir +++ b/llvm/test/CodeGen/RISCV/rvv/undef-earlyclobber-chain.mir @@ -62,8 +62,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/RISCV/rvv/wrong-stack-offset-for-rvv-object.mir b/llvm/test/CodeGen/RISCV/rvv/wrong-stack-offset-for-rvv-object.mir index 2ec51911a65f7..a6a75121e6768 100644 --- a/llvm/test/CodeGen/RISCV/rvv/wrong-stack-offset-for-rvv-object.mir +++ b/llvm/test/CodeGen/RISCV/rvv/wrong-stack-offset-for-rvv-object.mir @@ -93,8 +93,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: -8, size: 8, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/RISCV/stack-slot-coloring.mir b/llvm/test/CodeGen/RISCV/stack-slot-coloring.mir index 17bbcc2981bb8..1d223ccbdf5b4 100644 --- a/llvm/test/CodeGen/RISCV/stack-slot-coloring.mir +++ b/llvm/test/CodeGen/RISCV/stack-slot-coloring.mir @@ -49,8 +49,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir b/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir index 6e5ac31f192de..1b3979c721741 100644 --- a/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir +++ b/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir @@ -38,8 +38,10 @@ liveins: frameInfo: maxAlignment: 1 localFrameSize: 32 - savePoint: '%bb.2' - restorePoint: '%bb.2' + savePoints: + - point: '%bb.2' + restorePoints: + - point: '%bb.2' stack: - { id: 0, size: 32, alignment: 1, local-offset: -32 } machineFunctionInfo: diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/add_reduce.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/add_reduce.mir index 870ee341a4fcd..c90e9e537b720 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/add_reduce.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/add_reduce.mir @@ -98,8 +98,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 24, size: 4, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/begin-vpt-without-inst.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/begin-vpt-without-inst.mir index c5f9d32536688..e68ede55c6677 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/begin-vpt-without-inst.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/begin-vpt-without-inst.mir @@ -43,8 +43,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-default.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-default.mir index 647270bc0aad7..5d74496073e52 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-default.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-default.mir @@ -133,8 +133,8 @@ frameInfo: stackSize: 76 offsetAdjustment: 0 maxAlignment: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize-strd-lr.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize-strd-lr.mir index d4bc80dde2545..68718622ff894 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize-strd-lr.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize-strd-lr.mir @@ -136,8 +136,8 @@ frameInfo: stackSize: 68 offsetAdjustment: 0 maxAlignment: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize.mir index e7f64cac75b33..8c5224d712f4f 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/biquad-cascade-optsize.mir @@ -138,8 +138,8 @@ frameInfo: offsetAdjustment: 0 maxAlignment: 4 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/cond-mov.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/cond-mov.mir index 615dd3f476545..716012e7d0555 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/cond-mov.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/cond-mov.mir @@ -69,8 +69,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/disjoint-vcmp.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/disjoint-vcmp.mir index 9c2434da4b791..1614a3e9b5944 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/disjoint-vcmp.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/disjoint-vcmp.mir @@ -95,8 +95,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-ignore-vctp.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-ignore-vctp.mir index 59f5c8e4f14a3..bfc002491acd1 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-ignore-vctp.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-ignore-vctp.mir @@ -72,8 +72,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update.mir index 18fc66eeb262c..18b416555d8de 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update.mir @@ -88,8 +88,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir index 4998b5bafc133..9d05acb7cbba1 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir @@ -300,8 +300,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -76, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/end-positive-offset.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/end-positive-offset.mir index 9ebb714bc4eea..bb720f7f82464 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/end-positive-offset.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/end-positive-offset.mir @@ -82,8 +82,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/extract-element.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/extract-element.mir index cd5292310f168..dbd4b702bb5de 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/extract-element.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/extract-element.mir @@ -89,8 +89,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-16.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-16.mir index d95db905283c9..893ed93fb160f 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-16.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-16.mir @@ -80,8 +80,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-32.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-32.mir index 35effea71350d..74b7c56bd5f90 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-32.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-32.mir @@ -88,8 +88,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-8.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-8.mir index 71f8f20a37f78..e80bf22f80a2c 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-8.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-8.mir @@ -81,8 +81,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir index 40b557a5e6dec..4b32659e53dd0 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir @@ -102,8 +102,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 4, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir index 380c6957c3b1c..63e7e6adb9236 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir @@ -102,8 +102,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 4, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir index a81f2a557180f..ea5a7575662ae 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir @@ -102,8 +102,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 4, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir index 45f0371660a56..ec402cba1a8b7 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir @@ -103,8 +103,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir index 78a05c38b46fa..e0495b27fb6c4 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir @@ -105,8 +105,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain-store.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain-store.mir index 0c6c3330991d8..2cba06f1311e0 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain-store.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain-store.mir @@ -111,8 +111,8 @@ frameInfo: offsetAdjustment: 0 maxAlignment: 4 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -216,8 +216,8 @@ frameInfo: stackSize: 8 offsetAdjustment: 0 maxAlignment: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain.mir index 6f021dae228b7..285434d4db2e7 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain.mir @@ -74,8 +74,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-itercount.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-itercount.mir index 1e1e2a4dda3e7..f6b01df6c2536 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-itercount.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-itercount.mir @@ -75,8 +75,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-random.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-random.mir index ea8a8a5b2ab06..3e2dac9d628ac 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-random.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-random.mir @@ -76,8 +76,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-chain.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-chain.mir index 9f027f9164752..e6d46138f1d8f 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-chain.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-chain.mir @@ -182,8 +182,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-prev-iteration.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-prev-iteration.mir index e0fd23130baf6..71c6764ebbdf0 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-prev-iteration.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-prev-iteration.mir @@ -183,8 +183,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-liveout.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-liveout.mir index 6b29018d28d63..8050d75379274 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-liveout.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-liveout.mir @@ -183,8 +183,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir index 6c67084dd02df..fc8d613578122 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir @@ -118,8 +118,8 @@ frameInfo: offsetAdjustment: 0 maxAlignment: 4 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -256,8 +256,8 @@ frameInfo: stackSize: 8 offsetAdjustment: 0 maxAlignment: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/massive.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/massive.mir index 9448a1ab00d3e..4e0adbc5044ce 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/massive.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/massive.mir @@ -87,8 +87,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix-debug.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix-debug.mir index 2dfaf17326941..8f773d1d17ed8 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix-debug.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix-debug.mir @@ -168,8 +168,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix.mir index cbed22ff10ef8..a5a7b8a886c6a 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix.mir @@ -180,8 +180,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dls.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dls.mir index 29406adc596f4..35ea3afa99422 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dls.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dls.mir @@ -69,8 +69,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir index cc39f9850d959..c9598e669d8ca 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir @@ -125,8 +125,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-lr-terminator.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-lr-terminator.mir index 4f96e04f0fa89..b6189f1b151ed 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-lr-terminator.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-lr-terminator.mir @@ -83,8 +83,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-def-before-start.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-def-before-start.mir index 80dc97b52d79b..73daf2b826c29 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-def-before-start.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-def-before-start.mir @@ -88,8 +88,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-start-after-def.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-start-after-def.mir index 9d9170f1e6adf..8ba1585c92703 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-start-after-def.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-start-after-def.mir @@ -88,8 +88,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiblock-massive.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiblock-massive.mir index 06dae765c8e33..1396f129e8e07 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiblock-massive.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiblock-massive.mir @@ -87,8 +87,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiple-do-loops.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiple-do-loops.mir index 8e5172cadc329..bd12c6af201eb 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiple-do-loops.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/multiple-do-loops.mir @@ -316,8 +316,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -531,8 +531,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -751,8 +751,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-reduct-livein-arg.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-reduct-livein-arg.mir index e36a8e2b8c666..db8bbd246d797 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-reduct-livein-arg.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-reduct-livein-arg.mir @@ -97,8 +97,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-cbnz.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-cbnz.mir index 15719baece36f..8aa19efed7d3d 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-cbnz.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-cbnz.mir @@ -99,8 +99,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-reorder.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-reorder.mir index fc88475399a74..3419ceaef7ffe 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-reorder.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec-reorder.mir @@ -98,8 +98,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec.mir index a80f4e9ffae60..963a9be3c942d 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-dec.mir @@ -102,8 +102,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-vpsel-liveout.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-vpsel-liveout.mir index ab47e5a181eb0..d3829d6595aa9 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-vpsel-liveout.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/no-vpsel-liveout.mir @@ -86,8 +86,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-load.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-load.mir index 5279f13bfc876..7de3ee669bf0f 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-load.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-load.mir @@ -91,8 +91,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-store.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-store.mir index 1b7fec49238ab..32e4bc1888755 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-store.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/non-masked-store.mir @@ -83,8 +83,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/out-of-range-cbz.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/out-of-range-cbz.mir index eb10cd7692cc4..e402689df0bf1 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/out-of-range-cbz.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/out-of-range-cbz.mir @@ -144,8 +144,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/remove-elem-moves.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/remove-elem-moves.mir index 345fec361c69c..730d213bb73dc 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/remove-elem-moves.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/remove-elem-moves.mir @@ -118,8 +118,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-call.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-call.mir index 1fe361d478a3e..32e419f59d634 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-call.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-call.mir @@ -71,8 +71,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-read.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-read.mir index cd590c98894e9..8a4fbf3e787ab 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-read.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-read.mir @@ -67,8 +67,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-write.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-write.mir index 78d52eb4106d9..b61f645731d0c 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-write.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-after-write.mir @@ -73,8 +73,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-header.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-header.mir index eec1c3973923f..3ac29dcea6a49 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-header.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-header.mir @@ -136,8 +136,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-loop.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-loop.mir index 1c1d21daf0375..e3ee7ce5bc453 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-loop.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-non-loop.mir @@ -89,8 +89,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-while.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-while.mir index 3a55b4905ec56..7fd32c7bb20d8 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-while.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/revert-while.mir @@ -77,8 +77,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-def-no-mov.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-def-no-mov.mir index 4ee131d1d46ec..fdfb86322bf0b 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-def-no-mov.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-def-no-mov.mir @@ -74,8 +74,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-retaining.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-retaining.mir index 8e172f1553fc8..756b8d61996e0 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-retaining.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/safe-retaining.mir @@ -98,7 +98,7 @@ frameInfo: stackSize: 8 offsetAdjustment: 0 maxAlignment: 4 - restorePoint: '' + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/size-limit.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/size-limit.mir index 8406720f02928..7dd1c1ff63324 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/size-limit.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/size-limit.mir @@ -87,8 +87,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-debug.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-debug.mir index 43287b3c5f03b..ce256a62a4442 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-debug.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-debug.mir @@ -145,8 +145,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-vpt-debug.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-vpt-debug.mir index a11d5e70876ab..7f9545aefdbbb 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-vpt-debug.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-vpt-debug.mir @@ -156,8 +156,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/switch.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/switch.mir index 9b369cb38fe1a..b843664d677dc 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/switch.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/switch.mir @@ -101,8 +101,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unrolled-and-vector.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unrolled-and-vector.mir index 0b50c2df4c658..a5a678ceb16c1 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unrolled-and-vector.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unrolled-and-vector.mir @@ -197,8 +197,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-def.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-def.mir index f2eef49c02f9c..426e8143a69cf 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-def.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-def.mir @@ -74,8 +74,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-use.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-use.mir index f847e6afd69ac..326f5a2de2dbf 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-use.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-cpsr-loop-use.mir @@ -74,8 +74,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-use-after.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-use-after.mir index ebae1717fcf81..ab316a8a0efae 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-use-after.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-use-after.mir @@ -72,8 +72,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vaddv.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vaddv.mir index 9acbeb2c1ea07..7a877ea0856d7 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vaddv.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vaddv.mir @@ -828,8 +828,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -933,8 +933,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1038,8 +1038,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1142,8 +1142,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1259,8 +1259,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1376,8 +1376,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1506,8 +1506,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1623,8 +1623,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -1753,8 +1753,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -1882,8 +1882,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2021,8 +2021,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2149,8 +2149,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2288,8 +2288,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2416,8 +2416,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2555,8 +2555,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2683,8 +2683,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -2822,8 +2822,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -2945,8 +2945,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -3070,8 +3070,8 @@ frameInfo: maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-add-operand-liveout.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-add-operand-liveout.mir index 08b71c43b51d3..4123615cb64a6 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-add-operand-liveout.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-add-operand-liveout.mir @@ -93,8 +93,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir index d634e6a7ff7b8..14084c41977be 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir @@ -85,8 +85,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir index 7164ff9a9a21e..1b3b1f5f03174 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir @@ -116,8 +116,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, @@ -256,8 +256,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, @@ -404,8 +404,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, @@ -552,8 +552,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subi3.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subi3.mir index 7d42b407517bd..abc3b5d6d5fc6 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subi3.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subi3.mir @@ -83,8 +83,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri.mir index 2b2999f81a2e8..d91f27ff68fbe 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri.mir @@ -82,8 +82,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri12.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri12.mir index 9f8c6dab8c468..69c1a648df579 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri12.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri12.mir @@ -82,8 +82,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp16-reduce.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp16-reduce.mir index 74039faa45e8e..ab071fe132013 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp16-reduce.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp16-reduce.mir @@ -92,8 +92,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmaxmin_vpred_r.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmaxmin_vpred_r.mir index c89ecd3d0bba8..58786360d2ea9 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmaxmin_vpred_r.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmaxmin_vpred_r.mir @@ -94,8 +94,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 24, size: 4, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmldava_in_vpt.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmldava_in_vpt.mir index c260c3a89dc4c..d629289499223 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmldava_in_vpt.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmldava_in_vpt.mir @@ -95,8 +95,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 20, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-block-debug.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-block-debug.mir index 26e7b8041a233..41a0e67ead7d9 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-block-debug.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-block-debug.mir @@ -243,8 +243,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 8, size: 4, alignment: 8, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-blocks.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-blocks.mir index 284282023170a..3c44f60f6fdc8 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-blocks.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/vpt-blocks.mir @@ -195,8 +195,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -320,8 +320,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -454,8 +454,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -586,8 +586,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -709,8 +709,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -831,8 +831,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -948,8 +948,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while-negative-offset.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while-negative-offset.mir index a6ae8bc75a99e..15f3e574dde7c 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while-negative-offset.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while-negative-offset.mir @@ -90,8 +90,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while.mir index bc739dea40ef6..5ccc1f326d4e2 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/while.mir @@ -74,8 +74,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wlstp.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wlstp.mir index 8076caa563a30..408b85eebb8f9 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wlstp.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wlstp.mir @@ -173,8 +173,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -295,8 +295,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, @@ -403,8 +403,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-liveout-lsr-shift.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-liveout-lsr-shift.mir index 3e1fd796d6ed0..45165840aa85f 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-liveout-lsr-shift.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-liveout-lsr-shift.mir @@ -92,8 +92,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-opcode-liveout.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-opcode-liveout.mir index 2aab1ed916e76..411dffcd6e45a 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-opcode-liveout.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-opcode-liveout.mir @@ -98,8 +98,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-operand-liveout.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-operand-liveout.mir index b0a0ccbd66e12..1c8cc5b2acd17 100644 --- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-operand-liveout.mir +++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-operand-liveout.mir @@ -90,8 +90,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/bti-pac-replace-1.mir b/llvm/test/CodeGen/Thumb2/bti-pac-replace-1.mir index a043c42c8644c..654a0d08d8947 100644 --- a/llvm/test/CodeGen/Thumb2/bti-pac-replace-1.mir +++ b/llvm/test/CodeGen/Thumb2/bti-pac-replace-1.mir @@ -44,8 +44,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/Thumb2/ifcvt-neon-deprecated.mir b/llvm/test/CodeGen/Thumb2/ifcvt-neon-deprecated.mir index 1f5edb0c78b91..74132a4b946c8 100644 --- a/llvm/test/CodeGen/Thumb2/ifcvt-neon-deprecated.mir +++ b/llvm/test/CodeGen/Thumb2/ifcvt-neon-deprecated.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-1-pred.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-1-pred.mir index 074c95986e6da..653cff8484325 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-1-pred.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-1-pred.mir @@ -53,8 +53,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-2-preds.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-2-preds.mir index 567f23bed1af4..3280f463ae497 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-2-preds.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-2-preds.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-ctrl-flow.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-ctrl-flow.mir index a66f9f9393810..2d07be82a3fdf 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-ctrl-flow.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-ctrl-flow.mir @@ -57,8 +57,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-non-consecutive-ins.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-non-consecutive-ins.mir index 15508351ea33e..d131ad955f39e 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-non-consecutive-ins.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks-non-consecutive-ins.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks.mir index 1f0b095eec2b3..f241cc49f3f67 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-2-blocks.mir @@ -57,8 +57,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-3-blocks-kill-vpr.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-3-blocks-kill-vpr.mir index 40c333718ee74..fdad28d25c298 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-3-blocks-kill-vpr.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-3-blocks-kill-vpr.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-block-1-ins.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-block-1-ins.mir index 67469e50a5c3b..a9b7f3885b55e 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-block-1-ins.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-block-1-ins.mir @@ -53,8 +53,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-block-2-ins.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-block-2-ins.mir index 54621bd307de6..0197711e5c282 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-block-2-ins.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-block-2-ins.mir @@ -55,8 +55,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-block-4-ins.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-block-4-ins.mir index 02e50a36284d3..15da87cc1d033 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-block-4-ins.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-block-4-ins.mir @@ -56,8 +56,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-block-elses.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-block-elses.mir index aa46ea145f4e2..cb00b8d556272 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-block-elses.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-block-elses.mir @@ -56,8 +56,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-block-fold-vcmp.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-block-fold-vcmp.mir index e583df903d3ed..1bab116202fe1 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-block-fold-vcmp.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-block-fold-vcmp.mir @@ -66,8 +66,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 12, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-block-optnone.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-block-optnone.mir index df56c9506698b..c6a79874825d9 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-block-optnone.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-block-optnone.mir @@ -53,8 +53,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-preuse.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-preuse.mir index 3499916bed912..14b1d29a6002b 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vpt-preuse.mir +++ b/llvm/test/CodeGen/Thumb2/mve-vpt-preuse.mir @@ -51,8 +51,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/Thumb2/pipeliner-preserve-ties.mir b/llvm/test/CodeGen/Thumb2/pipeliner-preserve-ties.mir index 6983c6f97cc81..a71716a4d80f7 100644 --- a/llvm/test/CodeGen/Thumb2/pipeliner-preserve-ties.mir +++ b/llvm/test/CodeGen/Thumb2/pipeliner-preserve-ties.mir @@ -157,8 +157,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/VE/Scalar/fold-imm-addsl.mir b/llvm/test/CodeGen/VE/Scalar/fold-imm-addsl.mir index a3e374a46dc94..d821262e34b74 100644 --- a/llvm/test/CodeGen/VE/Scalar/fold-imm-addsl.mir +++ b/llvm/test/CodeGen/VE/Scalar/fold-imm-addsl.mir @@ -35,8 +35,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -90,8 +90,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -145,8 +145,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -200,8 +200,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/VE/Scalar/fold-imm-cmpsl.mir b/llvm/test/CodeGen/VE/Scalar/fold-imm-cmpsl.mir index aab3d5bfcd7d3..a28cf50c00e6d 100644 --- a/llvm/test/CodeGen/VE/Scalar/fold-imm-cmpsl.mir +++ b/llvm/test/CodeGen/VE/Scalar/fold-imm-cmpsl.mir @@ -35,8 +35,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] @@ -90,8 +90,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/WebAssembly/multivalue-dont-move-def-past-use.mir b/llvm/test/CodeGen/WebAssembly/multivalue-dont-move-def-past-use.mir index eb9dfa9dfa60d..84d3180ab42d9 100644 --- a/llvm/test/CodeGen/WebAssembly/multivalue-dont-move-def-past-use.mir +++ b/llvm/test/CodeGen/WebAssembly/multivalue-dont-move-def-past-use.mir @@ -73,8 +73,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/PR37310.mir b/llvm/test/CodeGen/X86/PR37310.mir index 6c68f79661bec..1190f9ae6a136 100644 --- a/llvm/test/CodeGen/X86/PR37310.mir +++ b/llvm/test/CodeGen/X86/PR37310.mir @@ -97,8 +97,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: q, type: default, offset: 0, size: 512, alignment: 16, diff --git a/llvm/test/CodeGen/X86/StackColoring-use-between-allocas.mir b/llvm/test/CodeGen/X86/StackColoring-use-between-allocas.mir index b820541da2be5..a2cf546b36113 100644 --- a/llvm/test/CodeGen/X86/StackColoring-use-between-allocas.mir +++ b/llvm/test/CodeGen/X86/StackColoring-use-between-allocas.mir @@ -118,8 +118,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: a, type: default, offset: 0, size: 1, alignment: 8, diff --git a/llvm/test/CodeGen/X86/align-basic-block-sections.mir b/llvm/test/CodeGen/X86/align-basic-block-sections.mir index 7521341ff3ea0..973e5ad59ae66 100644 --- a/llvm/test/CodeGen/X86/align-basic-block-sections.mir +++ b/llvm/test/CodeGen/X86/align-basic-block-sections.mir @@ -83,8 +83,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/amx_tile_pair_configure_O0.mir b/llvm/test/CodeGen/X86/amx_tile_pair_configure_O0.mir index dc79134321e9c..6265e727a72a4 100644 --- a/llvm/test/CodeGen/X86/amx_tile_pair_configure_O0.mir +++ b/llvm/test/CodeGen/X86/amx_tile_pair_configure_O0.mir @@ -43,8 +43,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/X86/amx_tile_pair_configure_O2.mir b/llvm/test/CodeGen/X86/amx_tile_pair_configure_O2.mir index e62a52162d523..88d2bb0fb7cc9 100644 --- a/llvm/test/CodeGen/X86/amx_tile_pair_configure_O2.mir +++ b/llvm/test/CodeGen/X86/amx_tile_pair_configure_O2.mir @@ -93,8 +93,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 64, alignment: 4, diff --git a/llvm/test/CodeGen/X86/amx_tile_pair_copy.mir b/llvm/test/CodeGen/X86/amx_tile_pair_copy.mir index 857ad433af153..8b5258f7e8452 100644 --- a/llvm/test/CodeGen/X86/amx_tile_pair_copy.mir +++ b/llvm/test/CodeGen/X86/amx_tile_pair_copy.mir @@ -46,8 +46,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 43, name: '', type: default, offset: 0, size: 64, alignment: 4, diff --git a/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O0.mir b/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O0.mir index cdc525193fef7..359e6e2df78e5 100644 --- a/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O0.mir +++ b/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O0.mir @@ -59,8 +59,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 18, name: '', type: default, offset: 0, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O2.mir b/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O2.mir index a9824dcac6b04..43ad6fd8d976f 100644 --- a/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O2.mir +++ b/llvm/test/CodeGen/X86/amx_tile_pair_preconfigure_O2.mir @@ -57,8 +57,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/apx/domain-reassignment.mir b/llvm/test/CodeGen/X86/apx/domain-reassignment.mir index 49af7a6c949a1..47997288afcba 100644 --- a/llvm/test/CodeGen/X86/apx/domain-reassignment.mir +++ b/llvm/test/CodeGen/X86/apx/domain-reassignment.mir @@ -109,8 +109,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -255,8 +255,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -375,8 +375,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -487,8 +487,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -590,8 +590,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -686,8 +686,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -756,8 +756,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -829,8 +829,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -911,8 +911,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/X86/apx/memfold-nd2rmw.mir b/llvm/test/CodeGen/X86/apx/memfold-nd2rmw.mir index 4718dfd597d2a..17e103113bd48 100644 --- a/llvm/test/CodeGen/X86/apx/memfold-nd2rmw.mir +++ b/llvm/test/CodeGen/X86/apx/memfold-nd2rmw.mir @@ -125,8 +125,8 @@ frameInfo: hasTailCall: false isCalleeSavedInfoValid: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 1, alignment: 16, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/X86/attr-function-return.mir b/llvm/test/CodeGen/X86/attr-function-return.mir index 91c03e862182f..3af3afe63c376 100644 --- a/llvm/test/CodeGen/X86/attr-function-return.mir +++ b/llvm/test/CodeGen/X86/attr-function-return.mir @@ -45,8 +45,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/avoid-sfb-g-no-change.mir b/llvm/test/CodeGen/X86/avoid-sfb-g-no-change.mir index 93292990dee02..ef2ff56261894 100644 --- a/llvm/test/CodeGen/X86/avoid-sfb-g-no-change.mir +++ b/llvm/test/CodeGen/X86/avoid-sfb-g-no-change.mir @@ -127,8 +127,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] @@ -185,8 +185,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/X86/avoid-sfb-g-no-change2.mir b/llvm/test/CodeGen/X86/avoid-sfb-g-no-change2.mir index 4da4f03987672..a2d1c952715ff 100644 --- a/llvm/test/CodeGen/X86/avoid-sfb-g-no-change2.mir +++ b/llvm/test/CodeGen/X86/avoid-sfb-g-no-change2.mir @@ -138,8 +138,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/X86/avoid-sfb-g-no-change3.mir b/llvm/test/CodeGen/X86/avoid-sfb-g-no-change3.mir index 19e3f38c56b78..729e25ad4641f 100644 --- a/llvm/test/CodeGen/X86/avoid-sfb-g-no-change3.mir +++ b/llvm/test/CodeGen/X86/avoid-sfb-g-no-change3.mir @@ -154,8 +154,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/X86/avoid-sfb-offset.mir b/llvm/test/CodeGen/X86/avoid-sfb-offset.mir index 978b3e79dcb25..31cb9985c4dca 100644 --- a/llvm/test/CodeGen/X86/avoid-sfb-offset.mir +++ b/llvm/test/CodeGen/X86/avoid-sfb-offset.mir @@ -67,8 +67,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: a, type: default, offset: 0, size: 144, alignment: 16, diff --git a/llvm/test/CodeGen/X86/avx512f-256-set0.mir b/llvm/test/CodeGen/X86/avx512f-256-set0.mir index 3915599df524d..681879f941260 100644 --- a/llvm/test/CodeGen/X86/avx512f-256-set0.mir +++ b/llvm/test/CodeGen/X86/avx512f-256-set0.mir @@ -52,8 +52,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] constants: [] diff --git a/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir b/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir index 86f5f27494ec4..9c8bf5302fdf8 100644 --- a/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir +++ b/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir @@ -93,8 +93,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir b/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir index 967622a11cd2b..c83588e20d0fa 100644 --- a/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir +++ b/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir @@ -70,8 +70,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/CodeGen/X86/break-false-dep-crash.mir b/llvm/test/CodeGen/X86/break-false-dep-crash.mir index 588fbfb136dd4..c8b5465c8e2aa 100644 --- a/llvm/test/CodeGen/X86/break-false-dep-crash.mir +++ b/llvm/test/CodeGen/X86/break-false-dep-crash.mir @@ -93,8 +93,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/callbr-asm-outputs-regallocfast.mir b/llvm/test/CodeGen/X86/callbr-asm-outputs-regallocfast.mir index 6263a3f09b0d3..53041926257b9 100644 --- a/llvm/test/CodeGen/X86/callbr-asm-outputs-regallocfast.mir +++ b/llvm/test/CodeGen/X86/callbr-asm-outputs-regallocfast.mir @@ -96,8 +96,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: retval, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/X86/cf-opt-memops.mir b/llvm/test/CodeGen/X86/cf-opt-memops.mir index 44dead87d2e1c..3b76741029d09 100644 --- a/llvm/test/CodeGen/X86/cf-opt-memops.mir +++ b/llvm/test/CodeGen/X86/cf-opt-memops.mir @@ -68,8 +68,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir index 583e54b097faf..2ea1d3facecd0 100644 --- a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir +++ b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir @@ -21,8 +21,10 @@ liveins: frameInfo: maxAlignment: 1 hasCalls: true - savePoint: '%bb.1' - restorePoint: '%bb.1' + savePoints: + - point: '%bb.1' + restorePoints: + - point: '%bb.1' machineFunctionInfo: {} body: | bb.0: diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir index 8f04721489608..510323dc82858 100644 --- a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir +++ b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir @@ -28,8 +28,10 @@ liveins: frameInfo: maxAlignment: 1 hasCalls: true - savePoint: '%bb.1' - restorePoint: '%bb.1' + savePoints: + - point: '%bb.1' + restorePoints: + - point: '%bb.1' machineFunctionInfo: {} body: | bb.0: diff --git a/llvm/test/CodeGen/X86/conditional-tailcall-samedest.mir b/llvm/test/CodeGen/X86/conditional-tailcall-samedest.mir index e2f5b67f3114b..55e50331b8113 100644 --- a/llvm/test/CodeGen/X86/conditional-tailcall-samedest.mir +++ b/llvm/test/CodeGen/X86/conditional-tailcall-samedest.mir @@ -94,8 +94,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/X86/cse-two-preds.mir b/llvm/test/CodeGen/X86/cse-two-preds.mir index e6f04a6ce66d4..54e725b65678e 100644 --- a/llvm/test/CodeGen/X86/cse-two-preds.mir +++ b/llvm/test/CodeGen/X86/cse-two-preds.mir @@ -85,8 +85,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/domain-reassignment.mir b/llvm/test/CodeGen/X86/domain-reassignment.mir index fc0f32c7d4a94..abc75051018b1 100644 --- a/llvm/test/CodeGen/X86/domain-reassignment.mir +++ b/llvm/test/CodeGen/X86/domain-reassignment.mir @@ -109,8 +109,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -255,8 +255,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -375,8 +375,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -487,8 +487,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -590,8 +590,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -686,8 +686,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -756,8 +756,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -829,8 +829,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: @@ -911,8 +911,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/X86/movtopush.mir b/llvm/test/CodeGen/X86/movtopush.mir index f92c385274be6..3bd847ada6df0 100644 --- a/llvm/test/CodeGen/X86/movtopush.mir +++ b/llvm/test/CodeGen/X86/movtopush.mir @@ -83,8 +83,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: p, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/X86/peephole-test-after-add.mir b/llvm/test/CodeGen/X86/peephole-test-after-add.mir index 5023c966d6a84..7febfa21fcb0c 100644 --- a/llvm/test/CodeGen/X86/peephole-test-after-add.mir +++ b/llvm/test/CodeGen/X86/peephole-test-after-add.mir @@ -293,8 +293,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] @@ -418,8 +418,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] @@ -544,8 +544,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] entry_values: [] diff --git a/llvm/test/CodeGen/X86/pr30821.mir b/llvm/test/CodeGen/X86/pr30821.mir index 992ef8bbe55f0..0d15439c82533 100644 --- a/llvm/test/CodeGen/X86/pr30821.mir +++ b/llvm/test/CodeGen/X86/pr30821.mir @@ -41,8 +41,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: alpha, type: default, offset: 0, size: 1, alignment: 1, diff --git a/llvm/test/CodeGen/X86/pr38952.mir b/llvm/test/CodeGen/X86/pr38952.mir index d67174aa4847c..b6a5fb32da247 100644 --- a/llvm/test/CodeGen/X86/pr38952.mir +++ b/llvm/test/CodeGen/X86/pr38952.mir @@ -59,8 +59,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/CodeGen/X86/pr48064.mir b/llvm/test/CodeGen/X86/pr48064.mir index 9712a3ca27aa4..b3b54c12b2c71 100644 --- a/llvm/test/CodeGen/X86/pr48064.mir +++ b/llvm/test/CodeGen/X86/pr48064.mir @@ -236,8 +236,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, @@ -292,8 +292,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: zx, type: default, offset: 0, size: 16, alignment: 4, @@ -403,8 +403,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 0, size: 4, alignment: 4, stack-id: default, isImmutable: false, isAliased: false, callee-saved-register: '', diff --git a/llvm/test/CodeGen/X86/scheduler-asm-moves.mir b/llvm/test/CodeGen/X86/scheduler-asm-moves.mir index 87a56a3802145..d08dbaf66add3 100644 --- a/llvm/test/CodeGen/X86/scheduler-asm-moves.mir +++ b/llvm/test/CodeGen/X86/scheduler-asm-moves.mir @@ -106,8 +106,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: true localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/shrink_wrap_dbg_value.mir b/llvm/test/CodeGen/X86/shrink_wrap_dbg_value.mir index aa7befc18d4fe..ad2562d99f6d7 100644 --- a/llvm/test/CodeGen/X86/shrink_wrap_dbg_value.mir +++ b/llvm/test/CodeGen/X86/shrink_wrap_dbg_value.mir @@ -119,10 +119,12 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - # CHECK: savePoint: '%bb.1' - # CHECK: restorePoint: '%bb.3' - savePoint: '' - restorePoint: '' + # CHECK: savePoints: + # CHECK-NEXT: - point: '%bb.1' + # CHECK: restorePoints: + # CHECK-NEXT: - point: '%bb.3' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 4, size: 4, alignment: 4, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true } diff --git a/llvm/test/CodeGen/X86/statepoint-fixup-call.mir b/llvm/test/CodeGen/X86/statepoint-fixup-call.mir index 6ab95c2ebd0c9..9fbeec7e15cfd 100644 --- a/llvm/test/CodeGen/X86/statepoint-fixup-call.mir +++ b/llvm/test/CodeGen/X86/statepoint-fixup-call.mir @@ -57,8 +57,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/statepoint-fixup-copy-prop-neg.mir b/llvm/test/CodeGen/X86/statepoint-fixup-copy-prop-neg.mir index c87b287241518..cb9df8e8ba812 100644 --- a/llvm/test/CodeGen/X86/statepoint-fixup-copy-prop-neg.mir +++ b/llvm/test/CodeGen/X86/statepoint-fixup-copy-prop-neg.mir @@ -58,8 +58,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/X86/statepoint-fixup-invoke.mir b/llvm/test/CodeGen/X86/statepoint-fixup-invoke.mir index f29dbfaf0622a..861a3f516e965 100644 --- a/llvm/test/CodeGen/X86/statepoint-fixup-invoke.mir +++ b/llvm/test/CodeGen/X86/statepoint-fixup-invoke.mir @@ -75,8 +75,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/statepoint-fixup-shared-ehpad.mir b/llvm/test/CodeGen/X86/statepoint-fixup-shared-ehpad.mir index d16c3d93cfc20..c8a45c83c8218 100644 --- a/llvm/test/CodeGen/X86/statepoint-fixup-shared-ehpad.mir +++ b/llvm/test/CodeGen/X86/statepoint-fixup-shared-ehpad.mir @@ -92,8 +92,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/statepoint-fixup-undef-def.mir b/llvm/test/CodeGen/X86/statepoint-fixup-undef-def.mir index 7c48625e99353..72fbedc9d19b5 100644 --- a/llvm/test/CodeGen/X86/statepoint-fixup-undef-def.mir +++ b/llvm/test/CodeGen/X86/statepoint-fixup-undef-def.mir @@ -72,8 +72,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/X86/statepoint-fixup-undef.mir b/llvm/test/CodeGen/X86/statepoint-fixup-undef.mir index 4a18351bde493..203ac57e7a3ff 100644 --- a/llvm/test/CodeGen/X86/statepoint-fixup-undef.mir +++ b/llvm/test/CodeGen/X86/statepoint-fixup-undef.mir @@ -70,8 +70,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8, diff --git a/llvm/test/CodeGen/X86/statepoint-invoke-ra-enter-at-end.mir b/llvm/test/CodeGen/X86/statepoint-invoke-ra-enter-at-end.mir index 5f05270729fde..687d8f8ed6ee5 100644 --- a/llvm/test/CodeGen/X86/statepoint-invoke-ra-enter-at-end.mir +++ b/llvm/test/CodeGen/X86/statepoint-invoke-ra-enter-at-end.mir @@ -241,8 +241,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/statepoint-invoke-ra-hoist-copies.mir b/llvm/test/CodeGen/X86/statepoint-invoke-ra-hoist-copies.mir index cf9128260f196..d16fd97b228d5 100644 --- a/llvm/test/CodeGen/X86/statepoint-invoke-ra-hoist-copies.mir +++ b/llvm/test/CodeGen/X86/statepoint-invoke-ra-hoist-copies.mir @@ -408,8 +408,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/statepoint-invoke-ra-inline-spiller.mir b/llvm/test/CodeGen/X86/statepoint-invoke-ra-inline-spiller.mir index fcebc69d9b2e3..6c5e41375377b 100644 --- a/llvm/test/CodeGen/X86/statepoint-invoke-ra-inline-spiller.mir +++ b/llvm/test/CodeGen/X86/statepoint-invoke-ra-inline-spiller.mir @@ -185,8 +185,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/X86/statepoint-invoke-ra-remove-back-copies.mir b/llvm/test/CodeGen/X86/statepoint-invoke-ra-remove-back-copies.mir index 8bb39a03f7e36..099e4a5cd7b8e 100644 --- a/llvm/test/CodeGen/X86/statepoint-invoke-ra-remove-back-copies.mir +++ b/llvm/test/CodeGen/X86/statepoint-invoke-ra-remove-back-copies.mir @@ -236,8 +236,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/X86/statepoint-invoke-ra.mir b/llvm/test/CodeGen/X86/statepoint-invoke-ra.mir index da651039ce21e..a2dcb9aabe7bf 100644 --- a/llvm/test/CodeGen/X86/statepoint-invoke-ra.mir +++ b/llvm/test/CodeGen/X86/statepoint-invoke-ra.mir @@ -182,8 +182,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/CodeGen/X86/statepoint-vreg-folding.mir b/llvm/test/CodeGen/X86/statepoint-vreg-folding.mir index d40a9a06d1620..8a0dc0aa81316 100644 --- a/llvm/test/CodeGen/X86/statepoint-vreg-folding.mir +++ b/llvm/test/CodeGen/X86/statepoint-vreg-folding.mir @@ -123,8 +123,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: 16, size: 8, alignment: 16, stack-id: default, isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true, diff --git a/llvm/test/CodeGen/X86/tied-depbreak.mir b/llvm/test/CodeGen/X86/tied-depbreak.mir index 4eca28795516f..c133c510bf866 100644 --- a/llvm/test/CodeGen/X86/tied-depbreak.mir +++ b/llvm/test/CodeGen/X86/tied-depbreak.mir @@ -40,8 +40,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/unfoldMemoryOperand.mir b/llvm/test/CodeGen/X86/unfoldMemoryOperand.mir index 135b14d6836a0..d153c935a2cb3 100644 --- a/llvm/test/CodeGen/X86/unfoldMemoryOperand.mir +++ b/llvm/test/CodeGen/X86/unfoldMemoryOperand.mir @@ -72,8 +72,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir b/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir index df3eb2f8aed72..ec67a9f0bca29 100644 --- a/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir +++ b/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir @@ -120,8 +120,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: default, offset: -24, size: 8, alignment: 8, stack-id: default, isImmutable: false, isAliased: false, callee-saved-register: '', diff --git a/llvm/test/CodeGen/X86/zero-call-used-regs-debug-info.mir b/llvm/test/CodeGen/X86/zero-call-used-regs-debug-info.mir index 68505b6d94528..113418a96b464 100644 --- a/llvm/test/CodeGen/X86/zero-call-used-regs-debug-info.mir +++ b/llvm/test/CodeGen/X86/zero-call-used-regs-debug-info.mir @@ -117,8 +117,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/DebugInfo/ARM/machine-cp-updates-dbg-reg.mir b/llvm/test/DebugInfo/ARM/machine-cp-updates-dbg-reg.mir index e14472af7a4ea..0103bd573c4f5 100644 --- a/llvm/test/DebugInfo/ARM/machine-cp-updates-dbg-reg.mir +++ b/llvm/test/DebugInfo/ARM/machine-cp-updates-dbg-reg.mir @@ -140,8 +140,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/DebugInfo/ARM/move-dbg-values-imm-test.mir b/llvm/test/DebugInfo/ARM/move-dbg-values-imm-test.mir index a6bc006c1fe42..0f5a6b9bc4f82 100644 --- a/llvm/test/DebugInfo/ARM/move-dbg-values-imm-test.mir +++ b/llvm/test/DebugInfo/ARM/move-dbg-values-imm-test.mir @@ -94,8 +94,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 4 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: c, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir index 1479b3728ad0e..0064d2d2fd756 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir @@ -169,8 +169,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: bz, type: default, offset: -32, size: 16, alignment: 8, diff --git a/llvm/test/DebugInfo/MIR/ARM/live-debug-values-reg-copy.mir b/llvm/test/DebugInfo/MIR/ARM/live-debug-values-reg-copy.mir index c7e19abaa6300..f712f563eb812 100644 --- a/llvm/test/DebugInfo/MIR/ARM/live-debug-values-reg-copy.mir +++ b/llvm/test/DebugInfo/MIR/ARM/live-debug-values-reg-copy.mir @@ -92,8 +92,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, diff --git a/llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues-transfer-variadic-instr-ref.mir b/llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues-transfer-variadic-instr-ref.mir index 7ff40aa28b954..0b5000dd727b9 100644 --- a/llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues-transfer-variadic-instr-ref.mir +++ b/llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues-transfer-variadic-instr-ref.mir @@ -169,8 +169,8 @@ frameInfo: stackProtector: '' functionContext: '' cvBytesOfCalleeSavedRegisters: 48 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/DebugInfo/MIR/Mips/last-inst-bundled.mir b/llvm/test/DebugInfo/MIR/Mips/last-inst-bundled.mir index 97ff7c4589b44..d888fd2260de2 100644 --- a/llvm/test/DebugInfo/MIR/Mips/last-inst-bundled.mir +++ b/llvm/test/DebugInfo/MIR/Mips/last-inst-bundled.mir @@ -134,8 +134,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: condition, type: default, offset: -12, size: 4, alignment: 4, diff --git a/llvm/test/DebugInfo/MIR/Mips/live-debug-values-reg-copy.mir b/llvm/test/DebugInfo/MIR/Mips/live-debug-values-reg-copy.mir index 1e848f74512de..e62fcb1dfe8dc 100644 --- a/llvm/test/DebugInfo/MIR/Mips/live-debug-values-reg-copy.mir +++ b/llvm/test/DebugInfo/MIR/Mips/live-debug-values-reg-copy.mir @@ -118,8 +118,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, diff --git a/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir b/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir index 8ede60c33359d..c3467b84f8da1 100644 --- a/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir +++ b/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir @@ -106,8 +106,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/DebugInfo/MIR/X86/debug-loc-0.mir b/llvm/test/DebugInfo/MIR/X86/debug-loc-0.mir index 0b007456be1e6..f249ec118d3db 100644 --- a/llvm/test/DebugInfo/MIR/X86/debug-loc-0.mir +++ b/llvm/test/DebugInfo/MIR/X86/debug-loc-0.mir @@ -84,8 +84,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: s1.addr, type: default, offset: 0, size: 8, alignment: 8, diff --git a/llvm/test/DebugInfo/MIR/X86/instr-ref-join-def-vphi.mir b/llvm/test/DebugInfo/MIR/X86/instr-ref-join-def-vphi.mir index a23d80ea64b39..7c1519f671c73 100644 --- a/llvm/test/DebugInfo/MIR/X86/instr-ref-join-def-vphi.mir +++ b/llvm/test/DebugInfo/MIR/X86/instr-ref-join-def-vphi.mir @@ -152,8 +152,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default, callee-saved-register: '$rdi', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/DebugInfo/MIR/X86/kill-after-spill.mir b/llvm/test/DebugInfo/MIR/X86/kill-after-spill.mir index a28018a0912a0..209caaa0d44cf 100644 --- a/llvm/test/DebugInfo/MIR/X86/kill-after-spill.mir +++ b/llvm/test/DebugInfo/MIR/X86/kill-after-spill.mir @@ -227,8 +227,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true } diff --git a/llvm/test/DebugInfo/MIR/X86/live-debug-values-reg-copy.mir b/llvm/test/DebugInfo/MIR/X86/live-debug-values-reg-copy.mir index 6f5c36933cffe..ff5e5ed3dcebd 100644 --- a/llvm/test/DebugInfo/MIR/X86/live-debug-values-reg-copy.mir +++ b/llvm/test/DebugInfo/MIR/X86/live-debug-values-reg-copy.mir @@ -131,8 +131,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true } diff --git a/llvm/test/DebugInfo/MIR/X86/live-debug-values-restore.mir b/llvm/test/DebugInfo/MIR/X86/live-debug-values-restore.mir index 3b5bf5d38075c..0b92a290036ad 100644 --- a/llvm/test/DebugInfo/MIR/X86/live-debug-values-restore.mir +++ b/llvm/test/DebugInfo/MIR/X86/live-debug-values-restore.mir @@ -287,8 +287,8 @@ frameInfo: hasVAStart: false hasMustTailInVarArgFunc: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, callee-saved-register: '$rbx', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir b/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir index 4d48774a78dd7..ac327c6e2c1de 100644 --- a/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir +++ b/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir @@ -123,8 +123,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg.mir b/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg.mir index e618f48f527b8..59c99d6588ddb 100644 --- a/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg.mir +++ b/llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg.mir @@ -121,8 +121,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: constants: diff --git a/llvm/test/DebugInfo/X86/instr-ref-track-clobbers.mir b/llvm/test/DebugInfo/X86/instr-ref-track-clobbers.mir index 7ac5923464105..cd02966259c06 100644 --- a/llvm/test/DebugInfo/X86/instr-ref-track-clobbers.mir +++ b/llvm/test/DebugInfo/X86/instr-ref-track-clobbers.mir @@ -114,8 +114,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, callee-saved-register: '$r15', callee-saved-restored: true, debug-info-variable: '', diff --git a/llvm/test/DebugInfo/X86/live-debug-vars-dse.mir b/llvm/test/DebugInfo/X86/live-debug-vars-dse.mir index 908889063584c..210b1d9e14f42 100644 --- a/llvm/test/DebugInfo/X86/live-debug-vars-dse.mir +++ b/llvm/test/DebugInfo/X86/live-debug-vars-dse.mir @@ -114,8 +114,8 @@ frameInfo: hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: stack: - { id: 0, name: x.addr, type: default, offset: 0, size: 4, alignment: 4, diff --git a/llvm/test/MachineVerifier/verify-inlineasmbr.mir b/llvm/test/MachineVerifier/verify-inlineasmbr.mir index fe54379c1bc76..266d81dd5e516 100644 --- a/llvm/test/MachineVerifier/verify-inlineasmbr.mir +++ b/llvm/test/MachineVerifier/verify-inlineasmbr.mir @@ -107,8 +107,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: - { id: 0, name: skip.i.i, type: default, offset: 0, size: 1, alignment: 4, diff --git a/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir b/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir index 162d8493037f9..d1627d98545c9 100644 --- a/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir +++ b/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir @@ -51,8 +51,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir.expected b/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir.expected index 39560a1e1ab0a..f818e4265bb2a 100644 --- a/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir.expected +++ b/llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-MIFlags.mir.expected @@ -52,8 +52,8 @@ frameInfo: hasMustTailInVarArgFunc: false hasTailCall: false localFrameSize: 0 - savePoint: '' - restorePoint: '' + savePoints: [] + restorePoints: [] fixedStack: [] stack: [] callSites: [] diff --git a/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir b/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir index d7ad5f88874d7..5ed78cd414299 100644 --- a/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir +++ b/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir @@ -20,8 +20,10 @@ # RESULT-NEXT: hasVAStart: true # RESULT-NEXT: hasMustTailInVarArgFunc: true # RESULT-NEXT: hasTailCall: true -# RESULT-NEXT: savePoint: '%bb.1' -# RESULT-NEXT: restorePoint: '%bb.2' +# RESULT-NEXT: savePoints: +# RESULT-NEXT: - point: '%bb.1' +# RESULT-NEXT: restorePoints: +# RESULT-NEXT: - point: '%bb.1' # RESULT-NEXT: fixedStack: # RESULT-NEXT: - { id: 0, offset: 56, size: 4, alignment: 8, callee-saved-register: '$sgpr44', @@ -116,8 +118,10 @@ frameInfo: hasMustTailInVarArgFunc: true hasTailCall: true localFrameSize: 0 - savePoint: '%bb.1' - restorePoint: '%bb.2' + savePoints: + - point: '%bb.1' + restorePoints: + - point: '%bb.1' fixedStack: - { id: 0, offset: 0, size: 8, alignment: 4, isImmutable: true, isAliased: false } From 72194c26c916e5faada1c46a53feac8cd7feec89 Mon Sep 17 00:00:00 2001 From: ens-sc Date: Mon, 16 Sep 2024 18:48:13 +0300 Subject: [PATCH 4/5] [llvm] support multiple save/restore points in prolog-epilog With this patch the possibility to store multiple Save and Restore points in MachineFrameInfo appears. As the logical consequnce of it, the notions "Save point" / "Restore point" are no longer synonyms for "Prolog" / "Epilog". Currently, "Prolog" / "Epilog" is the place for stack allocation / deallocation and "Save point" / "Restore point" is the place for register spills and restores. So, now we need to store in MachineFrameInfo not only vector of Save and vector of Restore blocks, but Prolog and Epilog. As we assume to have multiple Save and Restore points we need to know the list of registers, we store / restore in each point. Threfore our SavePoint become a pair >. The full support for operating with multiple Save / Restore points is supported only in RISCV backend. --- llvm/include/llvm/CodeGen/MIRYamlMapping.h | 6 +- llvm/include/llvm/CodeGen/MachineFrameInfo.h | 140 ++++++++- llvm/lib/CodeGen/MIRParser/MIRParser.cpp | 24 +- llvm/lib/CodeGen/MIRPrinter.cpp | 45 +-- llvm/lib/CodeGen/MachineFrameInfo.cpp | 17 ++ llvm/lib/CodeGen/PrologEpilogInserter.cpp | 270 +++++++++++++----- llvm/lib/CodeGen/ShrinkWrap.cpp | 13 +- llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp | 40 +-- llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | 5 +- llvm/lib/Target/RISCV/RISCVFrameLowering.cpp | 85 ++++-- llvm/lib/Target/RISCV/RISCVFrameLowering.h | 4 + llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp | 47 +++ .../CodeGen/AArch64/live-debugvalues-sve.mir | 8 + .../X86/frame-info-save-restore-points.mir | 4 + .../CodeGen/PowerPC/common-chain-aix32.ll | 6 +- llvm/test/CodeGen/PowerPC/common-chain.ll | 8 +- .../PowerPC/loop-instr-form-prepare.ll | 28 +- .../CodeGen/PowerPC/lsr-profitable-chain.ll | 32 +-- .../CodeGen/PowerPC/more-dq-form-prepare.ll | 128 ++++----- llvm/test/CodeGen/PowerPC/pr43527.ll | 4 +- llvm/test/CodeGen/PowerPC/shrink-wrap.ll | 204 ++++++------- llvm/test/CodeGen/RISCV/pr53662.mir | 6 +- .../RISCV/zcmp-prolog-epilog-crash.mir | 2 + .../CodeGen/X86/cfi-epilogue-with-return.mir | 12 + .../X86/cfi-epilogue-without-return.mir | 12 + .../llvm-reduce/mir/preserve-frame-info.mir | 10 +- llvm/tools/llvm-reduce/ReducerWorkItem.cpp | 8 +- 27 files changed, 813 insertions(+), 355 deletions(-) diff --git a/llvm/include/llvm/CodeGen/MIRYamlMapping.h b/llvm/include/llvm/CodeGen/MIRYamlMapping.h index be8a8e593ef92..d4dc53fc0ed32 100644 --- a/llvm/include/llvm/CodeGen/MIRYamlMapping.h +++ b/llvm/include/llvm/CodeGen/MIRYamlMapping.h @@ -612,8 +612,11 @@ namespace yaml { struct SRPEntry { StringValue Point; + std::vector Registers; - bool operator==(const SRPEntry &Other) const { return Point == Other.Point; } + bool operator==(const SRPEntry &Other) const { + return Point == Other.Point && Registers == Other.Registers; + } }; using SaveRestorePoints = std::vector; @@ -621,6 +624,7 @@ using SaveRestorePoints = std::vector; template <> struct MappingTraits { static void mapping(IO &YamlIO, SRPEntry &Entry) { YamlIO.mapRequired("point", Entry.Point); + YamlIO.mapRequired("registers", Entry.Registers); } }; diff --git a/llvm/include/llvm/CodeGen/MachineFrameInfo.h b/llvm/include/llvm/CodeGen/MachineFrameInfo.h index 213b7ec6b3fbf..d746466d41c3e 100644 --- a/llvm/include/llvm/CodeGen/MachineFrameInfo.h +++ b/llvm/include/llvm/CodeGen/MachineFrameInfo.h @@ -27,6 +27,21 @@ class MachineBasicBlock; class BitVector; class AllocaInst; +using SaveRestorePoints = DenseMap>; + +class CalleeSavedInfoPerBB { + DenseMap> Map; + +public: + std::vector get(MachineBasicBlock *MBB) const { + return Map.lookup(MBB); + } + + void set(DenseMap> CSI) { + Map = std::move(CSI); + } +}; + /// The CalleeSavedInfo class tracks the information need to locate where a /// callee saved register is in the current frame. /// Callee saved reg can also be saved to a different register rather than @@ -37,6 +52,8 @@ class CalleeSavedInfo { int FrameIdx; unsigned DstReg; }; + std::vector SpilledIn; + std::vector RestoredIn; /// Flag indicating whether the register is actually restored in the epilog. /// In most cases, if a register is saved, it is also restored. There are /// some situations, though, when this is not the case. For example, the @@ -58,9 +75,9 @@ class CalleeSavedInfo { explicit CalleeSavedInfo(unsigned R, int FI = 0) : Reg(R), FrameIdx(FI) {} // Accessors. - Register getReg() const { return Reg; } - int getFrameIdx() const { return FrameIdx; } - unsigned getDstReg() const { return DstReg; } + Register getReg() const { return Reg; } + int getFrameIdx() const { return FrameIdx; } + unsigned getDstReg() const { return DstReg; } void setFrameIdx(int FI) { FrameIdx = FI; SpilledToReg = false; @@ -72,6 +89,16 @@ class CalleeSavedInfo { bool isRestored() const { return Restored; } void setRestored(bool R) { Restored = R; } bool isSpilledToReg() const { return SpilledToReg; } + ArrayRef spilledIn() const { return SpilledIn; } + ArrayRef restoredIn() const { return RestoredIn; } + void addSpilledIn(MachineBasicBlock *MBB) { SpilledIn.push_back(MBB); } + void addRestoredIn(MachineBasicBlock *MBB) { RestoredIn.push_back(MBB); } + void setSpilledIn(std::vector BBV) { + SpilledIn = std::move(BBV); + } + void setRestoredIn(std::vector BBV) { + RestoredIn = std::move(BBV); + } }; /// The MachineFrameInfo class represents an abstract stack frame until @@ -295,6 +322,10 @@ class MachineFrameInfo { /// Has CSInfo been set yet? bool CSIValid = false; + CalleeSavedInfoPerBB CSInfoPerSave; + + CalleeSavedInfoPerBB CSInfoPerRestore; + /// References to frame indices which are mapped /// into the local frame allocation block. SmallVector, 32> LocalFrameObjects; @@ -331,9 +362,16 @@ class MachineFrameInfo { bool HasTailCall = false; /// Not null, if shrink-wrapping found a better place for the prologue. - MachineBasicBlock *Save = nullptr; + MachineBasicBlock *Prolog = nullptr; /// Not null, if shrink-wrapping found a better place for the epilogue. - MachineBasicBlock *Restore = nullptr; + MachineBasicBlock *Epilog = nullptr; + + /// Not empty, if shrink-wrapping found a better place for saving callee + /// saves. + SaveRestorePoints SavePoints; + /// Not empty, if shrink-wrapping found a better place for restoring callee + /// saves. + SaveRestorePoints RestorePoints; /// Size of the UnsafeStack Frame uint64_t UnsafeStackSize = 0; @@ -809,21 +847,105 @@ class MachineFrameInfo { /// \copydoc getCalleeSavedInfo() std::vector &getCalleeSavedInfo() { return CSInfo; } + /// Returns callee saved info vector for provided save point in + /// the current function. + std::vector getCSInfoPerSave(MachineBasicBlock *MBB) const { + return CSInfoPerSave.get(MBB); + } + + /// Returns callee saved info vector for provided restore point + /// in the current function. + std::vector + getCSInfoPerRestore(MachineBasicBlock *MBB) const { + return CSInfoPerRestore.get(MBB); + } + /// Used by prolog/epilog inserter to set the function's callee saved /// information. void setCalleeSavedInfo(std::vector CSI) { CSInfo = std::move(CSI); } + /// Used by prolog/epilog inserter to set the function's callee saved + /// information for particular save point. + void setCSInfoPerSave( + DenseMap> CSI) { + CSInfoPerSave.set(CSI); + } + + /// Used by prolog/epilog inserter to set the function's callee saved + /// information for particular restore point. + void setCSInfoPerRestore( + DenseMap> CSI) { + CSInfoPerRestore.set(CSI); + } + /// Has the callee saved info been calculated yet? bool isCalleeSavedInfoValid() const { return CSIValid; } void setCalleeSavedInfoValid(bool v) { CSIValid = v; } - MachineBasicBlock *getSavePoint() const { return Save; } - void setSavePoint(MachineBasicBlock *NewSave) { Save = NewSave; } - MachineBasicBlock *getRestorePoint() const { return Restore; } - void setRestorePoint(MachineBasicBlock *NewRestore) { Restore = NewRestore; } + const SaveRestorePoints &getRestorePoints() const { return RestorePoints; } + + const SaveRestorePoints &getSavePoints() const { return SavePoints; } + + std::pair> + getRestorePoint(MachineBasicBlock *MBB) const { + if (auto It = RestorePoints.find(MBB); It != RestorePoints.end()) + return *It; + + std::vector Regs = {}; + return std::make_pair(nullptr, Regs); + } + + std::pair> + getSavePoint(MachineBasicBlock *MBB) const { + if (auto It = SavePoints.find(MBB); It != SavePoints.end()) + return *It; + + std::vector Regs = {}; + return std::make_pair(nullptr, Regs); + } + + void setSavePoints(SaveRestorePoints NewSavePoints) { + SavePoints = std::move(NewSavePoints); + } + + void setRestorePoints(SaveRestorePoints NewRestorePoints) { + RestorePoints = std::move(NewRestorePoints); + } + + void setSavePoint(MachineBasicBlock *MBB, std::vector &Regs) { + if (SavePoints.contains(MBB)) + SavePoints[MBB] = Regs; + else + SavePoints.insert(std::make_pair(MBB, Regs)); + } + + static const SaveRestorePoints constructSaveRestorePoints( + const SaveRestorePoints &SRP, + const DenseMap &BBMap) { + SaveRestorePoints Pts{}; + for (auto &Src : SRP) { + Pts.insert(std::make_pair(BBMap.find(Src.first)->second, Src.second)); + } + return Pts; + } + + void setRestorePoint(MachineBasicBlock *MBB, std::vector &Regs) { + if (RestorePoints.contains(MBB)) + RestorePoints[MBB] = Regs; + else + RestorePoints.insert(std::make_pair(MBB, Regs)); + } + + MachineBasicBlock *getProlog() const { return Prolog; } + void setProlog(MachineBasicBlock *BB) { Prolog = BB; } + MachineBasicBlock *getEpilog() const { return Epilog; } + void setEpilog(MachineBasicBlock *BB) { Epilog = BB; } + + void clearSavePoints() { SavePoints.clear(); } + void clearRestorePoints() { RestorePoints.clear(); } uint64_t getUnsafeStackSize() const { return UnsafeStackSize; } void setUnsafeStackSize(uint64_t Size) { UnsafeStackSize = Size; } diff --git a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp index f7c1e162d2a96..835eeb2362ceb 100644 --- a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp @@ -1056,20 +1056,32 @@ bool MIRParserImpl::initializeConstantPool(PerFunctionMIParsingState &PFS, bool MIRParserImpl::initializeSaveRestorePoints( PerFunctionMIParsingState &PFS, const yaml::SaveRestorePoints &YamlSRP, bool IsSavePoints) { + SMDiagnostic Error; MachineFunction &MF = PFS.MF; MachineFrameInfo &MFI = MF.getFrameInfo(); + llvm::SaveRestorePoints SRPoints; - if (!YamlSRP.empty()) { - const auto &Entry = YamlSRP.front(); + for (const auto &Entry : YamlSRP) { const auto &MBBSource = Entry.Point; MachineBasicBlock *MBB = nullptr; if (parseMBBReference(PFS, MBB, MBBSource.Value)) return true; - if (IsSavePoints) - MFI.setSavePoint(MBB); - else - MFI.setRestorePoint(MBB); + + std::vector Registers{}; + for (auto &RegStr : Entry.Registers) { + Register Reg; + if (parseNamedRegisterReference(PFS, Reg, RegStr.Value, Error)) + return error(Error, RegStr.SourceRange); + + Registers.push_back(Reg); + } + SRPoints.insert(std::make_pair(MBB, Registers)); } + + if (IsSavePoints) + MFI.setSavePoints(SRPoints); + else + MFI.setRestorePoints(SRPoints); return false; } diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp index 2d0728a645280..ea7c504d355c1 100644 --- a/llvm/lib/CodeGen/MIRPrinter.cpp +++ b/llvm/lib/CodeGen/MIRPrinter.cpp @@ -117,9 +117,10 @@ class MIRPrinter { const MachineRegisterInfo &RegInfo, const TargetRegisterInfo *TRI); void convert(ModuleSlotTracker &MST, yaml::MachineFrameInfo &YamlMFI, - const MachineFrameInfo &MFI); + const MachineFrameInfo &MFI, const TargetRegisterInfo *TRI); void convert(ModuleSlotTracker &MST, yaml::SaveRestorePoints &YamlSRP, - MachineBasicBlock *SaveRestorePoint); + const DenseMap> &SRP, + const TargetRegisterInfo *TRI); void convert(yaml::MachineFunction &MF, const MachineConstantPool &ConstantPool); void convert(ModuleSlotTracker &MST, yaml::MachineJumpTable &YamlJTI, @@ -237,7 +238,8 @@ void MIRPrinter::print(const MachineFunction &MF) { convert(YamlMF, MF, MF.getRegInfo(), MF.getSubtarget().getRegisterInfo()); MachineModuleSlotTracker MST(MMI, &MF); MST.incorporateFunction(MF.getFunction()); - convert(MST, YamlMF.FrameInfo, MF.getFrameInfo()); + convert(MST, YamlMF.FrameInfo, MF.getFrameInfo(), + MF.getSubtarget().getRegisterInfo()); convertStackObjects(YamlMF, MF, MST); convertEntryValueObjects(YamlMF, MF, MST); convertCallSiteObjects(YamlMF, MF, MST); @@ -374,7 +376,8 @@ void MIRPrinter::convert(yaml::MachineFunction &YamlMF, void MIRPrinter::convert(ModuleSlotTracker &MST, yaml::MachineFrameInfo &YamlMFI, - const MachineFrameInfo &MFI) { + const MachineFrameInfo &MFI, + const TargetRegisterInfo *TRI) { YamlMFI.IsFrameAddressTaken = MFI.isFrameAddressTaken(); YamlMFI.IsReturnAddressTaken = MFI.isReturnAddressTaken(); YamlMFI.HasStackMap = MFI.hasStackMap(); @@ -394,10 +397,10 @@ void MIRPrinter::convert(ModuleSlotTracker &MST, YamlMFI.HasTailCall = MFI.hasTailCall(); YamlMFI.IsCalleeSavedInfoValid = MFI.isCalleeSavedInfoValid(); YamlMFI.LocalFrameSize = MFI.getLocalFrameSize(); - if (MFI.getSavePoint()) - convert(MST, YamlMFI.SavePoints, MFI.getSavePoint()); - if (MFI.getRestorePoint()) - convert(MST, YamlMFI.RestorePoints, MFI.getRestorePoint()); + if (!MFI.getSavePoints().empty()) + convert(MST, YamlMFI.SavePoints, MFI.getSavePoints(), TRI); + if (!MFI.getRestorePoints().empty()) + convert(MST, YamlMFI.RestorePoints, MFI.getRestorePoints(), TRI); } void MIRPrinter::convertEntryValueObjects(yaml::MachineFunction &YMF, @@ -618,14 +621,24 @@ void MIRPrinter::convert(yaml::MachineFunction &MF, void MIRPrinter::convert(ModuleSlotTracker &MST, yaml::SaveRestorePoints &YamlSRP, - MachineBasicBlock *SRP) { - std::string Str; - yaml::SRPEntry Entry; - raw_string_ostream StrOS(Str); - StrOS << printMBBReference(*SRP); - Entry.Point = StrOS.str(); - Str.clear(); - YamlSRP.push_back(Entry); + const SaveRestorePoints &SRP, + const TargetRegisterInfo *TRI) { + for (const auto &MBBEntry : SRP) { + std::string Str; + yaml::SRPEntry Entry; + raw_string_ostream StrOS(Str); + StrOS << printMBBReference(*MBBEntry.first); + Entry.Point = StrOS.str(); + Str.clear(); + for (auto &Reg : MBBEntry.second) { + if (Reg != MCRegister::NoRegister) { + StrOS << printReg(Reg, TRI); + Entry.Registers.push_back(StrOS.str()); + Str.clear(); + } + } + YamlSRP.push_back(Entry); + } } void MIRPrinter::convert(ModuleSlotTracker &MST, diff --git a/llvm/lib/CodeGen/MachineFrameInfo.cpp b/llvm/lib/CodeGen/MachineFrameInfo.cpp index e4b993850f73d..c6658d2e9eba8 100644 --- a/llvm/lib/CodeGen/MachineFrameInfo.cpp +++ b/llvm/lib/CodeGen/MachineFrameInfo.cpp @@ -244,6 +244,23 @@ void MachineFrameInfo::print(const MachineFunction &MF, raw_ostream &OS) const{ } OS << "\n"; } + + OS << "save/restore points:\n"; + + if (!SavePoints.empty()) { + OS << "save points:\n"; + + for (auto &item : SavePoints) + OS << printMBBReference(*item.first) << "\n"; + } else + OS << "save points are empty\n"; + + if (!RestorePoints.empty()) { + OS << "restore points:\n"; + for (auto &item : RestorePoints) + OS << printMBBReference(*item.first) << "\n"; + } else + OS << "restore points are empty\n"; } #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp index 34dd79c7b6184..d7dee80d4292b 100644 --- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp +++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp @@ -99,8 +99,12 @@ class PEI : public MachineFunctionPass { unsigned MinCSFrameIndex = std::numeric_limits::max(); unsigned MaxCSFrameIndex = 0; - // Save and Restore blocks of the current function. Typically there is a - // single save block, unless Windows EH funclets are involved. + // Prolog and Epilog blocks of the current function. Typically there is a + // single Prolog block, unless Windows EH funclets are involved. + MBBVector PrologBlocks; + MBBVector EpilogBlocks; + + // Save and Restore blocks of the current function. MBBVector SaveBlocks; MBBVector RestoreBlocks; @@ -118,6 +122,7 @@ class PEI : public MachineFunctionPass { void calculateCallFrameInfo(MachineFunction &MF); void calculateSaveRestoreBlocks(MachineFunction &MF); + void calculatePrologEpilogBlocks(MachineFunction &MF); void spillCalleeSavedRegs(MachineFunction &MF); void calculateFrameObjectOffsets(MachineFunction &MF); @@ -234,14 +239,17 @@ bool PEI::runOnMachineFunction(MachineFunction &MF) { // information. Also eliminates call frame pseudo instructions. calculateCallFrameInfo(MF); - // Determine placement of CSR spill/restore code and prolog/epilog code: + // Determine placement of CSR spill/restore code: // place all spills in the entry block, all restores in return blocks. calculateSaveRestoreBlocks(MF); + // Determine placement of prolog/epilog code. + calculatePrologEpilogBlocks(MF); + // Stash away DBG_VALUEs that should not be moved by insertion of prolog code. SavedDbgValuesMap EntryDbgValues; - for (MachineBasicBlock *SaveBlock : SaveBlocks) - stashEntryDbgValues(*SaveBlock, EntryDbgValues); + for (MachineBasicBlock *PrologBlock : PrologBlocks) + stashEntryDbgValues(*PrologBlock, EntryDbgValues); // Handle CSR spilling and restoring, for targets that need it. if (MF.getTarget().usesPhysRegsForValues()) @@ -349,8 +357,10 @@ bool PEI::runOnMachineFunction(MachineFunction &MF) { delete RS; SaveBlocks.clear(); RestoreBlocks.clear(); - MFI.setSavePoint(nullptr); - MFI.setRestorePoint(nullptr); + PrologBlocks.clear(); + EpilogBlocks.clear(); + MFI.clearSavePoints(); + MFI.clearRestorePoints(); return true; } @@ -395,6 +405,25 @@ void PEI::calculateCallFrameInfo(MachineFunction &MF) { } } +/// Compute two sets of blocks for placing prolog and epilog code respectively. +void PEI::calculatePrologEpilogBlocks(MachineFunction &MF) { + const MachineFrameInfo &MFI = MF.getFrameInfo(); + MachineBasicBlock *Prolog = MFI.getProlog(); + MachineBasicBlock *Epilog = MFI.getEpilog(); + + if (Prolog) + PrologBlocks.push_back(Prolog); + + if (Epilog) + EpilogBlocks.push_back(Epilog); + + if (!Prolog && !SaveBlocks.empty()) + PrologBlocks = SaveBlocks; + + if (!Epilog && !RestoreBlocks.empty()) + EpilogBlocks = RestoreBlocks; +} + /// Compute the sets of entry and return blocks for saving and restoring /// callee-saved registers, and placing prolog and epilog code. void PEI::calculateSaveRestoreBlocks(MachineFunction &MF) { @@ -405,25 +434,32 @@ void PEI::calculateSaveRestoreBlocks(MachineFunction &MF) { // So set the save points for those. // Use the points found by shrink-wrapping, if any. - if (MFI.getSavePoint()) { - SaveBlocks.push_back(MFI.getSavePoint()); - assert(MFI.getRestorePoint() && "Both restore and save must be set"); - MachineBasicBlock *RestoreBlock = MFI.getRestorePoint(); - // If RestoreBlock does not have any successor and is not a return block - // then the end point is unreachable and we do not need to insert any - // epilogue. - if (!RestoreBlock->succ_empty() || RestoreBlock->isReturnBlock()) - RestoreBlocks.push_back(RestoreBlock); + if (!MFI.getSavePoints().empty()) { + assert(!MFI.getRestorePoints().empty() && + "Both restores and saves must be set"); + for (auto &item : MFI.getSavePoints()) + SaveBlocks.push_back(item.first); + + for (auto &item : MFI.getRestorePoints()) { + MachineBasicBlock *RestoreBlock = item.first; + // If RestoreBlock does not have any successor and is not a return block + // then the end point is unreachable and we do not need to insert any + // epilogue. + if (!RestoreBlock->succ_empty() || RestoreBlock->isReturnBlock()) + RestoreBlocks.push_back(RestoreBlock); + } return; } - // Save refs to entry and return blocks. - SaveBlocks.push_back(&MF.front()); - for (MachineBasicBlock &MBB : MF) { - if (MBB.isEHFuncletEntry()) - SaveBlocks.push_back(&MBB); - if (MBB.isReturnBlock()) - RestoreBlocks.push_back(&MBB); + if (MFI.getSavePoints().empty()) { + // Save refs to entry and return blocks. + SaveBlocks.push_back(&MF.front()); + for (MachineBasicBlock &MBB : MF) { + if (MBB.isEHFuncletEntry()) + SaveBlocks.push_back(&MBB); + if (MBB.isReturnBlock()) + RestoreBlocks.push_back(&MBB); + } } } @@ -522,8 +558,8 @@ static void assignCalleeSavedSpillSlots(MachineFunction &F, /// Helper function to update the liveness information for the callee-saved /// registers. -static void updateLiveness(MachineFunction &MF) { - MachineFrameInfo &MFI = MF.getFrameInfo(); +static void updateLiveness(MachineFunction &MF, MachineBasicBlock *Save, + MachineBasicBlock *Restore, CalleeSavedInfo &Info) { // Visited will contain all the basic blocks that are in the region // where the callee saved registers are alive: // - Anything that is not Save or Restore -> LiveThrough. @@ -534,7 +570,6 @@ static void updateLiveness(MachineFunction &MF) { SmallPtrSet Visited; SmallVector WorkList; MachineBasicBlock *Entry = &MF.front(); - MachineBasicBlock *Save = MFI.getSavePoint(); if (!Save) Save = Entry; @@ -545,7 +580,6 @@ static void updateLiveness(MachineFunction &MF) { } Visited.insert(Save); - MachineBasicBlock *Restore = MFI.getRestorePoint(); if (Restore) // By construction Restore cannot be visited, otherwise it // means there exists a path to Restore that does not go @@ -565,30 +599,27 @@ static void updateLiveness(MachineFunction &MF) { WorkList.push_back(SuccBB); } - const std::vector &CSI = MFI.getCalleeSavedInfo(); - MachineRegisterInfo &MRI = MF.getRegInfo(); - for (const CalleeSavedInfo &I : CSI) { - for (MachineBasicBlock *MBB : Visited) { - MCPhysReg Reg = I.getReg(); - // Add the callee-saved register as live-in. - // It's killed at the spill. - if (!MRI.isReserved(Reg) && !MBB->isLiveIn(Reg)) - MBB->addLiveIn(Reg); - } - // If callee-saved register is spilled to another register rather than - // spilling to stack, the destination register has to be marked as live for - // each MBB between the prologue and epilogue so that it is not clobbered - // before it is reloaded in the epilogue. The Visited set contains all - // blocks outside of the region delimited by prologue/epilogue. - if (I.isSpilledToReg()) { - for (MachineBasicBlock &MBB : MF) { - if (Visited.count(&MBB)) - continue; - MCPhysReg DstReg = I.getDstReg(); - if (!MBB.isLiveIn(DstReg)) - MBB.addLiveIn(DstReg); - } + + for (MachineBasicBlock *MBB : Visited) { + MCPhysReg Reg = Info.getReg(); + // Add the callee-saved register as live-in. + // It's killed at the spill. + if (!MRI.isReserved(Reg) && !MBB->isLiveIn(Reg)) + MBB->addLiveIn(Reg); + } + // If callee-saved register is spilled to another register rather than + // spilling to stack, the destination register has to be marked as live for + // each MBB between the save and restore point so that it is not clobbered + // before it is reloaded in the restore point. The Visited set contains all + // blocks outside of the region delimited by save/restore. + if (Info.isSpilledToReg()) { + for (MachineBasicBlock &MBB : MF) { + if (Visited.count(&MBB)) + continue; + MCPhysReg DstReg = Info.getDstReg(); + if (!MBB.isLiveIn(DstReg)) + MBB.addLiveIn(DstReg); } } } @@ -651,6 +682,57 @@ static void insertCSRRestores(MachineBasicBlock &RestoreBlock, } } +static void fillCSInfoPerBB( + SaveRestorePoints SRPoints, + DenseMap &RegToInfo, + DenseMap> &CSInfoPerBB, + bool isSave, MBBVector &PrologEpilogBlocks) { + std::vector CSIV = {}; + std::vector GCSIV = {}; + for (auto [BB, Regs] : SRPoints) { + CSIV.clear(); + for (auto &Reg : Regs) { + auto It = RegToInfo.find(Reg); + if (It == RegToInfo.end()) + continue; + CalleeSavedInfo *CSI = It->second; + if (isSave) + CSI->addSpilledIn(BB); + else + CSI->addRestoredIn(BB); + CSIV.push_back(*RegToInfo.at(Reg)); + GCSIV.push_back(*RegToInfo.at(Reg)); + } + std::sort(CSIV.begin(), CSIV.end(), + [](const CalleeSavedInfo &Lhs, const CalleeSavedInfo &Rhs) { + return Lhs.getFrameIdx() < Rhs.getFrameIdx(); + }); + CSInfoPerBB.insert(std::make_pair(BB, CSIV)); + } + + if (GCSIV.size() >= RegToInfo.size()) + return; + + for (auto &RTI : RegToInfo) { + if (find_if(GCSIV, [&RTI](const CalleeSavedInfo &CSI) { + return CSI.getReg() == RTI.first; + }) != std::end(GCSIV)) + continue; + for (auto BB : PrologEpilogBlocks) { + if (CSInfoPerBB.contains(BB)) { + CSInfoPerBB[BB].push_back(*RTI.second); + std::sort(CSInfoPerBB[BB].begin(), CSInfoPerBB[BB].end(), + [](const CalleeSavedInfo &Lhs, const CalleeSavedInfo &Rhs) { + return Lhs.getFrameIdx() < Rhs.getFrameIdx(); + }); + } + CSIV.clear(); + CSIV.push_back(*RTI.second); + CSInfoPerBB.insert(std::make_pair(BB, CSIV)); + } + } +} + void PEI::spillCalleeSavedRegs(MachineFunction &MF) { // We can't list this requirement in getRequiredProperties because some // targets (WebAssembly) use virtual registers past this point, and the pass @@ -678,19 +760,79 @@ void PEI::spillCalleeSavedRegs(MachineFunction &MF) { MFI.setCalleeSavedInfoValid(true); std::vector &CSI = MFI.getCalleeSavedInfo(); + DenseMap RegToInfo; + for (auto &CS : CSI) { + RegToInfo.insert(std::make_pair(CS.getReg(), &CS)); + } + + DenseMap> CSInfoPerSave{}; + DenseMap> + CSInfoPerRestore{}; + if (!MFI.getSavePoints().empty()) { + fillCSInfoPerBB(MFI.getSavePoints(), RegToInfo, CSInfoPerSave, + true /* isSave */, PrologBlocks); + fillCSInfoPerBB(MFI.getRestorePoints(), RegToInfo, CSInfoPerRestore, + false /* isSave */, EpilogBlocks); + } else { + for (MachineBasicBlock *PrologBlock : PrologBlocks) { + CSInfoPerSave.insert( + std::make_pair(PrologBlock, MFI.getCalleeSavedInfo())); + + for (auto &CS : CSI) { + CS.addSpilledIn(PrologBlock); + } + } + } + if (!CSI.empty()) { if (!MFI.hasCalls()) NumLeafFuncWithSpills++; for (MachineBasicBlock *SaveBlock : SaveBlocks) - insertCSRSaves(*SaveBlock, CSI); + insertCSRSaves(*SaveBlock, + CSInfoPerSave.empty() ? CSI : CSInfoPerSave[SaveBlock]); + + MachineBasicBlock *Save = nullptr; + MachineBasicBlock *Restore = nullptr; + for (auto &CS : CSI) { + if (!MFI.getSavePoints().empty()) { + auto &SavePoints = MFI.getSavePoints(); + auto &RestorePoints = MFI.getRestorePoints(); + auto CSRegFound = + [CS](const std::pair> + &Point) { return count(Point.second, CS.getReg()); }; + + if (auto PointIt = find_if(SavePoints, CSRegFound); + PointIt != std::end(SavePoints)) + Save = PointIt->first; + + if (auto PointIt = find_if(RestorePoints, CSRegFound); + PointIt != std::end(RestorePoints)) + Restore = PointIt->first; + } + // Update the live-in information of all the blocks up to the save + // point. + updateLiveness(MF, Save, Restore, CS); + } - // Update the live-in information of all the blocks up to the save point. - updateLiveness(MF); + if (MFI.getRestorePoints().empty()) { + for (MachineBasicBlock *EpilogBlock : EpilogBlocks) { + CSInfoPerRestore.insert( + std::make_pair(EpilogBlock, MFI.getCalleeSavedInfo())); + + for (auto &CS : CSI) + CS.addRestoredIn(EpilogBlock); + } + } for (MachineBasicBlock *RestoreBlock : RestoreBlocks) - insertCSRRestores(*RestoreBlock, CSI); + insertCSRRestores(*RestoreBlock, CSInfoPerRestore.empty() + ? CSI + : CSInfoPerRestore[RestoreBlock]); } + + MFI.setCSInfoPerSave(CSInfoPerSave); + MFI.setCSInfoPerRestore(CSInfoPerRestore); } } @@ -1162,26 +1304,26 @@ void PEI::insertPrologEpilogCode(MachineFunction &MF) { const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); // Add prologue to the function... - for (MachineBasicBlock *SaveBlock : SaveBlocks) - TFI.emitPrologue(MF, *SaveBlock); + for (MachineBasicBlock *PrologBlock : PrologBlocks) + TFI.emitPrologue(MF, *PrologBlock); // Add epilogue to restore the callee-save registers in each exiting block. - for (MachineBasicBlock *RestoreBlock : RestoreBlocks) - TFI.emitEpilogue(MF, *RestoreBlock); + for (MachineBasicBlock *EpilogBlock : EpilogBlocks) + TFI.emitEpilogue(MF, *EpilogBlock); // Zero call used registers before restoring callee-saved registers. insertZeroCallUsedRegs(MF); - for (MachineBasicBlock *SaveBlock : SaveBlocks) - TFI.inlineStackProbe(MF, *SaveBlock); + for (MachineBasicBlock *PrologBlock : PrologBlocks) + TFI.inlineStackProbe(MF, *PrologBlock); // Emit additional code that is required to support segmented stacks, if // we've been asked for it. This, when linked with a runtime with support // for segmented stacks (libgcc is one), will result in allocating stack // space in small chunks instead of one large contiguous block. if (MF.shouldSplitStack()) { - for (MachineBasicBlock *SaveBlock : SaveBlocks) - TFI.adjustForSegmentedStacks(MF, *SaveBlock); + for (MachineBasicBlock *PrologBlock : PrologBlocks) + TFI.adjustForSegmentedStacks(MF, *PrologBlock); } // Emit additional code that is required to explicitly handle the stack in @@ -1190,8 +1332,8 @@ void PEI::insertPrologEpilogCode(MachineFunction &MF) { // different conditional check and another BIF for allocating more stack // space. if (MF.getFunction().getCallingConv() == CallingConv::HiPE) - for (MachineBasicBlock *SaveBlock : SaveBlocks) - TFI.adjustForHiPEPrologue(MF, *SaveBlock); + for (MachineBasicBlock *PrologBlock : PrologBlocks) + TFI.adjustForHiPEPrologue(MF, *PrologBlock); } /// insertZeroCallUsedRegs - Zero out call used registers. diff --git a/llvm/lib/CodeGen/ShrinkWrap.cpp b/llvm/lib/CodeGen/ShrinkWrap.cpp index 2742437ceb589..64a26c4a009ba 100644 --- a/llvm/lib/CodeGen/ShrinkWrap.cpp +++ b/llvm/lib/CodeGen/ShrinkWrap.cpp @@ -964,8 +964,17 @@ bool ShrinkWrap::runOnMachineFunction(MachineFunction &MF) { << "\nRestore: " << printMBBReference(*Restore) << '\n'); MachineFrameInfo &MFI = MF.getFrameInfo(); - MFI.setSavePoint(Save); - MFI.setRestorePoint(Restore); + + std::vector CSRVec; + SetOfRegs CSRSet = getCurrentCSRs(RS.get()); + for (unsigned Reg : CSRSet) + CSRVec.push_back(Reg); + + llvm::SaveRestorePoints SavePoints({{Save, CSRVec}}); + llvm::SaveRestorePoints RestorePoints({{Restore, CSRVec}}); + + MFI.setSavePoints(SavePoints); + MFI.setRestorePoints(RestorePoints); ++NumCandidates; return Changed; } diff --git a/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp b/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp index f868843318ff6..fbe7190b32576 100644 --- a/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp +++ b/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp @@ -193,25 +193,33 @@ void SILowerSGPRSpills::calculateSaveRestoreBlocks(MachineFunction &MF) { // So set the save points for those. // Use the points found by shrink-wrapping, if any. - if (MFI.getSavePoint()) { - SaveBlocks.push_back(MFI.getSavePoint()); - assert(MFI.getRestorePoint() && "Both restore and save must be set"); - MachineBasicBlock *RestoreBlock = MFI.getRestorePoint(); - // If RestoreBlock does not have any successor and is not a return block - // then the end point is unreachable and we do not need to insert any - // epilogue. - if (!RestoreBlock->succ_empty() || RestoreBlock->isReturnBlock()) - RestoreBlocks.push_back(RestoreBlock); + + if (!MFI.getSavePoints().empty()) { + assert(!MFI.getRestorePoints().empty() && + "Both restores and saves must be set"); + for (auto &item : MFI.getSavePoints()) + SaveBlocks.push_back(item.first); + + for (auto &item : MFI.getRestorePoints()) { + MachineBasicBlock *RestoreBlock = item.first; + // If RestoreBlock does not have any successor and is not a return block + // then the end point is unreachable and we do not need to insert any + // epilogue. + if (!RestoreBlock->succ_empty() || RestoreBlock->isReturnBlock()) + RestoreBlocks.push_back(RestoreBlock); + } return; } - // Save refs to entry and return blocks. - SaveBlocks.push_back(&MF.front()); - for (MachineBasicBlock &MBB : MF) { - if (MBB.isEHFuncletEntry()) - SaveBlocks.push_back(&MBB); - if (MBB.isReturnBlock()) - RestoreBlocks.push_back(&MBB); + if (MFI.getSavePoints().empty()) { + // Save refs to entry and return blocks. + SaveBlocks.push_back(&MF.front()); + for (MachineBasicBlock &MBB : MF) { + if (MBB.isEHFuncletEntry()) + SaveBlocks.push_back(&MBB); + if (MBB.isReturnBlock()) + RestoreBlocks.push_back(&MBB); + } } } diff --git a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp index b118976b4731c..effdb6a41cee8 100644 --- a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp @@ -2075,10 +2075,9 @@ void PPCFrameLowering::processFunctionBeforeFrameFinalized(MachineFunction &MF, // tail call might not be in the new RestoreBlock, so real branch instruction // won't be generated by emitEpilogue(), because shrink-wrap has chosen new // RestoreBlock. So we handle this case here. - if (MFI.getSavePoint() && MFI.hasTailCall()) { - MachineBasicBlock *RestoreBlock = MFI.getRestorePoint(); + if (!MFI.getSavePoints().empty() && MFI.hasTailCall()) { for (MachineBasicBlock &MBB : MF) { - if (MBB.isReturnBlock() && (&MBB) != RestoreBlock) + if (MBB.isReturnBlock() && (!MFI.getRestorePoint(&MBB).first)) createTailCallBranchInstr(MBB); } } diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp index 0de1f1d821a6e..225fe39d513aa 100644 --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp @@ -29,6 +29,33 @@ using namespace llvm; namespace { +static int64_t calculateCSRSpillOffsets(MachineFrameInfo &MFI, + const TargetFrameLowering *TFI, + int MinCSFI, int FrameIdx) { + int LocalAreaOffset = -TFI->getOffsetOfLocalArea(); + Align MaxAlign = MFI.getMaxAlign(); + Align Alignment = MFI.getObjectAlign(FrameIdx); + MaxAlign = std::max(MaxAlign, Alignment); + int64_t Offset = LocalAreaOffset; + + for (int i = MFI.getObjectIndexBegin(); i != 0; ++i) { + // Only allocate objects on the default stack. + if (MFI.getStackID(i) != TargetStackID::Default) + continue; + + int64_t FixedOff; + FixedOff = -MFI.getObjectOffset(i); + if (FixedOff > Offset) + Offset = FixedOff; + } + + for (int i = MinCSFI; i <= FrameIdx; ++i) + Offset += MFI.getObjectSize(i); + + Offset = alignTo(Offset, Alignment); + return -Offset; +} + class CFISaveRegisterEmitter { MachineFunction &MF; MachineFrameInfo &MFI; @@ -41,7 +68,25 @@ class CFISaveRegisterEmitter { const RISCVRegisterInfo &RI, const RISCVInstrInfo &TII, const DebugLoc &DL, const CalleeSavedInfo &CS) const { int FrameIdx = CS.getFrameIdx(); - int64_t Offset = MFI.getObjectOffset(FrameIdx); + if (FrameIdx >= 0 && + MFI.getStackID(FrameIdx) == TargetStackID::ScalableVector) + return; + + int64_t Offset = 0; + + MachineFrameInfo &MFI = MF.getFrameInfo(); + auto *RVFI = MF.getInfo(); + std::vector GCSI = MFI.getCalleeSavedInfo(); + + if (FrameIdx < 0 && + (RVFI->isPushable(MF) || RVFI->useSaveRestoreLibCalls(MF))) + Offset = MFI.getObjectOffset(FrameIdx); + else { + const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); + Offset = calculateCSRSpillOffsets( + MFI, TFI, std::max(GCSI[0].getFrameIdx(), 0), FrameIdx); + } + Register Reg = CS.getReg(); unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::createOffset( nullptr, RI.getDwarfRegNum(Reg, true), Offset)); @@ -449,9 +494,8 @@ uint64_t RISCVFrameLowering::getStackSizeWithRVVPadding( return alignTo(MFI.getStackSize() + RVFI->getRVVPadding(), getStackAlign()); } -static SmallVector -getUnmanagedCSI(const MachineFunction &MF, - const std::vector &CSI) { +SmallVector RISCVFrameLowering::getUnmanagedCSI( + const MachineFunction &MF, const std::vector &CSI) const { const MachineFrameInfo &MFI = MF.getFrameInfo(); SmallVector NonLibcallCSI; @@ -628,13 +672,14 @@ void RISCVFrameLowering::emitPrologue(MachineFunction &MF, // Since spillCalleeSavedRegisters may have inserted a libcall, skip past // any instructions marked as FrameSetup - while (MBBI != MBB.end() && MBBI->getFlag(MachineInstr::FrameSetup)) + while (MBBI != MBB.end() && MBBI->getFlag(MachineInstr::FrameSetup) && + !MBBI->isCFIInstruction()) ++MBBI; // Determine the correct frame layout determineFrameLayout(MF); - const auto &CSI = MFI.getCalleeSavedInfo(); + const auto &CSI = MFI.getCSInfoPerSave(&MBB); // If libcalls are used to spill and restore callee-saved registers, the frame // has two sections; the opaque section managed by the libcalls, and the @@ -728,11 +773,10 @@ void RISCVFrameLowering::emitPrologue(MachineFunction &MF, // to the stack, not before. // FIXME: assumes exactly one instruction is used to save each callee-saved // register. - std::advance(MBBI, getUnmanagedCSI(MF, CSI).size()); - - // Iterate over list of callee-saved registers and emit .cfi_offset - // directives. - emitCFIForCSI(MBB, MBBI, getUnmanagedCSI(MF, CSI)); + int Distance = getUnmanagedCSI(MF, CSI).size(); + if (!RVFI->isPushable(MF) && !RVFI->useSaveRestoreLibCalls(MF)) + Distance *= 2; + std::advance(MBBI, Distance); // Generate new FP. if (hasFP(MF)) { @@ -874,12 +918,14 @@ void RISCVFrameLowering::emitEpilogue(MachineFunction &MF, --MBBI; } - const auto &CSI = MFI.getCalleeSavedInfo(); + const auto &CSI = MFI.getCSInfoPerRestore(&MBB); // Skip to before the restores of scalar callee-saved registers // FIXME: assumes exactly one instruction is used to restore each // callee-saved register. - auto LastFrameDestroy = std::prev(MBBI, getUnmanagedCSI(MF, CSI).size()); + int Distance = getUnmanagedCSI(MF, CSI).size(); + auto LastFrameDestroy = std::prev(MBBI, Distance); + std::advance(MBBI, Distance); uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount(MF); uint64_t RealStackSize = FirstSPAdjustAmount ? FirstSPAdjustAmount @@ -973,9 +1019,6 @@ void RISCVFrameLowering::emitEpilogue(MachineFunction &MF, return; } - // Recover callee-saved registers. - emitCFIForCSI(MBB, MBBI, getUnmanagedCSI(MF, CSI)); - bool ApplyPop = RVFI->isPushable(MF) && MBBI != MBB.end() && MBBI->getOpcode() == RISCV::CM_POP; if (ApplyPop) { @@ -1649,13 +1692,13 @@ bool RISCVFrameLowering::spillCalleeSavedRegisters( return true; MachineFunction *MF = MBB.getParent(); + auto *RVFI = MF->getInfo(); const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo(); DebugLoc DL; if (MI != MBB.end() && !MI->isDebugInstr()) DL = MI->getDebugLoc(); // Emit CM.PUSH with base SPimm & evaluate Push stack - RISCVMachineFunctionInfo *RVFI = MF->getInfo(); if (RVFI->isPushable(*MF)) { unsigned PushedRegNum = RVFI->getRVPushRegs(); if (PushedRegNum > 0) { @@ -1695,6 +1738,11 @@ bool RISCVFrameLowering::spillCalleeSavedRegisters( } }; storeRegToStackSlot(UnmanagedCSI); + + // Iterate over list of callee-saved registers and emit .cfi_offset + // directives. + emitCFIForCSI(MBB, MI, UnmanagedCSI); + storeRegToStackSlot(RVVCSI); return true; @@ -1810,6 +1858,9 @@ bool RISCVFrameLowering::restoreCalleeSavedRegisters( loadRegFromStackSlot(RVVCSI); loadRegFromStackSlot(UnmanagedCSI); + // Recover callee-saved registers. + emitCFIForCSI(MBB, MI, UnmanagedCSI); + RISCVMachineFunctionInfo *RVFI = MF->getInfo(); if (RVFI->isPushable(*MF)) { int RegEnc = RVFI->getRVPushRlist(); diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.h b/llvm/lib/Target/RISCV/RISCVFrameLowering.h index ac0c805c744d6..c6a814cc64472 100644 --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.h +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.h @@ -28,6 +28,10 @@ class RISCVFrameLowering : public TargetFrameLowering { uint64_t getStackSizeWithRVVPadding(const MachineFunction &MF) const; + SmallVector + getUnmanagedCSI(const MachineFunction &MF, + const std::vector &CSI) const; + StackOffset getFrameIndexReference(const MachineFunction &MF, int FI, Register &FrameReg) const override; diff --git a/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp b/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp index b9c70fe60fb50..f8eb702d230f9 100644 --- a/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp +++ b/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp @@ -473,12 +473,59 @@ bool RISCVRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, MachineInstr &MI = *II; MachineFunction &MF = *MI.getParent()->getParent(); MachineRegisterInfo &MRI = MF.getRegInfo(); + const MachineFrameInfo &MFI = MF.getFrameInfo(); DebugLoc DL = MI.getDebugLoc(); int FrameIndex = MI.getOperand(FIOperandNum).getIndex(); Register FrameReg; StackOffset Offset = getFrameLowering(MF)->getFrameIndexReference(MF, FrameIndex, FrameReg); + + const auto &CSI = + getFrameLowering(MF)->getUnmanagedCSI(MF, MFI.getCalleeSavedInfo()); + + if (!CSI.empty()) { + int MinCSFI = CSI.front().getFrameIdx(); + int MaxCSFI = CSI.back().getFrameIdx(); + + // If our FrameIndex is CSI FrameIndex we in some cases need additional + // adjustment + if (FrameIndex >= MinCSFI && FrameIndex <= MaxCSFI) { + MachineBasicBlock *SpilledIn = nullptr; + MachineBasicBlock *RestoredIn = nullptr; + auto It = std::find_if(CSI.begin(), CSI.end(), [FrameIndex](auto &CS) { + return CS.getFrameIdx() == FrameIndex; + }); + + if (It != CSI.end()) { + if (MI.mayStore() && !It->spilledIn().empty()) + SpilledIn = *It->spilledIn().begin(); + + else if (MI.mayLoad() && !It->restoredIn().empty()) + RestoredIn = *It->restoredIn().begin(); + } + bool SpilledRestoredInPrologEpilog = true; + if (MI.mayStore() && !MFI.getSavePoints().empty() && SpilledIn) { + SpilledRestoredInPrologEpilog = + MFI.getSavePoint(SpilledIn).first == MFI.getProlog(); + } else if (MI.mayLoad() && !MFI.getRestorePoints().empty() && + RestoredIn) { + SpilledRestoredInPrologEpilog = + MFI.getRestorePoint(RestoredIn).first == MFI.getEpilog(); + } + + // For spills/restores performed not in Prolog/Epilog we need to add full + // SP offset, despite SPAdjusment optimization, because at the end of + // Prolog or at the start of Epilog SP has maximum offset + uint64_t FirstSPAdjustAmount = + getFrameLowering(MF)->getFirstSPAdjustAmount(MF); + if (FirstSPAdjustAmount && !SpilledRestoredInPrologEpilog) + Offset += StackOffset::getFixed( + getFrameLowering(MF)->getStackSizeWithRVVPadding(MF) - + FirstSPAdjustAmount); + } + } + bool IsRVVSpill = RISCV::isRVVSpill(MI); if (!IsRVVSpill) Offset += StackOffset::getFixed(MI.getOperand(FIOperandNum + 1).getImm()); diff --git a/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir b/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir index 4be16228814a3..86367ef82d57e 100644 --- a/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir +++ b/llvm/test/CodeGen/AArch64/live-debugvalues-sve.mir @@ -122,8 +122,16 @@ frameInfo: maxCallFrameSize: 0 savePoints: - point: '%bb.1' + registers: + - '$fp' + - '$lr' + - '$x28' restorePoints: - point: '%bb.1' + registers: + - '$fp' + - '$lr' + - '$x28' stack: - { id: 0, size: 16, alignment: 16, stack-id: scalable-vector } machineFunctionInfo: {} diff --git a/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir b/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir index 66f8640f11b27..d1d22b52a39aa 100644 --- a/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir +++ b/llvm/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir @@ -32,16 +32,20 @@ liveins: # CHECK: frameInfo: # CHECK: savePoints: # CHECK-NEXT: - point: '%bb.2' +# CHECK-NEXT: registers: [] # CHECK: restorePoints: # CHECK-NEXT: - point: '%bb.2' +# CHECK-NEXT: registers: [] # CHECK: stack frameInfo: maxAlignment: 4 hasCalls: true savePoints: - point: '%bb.2' + registers: [] restorePoints: - point: '%bb.2' + registers: [] stack: - { id: 0, name: tmp, offset: 0, size: 4, alignment: 4 } body: | diff --git a/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll b/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll index 35ddcfd9ba6d6..a61d669b014b5 100644 --- a/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll +++ b/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll @@ -49,9 +49,9 @@ define i64 @two_chain_same_offset_succ_i32(ptr %p, i32 %offset, i32 %base1, i64 ; CHECK-NEXT: slwi r8, r4, 1 ; CHECK-NEXT: li r10, 0 ; CHECK-NEXT: li r11, 0 -; CHECK-NEXT: stw r30, -8(r1) # 4-byte Folded Spill -; CHECK-NEXT: add r8, r4, r8 ; CHECK-NEXT: stw r31, -4(r1) # 4-byte Folded Spill +; CHECK-NEXT: add r8, r4, r8 +; CHECK-NEXT: stw r30, -8(r1) # 4-byte Folded Spill ; CHECK-NEXT: add r9, r5, r8 ; CHECK-NEXT: add r5, r5, r4 ; CHECK-NEXT: add r8, r3, r5 @@ -84,8 +84,8 @@ define i64 @two_chain_same_offset_succ_i32(ptr %p, i32 %offset, i32 %base1, i64 ; CHECK-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt ; CHECK-NEXT: bc 12, 4*cr5+lt, L..BB0_3 ; CHECK-NEXT: # %bb.5: -; CHECK-NEXT: lwz r31, -4(r1) # 4-byte Folded Reload ; CHECK-NEXT: lwz r30, -8(r1) # 4-byte Folded Reload +; CHECK-NEXT: lwz r31, -4(r1) # 4-byte Folded Reload ; CHECK-NEXT: mr r4, r5 ; CHECK-NEXT: blr ; CHECK-NEXT: L..BB0_6: diff --git a/llvm/test/CodeGen/PowerPC/common-chain.ll b/llvm/test/CodeGen/PowerPC/common-chain.ll index b71a360d1be12..bc6401d84cf25 100644 --- a/llvm/test/CodeGen/PowerPC/common-chain.ll +++ b/llvm/test/CodeGen/PowerPC/common-chain.ll @@ -426,11 +426,11 @@ define i64 @not_same_offset_fail(ptr %p, i64 %offset, i64 %base1, i64 %n) { ; CHECK-NEXT: cmpdi r6, 0 ; CHECK-NEXT: ble cr0, .LBB4_4 ; CHECK-NEXT: # %bb.1: # %for.body.preheader -; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill ; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill ; CHECK-NEXT: add r5, r3, r5 ; CHECK-NEXT: li r3, 0 -; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill ; CHECK-NEXT: mtctr r6 ; CHECK-NEXT: mulli r11, r4, 10 ; CHECK-NEXT: sldi r8, r4, 2 @@ -455,9 +455,9 @@ define i64 @not_same_offset_fail(ptr %p, i64 %offset, i64 %base1, i64 %n) { ; CHECK-NEXT: maddld r3, r6, r28, r3 ; CHECK-NEXT: bdnz .LBB4_2 ; CHECK-NEXT: # %bb.3: -; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload -; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload ; CHECK-NEXT: ld r28, -32(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload ; CHECK-NEXT: blr ; CHECK-NEXT: .LBB4_4: ; CHECK-NEXT: li r3, 0 diff --git a/llvm/test/CodeGen/PowerPC/loop-instr-form-prepare.ll b/llvm/test/CodeGen/PowerPC/loop-instr-form-prepare.ll index cc38e250f183f..00627b8434beb 100644 --- a/llvm/test/CodeGen/PowerPC/loop-instr-form-prepare.ll +++ b/llvm/test/CodeGen/PowerPC/loop-instr-form-prepare.ll @@ -189,8 +189,8 @@ define i64 @test_max_number_reminder(ptr %arg, i32 signext %arg1) { ; CHECK-NEXT: cmplwi r4, 0 ; CHECK-NEXT: beq cr0, .LBB2_4 ; CHECK-NEXT: # %bb.1: # %bb3.preheader -; CHECK-NEXT: std r25, -56(r1) # 8-byte Folded Spill -; CHECK-NEXT: std r26, -48(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill ; CHECK-NEXT: addi r10, r3, 4002 ; CHECK-NEXT: li r3, 0 ; CHECK-NEXT: li r5, -1 @@ -198,10 +198,10 @@ define i64 @test_max_number_reminder(ptr %arg, i32 signext %arg1) { ; CHECK-NEXT: li r7, 3 ; CHECK-NEXT: li r8, 5 ; CHECK-NEXT: li r9, 9 -; CHECK-NEXT: std r27, -40(r1) # 8-byte Folded Spill ; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill -; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill -; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r27, -40(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r26, -48(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r25, -56(r1) # 8-byte Folded Spill ; CHECK-NEXT: mtctr r4 ; CHECK-NEXT: .p2align 4 ; CHECK-NEXT: .LBB2_2: # %bb3 @@ -226,13 +226,13 @@ define i64 @test_max_number_reminder(ptr %arg, i32 signext %arg1) { ; CHECK-NEXT: maddld r3, r11, r25, r3 ; CHECK-NEXT: bdnz .LBB2_2 ; CHECK-NEXT: # %bb.3: -; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload -; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload -; CHECK-NEXT: ld r28, -32(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r25, -56(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r26, -48(r1) # 8-byte Folded Reload ; CHECK-NEXT: ld r27, -40(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r28, -32(r1) # 8-byte Folded Reload ; CHECK-NEXT: add r3, r3, r4 -; CHECK-NEXT: ld r26, -48(r1) # 8-byte Folded Reload -; CHECK-NEXT: ld r25, -56(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload ; CHECK-NEXT: blr ; CHECK-NEXT: .LBB2_4: ; CHECK-NEXT: addi r3, r4, 0 @@ -583,10 +583,10 @@ define i64 @test_ds_cross_basic_blocks(ptr %arg, i32 signext %arg1) { ; CHECK-NEXT: beq cr0, .LBB6_9 ; CHECK-NEXT: # %bb.1: # %bb3 ; CHECK-NEXT: addis r5, r2, .LC0@toc@ha -; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill ; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill ; CHECK-NEXT: ld r5, .LC0@toc@l(r5) -; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill ; CHECK-NEXT: addi r6, r3, 4009 ; CHECK-NEXT: li r3, 0 ; CHECK-NEXT: li r7, -7 @@ -649,9 +649,9 @@ define i64 @test_ds_cross_basic_blocks(ptr %arg, i32 signext %arg1) { ; CHECK-NEXT: add r4, r30, r4 ; CHECK-NEXT: b .LBB6_3 ; CHECK-NEXT: .LBB6_8: -; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload -; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload ; CHECK-NEXT: ld r28, -32(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload ; CHECK-NEXT: blr ; CHECK-NEXT: .LBB6_9: ; CHECK-NEXT: li r3, 0 diff --git a/llvm/test/CodeGen/PowerPC/lsr-profitable-chain.ll b/llvm/test/CodeGen/PowerPC/lsr-profitable-chain.ll index 79f2ef3e3746a..3de0fe239021c 100644 --- a/llvm/test/CodeGen/PowerPC/lsr-profitable-chain.ll +++ b/llvm/test/CodeGen/PowerPC/lsr-profitable-chain.ll @@ -8,22 +8,22 @@ define void @foo(ptr readonly %0, ptr %1, i64 %2, i64 %3, i64 %4, i64 %5, i64 %6 ; CHECK-NEXT: cmpd 5, 7 ; CHECK-NEXT: bgelr 0 ; CHECK-NEXT: # %bb.1: # %.preheader -; CHECK-NEXT: std 27, -40(1) # 8-byte Folded Spill -; CHECK-NEXT: addi 27, 5, 2 -; CHECK-NEXT: std 28, -32(1) # 8-byte Folded Spill -; CHECK-NEXT: addi 28, 5, 3 ; CHECK-NEXT: std 30, -16(1) # 8-byte Folded Spill ; CHECK-NEXT: addi 30, 5, 1 +; CHECK-NEXT: std 28, -32(1) # 8-byte Folded Spill +; CHECK-NEXT: addi 28, 5, 3 +; CHECK-NEXT: std 27, -40(1) # 8-byte Folded Spill +; CHECK-NEXT: addi 27, 5, 2 ; CHECK-NEXT: mulld 12, 8, 5 ; CHECK-NEXT: mulld 0, 9, 8 ; CHECK-NEXT: std 29, -24(1) # 8-byte Folded Spill ; CHECK-NEXT: addi 29, 3, 16 ; CHECK-NEXT: sldi 11, 10, 3 -; CHECK-NEXT: std 22, -80(1) # 8-byte Folded Spill -; CHECK-NEXT: std 23, -72(1) # 8-byte Folded Spill -; CHECK-NEXT: std 24, -64(1) # 8-byte Folded Spill -; CHECK-NEXT: std 25, -56(1) # 8-byte Folded Spill ; CHECK-NEXT: std 26, -48(1) # 8-byte Folded Spill +; CHECK-NEXT: std 25, -56(1) # 8-byte Folded Spill +; CHECK-NEXT: std 24, -64(1) # 8-byte Folded Spill +; CHECK-NEXT: std 23, -72(1) # 8-byte Folded Spill +; CHECK-NEXT: std 22, -80(1) # 8-byte Folded Spill ; CHECK-NEXT: mulld 30, 8, 30 ; CHECK-NEXT: mulld 28, 8, 28 ; CHECK-NEXT: mulld 8, 8, 27 @@ -104,15 +104,15 @@ define void @foo(ptr readonly %0, ptr %1, i64 %2, i64 %3, i64 %4, i64 %5, i64 %6 ; CHECK-NEXT: blt 0, .LBB0_5 ; CHECK-NEXT: b .LBB0_2 ; CHECK-NEXT: .LBB0_6: -; CHECK-NEXT: ld 30, -16(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 29, -24(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 28, -32(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 27, -40(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 26, -48(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 25, -56(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 24, -64(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 23, -72(1) # 8-byte Folded Reload ; CHECK-NEXT: ld 22, -80(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 23, -72(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 24, -64(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 25, -56(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 26, -48(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 27, -40(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 28, -32(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 29, -24(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 30, -16(1) # 8-byte Folded Reload ; CHECK-NEXT: blr %9 = icmp slt i64 %2, %4 br i1 %9, label %10, label %97 diff --git a/llvm/test/CodeGen/PowerPC/more-dq-form-prepare.ll b/llvm/test/CodeGen/PowerPC/more-dq-form-prepare.ll index 9f62477ae01df..b6a10aaebdc82 100644 --- a/llvm/test/CodeGen/PowerPC/more-dq-form-prepare.ll +++ b/llvm/test/CodeGen/PowerPC/more-dq-form-prepare.ll @@ -56,39 +56,39 @@ define void @foo(ptr %.m, ptr %.n, ptr %.a, ptr %.x, ptr %.l, ptr %.vy01, ptr %. ; CHECK-NEXT: .cfi_offset v29, -240 ; CHECK-NEXT: .cfi_offset v30, -224 ; CHECK-NEXT: .cfi_offset v31, -208 -; CHECK-NEXT: std 22, 464(1) # 8-byte Folded Spill ; CHECK-NEXT: std 23, 472(1) # 8-byte Folded Spill +; CHECK-NEXT: std 22, 464(1) # 8-byte Folded Spill ; CHECK-NEXT: mr 22, 5 ; CHECK-NEXT: ld 5, 848(1) ; CHECK-NEXT: addi 3, 3, 1 ; CHECK-NEXT: mr 11, 7 ; CHECK-NEXT: ld 23, 688(1) ; CHECK-NEXT: ld 7, 728(1) -; CHECK-NEXT: std 18, 432(1) # 8-byte Folded Spill ; CHECK-NEXT: std 19, 440(1) # 8-byte Folded Spill +; CHECK-NEXT: std 18, 432(1) # 8-byte Folded Spill ; CHECK-NEXT: mr 18, 6 ; CHECK-NEXT: li 6, 9 ; CHECK-NEXT: ld 19, 768(1) ; CHECK-NEXT: ld 2, 760(1) -; CHECK-NEXT: std 26, 496(1) # 8-byte Folded Spill ; CHECK-NEXT: std 27, 504(1) # 8-byte Folded Spill +; CHECK-NEXT: std 26, 496(1) # 8-byte Folded Spill ; CHECK-NEXT: cmpldi 3, 9 ; CHECK-NEXT: ld 27, 816(1) ; CHECK-NEXT: ld 26, 808(1) -; CHECK-NEXT: std 14, 400(1) # 8-byte Folded Spill ; CHECK-NEXT: std 15, 408(1) # 8-byte Folded Spill +; CHECK-NEXT: std 14, 400(1) # 8-byte Folded Spill ; CHECK-NEXT: ld 15, 736(1) ; CHECK-NEXT: lxv 39, 0(8) -; CHECK-NEXT: std 30, 528(1) # 8-byte Folded Spill ; CHECK-NEXT: std 31, 536(1) # 8-byte Folded Spill +; CHECK-NEXT: std 30, 528(1) # 8-byte Folded Spill ; CHECK-NEXT: ld 30, 704(1) ; CHECK-NEXT: lxv 38, 0(9) -; CHECK-NEXT: std 20, 448(1) # 8-byte Folded Spill ; CHECK-NEXT: std 21, 456(1) # 8-byte Folded Spill +; CHECK-NEXT: std 20, 448(1) # 8-byte Folded Spill ; CHECK-NEXT: ld 21, 784(1) ; CHECK-NEXT: ld 20, 776(1) -; CHECK-NEXT: std 24, 480(1) # 8-byte Folded Spill ; CHECK-NEXT: std 25, 488(1) # 8-byte Folded Spill +; CHECK-NEXT: std 24, 480(1) # 8-byte Folded Spill ; CHECK-NEXT: iselgt 3, 3, 6 ; CHECK-NEXT: ld 6, 720(1) ; CHECK-NEXT: ld 24, 792(1) @@ -112,14 +112,14 @@ define void @foo(ptr %.m, ptr %.n, ptr %.a, ptr %.x, ptr %.l, ptr %.vy01, ptr %. ; CHECK-NEXT: lxv 33, 0(10) ; CHECK-NEXT: lxv 32, 0(23) ; CHECK-NEXT: lxv 36, 0(30) -; CHECK-NEXT: std 16, 416(1) # 8-byte Folded Spill -; CHECK-NEXT: std 17, 424(1) # 8-byte Folded Spill -; CHECK-NEXT: ld 17, 752(1) -; CHECK-NEXT: ld 16, 744(1) -; CHECK-NEXT: std 28, 512(1) # 8-byte Folded Spill ; CHECK-NEXT: std 29, 520(1) # 8-byte Folded Spill +; CHECK-NEXT: std 28, 512(1) # 8-byte Folded Spill ; CHECK-NEXT: ld 29, 712(1) ; CHECK-NEXT: ld 28, 696(1) +; CHECK-NEXT: std 17, 424(1) # 8-byte Folded Spill +; CHECK-NEXT: std 16, 416(1) # 8-byte Folded Spill +; CHECK-NEXT: ld 17, 752(1) +; CHECK-NEXT: ld 16, 744(1) ; CHECK-NEXT: std 8, 56(1) # 8-byte Folded Spill ; CHECK-NEXT: std 9, 64(1) # 8-byte Folded Spill ; CHECK-NEXT: lxv 37, 0(28) @@ -132,33 +132,33 @@ define void @foo(ptr %.m, ptr %.n, ptr %.a, ptr %.x, ptr %.l, ptr %.vy01, ptr %. ; CHECK-NEXT: lxv 10, 0(15) ; CHECK-NEXT: lxv 9, 0(16) ; CHECK-NEXT: li 28, 1 -; CHECK-NEXT: stfd 26, 544(1) # 8-byte Folded Spill -; CHECK-NEXT: stfd 27, 552(1) # 8-byte Folded Spill +; CHECK-NEXT: stxv 63, 384(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 62, 368(1) # 16-byte Folded Spill ; CHECK-NEXT: lxv 8, 0(17) ; CHECK-NEXT: lxv 7, 0(2) -; CHECK-NEXT: stfd 28, 560(1) # 8-byte Folded Spill -; CHECK-NEXT: stfd 29, 568(1) # 8-byte Folded Spill +; CHECK-NEXT: stxv 61, 352(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 60, 336(1) # 16-byte Folded Spill ; CHECK-NEXT: lxv 5, 0(20) ; CHECK-NEXT: lxv 3, 0(24) -; CHECK-NEXT: stfd 30, 576(1) # 8-byte Folded Spill -; CHECK-NEXT: stfd 31, 584(1) # 8-byte Folded Spill +; CHECK-NEXT: stxv 59, 320(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 58, 304(1) # 16-byte Folded Spill ; CHECK-NEXT: lxv 2, 0(25) ; CHECK-NEXT: lxv 1, 0(26) -; CHECK-NEXT: stxv 52, 208(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 53, 224(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 57, 288(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 56, 272(1) # 16-byte Folded Spill ; CHECK-NEXT: lxv 0, 0(27) -; CHECK-NEXT: stxv 54, 240(1) # 16-byte Folded Spill ; CHECK-NEXT: stxv 55, 256(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 56, 272(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 57, 288(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 58, 304(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 54, 240(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 53, 224(1) # 16-byte Folded Spill +; CHECK-NEXT: stxv 52, 208(1) # 16-byte Folded Spill +; CHECK-NEXT: stfd 31, 584(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 30, 576(1) # 8-byte Folded Spill ; CHECK-NEXT: std 5, 192(1) # 8-byte Folded Spill ; CHECK-NEXT: ld 5, 832(1) -; CHECK-NEXT: stxv 59, 320(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 60, 336(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 61, 352(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 62, 368(1) # 16-byte Folded Spill -; CHECK-NEXT: stxv 63, 384(1) # 16-byte Folded Spill +; CHECK-NEXT: stfd 29, 568(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 28, 560(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 27, 552(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 26, 544(1) # 8-byte Folded Spill ; CHECK-NEXT: std 15, 88(1) # 8-byte Folded Spill ; CHECK-NEXT: std 16, 96(1) # 8-byte Folded Spill ; CHECK-NEXT: std 17, 104(1) # 8-byte Folded Spill @@ -270,53 +270,53 @@ define void @foo(ptr %.m, ptr %.n, ptr %.a, ptr %.x, ptr %.l, ptr %.vy01, ptr %. ; CHECK-NEXT: ble 0, .LBB0_3 ; CHECK-NEXT: # %bb.6: # %_loop_1_loopHeader_._return_bb_crit_edge.loopexit ; CHECK-NEXT: ld 3, 56(1) # 8-byte Folded Reload -; CHECK-NEXT: lxv 63, 384(1) # 16-byte Folded Reload +; CHECK-NEXT: ld 14, 400(1) # 8-byte Folded Reload ; CHECK-NEXT: stxv 39, 0(3) ; CHECK-NEXT: ld 3, 64(1) # 8-byte Folded Reload -; CHECK-NEXT: lxv 62, 368(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 61, 352(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 60, 336(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 59, 320(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 58, 304(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 57, 288(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 56, 272(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 55, 256(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 54, 240(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 53, 224(1) # 16-byte Folded Reload -; CHECK-NEXT: lxv 52, 208(1) # 16-byte Folded Reload +; CHECK-NEXT: ld 15, 408(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 16, 416(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 17, 424(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 18, 432(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 19, 440(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 20, 448(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 21, 456(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 22, 464(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 23, 472(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 24, 480(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 25, 488(1) # 8-byte Folded Reload ; CHECK-NEXT: stxv 38, 0(3) ; CHECK-NEXT: ld 3, 72(1) # 8-byte Folded Reload -; CHECK-NEXT: lfd 31, 584(1) # 8-byte Folded Reload -; CHECK-NEXT: lfd 30, 576(1) # 8-byte Folded Reload -; CHECK-NEXT: lfd 29, 568(1) # 8-byte Folded Reload -; CHECK-NEXT: lfd 28, 560(1) # 8-byte Folded Reload -; CHECK-NEXT: lfd 27, 552(1) # 8-byte Folded Reload -; CHECK-NEXT: lfd 26, 544(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 31, 536(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 30, 528(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 29, 520(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 28, 512(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 26, 496(1) # 8-byte Folded Reload ; CHECK-NEXT: ld 27, 504(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 28, 512(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 29, 520(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 30, 528(1) # 8-byte Folded Reload +; CHECK-NEXT: ld 31, 536(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 26, 544(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 27, 552(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 28, 560(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 29, 568(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 30, 576(1) # 8-byte Folded Reload ; CHECK-NEXT: stxv 33, 0(3) ; CHECK-NEXT: ld 3, 40(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 26, 496(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 25, 488(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 24, 480(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 23, 472(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 22, 464(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 21, 456(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 20, 448(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 19, 440(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 18, 432(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 17, 424(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 16, 416(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 31, 584(1) # 8-byte Folded Reload +; CHECK-NEXT: lxv 52, 208(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 53, 224(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 54, 240(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 55, 256(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 56, 272(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 57, 288(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 58, 304(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 59, 320(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 60, 336(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 61, 352(1) # 16-byte Folded Reload ; CHECK-NEXT: stxv 32, 0(3) ; CHECK-NEXT: ld 3, 48(1) # 8-byte Folded Reload ; CHECK-NEXT: stxv 37, 0(10) ; CHECK-NEXT: stxv 36, 0(9) ; CHECK-NEXT: stxv 13, 0(8) -; CHECK-NEXT: ld 15, 408(1) # 8-byte Folded Reload -; CHECK-NEXT: ld 14, 400(1) # 8-byte Folded Reload +; CHECK-NEXT: lxv 62, 368(1) # 16-byte Folded Reload +; CHECK-NEXT: lxv 63, 384(1) # 16-byte Folded Reload ; CHECK-NEXT: stxv 12, 0(3) ; CHECK-NEXT: ld 3, 80(1) # 8-byte Folded Reload ; CHECK-NEXT: stxv 11, 0(3) diff --git a/llvm/test/CodeGen/PowerPC/pr43527.ll b/llvm/test/CodeGen/PowerPC/pr43527.ll index 379bd6c070c77..e4b513272b9be 100644 --- a/llvm/test/CodeGen/PowerPC/pr43527.ll +++ b/llvm/test/CodeGen/PowerPC/pr43527.ll @@ -14,8 +14,8 @@ define dso_local void @test(i64 %arg, i64 %arg1) { ; CHECK-NEXT: .cfi_offset lr, 16 ; CHECK-NEXT: .cfi_offset r29, -24 ; CHECK-NEXT: .cfi_offset r30, -16 -; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill ; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill ; CHECK-NEXT: stdu r1, -64(r1) ; CHECK-NEXT: sub r30, r4, r3 ; CHECK-NEXT: li r29, -4 @@ -33,8 +33,8 @@ define dso_local void @test(i64 %arg, i64 %arg1) { ; CHECK-NEXT: stb r3, 0(r3) ; CHECK-NEXT: addi r1, r1, 64 ; CHECK-NEXT: ld r0, 16(r1) -; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload ; CHECK-NEXT: ld r29, -24(r1) # 8-byte Folded Reload +; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload ; CHECK-NEXT: mtlr r0 ; CHECK-NEXT: blr ; CHECK-NEXT: .LBB0_5: # %bb2 diff --git a/llvm/test/CodeGen/PowerPC/shrink-wrap.ll b/llvm/test/CodeGen/PowerPC/shrink-wrap.ll index 12d0b056ca886..44215ce8c4dff 100644 --- a/llvm/test/CodeGen/PowerPC/shrink-wrap.ll +++ b/llvm/test/CodeGen/PowerPC/shrink-wrap.ll @@ -10,26 +10,26 @@ define signext i32 @shrinkwrapme(i32 signext %a, i32 signext %lim) { ; POWERPC64-NEXT: ble 0, .LBB0_4 ; POWERPC64-NEXT: # %bb.1: # %for.body.preheader ; POWERPC64-NEXT: addi 4, 4, -1 -; POWERPC64-NEXT: std 14, -144(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 15, -136(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 16, -128(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 17, -120(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 18, -112(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 19, -104(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 20, -96(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 21, -88(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 22, -80(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 23, -72(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 24, -64(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 25, -56(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 26, -48(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 27, -40(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 31, -8(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 30, -16(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 29, -24(1) # 8-byte Folded Spill ; POWERPC64-NEXT: std 28, -32(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 27, -40(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 26, -48(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 25, -56(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 24, -64(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 23, -72(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 22, -80(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 21, -88(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 20, -96(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 19, -104(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 18, -112(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 17, -120(1) # 8-byte Folded Spill ; POWERPC64-NEXT: clrldi 4, 4, 32 ; POWERPC64-NEXT: addi 4, 4, 1 -; POWERPC64-NEXT: std 29, -24(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 30, -16(1) # 8-byte Folded Spill -; POWERPC64-NEXT: std 31, -8(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 16, -128(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 15, -136(1) # 8-byte Folded Spill +; POWERPC64-NEXT: std 14, -144(1) # 8-byte Folded Spill ; POWERPC64-NEXT: mtctr 4 ; POWERPC64-NEXT: li 4, 0 ; POWERPC64-NEXT: .p2align 4 @@ -40,25 +40,25 @@ define signext i32 @shrinkwrapme(i32 signext %a, i32 signext %lim) { ; POWERPC64-NEXT: #NO_APP ; POWERPC64-NEXT: bdnz .LBB0_2 ; POWERPC64-NEXT: # %bb.3: -; POWERPC64-NEXT: ld 31, -8(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 30, -16(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 29, -24(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 28, -32(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 14, -144(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 15, -136(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 16, -128(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 17, -120(1) # 8-byte Folded Reload ; POWERPC64-NEXT: extsw 3, 4 -; POWERPC64-NEXT: ld 27, -40(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 26, -48(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 25, -56(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 24, -64(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 23, -72(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 22, -80(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 21, -88(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 20, -96(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 19, -104(1) # 8-byte Folded Reload ; POWERPC64-NEXT: ld 18, -112(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 17, -120(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 16, -128(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 15, -136(1) # 8-byte Folded Reload -; POWERPC64-NEXT: ld 14, -144(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 19, -104(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 20, -96(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 21, -88(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 22, -80(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 23, -72(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 24, -64(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 25, -56(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 26, -48(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 27, -40(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 28, -32(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 29, -24(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 30, -16(1) # 8-byte Folded Reload +; POWERPC64-NEXT: ld 31, -8(1) # 8-byte Folded Reload ; POWERPC64-NEXT: blr ; POWERPC64-NEXT: .LBB0_4: ; POWERPC64-NEXT: li 4, 0 @@ -70,24 +70,24 @@ define signext i32 @shrinkwrapme(i32 signext %a, i32 signext %lim) { ; POWERPC32-AIX-NEXT: cmpwi 4, 0 ; POWERPC32-AIX-NEXT: ble 0, L..BB0_4 ; POWERPC32-AIX-NEXT: # %bb.1: # %for.body.preheader -; POWERPC32-AIX-NEXT: stw 14, -72(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 15, -68(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 16, -64(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 17, -60(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 18, -56(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 19, -52(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 20, -48(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 21, -44(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 22, -40(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 23, -36(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 24, -32(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 25, -28(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 26, -24(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 27, -20(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 28, -16(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 29, -12(1) # 4-byte Folded Spill -; POWERPC32-AIX-NEXT: stw 30, -8(1) # 4-byte Folded Spill ; POWERPC32-AIX-NEXT: stw 31, -4(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 30, -8(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 29, -12(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 28, -16(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 27, -20(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 26, -24(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 25, -28(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 24, -32(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 23, -36(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 22, -40(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 21, -44(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 20, -48(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 19, -52(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 18, -56(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 17, -60(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 16, -64(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 15, -68(1) # 4-byte Folded Spill +; POWERPC32-AIX-NEXT: stw 14, -72(1) # 4-byte Folded Spill ; POWERPC32-AIX-NEXT: mtctr 4 ; POWERPC32-AIX-NEXT: li 4, 0 ; POWERPC32-AIX-NEXT: .align 4 @@ -98,25 +98,25 @@ define signext i32 @shrinkwrapme(i32 signext %a, i32 signext %lim) { ; POWERPC32-AIX-NEXT: #NO_APP ; POWERPC32-AIX-NEXT: bdnz L..BB0_2 ; POWERPC32-AIX-NEXT: # %bb.3: -; POWERPC32-AIX-NEXT: lwz 31, -4(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 30, -8(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 29, -12(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 28, -16(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 14, -72(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 15, -68(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 16, -64(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 17, -60(1) # 4-byte Folded Reload ; POWERPC32-AIX-NEXT: mr 3, 4 -; POWERPC32-AIX-NEXT: lwz 27, -20(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 26, -24(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 25, -28(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 24, -32(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 23, -36(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 22, -40(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 21, -44(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 20, -48(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 19, -52(1) # 4-byte Folded Reload ; POWERPC32-AIX-NEXT: lwz 18, -56(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 17, -60(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 16, -64(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 15, -68(1) # 4-byte Folded Reload -; POWERPC32-AIX-NEXT: lwz 14, -72(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 19, -52(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 20, -48(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 21, -44(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 22, -40(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 23, -36(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 24, -32(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 25, -28(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 26, -24(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 27, -20(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 28, -16(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 29, -12(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 30, -8(1) # 4-byte Folded Reload +; POWERPC32-AIX-NEXT: lwz 31, -4(1) # 4-byte Folded Reload ; POWERPC32-AIX-NEXT: blr ; POWERPC32-AIX-NEXT: L..BB0_4: ; POWERPC32-AIX-NEXT: li 3, 0 @@ -128,26 +128,26 @@ define signext i32 @shrinkwrapme(i32 signext %a, i32 signext %lim) { ; POWERPC64-AIX-NEXT: blt 0, L..BB0_4 ; POWERPC64-AIX-NEXT: # %bb.1: # %for.body.preheader ; POWERPC64-AIX-NEXT: addi 4, 4, -1 -; POWERPC64-AIX-NEXT: std 14, -144(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 15, -136(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 16, -128(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 17, -120(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 18, -112(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 19, -104(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 20, -96(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 21, -88(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 22, -80(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 23, -72(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 24, -64(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 25, -56(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 26, -48(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 27, -40(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 31, -8(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 30, -16(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 29, -24(1) # 8-byte Folded Spill ; POWERPC64-AIX-NEXT: std 28, -32(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 27, -40(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 26, -48(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 25, -56(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 24, -64(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 23, -72(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 22, -80(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 21, -88(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 20, -96(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 19, -104(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 18, -112(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 17, -120(1) # 8-byte Folded Spill ; POWERPC64-AIX-NEXT: clrldi 4, 4, 32 ; POWERPC64-AIX-NEXT: addi 4, 4, 1 -; POWERPC64-AIX-NEXT: std 29, -24(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 30, -16(1) # 8-byte Folded Spill -; POWERPC64-AIX-NEXT: std 31, -8(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 16, -128(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 15, -136(1) # 8-byte Folded Spill +; POWERPC64-AIX-NEXT: std 14, -144(1) # 8-byte Folded Spill ; POWERPC64-AIX-NEXT: mtctr 4 ; POWERPC64-AIX-NEXT: li 4, 0 ; POWERPC64-AIX-NEXT: .align 4 @@ -158,25 +158,25 @@ define signext i32 @shrinkwrapme(i32 signext %a, i32 signext %lim) { ; POWERPC64-AIX-NEXT: #NO_APP ; POWERPC64-AIX-NEXT: bdnz L..BB0_2 ; POWERPC64-AIX-NEXT: # %bb.3: -; POWERPC64-AIX-NEXT: ld 31, -8(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 30, -16(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 29, -24(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 28, -32(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 14, -144(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 15, -136(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 16, -128(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 17, -120(1) # 8-byte Folded Reload ; POWERPC64-AIX-NEXT: extsw 3, 4 -; POWERPC64-AIX-NEXT: ld 27, -40(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 26, -48(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 25, -56(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 24, -64(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 23, -72(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 22, -80(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 21, -88(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 20, -96(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 19, -104(1) # 8-byte Folded Reload ; POWERPC64-AIX-NEXT: ld 18, -112(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 17, -120(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 16, -128(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 15, -136(1) # 8-byte Folded Reload -; POWERPC64-AIX-NEXT: ld 14, -144(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 19, -104(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 20, -96(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 21, -88(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 22, -80(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 23, -72(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 24, -64(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 25, -56(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 26, -48(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 27, -40(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 28, -32(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 29, -24(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 30, -16(1) # 8-byte Folded Reload +; POWERPC64-AIX-NEXT: ld 31, -8(1) # 8-byte Folded Reload ; POWERPC64-AIX-NEXT: blr ; POWERPC64-AIX-NEXT: L..BB0_4: ; POWERPC64-AIX-NEXT: li 4, 0 diff --git a/llvm/test/CodeGen/RISCV/pr53662.mir b/llvm/test/CodeGen/RISCV/pr53662.mir index 08dbab5571d88..d716b2468ac6d 100644 --- a/llvm/test/CodeGen/RISCV/pr53662.mir +++ b/llvm/test/CodeGen/RISCV/pr53662.mir @@ -10,10 +10,8 @@ --- name: b frameInfo: - savePoints: - - point: '%bb.0' - restorePoints: - - point: '%bb.1' + savePoints: [] + restorePoints: [] body: | ; CHECK-LABEL: name: b ; CHECK: bb.0: diff --git a/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir b/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir index 1b3979c721741..14a3c2028eed6 100644 --- a/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir +++ b/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir @@ -40,8 +40,10 @@ frameInfo: localFrameSize: 32 savePoints: - point: '%bb.2' + registers: [] restorePoints: - point: '%bb.2' + registers: [] stack: - { id: 0, size: 32, alignment: 1, local-offset: -32 } machineFunctionInfo: diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir index 2ea1d3facecd0..87119a500b6f0 100644 --- a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir +++ b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir @@ -23,8 +23,20 @@ frameInfo: hasCalls: true savePoints: - point: '%bb.1' + registers: + - '$rbx' + - '$r12' + - '$r13' + - '$r14' + - '$r15' restorePoints: - point: '%bb.1' + registers: + - '$rbx' + - '$r12' + - '$r13' + - '$r14' + - '$r15' machineFunctionInfo: {} body: | bb.0: diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir index 510323dc82858..b701569b8ad7d 100644 --- a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir +++ b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir @@ -30,8 +30,20 @@ frameInfo: hasCalls: true savePoints: - point: '%bb.1' + registers: + - '$rbx' + - '$r12' + - '$r13' + - '$r14' + - '$r15' restorePoints: - point: '%bb.1' + registers: + - '$rbx' + - '$r12' + - '$r13' + - '$r14' + - '$r15' machineFunctionInfo: {} body: | bb.0: diff --git a/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir b/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir index 5ed78cd414299..5a545873a6a3a 100644 --- a/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir +++ b/llvm/test/tools/llvm-reduce/mir/preserve-frame-info.mir @@ -20,10 +20,6 @@ # RESULT-NEXT: hasVAStart: true # RESULT-NEXT: hasMustTailInVarArgFunc: true # RESULT-NEXT: hasTailCall: true -# RESULT-NEXT: savePoints: -# RESULT-NEXT: - point: '%bb.1' -# RESULT-NEXT: restorePoints: -# RESULT-NEXT: - point: '%bb.1' # RESULT-NEXT: fixedStack: # RESULT-NEXT: - { id: 0, offset: 56, size: 4, alignment: 8, callee-saved-register: '$sgpr44', @@ -118,10 +114,8 @@ frameInfo: hasMustTailInVarArgFunc: true hasTailCall: true localFrameSize: 0 - savePoints: - - point: '%bb.1' - restorePoints: - - point: '%bb.1' + savePoints: [] + restorePoints: [] fixedStack: - { id: 0, offset: 0, size: 8, alignment: 4, isImmutable: true, isAliased: false } diff --git a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp index 7cd974f0cf438..434f88ebd8940 100644 --- a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp +++ b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp @@ -93,11 +93,11 @@ static void cloneFrameInfo( DstMFI.setCVBytesOfCalleeSavedRegisters( SrcMFI.getCVBytesOfCalleeSavedRegisters()); - if (MachineBasicBlock *SavePt = SrcMFI.getSavePoint()) - DstMFI.setSavePoint(Src2DstMBB.find(SavePt)->second); - if (MachineBasicBlock *RestorePt = SrcMFI.getRestorePoint()) - DstMFI.setRestorePoint(Src2DstMBB.find(RestorePt)->second); + DstMFI.setSavePoints(MachineFrameInfo::constructSaveRestorePoints( + SrcMFI.getSavePoints(), Src2DstMBB)); + DstMFI.setRestorePoints(MachineFrameInfo::constructSaveRestorePoints( + SrcMFI.getRestorePoints(), Src2DstMBB)); auto CopyObjectProperties = [](MachineFrameInfo &DstMFI, const MachineFrameInfo &SrcMFI, int FI) { From ea5e86fe0905c79c339f4bf9788a38429c935488 Mon Sep 17 00:00:00 2001 From: ens-sc Date: Tue, 17 Sep 2024 16:46:57 +0300 Subject: [PATCH 5/5] [llvm] support save/restore point splitting in shrink-wrap This patch introduces "-enable-shrink-wrap-into-multiple-points" option, which enables splitting Save and Restore points during ShrinkWrap pass, i.e. insert registers saves and restores as close as possible to their usage. Current algorithm disables Save / Restore point splitting for functions with instructions with FrameIndex operands, with EHPads and with any Stack accesses beacuse it is difficult to prove the safety of it. This patch also add support for multiple Save / Restore points only for RISCV. Now ShrinkWrap produces: - list of SavePoint + Registers - list of RestorePoint + Registers - Prolog (NCD of Save points) - Epilog (NCPD of Restore points) --- .../llvm/CodeGen/TargetFrameLowering.h | 4 + llvm/lib/CodeGen/ShrinkWrap.cpp | 505 ++++++++++++++---- llvm/lib/Target/RISCV/RISCVFrameLowering.cpp | 9 + llvm/lib/Target/RISCV/RISCVFrameLowering.h | 2 + llvm/test/CodeGen/RISCV/shrinkwrap-split.mir | 282 ++++++++++ 5 files changed, 687 insertions(+), 115 deletions(-) create mode 100644 llvm/test/CodeGen/RISCV/shrinkwrap-split.mir diff --git a/llvm/include/llvm/CodeGen/TargetFrameLowering.h b/llvm/include/llvm/CodeGen/TargetFrameLowering.h index 97de0197da9b4..373455a630a99 100644 --- a/llvm/include/llvm/CodeGen/TargetFrameLowering.h +++ b/llvm/include/llvm/CodeGen/TargetFrameLowering.h @@ -199,6 +199,10 @@ class TargetFrameLowering { return false; } + /// enableCSRSaveRestorePointsSplit - Returns true if the target support + /// multiple save/restore points in shrink wrapping. + virtual bool enableCSRSaveRestorePointsSplit() const { return false; } + /// Returns true if the stack slot holes in the fixed and callee-save stack /// area should be used when allocating other stack locations to reduce stack /// size. diff --git a/llvm/lib/CodeGen/ShrinkWrap.cpp b/llvm/lib/CodeGen/ShrinkWrap.cpp index 64a26c4a009ba..362de836de9ab 100644 --- a/llvm/lib/CodeGen/ShrinkWrap.cpp +++ b/llvm/lib/CodeGen/ShrinkWrap.cpp @@ -93,13 +93,20 @@ STATISTIC(NumFunc, "Number of functions"); STATISTIC(NumCandidates, "Number of shrink-wrapping candidates"); STATISTIC(NumCandidatesDropped, "Number of shrink-wrapping candidates dropped because of frequency"); +STATISTIC( + NumFuncWithSplitting, + "Number of functions, for which we managed to split Save/Restore points"); static cl::opt EnableShrinkWrapOpt("enable-shrink-wrap", cl::Hidden, cl::desc("enable the shrink-wrapping pass")); static cl::opt EnablePostShrinkWrapOpt( - "enable-shrink-wrap-region-split", cl::init(true), cl::Hidden, - cl::desc("enable splitting of the restore block if possible")); + "enable-post-shrink-wrap-restore-split", cl::init(true), cl::Hidden, + cl::desc( + "enable after-shrink-wrap splitting of the restore block if possible")); +static cl::opt EnableShrinkWrapSplitOpt( + "enable-shrink-wrap-into-multiple-points", cl::init(false), cl::Hidden, + cl::desc("enable splitting of the save and restore blocks if possible")); namespace { @@ -116,15 +123,79 @@ class ShrinkWrap : public MachineFunctionPass { MachineDominatorTree *MDT = nullptr; MachinePostDominatorTree *MPDT = nullptr; - /// Current safe point found for the prologue. - /// The prologue will be inserted before the first instruction - /// in this basic block. - MachineBasicBlock *Save = nullptr; + /// Hash table, mapping register with its corresponding spill and restore + /// basic block. + DenseMap> + SavedRegs; - /// Current safe point found for the epilogue. - /// The epilogue will be inserted before the first terminator instruction - /// in this basic block. - MachineBasicBlock *Restore = nullptr; + class SaveRestorePoints { + llvm::SaveRestorePoints SRPoints; + + public: + llvm::SaveRestorePoints &get() { return SRPoints; } + + void set(llvm::SaveRestorePoints &Rhs) { SRPoints = std::move(Rhs); } + + void clear() { SRPoints.clear(); } + + bool areMultiple() const { return SRPoints.size() > 1; } + + MachineBasicBlock *getFirst() { + return SRPoints.empty() ? nullptr : SRPoints.begin()->first; + } + + void + insert(const std::pair> &Point) { + SRPoints.insert(Point); + } + + void insert(std::pair> &&Point) { + SRPoints.insert(Point); + } + + void insertReg( + Register Reg, MachineBasicBlock *MBB, + std::optional> SaveRestoreBlockList) { + assert(MBB && "MBB is nullptr"); + if (SRPoints.contains(MBB)) { + SRPoints[MBB].push_back(Reg); + return; + } + std::vector Regs{Reg}; + SRPoints.insert(std::make_pair(MBB, Regs)); + if (SaveRestoreBlockList.has_value()) + SaveRestoreBlockList->push_back(MBB); + } + + void print(raw_ostream &OS, const TargetRegisterInfo *TRI) const { + for (auto [BB, Regs] : SRPoints) { + OS << printMBBReference(*BB) << ": "; + for (auto ® : Regs) { + OS << printReg(reg, TRI) << " "; + } + OS << "\n"; + } + } + + void dump(const TargetRegisterInfo *TRI) const { print(dbgs(), TRI); } + }; + + /// Class, wrapping hash table contained safe points, found for register spill + /// mapped to the list of corresponding registers. Register spill will be + /// inserted before the first instruction in this basic block. + SaveRestorePoints SavePoints; + + /// Class, wrapping hash table contained safe points, found for register + /// restore mapped to the list of corresponding registers. Register restore + /// will be inserted before the first terminator instruction in this basic + /// block. + SaveRestorePoints RestorePoints; + + std::vector SaveBlocks; + std::vector RestoreBlocks; + + MachineBasicBlock *Prolog = nullptr; + MachineBasicBlock *Epilog = nullptr; /// Hold the information of the basic block frequency. /// Use to check the profitability of the new points. @@ -167,11 +238,17 @@ class ShrinkWrap : public MachineFunctionPass { /// therefore this approach is fair. BitVector StackAddressUsedBlockInfo; - /// Check if \p MI uses or defines a callee-saved register or - /// a frame index. If this is the case, this means \p MI must happen + /// Check if \p MI uses or defines a frame index. + /// If this is the case, this means \p MI must happen + /// after Save and before Restore. + bool useOrDefFI(const MachineInstr &MI, RegScavenger *RS, + bool StackAddressUsed) const; + + /// Check if \p MI uses or defines a callee-saved register. + /// If this is the case, this means \p MI must happen /// after Save and before Restore. - bool useOrDefCSROrFI(const MachineInstr &MI, RegScavenger *RS, - bool StackAddressUsed) const; + bool useOrDefCSR(const MachineInstr &MI, RegScavenger *RS, + std::set *RegsToSave) const; const SetOfRegs &getCurrentCSRs(RegScavenger *RS) const { if (CurrentCSRs.empty()) { @@ -188,12 +265,29 @@ class ShrinkWrap : public MachineFunctionPass { return CurrentCSRs; } + std::vector getTargetCSRList(MachineFunction &MF) { + const MCPhysReg *CSRegs = MF.getRegInfo().getCalleeSavedRegs(); + std::vector TargetCSRs; + for (unsigned i = 0; CSRegs[i]; ++i) + TargetCSRs.push_back(CSRegs[i]); + return TargetCSRs; + } + + void setupSaveRestorePoints(MachineFunction &MF); + + void performSimpleShrinkWrap(RegScavenger *RS, MachineBasicBlock &SavePoint); + + bool canSplitSaveRestorePoints( + const ReversePostOrderTraversal &RPOT, + RegScavenger *RS); + /// Update the Save and Restore points such that \p MBB is in /// the region that is dominated by Save and post-dominated by Restore /// and Save and Restore still match the safe point definition. /// Such point may not exist and Save and/or Restore may be null after /// this call. - void updateSaveRestorePoints(MachineBasicBlock &MBB, RegScavenger *RS); + void updateSaveRestorePoints(MachineBasicBlock &MBB, Register Reg, + RegScavenger *RS); // Try to find safe point based on dominance and block frequency without // any change in IR. @@ -204,7 +298,8 @@ class ShrinkWrap : public MachineFunctionPass { /// This function tries to split the restore point if doing so can shrink the /// save point further. \return True if restore point is split. bool postShrinkWrapping(bool HasCandidate, MachineFunction &MF, - RegScavenger *RS); + RegScavenger *RS, MachineBasicBlock *Save, + MachineBasicBlock *Restore); /// This function analyzes if the restore point can split to create a new /// restore point. This function collects @@ -226,8 +321,13 @@ class ShrinkWrap : public MachineFunctionPass { RCI.runOnMachineFunction(MF); MDT = &getAnalysis().getDomTree(); MPDT = &getAnalysis().getPostDomTree(); - Save = nullptr; - Restore = nullptr; + SavedRegs.clear(); + SavePoints.clear(); + RestorePoints.clear(); + Prolog = nullptr; + Epilog = nullptr; + SaveBlocks.clear(); + RestoreBlocks.clear(); MBFI = &getAnalysis().getMBFI(); MLI = &getAnalysis().getLI(); ORE = &getAnalysis().getORE(); @@ -246,7 +346,22 @@ class ShrinkWrap : public MachineFunctionPass { /// Check whether or not Save and Restore points are still interesting for /// shrink-wrapping. - bool ArePointsInteresting() const { return Save != Entry && Save && Restore; } + bool AreCandidatesFound(bool splitEnabled) const { + if (SavedRegs.empty()) + return false; + + auto Cond = [splitEnabled, this](auto &RegEntry) { + auto [Save, Restore] = RegEntry.second; + return (Save && Restore && Save != Entry) == splitEnabled; + }; + + auto It = std::find_if(begin(SavedRegs), end(SavedRegs), Cond); + + if (It == SavedRegs.end()) + return !splitEnabled; + + return splitEnabled; + } /// Check if shrink wrapping is enabled for this target and function. static bool isShrinkWrapEnabled(const MachineFunction &MF); @@ -294,8 +409,8 @@ INITIALIZE_PASS_DEPENDENCY(MachineLoopInfoWrapperPass) INITIALIZE_PASS_DEPENDENCY(MachineOptimizationRemarkEmitterPass) INITIALIZE_PASS_END(ShrinkWrap, DEBUG_TYPE, "Shrink Wrap Pass", false, false) -bool ShrinkWrap::useOrDefCSROrFI(const MachineInstr &MI, RegScavenger *RS, - bool StackAddressUsed) const { +bool ShrinkWrap::useOrDefFI(const MachineInstr &MI, RegScavenger *RS, + bool StackAddressUsed) const { /// Check if \p Op is known to access an address not on the function's stack . /// At the moment, accesses where the underlying object is a global, function /// argument, or jump table are considered non-stack accesses. Note that the @@ -327,10 +442,28 @@ bool ShrinkWrap::useOrDefCSROrFI(const MachineInstr &MI, RegScavenger *RS, LLVM_DEBUG(dbgs() << "Frame instruction: " << MI << '\n'); return true; } + + if (MI.isDebugValue()) + return false; + + const auto &Ops = MI.operands(); + + auto FIOpIt = std::find_if(Ops.begin(), Ops.end(), + [](const auto &MO) { return MO.isFI(); }); + if (FIOpIt == Ops.end()) + return false; + + LLVM_DEBUG(dbgs() << "Use or define FI( " << FIOpIt->isFI() << "): " << MI + << '\n'); + + return true; +} + +bool ShrinkWrap::useOrDefCSR(const MachineInstr &MI, RegScavenger *RS, + std::set *RegsToSave) const { const MachineFunction *MF = MI.getParent()->getParent(); const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo(); for (const MachineOperand &MO : MI.operands()) { - bool UseOrDefCSR = false; if (MO.isReg()) { // Ignore instructions like DBG_VALUE which don't read/def the register. if (!MO.isDef() && !MO.readsReg()) @@ -348,25 +481,32 @@ bool ShrinkWrap::useOrDefCSROrFI(const MachineInstr &MI, RegScavenger *RS, // calling convention definitions, so we need to watch for it, too. An LR // mentioned implicitly by a return (or "branch to link register") // instruction we can ignore, otherwise we may pessimize shrinkwrapping. - UseOrDefCSR = - (!MI.isCall() && PhysReg == SP) || + if ((!MI.isCall() && PhysReg == SP) || RCI.getLastCalleeSavedAlias(PhysReg) || - (!MI.isReturn() && TRI->isNonallocatableRegisterCalleeSave(PhysReg)); + (!MI.isReturn() && + TRI->isNonallocatableRegisterCalleeSave(PhysReg))) { + LLVM_DEBUG(dbgs() << MI << " uses or defines CSR: " + << RCI.getLastCalleeSavedAlias(PhysReg) << "\n"); + if (!RegsToSave) + return true; + + RegsToSave->insert(PhysReg); + } } else if (MO.isRegMask()) { // Check if this regmask clobbers any of the CSRs. for (unsigned Reg : getCurrentCSRs(RS)) { if (MO.clobbersPhysReg(Reg)) { - UseOrDefCSR = true; - break; + if (!RegsToSave) + return true; + RegsToSave->insert(Reg); } } } - // Skip FrameIndex operands in DBG_VALUE instructions. - if (UseOrDefCSR || (MO.isFI() && !MI.isDebugValue())) { - LLVM_DEBUG(dbgs() << "Use or define CSR(" << UseOrDefCSR << ") or FI(" - << MO.isFI() << "): " << MI << '\n'); - return true; - } + } + + // Skip FrameIndex operands in DBG_VALUE instructions. + if (RegsToSave && !RegsToSave->empty()) { + return true; } return false; } @@ -557,7 +697,8 @@ bool ShrinkWrap::checkIfRestoreSplittable( SmallVectorImpl &CleanPreds, const TargetInstrInfo *TII, RegScavenger *RS) { for (const MachineInstr &MI : *CurRestore) - if (useOrDefCSROrFI(MI, RS, /*StackAddressUsed=*/true)) + if (useOrDefFI(MI, RS, /*StackAddressUsed=*/true) || + useOrDefCSR(MI, RS, nullptr)) return false; for (MachineBasicBlock *PredBB : CurRestore->predecessors()) { @@ -574,7 +715,8 @@ bool ShrinkWrap::checkIfRestoreSplittable( } bool ShrinkWrap::postShrinkWrapping(bool HasCandidate, MachineFunction &MF, - RegScavenger *RS) { + RegScavenger *RS, MachineBasicBlock *Save, + MachineBasicBlock *Restore) { if (!EnablePostShrinkWrapOpt) return false; @@ -617,7 +759,8 @@ bool ShrinkWrap::postShrinkWrapping(bool HasCandidate, MachineFunction &MF, continue; } for (const MachineInstr &MI : MBB) - if (useOrDefCSROrFI(MI, RS, /*StackAddressUsed=*/true)) { + if (useOrDefFI(MI, RS, /*StackAddressUsed=*/true) || + useOrDefCSR(MI, RS, nullptr)) { DirtyBBs.insert(&MBB); break; } @@ -677,34 +820,51 @@ bool ShrinkWrap::postShrinkWrapping(bool HasCandidate, MachineFunction &MF, assert((EntryFreq >= MBFI->getBlockFreq(Save) && EntryFreq >= MBFI->getBlockFreq(Restore)) && "Incorrect save or restore point based on block frequency"); + + SavePoints.clear(); + RestorePoints.clear(); + + std::vector Regs = getTargetCSRList(MF); + SavePoints.insert(std::make_pair(Save, Regs)); + RestorePoints.insert(std::make_pair(Restore, Regs)); + Prolog = Save; + Epilog = Restore; return true; } -void ShrinkWrap::updateSaveRestorePoints(MachineBasicBlock &MBB, +void ShrinkWrap::updateSaveRestorePoints(MachineBasicBlock &MBB, Register Reg, RegScavenger *RS) { + MachineBasicBlock *Save = nullptr; + MachineBasicBlock *Restore = nullptr; + // Get rid of the easy cases first. - if (!Save) - Save = &MBB; - else + if (SavedRegs.contains(Reg) && (Save = SavedRegs.at(Reg).first)) Save = MDT->findNearestCommonDominator(Save, &MBB); - assert(Save); + else { + auto Pos = + SavedRegs.insert(std::make_pair(Reg, std::make_pair(&MBB, nullptr))); + Save = Pos.first->second.first; + } + + assert(SavedRegs.contains(Reg) && Save); + Restore = SavedRegs.at(Reg).second; if (!Restore) Restore = &MBB; - else if (MPDT->getNode(&MBB)) // If the block is not in the post dom tree, it - // means the block never returns. If that's the - // case, we don't want to call + else if (MPDT->getNode(&MBB)) // If the block is not in the post dom tree, + // it means the block never returns. If + // that's the case, we don't want to call // `findNearestCommonDominator`, which will - // return `Restore`. + // return `Restore` and RestoreBlock for + // this register will be null. Restore = MPDT->findNearestCommonDominator(Restore, &MBB); - else - Restore = nullptr; // Abort, we can't find a restore point in this case. // Make sure we would be able to insert the restore code before the // terminator. if (Restore == &MBB) { for (const MachineInstr &Terminator : MBB.terminators()) { - if (!useOrDefCSROrFI(Terminator, RS, /*StackAddressUsed=*/true)) + if (!useOrDefFI(Terminator, RS, /*StackAddressUsed=*/true) && + !useOrDefCSR(Terminator, RS, nullptr)) continue; // One of the terminator needs to happen before the restore point. if (MBB.succ_empty()) { @@ -719,8 +879,10 @@ void ShrinkWrap::updateSaveRestorePoints(MachineBasicBlock &MBB, } if (!Restore) { - LLVM_DEBUG( - dbgs() << "Restore point needs to be spanned on several blocks\n"); + SavedRegs[Reg].first = Save; + SavedRegs[Reg].second = nullptr; + LLVM_DEBUG(dbgs() << "Restore point needs to be spanned on several blocks " + << Reg << "\n"); return; } @@ -796,6 +958,8 @@ void ShrinkWrap::updateSaveRestorePoints(MachineBasicBlock &MBB, } } } + SavedRegs[Reg].first = Save; + SavedRegs[Reg].second = Restore; } static bool giveUpWithRemarks(MachineOptimizationRemarkEmitter *ORE, @@ -811,9 +975,86 @@ static bool giveUpWithRemarks(MachineOptimizationRemarkEmitter *ORE, return false; } +void ShrinkWrap::setupSaveRestorePoints(MachineFunction &MF) { + for (unsigned Reg : getTargetCSRList(MF)) { + auto [Save, Restore] = SavedRegs[Reg]; + if (SavedRegs.contains(Reg) && Save && Restore) + continue; + + SavePoints.insertReg(Reg, &MF.front(), SaveBlocks); + for (MachineBasicBlock &MBB : MF) { + if (MBB.isEHFuncletEntry()) + SavePoints.insertReg(Reg, &MBB, SaveBlocks); + if (MBB.isReturnBlock()) + RestorePoints.insertReg(Reg, &MBB, RestoreBlocks); + } + } + + for (auto [Reg, SaveRestoreBlocks] : SavedRegs) { + auto [Save, Restore] = SaveRestoreBlocks; + if (Save && Restore) { + SavePoints.insertReg(Reg, Save, SaveBlocks); + if (!Restore->succ_empty() || Restore->isReturnBlock()) + RestorePoints.insertReg(Reg, Restore, RestoreBlocks); + else + RestorePoints.insertReg(Reg, Restore, std::nullopt); + } + } +} + +bool ShrinkWrap::canSplitSaveRestorePoints( + const ReversePostOrderTraversal &RPOT, + RegScavenger *RS) { + for (MachineBasicBlock *MBB : RPOT) { + if (MBB->isEHPad() || MBB->isInlineAsmBrIndirectTarget()) + return false; + + // Check if we found any stack accesses in the predecessors. We are not + // doing a full dataflow analysis here to keep things simple but just + // rely on a reverse portorder traversal (RPOT) to guarantee predecessors + // are already processed except for loops (and accept the conservative + // result for loops). + bool StackAddressUsed = any_of(MBB->predecessors(), [&](auto *Pred) { + return StackAddressUsedBlockInfo.test(Pred->getNumber()); + }); + + for (const MachineInstr &MI : *MBB) { + if (useOrDefFI(MI, RS, StackAddressUsed)) + return false; + + if (useOrDefCSR(MI, RS, nullptr)) + StackAddressUsed = true; + } + + StackAddressUsedBlockInfo[MBB->getNumber()] = StackAddressUsed; + } + return true; +} + +void ShrinkWrap::performSimpleShrinkWrap(RegScavenger *RS, + MachineBasicBlock &SavePoint) { + auto MF = SavePoint.getParent(); + auto CSRs = getTargetCSRList(*MF); + if (!CSRs.empty()) { + for (unsigned Reg : CSRs) { + if (SavedRegs.contains(Reg) && + (!SavedRegs[Reg].first || !SavedRegs[Reg].second)) + continue; + updateSaveRestorePoints(SavePoint, Reg, RS); + } + } else + updateSaveRestorePoints(SavePoint, MCRegister::NoRegister, RS); +} + bool ShrinkWrap::performShrinkWrapping( const ReversePostOrderTraversal &RPOT, RegScavenger *RS) { + const TargetFrameLowering *TFI = + MachineFunc->getSubtarget().getFrameLowering(); + + bool canSplit = canSplitSaveRestorePoints(RPOT, RS); + StackAddressUsedBlockInfo.set(); + for (MachineBasicBlock *MBB : RPOT) { LLVM_DEBUG(dbgs() << "Look into: " << printMBBReference(*MBB) << '\n'); @@ -828,8 +1069,9 @@ bool ShrinkWrap::performShrinkWrapping( // are at least at the boundary of the save and restore points. The // problem is that a basic block can jump out from the middle in these // cases, which we do not handle. - updateSaveRestorePoints(*MBB, RS); - if (!ArePointsInteresting()) { + performSimpleShrinkWrap(RS, *MBB); + + if (!AreCandidatesFound(false /* splitEnabled */)) { LLVM_DEBUG(dbgs() << "EHPad/inlineasm_br prevents shrink-wrapping\n"); return false; } @@ -849,30 +1091,40 @@ bool ShrinkWrap::performShrinkWrapping( } } + std::set RegsToSave; + for (const MachineInstr &MI : *MBB) { - if (useOrDefCSROrFI(MI, RS, StackAddressUsed)) { - // Save (resp. restore) point must dominate (resp. post dominate) - // MI. Look for the proper basic block for those. - updateSaveRestorePoints(*MBB, RS); - // If we are at a point where we cannot improve the placement of - // save/restore instructions, just give up. - if (!ArePointsInteresting()) { - LLVM_DEBUG(dbgs() << "No Shrink wrap candidate found\n"); + RegsToSave.clear(); + if (useOrDefFI(MI, RS, StackAddressUsed)) { + performSimpleShrinkWrap(RS, *MBB); + if (!AreCandidatesFound(false /* splitEnabled */)) { + LLVM_DEBUG(dbgs() << "No Shrink wrap candidate found!~\n"); return false; } - // No need to look for other instructions, this basic block - // will already be part of the handled region. StackAddressUsed = true; - break; + continue; + } + + if (useOrDefCSR(MI, RS, &RegsToSave)) { + if (!EnableShrinkWrapSplitOpt || + !TFI->enableCSRSaveRestorePointsSplit() || !canSplit) + performSimpleShrinkWrap(RS, *MBB); + else { + for (auto Reg : RegsToSave) { + // Save (resp. restore) point must dominate (resp. post dominate) + // MI. Look for the proper basic block for those. + updateSaveRestorePoints(*MBB, Reg, RS); + } + } + StackAddressUsed = true; } } StackAddressUsedBlockInfo[MBB->getNumber()] = StackAddressUsed; } - if (!ArePointsInteresting()) { + if (!AreCandidatesFound(true /* splitEnabled */)) { // If the points are not interesting at this point, then they must be null // because it means we did not encounter any frame/CSR related code. // Otherwise, we would have returned from the previous loop. - assert(!Save && !Restore && "We miss a shrink-wrap opportunity?!"); LLVM_DEBUG(dbgs() << "Nothing to shrink-wrap\n"); return false; } @@ -880,40 +1132,44 @@ bool ShrinkWrap::performShrinkWrapping( LLVM_DEBUG(dbgs() << "\n ** Results **\nFrequency of the Entry: " << EntryFreq.getFrequency() << '\n'); - const TargetFrameLowering *TFI = - MachineFunc->getSubtarget().getFrameLowering(); - do { - LLVM_DEBUG(dbgs() << "Shrink wrap candidates (#, Name, Freq):\nSave: " - << printMBBReference(*Save) << ' ' - << printBlockFreq(*MBFI, *Save) - << "\nRestore: " << printMBBReference(*Restore) << ' ' - << printBlockFreq(*MBFI, *Restore) << '\n'); - - bool IsSaveCheap, TargetCanUseSaveAsPrologue = false; - if (((IsSaveCheap = EntryFreq >= MBFI->getBlockFreq(Save)) && - EntryFreq >= MBFI->getBlockFreq(Restore)) && - ((TargetCanUseSaveAsPrologue = TFI->canUseAsPrologue(*Save)) && - TFI->canUseAsEpilogue(*Restore))) - break; - LLVM_DEBUG( - dbgs() << "New points are too expensive or invalid for the target\n"); - MachineBasicBlock *NewBB; - if (!IsSaveCheap || !TargetCanUseSaveAsPrologue) { - Save = FindIDom<>(*Save, Save->predecessors(), *MDT); - if (!Save) - break; - NewBB = Save; - } else { - // Restore is expensive. - Restore = FindIDom<>(*Restore, Restore->successors(), *MPDT); - if (!Restore) + for (auto [Reg, SaveRestoreBlocks] : SavedRegs) { + auto [Save, Restore] = SaveRestoreBlocks; + if (!Save || !Restore) + continue; + + do { + LLVM_DEBUG(dbgs() << "Shrink wrap candidates (#, Name, Freq):\nSave: " + << printMBBReference(*Save) << ' ' + << printBlockFreq(*MBFI, *Save) + << "\nRestore: " << printMBBReference(*Restore) << ' ' + << printBlockFreq(*MBFI, *Restore) << '\n'); + + bool IsSaveCheap, TargetCanUseSaveAsPrologue = false; + if (((IsSaveCheap = EntryFreq >= MBFI->getBlockFreq(Save)) && + EntryFreq >= MBFI->getBlockFreq(Restore)) && + ((TargetCanUseSaveAsPrologue = TFI->canUseAsPrologue(*Save)) && + TFI->canUseAsEpilogue(*Restore))) break; - NewBB = Restore; - } - updateSaveRestorePoints(*NewBB, RS); - } while (Save && Restore); + LLVM_DEBUG( + dbgs() << "New points are too expensive or invalid for the target\n"); + MachineBasicBlock *NewBB; + if (!IsSaveCheap || !TargetCanUseSaveAsPrologue) { + Save = FindIDom<>(*Save, Save->predecessors(), *MDT); + if (!Save) + break; + NewBB = Save; + } else { + // Restore is expensive. + Restore = FindIDom<>(*Restore, Restore->successors(), *MPDT); + if (!Restore) + break; + NewBB = Restore; + } + updateSaveRestorePoints(*NewBB, Reg, RS); + } while (Save && Restore); + } - if (!ArePointsInteresting()) { + if (!AreCandidatesFound(true /* splitEnabled */)) { ++NumCandidatesDropped; return false; } @@ -951,30 +1207,49 @@ bool ShrinkWrap::runOnMachineFunction(MachineFunction &MF) { // basic block and change the state only for those basic blocks for which we // were able to prove the opposite. StackAddressUsedBlockInfo.resize(MF.getNumBlockIDs(), true); - bool HasCandidate = performShrinkWrapping(RPOT, RS.get()); + bool HasCandidates = performShrinkWrapping(RPOT, RS.get()); StackAddressUsedBlockInfo.clear(); - Changed = postShrinkWrapping(HasCandidate, MF, RS.get()); - if (!HasCandidate && !Changed) - return false; - if (!ArePointsInteresting()) - return Changed; - LLVM_DEBUG(dbgs() << "Final shrink wrap candidates:\nSave: " - << printMBBReference(*Save) << ' ' - << "\nRestore: " << printMBBReference(*Restore) << '\n'); + if (HasCandidates) { + setupSaveRestorePoints(MF); + Prolog = SaveBlocks.empty() ? nullptr + : MDT->findNearestCommonDominator(SaveBlocks); + Epilog = RestoreBlocks.empty() + ? nullptr + : MPDT->findNearestCommonDominator(RestoreBlocks); + } - MachineFrameInfo &MFI = MF.getFrameInfo(); + if (!HasCandidates || + (!SavePoints.areMultiple() && !RestorePoints.areMultiple())) { + Changed = + postShrinkWrapping(HasCandidates, MF, RS.get(), SavePoints.getFirst(), + RestorePoints.getFirst()); + if (!HasCandidates && !Changed) + return false; + + if ((!SavePoints.getFirst()) || (!RestorePoints.getFirst()) || + (SavePoints.getFirst() == Entry)) + return Changed; + } + + if (SavePoints.areMultiple() || RestorePoints.areMultiple()) { + ++NumFuncWithSplitting; + } + + LLVM_DEBUG(dbgs() << "Final shrink wrap candidates:\n"); - std::vector CSRVec; - SetOfRegs CSRSet = getCurrentCSRs(RS.get()); - for (unsigned Reg : CSRSet) - CSRVec.push_back(Reg); + LLVM_DEBUG(dbgs() << "SavePoints:\n"); + LLVM_DEBUG(SavePoints.dump(TRI)); - llvm::SaveRestorePoints SavePoints({{Save, CSRVec}}); - llvm::SaveRestorePoints RestorePoints({{Restore, CSRVec}}); + LLVM_DEBUG(dbgs() << "RestorePoints:\n"); + LLVM_DEBUG(RestorePoints.dump(TRI)); + + MachineFrameInfo &MFI = MF.getFrameInfo(); - MFI.setSavePoints(SavePoints); - MFI.setRestorePoints(RestorePoints); + MFI.setProlog(Prolog); + MFI.setEpilog(Epilog); + MFI.setSavePoints(SavePoints.get()); + MFI.setRestorePoints(RestorePoints.get()); ++NumCandidates; return Changed; } diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp index 225fe39d513aa..738bb8acb57c1 100644 --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp @@ -1965,3 +1965,12 @@ bool RISCVFrameLowering::isSupportedStackID(TargetStackID::Value ID) const { TargetStackID::Value RISCVFrameLowering::getStackIDForScalableVectors() const { return TargetStackID::ScalableVector; } + +bool RISCVFrameLowering::enableCSRSaveRestorePointsSplit() const { + // Zcmp extention introduces cm.push and cm.pop instructions, which allow to + // perform all spills and restores in one corresponding instruction. This + // contradicts the idea of splitting Save Restore points. "-msave-restore" + // does the same, not via new instructions but via save/restore libcalls. + if (!STI.hasStdExtZcmp() && !STI.enableSaveRestore()) + return true; +} diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.h b/llvm/lib/Target/RISCV/RISCVFrameLowering.h index c6a814cc64472..d847dcbf7cbcc 100644 --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.h +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.h @@ -86,6 +86,8 @@ class RISCVFrameLowering : public TargetFrameLowering { MachineFunction &MF, StackOffset Offset, uint64_t RealStackSize, bool EmitCFI) const; + bool enableCSRSaveRestorePointsSplit() const override; + protected: const RISCVSubtarget &STI; diff --git a/llvm/test/CodeGen/RISCV/shrinkwrap-split.mir b/llvm/test/CodeGen/RISCV/shrinkwrap-split.mir new file mode 100644 index 0000000000000..6c67271f2155b --- /dev/null +++ b/llvm/test/CodeGen/RISCV/shrinkwrap-split.mir @@ -0,0 +1,282 @@ +# RUN: llc -march=riscv64 -run-pass shrink-wrap -enable-shrink-wrap-into-multiple-points=true %s -o - | FileCheck %s -check-prefix=FIRST-CHECK +# RUN: llc -march=riscv64 -run-pass shrink-wrap -enable-shrink-wrap-into-multiple-points=true %s -o - | FileCheck %s -check-prefix=SECOND-CHECK + +# FIRST-CHECK: savePoints: +# FIRST-CHECK: - point: '%bb.0' +# SECOND-CHECK: - point: '%bb.2' +# FIRST-CHECK: restorePoints: +# FIRST-CHECK: - point: '%bb.7' +# SECOND-CHECK: - point: '%bb.8' + +--- | + ; ModuleID = 'shrinkwrap-split.ll' + %struct.task = type { i32, i32, [20 x i32] } + + ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable + define dso_local noundef signext i32 @_Z5earlyP4taskib(ptr nocapture noundef %t, i32 noundef signext %i, i1 noundef zeroext %cond) local_unnamed_addr #0 { + entry: + %arr = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2 + %0 = load i32, ptr %arr, align 4, !tbaa !7 + %arrayidx2 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 1 + %1 = load i32, ptr %arrayidx2, align 4, !tbaa !7 + %arrayidx4 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 2 + %2 = load i32, ptr %arrayidx4, align 4, !tbaa !7 + %arrayidx6 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 3 + %3 = load i32, ptr %arrayidx6, align 4, !tbaa !7 + %arrayidx8 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 4 + %4 = load i32, ptr %arrayidx8, align 4, !tbaa !7 + %arrayidx10 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 5 + %5 = load i32, ptr %arrayidx10, align 4, !tbaa !7 + %arrayidx12 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 6 + %6 = load i32, ptr %arrayidx12, align 4, !tbaa !7 + %arrayidx14 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 7 + %7 = load i32, ptr %arrayidx14, align 4, !tbaa !7 + %arrayidx16 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 8 + %8 = load i32, ptr %arrayidx16, align 4, !tbaa !7 + %arrayidx18 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 9 + %9 = load i32, ptr %arrayidx18, align 4, !tbaa !7 + %arrayidx20 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 10 + %10 = load i32, ptr %arrayidx20, align 4, !tbaa !7 + %arrayidx22 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 11 + %11 = load i32, ptr %arrayidx22, align 4, !tbaa !7 + %arrayidx24 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 12 + %12 = load i32, ptr %arrayidx24, align 4, !tbaa !7 + %arrayidx26 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 13 + %13 = load i32, ptr %arrayidx26, align 4, !tbaa !7 + %arrayidx28 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 14 + %14 = load i32, ptr %arrayidx28, align 4, !tbaa !7 + %arrayidx30 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 15 + %15 = load i32, ptr %arrayidx30, align 4, !tbaa !7 + %arrayidx32 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 16 + %16 = load i32, ptr %arrayidx32, align 4, !tbaa !7 + %arrayidx34 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 17 + %17 = load i32, ptr %arrayidx34, align 4, !tbaa !7 + %arrayidx36 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 18 + %18 = load i32, ptr %arrayidx36, align 4, !tbaa !7 + %arrayidx38 = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 2, i64 19 + %19 = load i32, ptr %arrayidx38, align 4, !tbaa !7 + %20 = load i32, ptr %t, align 4, !tbaa !11 + %add = add i32 %10, %0 + %add39 = add i32 %add, %20 + %cmp = icmp slt i32 %add39, %i + br i1 %cmp, label %for.cond.preheader, label %cleanup + + for.cond.preheader: ; preds = %entry + %y = getelementptr inbounds %struct.task, ptr %t, i64 0, i32 1 + %21 = load i32, ptr %y, align 4, !tbaa !13 + %cmp40.not119 = icmp eq i32 %21, 0 + br i1 %cmp40.not119, label %for.cond.cleanup, label %for.body.preheader + + for.body.preheader: ; preds = %for.cond.preheader + %22 = add i32 %21, -1 + %cond41 = select i1 %cond, i32 %22, i32 %i + store i32 %cond41, ptr %t, align 4, !tbaa !11 + br label %for.cond.cleanup + + for.cond.cleanup: ; preds = %for.body.preheader, %for.cond.preheader + %23 = phi i32 [ %cond41, %for.body.preheader ], [ %20, %for.cond.preheader ] + %tobool44 = icmp ne i32 %21, 0 + %conv = zext i1 %tobool44 to i32 + %add48 = add i32 %1, %0 + %add49 = add i32 %add48, %2 + %add50 = add i32 %add49, %3 + %add51 = add i32 %add50, %4 + %add52 = add i32 %add51, %5 + %add53 = add i32 %add52, %6 + %add54 = add i32 %add53, %7 + %add55 = add i32 %add54, %8 + %add56 = add i32 %add55, %9 + %add57 = add i32 %add56, %10 + %add58 = add i32 %add57, %11 + %add59 = add i32 %add58, %12 + %add60 = add i32 %add59, %13 + %add61 = add i32 %add60, %14 + %add62 = add i32 %add61, %15 + %add63 = add i32 %add62, %16 + %add64 = add i32 %add63, %17 + %add65 = add i32 %add64, %18 + %add66 = add i32 %add65, %19 + %add67 = add i32 %add66, %conv + %add68 = add i32 %add67, %23 + br label %cleanup + + cleanup: ; preds = %for.cond.cleanup, %entry + %retval.0 = phi i32 [ %add68, %for.cond.cleanup ], [ %i, %entry ] + ret i32 %retval.0 + } + + !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} + !llvm.ident = !{!6} + + !0 = !{i32 1, !"wchar_size", i32 4} + !1 = !{i32 1, !"target-abi", !"lp64d"} + !2 = !{i32 8, !"PIC Level", i32 2} + !3 = !{i32 7, !"PIE Level", i32 2} + !4 = !{i32 7, !"uwtable", i32 2} + !5 = !{i32 8, !"SmallDataLimit", i32 8} + !6 = !{!"Syntacore clang version 17.0.0 (SC git:/tools/llvm/llvm-project/ 8031017f1ef69f62fbaa0b426e738d5e5fe5ae54)"} + !7 = !{!8, !8, i64 0} + !8 = !{!"int", !9, i64 0} + !9 = !{!"omnipotent char", !10, i64 0} + !10 = !{!"Simple C++ TBAA"} + !11 = !{!12, !8, i64 0} + !12 = !{!"_ZTS4task", !8, i64 0, !8, i64 4, !9, i64 8} + !13 = !{!12, !8, i64 4} + +... +--- +name: _Z5earlyP4taskib +alignment: 2 +exposesReturnsTwice: false +legalized: false +regBankSelected: false +selected: false +failedISel: false +tracksRegLiveness: true +hasWinCFI: false +callsEHReturn: false +callsUnwindInit: false +hasEHCatchret: false +hasEHScopes: false +hasEHFunclets: false +isOutlined: false +debugInstrRef: false +failsVerification: false +tracksDebugUserValues: true +registers: [] +liveins: + - { reg: '$x10', virtual-reg: '' } + - { reg: '$x11', virtual-reg: '' } + - { reg: '$x12', virtual-reg: '' } +frameInfo: + isFrameAddressTaken: false + isReturnAddressTaken: false + hasStackMap: false + hasPatchPoint: false + stackSize: 0 + offsetAdjustment: 0 + maxAlignment: 1 + adjustsStack: false + hasCalls: false + stackProtector: '' + functionContext: '' + maxCallFrameSize: 4294967295 + cvBytesOfCalleeSavedRegisters: 0 + hasOpaqueSPAdjustment: false + hasVAStart: false + hasMustTailInVarArgFunc: false + hasTailCall: false + localFrameSize: 0 +fixedStack: [] +stack: [] +entry_values: [] +callSites: [] +debugValueSubstitutions: [] +constants: [] +machineFunctionInfo: + varArgsFrameIndex: 0 + varArgsSaveSize: 0 +body: | + bb.0.entry: + successors: %bb.1(0x40000000), %bb.8(0x40000000) + liveins: $x10, $x11, $x12 + + renamable $x13 = COPY $x10 + renamable $x9 = LW $x10, 8 :: (load (s32) from %ir.arr, !tbaa !7) + renamable $x16 = LW $x10, 48 :: (load (s32) from %ir.arrayidx20, !tbaa !7) + renamable $x15 = LW $x10, 0 :: (load (s32) from %ir.t, !tbaa !11) + renamable $x14 = ADD renamable $x16, renamable $x9 + renamable $x10 = COPY $x11 + renamable $x14 = ADDW killed renamable $x14, renamable $x15 + BLT killed renamable $x14, $x11, %bb.1 + + bb.8: + successors: %bb.7(0x80000000) + liveins: $x10 + + PseudoBR %bb.7 + + bb.1.for.cond.preheader: + successors: %bb.6(0x30000000), %bb.2(0x50000000) + liveins: $x9, $x10, $x12, $x13, $x15, $x16 + + renamable $x20 = LW renamable $x13, 12 :: (load (s32) from %ir.arrayidx2, !tbaa !7) + renamable $x30 = LW renamable $x13, 16 :: (load (s32) from %ir.arrayidx4, !tbaa !7) + renamable $x24 = LW renamable $x13, 20 :: (load (s32) from %ir.arrayidx6, !tbaa !7) + renamable $x31 = LW renamable $x13, 24 :: (load (s32) from %ir.arrayidx8, !tbaa !7) + renamable $x25 = LW renamable $x13, 28 :: (load (s32) from %ir.arrayidx10, !tbaa !7) + renamable $x7 = LW renamable $x13, 32 :: (load (s32) from %ir.arrayidx12, !tbaa !7) + renamable $x21 = LW renamable $x13, 36 :: (load (s32) from %ir.arrayidx14, !tbaa !7) + renamable $x14 = LW renamable $x13, 40 :: (load (s32) from %ir.arrayidx16, !tbaa !7) + renamable $x23 = LW renamable $x13, 44 :: (load (s32) from %ir.arrayidx18, !tbaa !7) + renamable $x29 = LW renamable $x13, 52 :: (load (s32) from %ir.arrayidx22, !tbaa !7) + renamable $x22 = LW renamable $x13, 56 :: (load (s32) from %ir.arrayidx24, !tbaa !7) + renamable $x6 = LW renamable $x13, 60 :: (load (s32) from %ir.arrayidx26, !tbaa !7) + renamable $x17 = LW renamable $x13, 64 :: (load (s32) from %ir.arrayidx28, !tbaa !7) + renamable $x5 = LW renamable $x13, 68 :: (load (s32) from %ir.arrayidx30, !tbaa !7) + renamable $x28 = LW renamable $x13, 72 :: (load (s32) from %ir.arrayidx32, !tbaa !7) + renamable $x18 = LW renamable $x13, 76 :: (load (s32) from %ir.arrayidx34, !tbaa !7) + renamable $x19 = LW renamable $x13, 80 :: (load (s32) from %ir.arrayidx36, !tbaa !7) + renamable $x8 = LW renamable $x13, 4 :: (load (s32) from %ir.y, !tbaa !13) + renamable $x11 = LW renamable $x13, 84 :: (load (s32) from %ir.arrayidx38, !tbaa !7) + BEQ renamable $x8, $x0, %bb.6 + PseudoBR %bb.2 + + bb.2.for.body.preheader: + successors: %bb.4(0x40000000), %bb.3(0x40000000) + liveins: $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x28, $x29, $x30, $x31 + + BEQ killed renamable $x12, $x0, %bb.4 + + bb.3: + successors: %bb.5(0x80000000) + liveins: $x5, $x6, $x7, $x8, $x9, $x11, $x13, $x14, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x28, $x29, $x30, $x31 + + renamable $x10 = ADDIW renamable $x8, -1 + PseudoBR %bb.5 + + bb.4.for.body.preheader: + successors: %bb.5(0x80000000) + liveins: $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x13, $x14, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x28, $x29, $x30, $x31 + + + bb.5.for.body.preheader: + successors: %bb.6(0x80000000) + liveins: $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x13, $x14, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x28, $x29, $x30, $x31 + + SW renamable $x10, killed renamable $x13, 0 :: (store (s32) into %ir.t, !tbaa !11) + renamable $x15 = COPY killed renamable $x10 + + bb.6.for.cond.cleanup: + successors: %bb.7(0x80000000) + liveins: $x5, $x6, $x7, $x8, $x9, $x11, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x28, $x29, $x30, $x31 + + renamable $x9 = ADD killed renamable $x20, killed renamable $x9 + renamable $x30 = ADD killed renamable $x30, killed renamable $x24 + renamable $x30 = ADD killed renamable $x9, killed renamable $x30 + renamable $x31 = ADD killed renamable $x31, killed renamable $x25 + renamable $x14 = ADD killed renamable $x21, killed renamable $x14 + renamable $x7 = ADD killed renamable $x31, killed renamable $x7 + renamable $x14 = ADD killed renamable $x14, killed renamable $x23 + renamable $x7 = ADD killed renamable $x30, killed renamable $x7 + renamable $x14 = ADD killed renamable $x14, killed renamable $x16 + renamable $x10 = SLTU $x0, killed renamable $x8 + renamable $x14 = ADD killed renamable $x7, killed renamable $x14 + renamable $x29 = ADD killed renamable $x29, killed renamable $x22 + renamable $x28 = ADD killed renamable $x28, killed renamable $x18 + renamable $x6 = ADD killed renamable $x29, killed renamable $x6 + renamable $x28 = ADD killed renamable $x28, killed renamable $x19 + renamable $x17 = ADD killed renamable $x6, killed renamable $x17 + renamable $x11 = ADD killed renamable $x28, killed renamable $x11 + renamable $x17 = ADD killed renamable $x17, killed renamable $x5 + renamable $x10 = ADD killed renamable $x11, killed renamable $x10 + renamable $x14 = ADD killed renamable $x14, killed renamable $x17 + renamable $x10 = ADD killed renamable $x10, killed renamable $x15 + renamable $x10 = ADDW killed renamable $x14, killed renamable $x10 + + bb.7.cleanup: + liveins: $x10 + + PseudoRET implicit $x10 + +...