================
@@ -3267,10 +3267,13 @@ bool AArch64FrameLowering::spillCalleeSavedRegisters(
         InsertSEH(MIB, TII, MachineInstr::FrameSetup);
     } else { // The code when the pair of ZReg is not present
       MachineInstrBuilder MIB = BuildMI(MBB, MI, DL, TII.get(StrOpc));
-      if (!MRI.isReserved(Reg1))
+      const AArch64RegisterInfo *RegInfo =
+          static_cast<const AArch64RegisterInfo *>(
+              MF.getSubtarget().getRegisterInfo());
+      if (!RegInfo->isStrictlyReservedReg(MF, Reg1))
----------------
aemerson wrote:

> I think this can happen anyway? For example, with the frame/base pointer.

Indeed :(

> We could mess with the allocation orders so LR isn't allocated, despite being 
> an allocatable register. This has basically all the properties we want... but 
> we don't have the necessary infrastructure to make it straightforward.

Yeah, I thought about something along these lines. Perhaps if we could 
dynamically alter regclasses.

I think I'll give the changing reservedness approach a go here since there's 
already some precedent for it.

https://github.com/llvm/llvm-project/pull/98073
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to