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

Benjamin Maxwell via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 6 18:14:49 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) {
----------------
MacDue wrote:

No worries :+1: You could wrap this trick up as:
```c++
template <typename ContainerTy>
[[nodiscard]] auto conditionally_reverse(ContainerTy &&C, bool Reverse) {
  return map_range(zip_equal(reverse(C), C), [Reverse](auto I) {
    return Reverse ? std::get<0>(I) : std::get<1>(I);
  });
}
```

Which allows for:
```c++
auto AllFIs = seq(MFI.getObjectIndexBegin(), MFI.getObjectIndexEnd());
for (auto FI : conditionally_reverse(AllFIs, /*Reverse=*/!StackGrowsDown)) {
  // ...
}
```


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


More information about the llvm-commits mailing list