21#define DEBUG_TYPE "livestacks"
25 "Live Stack Slot Analysis",
false,
false)
41 VNInfoAllocator.
Reset();
55 assert(Slot >= 0 &&
"Spill slot indice must be >= 0");
56 SS2IntervalMap::iterator
I = S2IMap.find(Slot);
57 if (
I == S2IMap.end()) {
60 std::piecewise_construct, std::forward_as_tuple(Slot),
63 S2RCMap.insert(std::make_pair(Slot, RC));
75 OS <<
"********** INTERVALS **********\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())
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,...
LiveInterval - This class represents the liveness of a register, or stack slot.
SS2IntervalMap::const_iterator const_iterator
LiveInterval & getOrCreateInterval(int Slot, const TargetRegisterClass *RC)
const TargetRegisterClass * getIntervalRegClass(int Slot) const
const_iterator end() const
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...
const_iterator begin() const
void print(raw_ostream &O, const Module *=nullptr) const override
print - Implement the dump method.
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.
A Module instance is used to store all the information related to an LLVM module.
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.