83#define DEBUG_TYPE "ppc-toc-reg-deps"
97 if (
MI.getOpcode() == PPC::LDtocL ||
98 MI.getOpcode() == PPC::ADDItocL ||
99 MI.getOpcode() == PPC::LWZtocL)
111 bool Changed =
false;
115 const unsigned TOCReg = isPPC64 ? PPC::X2 : PPC::R2;
117 for (
auto &
MI :
MBB) {
118 if (!hasTOCLoReloc(
MI))
132 bool Changed =
false;
148 "PowerPC TOC Register Dependencies",
false,
false)
150char PPCTOCRegDeps::
ID = 0;
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
This file defines the 'Statistic' class, which is designed to be an easy way to expose various metric...
Represent the analysis usage information of a pass.
FunctionPass class - This class is used to implement most global optimizations.
const MachineFunction * getParent() const
Return the MachineFunction containing this basic block.
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...
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
Representation of each machine instruction.
MachineOperand class - Representation of each machine instruction operand.
static MachineOperand CreateReg(Register Reg, bool isDef, bool isImp=false, bool isKill=false, bool isDead=false, bool isUndef=false, bool isEarlyClobber=false, unsigned SubReg=0, bool isDebug=false, bool isInternalRead=false, bool isRenamable=false)
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
@ MO_ACCESS_MASK
The next are not flags but distinct values.
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< early_inc_iterator_impl< detail::IterOfRange< RangeT > > > make_early_inc_range(RangeT &&Range)
Make a range that does early increment to allow mutation of the underlying range without disrupting i...
void initializePPCTOCRegDepsPass(PassRegistry &)
FunctionPass * createPPCTOCRegDepsPass()