[llvm] [ADT] Add `llvm::conditionally_reverse()` iterator (PR #171040)
Jakub Kuderski via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 7 10:51:20 PST 2025
================
@@ -911,29 +911,18 @@ 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 (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;
- // TODO: should we be using MFI.isDeadObjectIndex(FI) here?
- 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.isCalleeSavedObjectIndex(FI) ||
- MFI.getStackID(FI) != TargetStackID::Default)
- continue;
+ auto AllFIs = seq(MFI.getObjectIndexBegin(), MFI.getObjectIndexEnd());
+ for (int FI : conditionally_reverse(AllFIs, /*Reverse=*/!StackGrowsDown)) {
+ // Only allocate objects on the default stack.
+ if (!MFI.isCalleeSavedObjectIndex(FI) ||
+ MFI.getStackID(FI) != TargetStackID::Default)
----------------
kuhar wrote:
Can you introduce the uses in a follow up PR? This is to make reverts less disruptive
https://github.com/llvm/llvm-project/pull/171040
More information about the llvm-commits
mailing list