LLVM 22.0.0git
AArch64StackTagging.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "aarch64-stack-tagging"

Enumerations

enum  StackTaggingRecordStackHistoryMode { none , instr }

Functions

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

Variables

static cl::opt< boolClMergeInit ("stack-tagging-merge-init", cl::Hidden, cl::init(true), cl::desc("merge stack variable initializers with tagging when possible"))
static cl::opt< boolClUseStackSafety ("stack-tagging-use-stack-safety", cl::Hidden, cl::init(true), cl::desc("Use Stack Safety analysis results"))
static cl::opt< unsignedClScanLimit ("stack-tagging-merge-init-scan-limit", cl::init(40), cl::Hidden)
static cl::opt< unsignedClMergeInitSizeLimit ("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< StackTaggingRecordStackHistoryModeClRecordStackHistory ("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

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-stack-tagging"

Definition at line 53 of file AArch64StackTagging.cpp.

Enumeration Type Documentation

◆ StackTaggingRecordStackHistoryMode

Enumerator
none 
instr 

Definition at line 79 of file AArch64StackTagging.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

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

Variable Documentation

◆ 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

DEBUG_TYPE

Definition at line 355 of file AArch64StackTagging.cpp.

◆ false

AArch64 Stack false

Definition at line 356 of file AArch64StackTagging.cpp.

◆ kTagGranuleSize

const Align kTagGranuleSize = Align(16)
static

Definition at line 97 of file AArch64StackTagging.cpp.

◆ Tagging

AArch64 Stack Tagging

Definition at line 355 of file AArch64StackTagging.cpp.