summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/TargetInstrInfo.cpp
diff options
context:
space:
mode:
authorDavid Stenberg <david.stenberg@ericsson.com>2019-12-09 10:45:13 +0100
committerDavid Stenberg <david.stenberg@ericsson.com>2019-12-09 10:45:13 +0100
commitf3696533f2246653774f85f49269f5059fb3fe65 (patch)
treef88abd486ce42b9359a977ede5bfda619d9dd202 /llvm/lib/CodeGen/TargetInstrInfo.cpp
parent3cd93a4efcdeabeb20cb7bec9fbddcb540d337a1 (diff)
downloadbcm5719-llvm-f3696533f2246653774f85f49269f5059fb3fe65.tar.gz
bcm5719-llvm-f3696533f2246653774f85f49269f5059fb3fe65.zip
Revert "[DebugInfo] Make describeLoadedValue() reg aware"
This reverts commit 3cd93a4efcdeabeb20cb7bec9fbddcb540d337a1. I'll recommit with a well-formatted arcanist commit message.
Diffstat (limited to 'llvm/lib/CodeGen/TargetInstrInfo.cpp')
-rw-r--r--llvm/lib/CodeGen/TargetInstrInfo.cpp33
1 files changed, 5 insertions, 28 deletions
diff --git a/llvm/lib/CodeGen/TargetInstrInfo.cpp b/llvm/lib/CodeGen/TargetInstrInfo.cpp
index 5c168f0a3b6..d7a02eb61a2 100644
--- a/llvm/lib/CodeGen/TargetInstrInfo.cpp
+++ b/llvm/lib/CodeGen/TargetInstrInfo.cpp
@@ -1121,35 +1121,16 @@ bool TargetInstrInfo::hasLowDefLatency(const TargetSchedModel &SchedModel,
}
Optional<ParamLoadedValue>
-TargetInstrInfo::describeLoadedValue(const MachineInstr &MI,
- Register Reg) const {
+TargetInstrInfo::describeLoadedValue(const MachineInstr &MI) const {
const MachineFunction *MF = MI.getMF();
- const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
DIExpression *Expr = DIExpression::get(MF->getFunction().getContext(), {});
int64_t Offset;
- // To simplify the sub-register handling, verify that we only need to
- // consider physical registers.
- assert(MF->getProperties().hasProperty(
- MachineFunctionProperties::Property::NoVRegs));
-
if (auto DestSrc = isCopyInstr(MI)) {
- Register DestReg = DestSrc->Destination->getReg();
-
- if (Reg == DestReg)
- return ParamLoadedValue(*DestSrc->Source, Expr);
-
- // Cases where super- or sub-registers needs to be described should
- // be handled by the target's hook implementation.
- assert(!TRI->isSuperOrSubRegisterEq(Reg, DestReg) &&
- "TargetInstrInfo::describeLoadedValue can't describe super- or "
- "sub-regs for copy instructions");
- return None;
- } else if (auto RegImm = isAddImmediate(MI, Reg)) {
- Register SrcReg = RegImm->Reg;
- Offset = RegImm->Imm;
+ return ParamLoadedValue(*DestSrc->Source, Expr);
+ } else if (auto DestSrc = isAddImmediate(MI, Offset)) {
Expr = DIExpression::prepend(Expr, DIExpression::ApplyOffset, Offset);
- return ParamLoadedValue(MachineOperand::CreateReg(SrcReg, false), Expr);
+ return ParamLoadedValue(*DestSrc->Source, Expr);
} else if (MI.hasOneMemOperand()) {
// Only describe memory which provably does not escape the function. As
// described in llvm.org/PR43343, escaped memory may be clobbered by the
@@ -1164,15 +1145,11 @@ TargetInstrInfo::describeLoadedValue(const MachineInstr &MI,
if (!PSV || PSV->mayAlias(&MFI))
return None;
+ const auto &TRI = MF->getSubtarget().getRegisterInfo();
const MachineOperand *BaseOp;
if (!TII->getMemOperandWithOffset(MI, BaseOp, Offset, TRI))
return None;
- assert(MI.getNumExplicitDefs() == 1 &&
- "Can currently only handle mem instructions with a single define");
-
- // TODO: In what way do we need to take Reg into consideration here?
-
SmallVector<uint64_t, 8> Ops;
DIExpression::appendOffset(Ops, Offset);
Ops.push_back(dwarf::DW_OP_deref_size);
OpenPOWER on IntegriCloud