LLVM: lib/Target/AArch64/AArch64StackTagging.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "aarch64-stack-tagging"
Enumerations
enum StackTaggingRecordStackHistoryMode { none, instr }
Variables
static cl::opt< bool > ClMergeInit ("stack-tagging-merge-init", cl::Hidden, cl::init(true), cl::desc("merge stack variable initializers with tagging when possible"))
static cl::opt< bool > ClUseStackSafety ("stack-tagging-use-stack-safety", cl::Hidden, cl::init(true), cl::desc("Use Stack Safety analysis results"))
static cl::opt< unsigned > ClScanLimit ("stack-tagging-merge-init-scan-limit", cl::init(40), cl::Hidden)
static cl::opt< unsigned > ClMergeInitSizeLimit ("stack-tagging-merge-init-size-limit", cl::init(272), cl::Hidden)
static cl::opt< size_t > ClMaxLifetimes ("stack-tagging-max-lifetimes-for-alloca", cl::Hidden, cl::init(3), cl::ReallyHidden, cl::desc("How many lifetime ends to handle for a single alloca."), cl::Optional)
static cl::opt< StackTaggingRecordStackHistoryMode > ClRecordStackHistory ("stack-tagging-record-stack-history", cl::desc("Record stack frames with tagged allocations in a thread-local " "ring buffer"), cl::values(clEnumVal(none, "Do not record stack ring history"), clEnumVal(instr, "Insert instructions into the prologue for " "storing into the stack ring buffer")), cl::Hidden, cl::init(none))
static const Align kTagGranuleSize = Align(16)
DEBUG_TYPE
AArch64 Stack Tagging
AArch64 Stack false

DEBUG_TYPE

#define DEBUG_TYPE "aarch64-stack-tagging"

StackTaggingRecordStackHistoryMode

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( AArch64StackTagging ,
DEBUG_TYPE ,
"AArch64 Stack Tagging" ,
false ,
false )

ClMaxLifetimes

cl::opt< size_t > ClMaxLifetimes("stack-tagging-max-lifetimes-for-alloca", cl::Hidden, cl::init(3), cl::ReallyHidden, cl::desc("How many lifetime ends to handle for a single alloca."), cl::Optional) ( "stack-tagging-max-lifetimes-for-alloca" , cl::Hidden , cl::init(3) , cl::ReallyHidden , cl::desc("How many lifetime ends to handle for a single alloca.") , cl::Optional ) static

ClMergeInit

cl::opt< bool > ClMergeInit("stack-tagging-merge-init", cl::Hidden, cl::init(true), cl::desc("merge stack variable initializers with tagging when possible")) ( "stack-tagging-merge-init" , cl::Hidden , cl::init(true) , cl::desc("merge stack variable initializers with tagging when possible") ) static

ClMergeInitSizeLimit

cl::opt< unsigned > ClMergeInitSizeLimit("stack-tagging-merge-init-size-limit", cl::init(272), cl::Hidden) ( "stack-tagging-merge-init-size-limit" , cl::init(272) , cl::Hidden ) static

ClRecordStackHistory

cl::opt< StackTaggingRecordStackHistoryMode > ClRecordStackHistory("stack-tagging-record-stack-history", cl::desc("Record stack frames with tagged allocations in a thread-local " "ring buffer"), cl::values(clEnumVal(none, "Do not record stack ring history"), clEnumVal(instr, "Insert instructions into the prologue for " "storing into the stack ring buffer")), cl::Hidden, cl::init(none)) ( "stack-tagging-record-stack-history" , cl::desc("Record stack frames with tagged allocations in a thread-local " "ring buffer") , cl::values(clEnumVal(none, "Do not record stack ring history"), clEnumVal(instr, "Insert instructions into the prologue for " "storing into the stack ring buffer")) , cl::Hidden , cl::init(none) ) static

ClScanLimit

cl::opt< unsigned > ClScanLimit("stack-tagging-merge-init-scan-limit", cl::init(40), cl::Hidden) ( "stack-tagging-merge-init-scan-limit" , cl::init(40) , cl::Hidden ) static

ClUseStackSafety

cl::opt< bool > ClUseStackSafety("stack-tagging-use-stack-safety", cl::Hidden, cl::init(true), cl::desc("Use Stack Safety analysis results")) ( "stack-tagging-use-stack-safety" , cl::Hidden , cl::init(true) , cl::desc("Use Stack Safety analysis results") ) static

DEBUG_TYPE

false

kTagGranuleSize

Tagging