[llvm] [llvm] Support multiple save/restore points in mir (PR #119357)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 21 04:42:06 PDT 2025
================
@@ -678,18 +757,57 @@ void PEI::spillCalleeSavedRegs(MachineFunction &MF) {
MFI.setCalleeSavedInfoValid(true);
std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo();
+ DenseMap<Register, CalleeSavedInfo *> RegToInfo;
+ for (auto &CS : CSI)
+ RegToInfo.insert({CS.getReg(), &CS});
+
+ if (!MFI.getSavePoints().empty()) {
+ fillCSInfoPerBB(MFI, RegToInfo, PrologBlocks, true /* isSave */);
+ fillCSInfoPerBB(MFI, RegToInfo, EpilogBlocks, false /* isSave */);
----------------
arsenm wrote:
```suggestion
fillCSInfoPerBB(MFI, RegToInfo, PrologBlocks, /*isSave=*/true);
fillCSInfoPerBB(MFI, RegToInfo, EpilogBlocks, /*isSave=*/false);
```
https://github.com/llvm/llvm-project/pull/119357
More information about the llvm-commits
mailing list