Go to the documentation of this file.
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;
89 char LiveDebugValues::ID = 0;
117 TPC = getAnalysisIfAvailable<TargetPassConfig>();
118 LDVImpl *TheImpl = &*VarLocImpl;
124 TheImpl = &*InstrRefImpl;
bool hasProperty(Property P) const
This is an optimization pass for GlobalISel generic memory operations.
void initializeLiveDebugValuesPass(PassRegistry &)
bool useDebugInstrRef() const
Returns true if the function's variable locations are tracked with instruction referencing.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Triple - Helper class for working with autoconf configuration names.
virtual bool ExtendRanges(MachineFunction &MF, MachineDominatorTree *DomTree, TargetPassConfig *TPC, unsigned InputBBLimit, unsigned InputDbgValLimit)=0
static cl::opt< cl::boolOrDefault > ValueTrackingVariableLocations("experimental-debug-variable-locations", cl::desc("Use experimental new value-tracking variable locations"))
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
char & LiveDebugValuesID
LiveDebugValues pass.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
Represent the analysis usage information of a pass.
const MachineFunctionProperties & getProperties() const
Get the function properties.
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< bool > ForceInstrRefLDV("force-instr-ref-livedebugvalues", cl::Hidden, cl::desc("Use instruction-ref based LiveDebugValues with " "normal DBG_VALUE inputs"), cl::init(false))
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
Target-Independent Code Generator Pass Configuration Options.
bool debuginfoShouldUseDebugInstrRef(const Triple &T)
initializer< Ty > init(const Ty &Val)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
LDVImpl * makeInstrRefBasedLiveDebugValues()
void setPreservesCFG()
This function should be called by the pass, iff they do not:
const LLVMTargetMachine & getTarget() const
getTarget - Return the target machine this machine code is compiled with
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)
INITIALIZE_PASS(LiveDebugValues, DEBUG_TYPE, "Live DEBUG_VALUE analysis", false, false) LiveDebugValues
Default construct and initialize the pass.
void calculate(MachineFunction &F)
const Triple & getTargetTriple() const
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
LDVImpl * makeVarLocBasedLiveDebugValues()
bool isWasm() const
Tests whether the target is wasm (32- and 64-bit).