21#define DEBUG_TYPE "livestacks"
25 "Live Stack Slot Analysis",
false,
false)
41 VNInfoAllocator.
Reset();
54 assert(Slot >= 0 &&
"Spill slot indice must be >= 0");
55 SS2IntervalMap::iterator
I = S2IMap.find(Slot);
56 if (
I == S2IMap.end()) {
59 std::piecewise_construct, std::forward_as_tuple(Slot),
62 S2RCMap.insert(std::make_pair(Slot, RC));
101 OS <<
"********** INTERVALS **********\n";
109 OS <<
" [Unknown]\n";
Looks at all the uses of the given value Returns the Liveness deduced from the uses of this value Adds all uses that cause the result to be MaybeLive to MaybeLiveRetUses If the result is Live
#define INITIALIZE_PASS_DEPENDENCY(depName)
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
A container for analyses that lazily runs them and caches their results.
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
Represent the analysis usage information of a pass.
void Reset()
Deallocate all but the current slab and reset the current pointer to the beginning of it,...
Module * getParent()
Get the module that this global value is contained inside of...
LiveInterval - This class represents the liveness of a register, or stack slot.
LiveStacks run(MachineFunction &MF, MachineFunctionAnalysisManager &)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &AM)
void print(raw_ostream &O, const Module *=nullptr) const override
print - Implement the dump method.
bool runOnMachineFunction(MachineFunction &) override
runOnMachineFunction - pass entry point
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
SS2IntervalMap::const_iterator const_iterator
LiveInterval & getOrCreateInterval(int Slot, const TargetRegisterClass *RC)
void print(raw_ostream &O, const Module *M=nullptr) const
print - Implement the dump method.
const TargetRegisterClass * getIntervalRegClass(int Slot) const
const_iterator end() const
const_iterator begin() const
void init(MachineFunction &MF)
init - analysis entry point
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
Function & getFunction()
Return the LLVM function that this machine code represents.
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
static Register index2StackSlot(int FI)
Convert a non-negative frame index to a stack slot register value.
const TargetRegisterClass * getCommonSubClass(const TargetRegisterClass *A, const TargetRegisterClass *B) const
Find the largest common subclass of A and B.
const char * getRegClassName(const TargetRegisterClass *Class) const
Returns the name of the register class.
virtual const TargetRegisterInfo * getRegisterInfo() const
getRegisterInfo - If register information is available, return it.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
char & LiveStacksID
LiveStacks pass. An analysis keeping track of the liveness of stack slots.
Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr)
A special type used by analysis passes to provide an address that identifies that particular analysis...