================
@@ -1502,6 +1659,9 @@ void 
RISCVFrameLowering::determineCalleeSaves(MachineFunction &MF,
   auto *RVFI = MF.getInfo<RISCVMachineFunctionInfo>();
   if (RVFI->isPushable(MF) && SavedRegs.test(RISCV::X26))
     SavedRegs.set(RISCV::X27);
+
+  // SiFive Preemptible Interrupt Handlers need additional frame entries
+  createSiFivePreemptibleInterruptFrameEntries(MF, *RVFI);
----------------
lenary wrote:

This has to be called here. `assignCalleeSavedSpillSlots` in 
PrologEpilogInserter.cpp  will return before calling the target-specific 
`assignCalleeSavedSpillSlots` if `SavedRegs` (the bitmap of registers to save) 
is empty, which it could be. Because we don't model mepc/mcause state as a 
register, we don't have a bit in the bitmap to use to say we're saving it.

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

Reply via email to