[llvm] [CodeGen] Replace (Min,Max)CSFrameIndex with flag on frame object [NFCI] (PR #170905)

Sam Elliott via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 5 11:05:47 PST 2025


================
@@ -923,20 +911,28 @@ void PEIImpl::calculateFrameObjectOffsets(MachineFunction &MF) {
   Align MaxAlign = MFI.getMaxAlign();
   // First assign frame offsets to stack objects that are used to spill
   // callee saved registers.
-  if (MaxCSFrameIndex >= MinCSFrameIndex) {
-    for (unsigned i = 0; i <= MaxCSFrameIndex - MinCSFrameIndex; ++i) {
-      unsigned FrameIndex =
-          StackGrowsDown ? MinCSFrameIndex + i : MaxCSFrameIndex - i;
-
+  if (StackGrowsDown) {
+    for (int FI = MFI.getObjectIndexBegin(); FI < MFI.getObjectIndexEnd();
+         FI++) {
+      // Only allocate objects on the default stack.
+      if (!MFI.isCalleeSavedObjectIndex(FI) ||
+          MFI.getStackID(FI) != TargetStackID::Default)
+        continue;
+      AdjustStackOffset(MFI, FI, StackGrowsDown, Offset, MaxAlign);
+    }
+  } else {
+    for (int FI = MFI.getObjectIndexEnd() - 1; FI >= MFI.getObjectIndexBegin();
+         FI--) {
       // Only allocate objects on the default stack.
-      if (MFI.getStackID(FrameIndex) != TargetStackID::Default)
+      if (!MFI.isCalleeSavedObjectIndex(FI) ||
+          MFI.getStackID(FI) != TargetStackID::Default)
         continue;
 
-      // TODO: should this just be if (MFI.isDeadObjectIndex(FrameIndex))
-      if (!StackGrowsDown && MFI.isDeadObjectIndex(FrameIndex))
+      // TODO: should this just be if (MFI.isDeadObjectIndex(FI))
+      if (MFI.isDeadObjectIndex(FI))
----------------
lenary wrote:

I think you might want to rewrite the comment a little and put it where a `MFI.isDeadObjectIndex(FI)` call would be in the loop in the `if (StackGrowsDown)` then-block right?

I don't know why we only check for dead objects when the stack grows a specific direction, but I presume there's some boundary condition bug with the logic.




https://github.com/llvm/llvm-project/pull/170905


More information about the llvm-commits mailing list