summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/X86/X86TargetMachine.cpp
diff options
context:
space:
mode:
authorOren Ben Simhon <oren.ben.simhon@intel.com>2018-01-09 08:51:18 +0000
committerOren Ben Simhon <oren.ben.simhon@intel.com>2018-01-09 08:51:18 +0000
commit1c7191d80818582336cff3ac1d5ba0df46ede602 (patch)
treef4f2b6cb219f2d8d5adc38739d9de0600ee4f179 /llvm/lib/Target/X86/X86TargetMachine.cpp
parent2d44399b16d45949ac311e5feaae5baa61018d3f (diff)
Instrument Control Flow For Indirect Branch Tracking
CET (Control-Flow Enforcement Technology) introduces a new mechanism called IBT (Indirect Branch Tracking). According to IBT, each Indirect branch should land on dedicated ENDBR instruction (End Branch). The new pass adds ENDBR instructions for every indirect jmp/call (including jumps using jump tables / switches). For more information, please see the following: https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf Differential Revision: https://reviews.llvm.org/D40482 Change-Id: Icb754489faf483a95248f96982a4e8b1009eb709
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r--llvm/lib/Target/X86/X86TargetMachine.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp
index e95e6ecae09..48e2073c41c 100644
--- a/llvm/lib/Target/X86/X86TargetMachine.cpp
+++ b/llvm/lib/Target/X86/X86TargetMachine.cpp
@@ -426,6 +426,8 @@ void X86PassConfig::addPreEmitPass() {
if (getOptLevel() != CodeGenOpt::None)
addPass(new X86ExecutionDepsFix());
+ addPass(createX86IndirectBranchTrackingPass());
+
if (UseVZeroUpper)
addPass(createX86IssueVZeroUpperPass());