[llvm] [NVPTX] Fixup NVPTXPrologEpilogPass for opt-bisect-limit (PR #144136)
Alex MacLean via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 17 10:10:40 PDT 2025
================
@@ -57,41 +95,27 @@ bool NVPTXPrologEpilogPass::runOnMachineFunction(MachineFunction &MF) {
calculateFrameObjectOffsets(MF);
- for (MachineBasicBlock &MBB : MF) {
- for (MachineInstr &MI : MBB) {
- for (unsigned i = 0, e = MI.getNumOperands(); i != e; ++i) {
- if (!MI.getOperand(i).isFI())
+ for (MachineBasicBlock &BB : MF) {
+ for (MachineBasicBlock::iterator I = BB.end(); I != BB.begin();) {
+ MachineInstr &MI = *std::prev(I);
+
+ bool RemovedMI = false;
+ for (const auto &[Idx, Op] : enumerate(MI.operands())) {
+ if (!Op.isFI())
continue;
- // Frame indices in debug values are encoded in a target independent
- // way with simply the frame index and offset rather than any
- // target-specific addressing mode.
- if (MI.isDebugValue()) {
- MachineOperand &Op = MI.getOperand(i);
- assert(
- MI.isDebugOperand(&Op) &&
- "Frame indices can only appear as a debug operand in a DBG_VALUE*"
- " machine instruction");
- Register Reg;
- auto Offset =
- TFI.getFrameIndexReference(MF, Op.getIndex(), Reg);
- Op.ChangeToRegister(Reg, /*isDef=*/false);
- const DIExpression *DIExpr = MI.getDebugExpression();
- if (MI.isNonListDebugValue()) {
- DIExpr = TRI.prependOffsetExpression(MI.getDebugExpression(), DIExpression::ApplyOffset, Offset);
- } else {
- SmallVector<uint64_t, 3> Ops;
- TRI.getOffsetOpcodes(Offset, Ops);
- unsigned OpIdx = MI.getDebugOperandIndex(&Op);
- DIExpr = DIExpression::appendOpsToArg(DIExpr, Ops, OpIdx);
- }
- MI.getDebugExpressionOp().setMetadata(DIExpr);
+ if (replaceFrameIndexDebugInstr(MF, MI, Idx))
continue;
- }
- TRI.eliminateFrameIndex(MI, 0, i, nullptr);
+ // Eliminate this FrameIndex operand.
+ TRI.eliminateFrameIndex(MI, 0, Idx, nullptr);
Modified = true;
+ if (RemovedMI)
----------------
AlexMaclean wrote:
It is not. Hopefully the updated version makes more sense.
https://github.com/llvm/llvm-project/pull/144136
More information about the llvm-commits
mailing list