10 #ifndef LLVM_LIB_CODEGEN_SAFESTACKCOLORING_H
11 #define LLVM_LIB_CODEGEN_SAFESTACKCOLORING_H
35 struct BlockLifetimeInfo {
64 LivenessMap BlockLiveness;
94 void dumpBlockLiveness();
95 void dumpLiveRanges();
98 void collectMarkers();
99 void calculateLocalLiveness();
100 void calculateLiveIntervals();
104 : F(F), NumInst(-1), Allocas(Allocas), NumAllocas(Allocas.size()) {}
149 #endif // LLVM_LIB_CODEGEN_SAFESTACKCOLORING_H
void resize(unsigned N, bool t=false)
resize - Grow or shrink the bitvector.
const_iterator end(StringRef path)
Get end iterator over path.
This class represents a set of interesting instructions where an alloca is live.
int find_first() const
find_first - Returns the index of the first set bit, -1 if none of the bits are set.
static raw_ostream & operator<<(raw_ostream &OS, const BitVector &V)
bool anyCommon(const BitVector &RHS) const
Test if any common bits are set.
Compute live ranges of allocas.
int find_next(unsigned Prev) const
find_next - Returns the index of the next set bit following the "Prev" bit.
const LiveRange & getLiveRange(AllocaInst *AI)
Returns a set of "interesting" instructions where the given alloca is live.
This class represents the liveness of a register, stack slot, etc.
void AddRange(unsigned start, unsigned end)
LiveRange getFullLiveRange()
Returns a live range that represents an alloca that is live throughout the entire function...
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
void Join(const LiveRange &Other)
static const unsigned End
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
bool Overlaps(const LiveRange &Other) const
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This class implements an extremely fast bulk output stream that can only output to a stream...
void SetMaximum(int size)
an instruction to allocate memory on the stack
StackColoring(Function &F, ArrayRef< AllocaInst * > Allocas)