[llvm] [RemoveDIs][DebugInfo] Add DPVAssign variant of DPValue (PR #77912)
Jeremy Morse via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 12 08:47:53 PST 2024
================
@@ -14,33 +14,80 @@
namespace llvm {
DPValue::DPValue(const DbgVariableIntrinsic *DVI)
- : DebugValueUser(DVI->getRawLocation()), Variable(DVI->getVariable()),
- Expression(DVI->getExpression()), DbgLoc(DVI->getDebugLoc()) {
+ : DebugValueUser({DVI->getRawLocation(), nullptr, nullptr}),
+ Variable(DVI->getVariable()), Expression(DVI->getExpression()),
+ DbgLoc(DVI->getDebugLoc()), AddressExpression(nullptr) {
switch (DVI->getIntrinsicID()) {
case Intrinsic::dbg_value:
Type = LocationType::Value;
break;
case Intrinsic::dbg_declare:
Type = LocationType::Declare;
break;
+ case Intrinsic::dbg_assign: {
+ Type = LocationType::Assign;
+ const DbgAssignIntrinsic *Assign =
+ static_cast<const DbgAssignIntrinsic *>(DVI);
+ resetDebugValue(1, Assign->getRawAddress());
+ AddressExpression = Assign->getAddressExpression();
+ setAssignId(Assign->getAssignID());
+ break;
+ }
default:
llvm_unreachable(
"Trying to create a DPValue with an invalid intrinsic type!");
}
}
DPValue::DPValue(const DPValue &DPV)
- : DebugValueUser(DPV.getRawLocation()),
- Variable(DPV.getVariable()), Expression(DPV.getExpression()),
- DbgLoc(DPV.getDebugLoc()), Type(DPV.getType()) {}
+ : DebugValueUser(DPV.DebugValues), Variable(DPV.getVariable()),
----------------
jmorse wrote:
Nit -- can we just pass DPV into the superclass, and it'll select the appropriate copy constructor? That reduces faff if the implementation of DebugValueUser changes, but it's not big deal if all of this is still to be finalised
https://github.com/llvm/llvm-project/pull/77912
More information about the llvm-commits
mailing list