36#define DEBUG_TYPE "livedebugvalues"
42 cl::desc(
"Use instruction-ref based LiveDebugValues with "
43 "normal DBG_VALUE inputs"),
47 "experimental-debug-variable-locations",
48 cl::desc(
"Use experimental new value-tracking variable locations"));
53 "livedebugvalues-input-bb-limit",
54 cl::desc(
"Maximum input basic blocks before DBG_VALUE limit applies"),
57 "livedebugvalues-input-dbg-value-limit",
59 "Maximum input DBG_VALUE insts supported by debug range extension"),
82 std::unique_ptr<LDVImpl> InstrRefImpl;
83 std::unique_ptr<LDVImpl> VarLocImpl;
111 MachineFunctionProperties::Property::NoVRegs));
117 TPC = getAnalysisIfAvailable<TargetPassConfig>();
118 LDVImpl *TheImpl = &*VarLocImpl;
124 TheImpl = &*InstrRefImpl;
static cl::opt< unsigned > InputBBLimit("livedebugvalues-input-bb-limit", cl::desc("Maximum input basic blocks before DBG_VALUE limit applies"), cl::init(10000), cl::Hidden)
static cl::opt< bool > ForceInstrRefLDV("force-instr-ref-livedebugvalues", cl::Hidden, cl::desc("Use instruction-ref based LiveDebugValues with " "normal DBG_VALUE inputs"), cl::init(false))
static cl::opt< unsigned > InputDbgValueLimit("livedebugvalues-input-dbg-value-limit", cl::desc("Maximum input DBG_VALUE insts supported by debug range extension"), cl::init(50000), cl::Hidden)
static cl::opt< cl::boolOrDefault > ValueTrackingVariableLocations("experimental-debug-variable-locations", cl::desc("Use experimental new value-tracking variable locations"))
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Target-Independent Code Generator Pass Configuration Options pass.
Represent the analysis usage information of a pass.
void setPreservesCFG()
This function should be called by the pass, iff they do not:
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
void calculate(MachineFunction &F)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
virtual bool runOnMachineFunction(MachineFunction &MF)=0
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
bool hasProperty(Property P) const
bool useDebugInstrRef() const
Returns true if the function's variable locations are tracked with instruction referencing.
const LLVMTargetMachine & getTarget() const
getTarget - Return the target machine this machine code is compiled with
const MachineFunctionProperties & getProperties() const
Get the function properties.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
virtual bool ExtendRanges(MachineFunction &MF, MachineDominatorTree *DomTree, TargetPassConfig *TPC, unsigned InputBBLimit, unsigned InputDbgValLimit)=0
const Triple & getTargetTriple() const
Target-Independent Code Generator Pass Configuration Options.
Triple - Helper class for working with autoconf configuration names.
bool isWasm() const
Tests whether the target is wasm (32- and 64-bit).
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
initializer< Ty > init(const Ty &Val)
This is an optimization pass for GlobalISel generic memory operations.
void initializeLiveDebugValuesPass(PassRegistry &)
LDVImpl * makeInstrRefBasedLiveDebugValues()
char & LiveDebugValuesID
LiveDebugValues pass.
LDVImpl * makeVarLocBasedLiveDebugValues()
bool debuginfoShouldUseDebugInstrRef(const Triple &T)