LLVM  8.0.1
Macros | Functions | Variables
AArch64SpeculationHardening.cpp File Reference
#include "AArch64InstrInfo.h"
#include "AArch64Subtarget.h"
#include "Utils/AArch64BaseInfo.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RegisterScavenging.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/Pass.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Target/TargetMachine.h"
#include <cassert>
Include dependency graph for AArch64SpeculationHardening.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "aarch64-speculation-hardening"
 
#define AARCH64_SPECULATION_HARDENING_NAME   "AArch64 speculation hardening pass"
 

Functions

 INITIALIZE_PASS (AArch64SpeculationHardening, "aarch64-speculation-hardening", AARCH64_SPECULATION_HARDENING_NAME, false, false) bool AArch64SpeculationHardening
 

Variables

cl::opt< boolHardenLoads ("aarch64-slh-loads", cl::Hidden, cl::desc("Sanitize loads from memory."), cl::init(true))
 

Macro Definition Documentation

◆ AARCH64_SPECULATION_HARDENING_NAME

#define AARCH64_SPECULATION_HARDENING_NAME   "AArch64 speculation hardening pass"

Definition at line 117 of file AArch64SpeculationHardening.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-speculation-hardening"

Definition at line 115 of file AArch64SpeculationHardening.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( AArch64SpeculationHardening  ,
"aarch64-speculation-hardening"  ,
AARCH64_SPECULATION_HARDENING_NAME  ,
false  ,
false   
)

Definition at line 183 of file AArch64SpeculationHardening.cpp.

References llvm::MachineInstrBuilder::addImm(), llvm::MachineBasicBlock::addLiveIn(), llvm::MachineInstrBuilder::addUse(), llvm::all_of(), llvm::HexagonInstrInfo::analyzeBranch(), assert(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), contains(), llvm::dbgs(), llvm::tgtok::Def, llvm::MachineInstr::defs(), E, llvm::SmallVectorBase::empty(), llvm::MachineBasicBlock::end(), llvm::RegScavenger::enterBasicBlock(), llvm::AArch64CC::EQ, llvm::MachineInstr::eraseFromParent(), llvm::RegScavenger::FindUnusedReg(), llvm::RegScavenger::forward(), llvm::MachineFunction::front(), getDebugLoc(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFunction(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::AArch64CC::getInvertedCondCode(), llvm::MachineFunction::getLandingPads(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), HardenLoads, llvm::Function::hasFnAttribute(), I, llvm::MachineBasicBlock::instr_begin(), llvm::MachineBasicBlock::instr_end(), llvm::MachineInstr::isCall(), llvm::MachineInstr::isReturn(), llvm::MachineInstr::isTerminator(), llvm::MCRegAliasIterator::isValid(), llvm::RegState::Kill, LLVM_DEBUG, LLVM_FALLTHROUGH, llvm::MachineInstr::mayLoad(), MI, Modified, llvm::printReg(), llvm::SmallVectorTemplateBase< T >::push_back(), Reg, llvm::RegState::Renamable, llvm::SmallVectorBase::size(), llvm::Attribute::SpeculativeLoadHardening, llvm::MachineBasicBlock::SplitCriticalEdge(), TII, TRI, and llvm::MachineInstr::uses().

Variable Documentation

◆ HardenLoads

cl::opt<bool> HardenLoads("aarch64-slh-loads", cl::Hidden, cl::desc("Sanitize loads from memory."), cl::init(true))

Referenced by INITIALIZE_PASS().