31 #define DEBUG_TYPE "si-debugger-insert-nops"
32 #define PASS_NAME "SI Debugger Insert Nops"
55 char SIDebuggerInsertNops::
ID = 0;
59 return new SIDebuggerInsertNops();
79 for (
auto &
MBB : MF) {
82 if (
MI->isDebugValue() || !
MI->getDebugLoc())
86 auto DL =
MI->getDebugLoc();
87 if (NopInserted.
find(DL.getLine()) == NopInserted.
end()) {
90 NopInserted.
insert(DL.getLine());
AMDGPU specific subclass of TargetSubtarget.
iterator find(const ValueT &V)
Implements a dense probed hash-table based set.
const SIInstrInfo * getInstrInfo() const override
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
const HexagonInstrInfo * TII
bool hasDebugInfo() const
Returns true if valid debug info is present.
MachineInstrBuilder BuildMI(MachineFunction &MF, const DebugLoc &DL, const MCInstrDesc &MCID)
Builder interface. Specify how to create the initial instruction itself.
FunctionPass * createSIDebuggerInsertNopsPass()
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
std::pair< iterator, bool > insert(const ValueT &V)
Represent the analysis usage information of a pass.
FunctionPass class - This class is used to implement most global optimizations.
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
bool debuggerInsertNops() const
void setPreservesCFG()
This function should be called by the pass, iff they do not:
Interface definition for SIInstrInfo.
StringRef - Represent a constant reference to a string, i.e.
MachineModuleInfo & getMMI() const
char & SIDebuggerInsertNopsID