diff options
author | David Stenberg <david.stenberg@ericsson.com> | 2019-12-09 10:45:13 +0100 |
---|---|---|
committer | David Stenberg <david.stenberg@ericsson.com> | 2019-12-09 10:45:13 +0100 |
commit | f3696533f2246653774f85f49269f5059fb3fe65 (patch) | |
tree | f88abd486ce42b9359a977ede5bfda619d9dd202 /llvm/lib/CodeGen/TargetInstrInfo.cpp | |
parent | 3cd93a4efcdeabeb20cb7bec9fbddcb540d337a1 (diff) | |
download | bcm5719-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.cpp | 33 |
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); |