Go to the documentation of this file.
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";
This is an optimization pass for GlobalISel generic memory operations.
char & LiveStacksID
LiveStacks pass. An analysis keeping track of the liveness of stack slots.
void Reset()
Deallocate all but the current slab and reset the current pointer to the beginning of it,...
const_iterator begin() const
virtual const TargetRegisterInfo * getRegisterInfo() const
getRegisterInfo - If register information is available, return it.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
static Register index2StackSlot(int FI)
Convert a non-negative frame index to a stack slot register value.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
Represent the analysis usage information of a pass.
This class implements an extremely fast bulk output stream that can only output to a stream.
const_iterator end() const
LiveInterval - This class represents the liveness of a register, or stack slot.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
const char * getRegClassName(const TargetRegisterClass *Class) const
Returns the name of the register class.
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
const TargetRegisterClass * getCommonSubClass(const TargetRegisterClass *A, const TargetRegisterClass *B) const
Find the largest common subclass of A and B.
A Module instance is used to store all the information related to an LLVM module.
SS2IntervalMap::const_iterator const_iterator
LiveInterval & getOrCreateInterval(int Slot, const TargetRegisterClass *RC)
void print(raw_ostream &O, const Module *=nullptr) const override
print - Implement the dump method.
INITIALIZE_PASS_BEGIN(LiveStacks, DEBUG_TYPE, "Live Stack Slot Analysis", false, false) INITIALIZE_PASS_END(LiveStacks
bool runOnMachineFunction(MachineFunction &) override
runOnMachineFunction - pass entry point
const TargetRegisterClass * getIntervalRegClass(int Slot) const