blob: b2d2e5a4cab64f88e2f6f19c38ceac25b50fbff1 [file] [log] [blame] [edit]
//===- SISpillUtils.cpp - SI spill helper functions -----------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "SISpillUtils.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
using namespace llvm;
void llvm::clearDebugInfoForSpillFIs(MachineFrameInfo &MFI,
MachineBasicBlock &MBB,
const BitVector &SpillFIs) {
// FIXME: The dead frame indices are replaced with a null register from the
// debug value instructions. We should instead update it with the correct
// register value. But not sure the register value alone is adequate to lower
// the DIExpression. It should be worked out later.
for (MachineInstr &MI : MBB) {
if (!MI.isDebugValue())
continue;
for (MachineOperand &Op : MI.debug_operands()) {
if (Op.isFI() && !MFI.isFixedObjectIndex(Op.getIndex()) &&
SpillFIs[Op.getIndex()]) {
Op.ChangeToRegister(Register(), /*isDef=*/false);
}
}
}
}