9#ifndef LLVM_LIB_CODEGEN_SAFESTACKLAYOUT_H
10#define LLVM_LIB_CODEGEN_SAFESTACKLAYOUT_H
33 StackRegion(
unsigned Start,
unsigned End,
53 void layoutObject(StackObject &Obj);
73 unsigned getFrameSize() {
return Regions.empty() ? 0 : Regions.back().End; }
This file defines the DenseMap class.
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
This file defines the SmallVector class.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This class represents a set of interesting instructions where an alloca is live.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
unsigned getFrameSize()
Returns the size of the entire frame.
void computeLayout()
Run the layout computation for all previously added objects.
Align getObjectAlignment(const Value *V)
Returns the alignment of the object.
unsigned getObjectOffset(const Value *V)
Returns the offset to the object start in the stack frame.
Align getFrameAlignment()
Returns the alignment of the frame.
void print(raw_ostream &OS)
StackLayout(Align StackAlignment)
void addObject(const Value *V, unsigned Size, Align Alignment, const StackLifetime::LiveRange &Range)
Add an object to the stack frame.
This is an optimization pass for GlobalISel generic memory operations.
This struct is a compact representation of a valid (non-zero power of two) alignment.