16#ifndef LLVM_CODEGEN_STACKPROTECTOR_H
17#define LLVM_CODEGEN_STACKPROTECTOR_H
30class TargetLoweringBase;
35 static constexpr unsigned DefaultSSPBufferSize = 8;
51 std::optional<DomTreeUpdater> DTU;
60 unsigned SSPBufferSize = DefaultSSPBufferSize;
63 bool HasPrologue =
false;
66 bool HasIRCheck =
false;
74 bool InsertStackProtectors();
Machine Check Debug Module
an instruction to allocate memory on the stack
Represent the analysis usage information of a pass.
LLVM Basic Block Representation.
FunctionPass class - This class is used to implement most global optimizations.
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
SSPLayoutKind
Stack Smashing Protection (SSP) rules require that vulnerable stack allocations are located close the...
A Module instance is used to store all the information related to an LLVM module.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
bool shouldEmitSDCheck(const BasicBlock &BB) const
void copyToMachineFrameInfo(MachineFrameInfo &MFI) const
static bool requiresStackProtector(Function *F, SSPLayoutMap *Layout=nullptr)
Check whether or not F needs a stack protector based upon the stack protector level.
bool runOnFunction(Function &Fn) override
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
This base class for TargetLowering contains the SelectionDAG-independent parts that can be used from ...
Primary interface to the complete machine description for the target machine.
Triple - Helper class for working with autoconf configuration names.
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.