[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