Page MenuHomePhabricator

[DebugInfo] Support representation of multiple location operands in ISel's SDDbgValue

Authored by StephenTozer on Sep 30 2020, 9:02 AM.



Continuing further with the work from the initial RFC[0], this patch is the first step to supporting variadic debug values at Instruction Selection. This patch is mostly just a change to the class that represents debug values during ISel, SDDbgValue; part of its functionality has been split off into a new class, SDDbgOperand.

The new class SDDbgOperand represents a single value, corresponding to an SSA value or MachineOperand in the IR and MIR respectively. Members of SDDbgValue that related to that value, such as the Kind enum, now live there. SDDbgValue now contains an array of SDDbgOperand instead, allowing it to hold more than one of these values. Outside of this split, this patch changes very little; all other changes are simply updates to use the new interface to prevent compiler errors. The followup patches will introduce the actual behaviour changes and tests for this new behaviour.


Diff Detail

Event Timeline

StephenTozer created this revision.Sep 30 2020, 9:02 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 30 2020, 9:02 AM
StephenTozer requested review of this revision.Sep 30 2020, 9:02 AM
aprantl accepted this revision.Oct 5 2020, 9:20 AM
aprantl added inline comments.

Any kind of useful Doxygen comment for this class?


isn't llvm_unreachable a noreturn function? So we should delete the return false?

This revision is now accepted and ready to land.Oct 5 2020, 9:20 AM

Rebase onto recent master; no functional changes except applying the existing changes to the new InstrEmitter::EmitDbgInstrRef function.

Rebased onto recent master, address review comment.

This revision was landed with ongoing or failed builds.Mar 8 2021, 10:55 AM
This revision was automatically updated to reflect the committed changes.