From eb4c98ca3d2590bad9f6542afbf3a7824d2b53fa Mon Sep 17 00:00:00 2001 From: Djordje Todorovic Date: Fri, 27 Sep 2019 13:52:43 +0000 Subject: [DebugInfo] Exclude memory location values as parameter entry values Abandon describing of loaded values due to safety concerns. Loaded values are described as derefed memory location at caller point. At callee we can unintentionally change that memory location which would lead to different entry being printed value before and after the memory location clobbering. This problem is described in llvm.org/PR43343. Patch by Nikola Prica Differential Revision: https://reviews.llvm.org/D67717 llvm-svn: 373089 --- llvm/lib/CodeGen/TargetInstrInfo.cpp | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'llvm/lib/CodeGen/TargetInstrInfo.cpp') diff --git a/llvm/lib/CodeGen/TargetInstrInfo.cpp b/llvm/lib/CodeGen/TargetInstrInfo.cpp index 0e9eb77ea26..2108fc6fecf 100644 --- a/llvm/lib/CodeGen/TargetInstrInfo.cpp +++ b/llvm/lib/CodeGen/TargetInstrInfo.cpp @@ -1133,18 +1133,6 @@ TargetInstrInfo::describeLoadedValue(const MachineInstr &MI) const { } else if (MI.isMoveImmediate()) { Op = &MI.getOperand(1); return ParamLoadedValue(*Op, Expr); - } else if (MI.hasOneMemOperand()) { - int64_t Offset; - const auto &TRI = MF->getSubtarget().getRegisterInfo(); - const auto &TII = MF->getSubtarget().getInstrInfo(); - const MachineOperand *BaseOp; - - if (!TII->getMemOperandWithOffset(MI, BaseOp, Offset, TRI)) - return None; - - Expr = DIExpression::prepend(Expr, DIExpression::DerefAfter, Offset); - Op = BaseOp; - return ParamLoadedValue(*Op, Expr); } return None; -- cgit v1.2.3