Go to the documentation of this file.
9 #ifndef LLVM_LIB_CODEGEN_SAFESTACKLAYOUT_H
10 #define LLVM_LIB_CODEGEN_SAFESTACKLAYOUT_H
32 StackRegion(
unsigned Start,
unsigned End,
34 : Start(Start), End(End), Range(Range) {}
52 void layoutObject(StackObject &Obj);
72 unsigned getFrameSize() {
return Regions.empty() ? 0 : Regions.back().End; }
84 #endif // LLVM_LIB_CODEGEN_SAFESTACKLAYOUT_H
This is an optimization pass for GlobalISel generic memory operations.
void computeLayout()
Run the layout computation for all previously added objects.
Compute the layout of an unsafe stack frame.
unsigned getObjectOffset(const Value *V)
Returns the offset to the object start in the stack frame.
unsigned getFrameSize()
Returns the size of the entire frame.
This class implements an extremely fast bulk output stream that can only output to a stream.
This struct is a compact representation of a valid (non-zero power of two) alignment.
StackLayout(Align StackAlignment)
This class represents a set of interesting instructions where an alloca is live.
Align getObjectAlignment(const Value *V)
Returns the alignment of the object.
Align getFrameAlignment()
Returns the alignment of the frame.
void print(raw_ostream &OS)
void addObject(const Value *V, unsigned Size, Align Alignment, const StackLifetime::LiveRange &Range)
Add an object to the stack frame.
LLVM Value Representation.