LLVM 19.0.0git
Classes | Namespaces | Macros | Enumerations | Functions | Variables
AArch64StackTaggingPreRA.cpp File Reference
#include "AArch64.h"
#include "AArch64MachineFunctionInfo.h"
#include "AArch64InstrInfo.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineTraceMetrics.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"

Go to the source code of this file.

Classes

struct  llvm::DenseMapInfo< SlotWithTag >
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DEBUG_TYPE   "aarch64-stack-tagging-pre-ra"
 

Enumerations

enum  UncheckedLdStMode { UncheckedNever , UncheckedSafe , UncheckedAlways }
 

Functions

 INITIALIZE_PASS_BEGIN (AArch64StackTaggingPreRA, "aarch64-stack-tagging-pre-ra", "AArch64 Stack Tagging PreRA Pass", false, false) INITIALIZE_PASS_END(AArch64StackTaggingPreRA
 
static bool isUncheckedLoadOrStoreOpcode (unsigned Opcode)
 
static bool isSlotPreAllocated (MachineFrameInfo *MFI, int FI)
 

Variables

cl::opt< UncheckedLdStModeClUncheckedLdSt ("stack-tagging-unchecked-ld-st", cl::Hidden, cl::init(UncheckedSafe), cl::desc("Unconditionally apply unchecked-ld-st optimization (even for large " "stack frames, or in the presence of variable sized allocas)."), cl::values(clEnumValN(UncheckedNever, "never", "never apply unchecked-ld-st"), clEnumValN(UncheckedSafe, "safe", "apply unchecked-ld-st when the target is definitely within range"), clEnumValN(UncheckedAlways, "always", "always apply unchecked-ld-st")))
 
static cl::opt< boolClFirstSlot ("stack-tagging-first-slot-opt", cl::Hidden, cl::init(true), cl::desc("Apply first slot optimization for stack tagging " "(eliminate ADDG Rt, Rn, 0, 0)."))
 
aarch64 stack tagging pre ra
 
aarch64 stack tagging pre AArch64 Stack Tagging PreRA Pass
 
aarch64 stack tagging pre AArch64 Stack Tagging PreRA false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-stack-tagging-pre-ra"

Definition at line 33 of file AArch64StackTaggingPreRA.cpp.

Enumeration Type Documentation

◆ UncheckedLdStMode

Enumerator
UncheckedNever 
UncheckedSafe 
UncheckedAlways 

Definition at line 35 of file AArch64StackTaggingPreRA.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( AArch64StackTaggingPreRA  ,
"aarch64-stack-tagging-pre-ra"  ,
"AArch64 Stack Tagging PreRA Pass"  ,
false  ,
false   
)

◆ isSlotPreAllocated()

static bool isSlotPreAllocated ( MachineFrameInfo MFI,
int  FI 
)
static

◆ isUncheckedLoadOrStoreOpcode()

static bool isUncheckedLoadOrStoreOpcode ( unsigned  Opcode)
static

Definition at line 101 of file AArch64StackTaggingPreRA.cpp.

Variable Documentation

◆ ClFirstSlot

cl::opt< bool > ClFirstSlot("stack-tagging-first-slot-opt", cl::Hidden, cl::init(true), cl::desc("Apply first slot optimization for stack tagging " "(eliminate ADDG Rt, Rn, 0, 0).")) ( "stack-tagging-first-slot-opt"  ,
cl::Hidden  ,
cl::init(true ,
cl::desc("Apply first slot optimization for stack tagging " "(eliminate ADDG Rt, Rn, 0, 0).")   
)
static

◆ ClUncheckedLdSt

cl::opt< UncheckedLdStMode > ClUncheckedLdSt("stack-tagging-unchecked-ld-st", cl::Hidden, cl::init(UncheckedSafe), cl::desc( "Unconditionally apply unchecked-ld-st optimization (even for large " "stack frames, or in the presence of variable sized allocas)."), cl::values( clEnumValN(UncheckedNever, "never", "never apply unchecked-ld-st"), clEnumValN( UncheckedSafe, "safe", "apply unchecked-ld-st when the target is definitely within range"), clEnumValN(UncheckedAlways, "always", "always apply unchecked-ld-st"))) ( "stack-tagging-unchecked-ld-st"  ,
cl::Hidden  ,
cl::init(UncheckedSafe ,
cl::desc( "Unconditionally apply unchecked-ld-st optimization (even for large " "stack frames, or in the presence of variable sized allocas).")  ,
cl::values( clEnumValN(UncheckedNever, "never", "never apply unchecked-ld-st"), clEnumValN( UncheckedSafe, "safe", "apply unchecked-ld-st when the target is definitely within range"), clEnumValN(UncheckedAlways, "always", "always apply unchecked-ld-st"))   
)

◆ false

aarch64 stack tagging pre AArch64 Stack Tagging PreRA false

Definition at line 95 of file AArch64StackTaggingPreRA.cpp.

◆ Pass

aarch64 stack tagging pre AArch64 Stack Tagging PreRA Pass

Definition at line 95 of file AArch64StackTaggingPreRA.cpp.

◆ ra

aarch64 stack tagging pre ra

Definition at line 94 of file AArch64StackTaggingPreRA.cpp.