llvm-project/llvm/lib/Transforms/IPO
Oren Ben Simhon fdd72fd522 [X86] Added support for nocf_check attribute for indirect Branch Tracking
X86 Supports Indirect Branch Tracking (IBT) as part of Control-Flow Enforcement Technology (CET).
IBT instruments ENDBR instructions used to specify valid targets of indirect call / jmp.
The `nocf_check` attribute has two roles in the context of X86 IBT technology:
	1. Appertains to a function - do not add ENDBR instruction at the beginning of the function.
	2. Appertains to a function pointer - do not track the target function of this pointer by adding nocf_check prefix to the indirect-call instruction.

This patch implements `nocf_check` context for Indirect Branch Tracking.
It also auto generates `nocf_check` prefixes before indirect branchs to jump tables that are guarded by range checks.

Differential Revision: https://reviews.llvm.org/D41879

llvm-svn: 327767
2018-03-17 13:29:46 +00:00
..
AlwaysInliner.cpp AlwaysInliner: Alow setting InsertLifetime in the new-style pass 2018-01-08 22:07:42 +00:00
ArgumentPromotion.cpp [ArgumentPromotion] don't break musttail invariant PR36543 2018-03-02 00:59:27 +00:00
BarrierNoopPass.cpp
BlockExtractor.cpp BlockExtractor: Don’t delete functions directly 2018-03-12 22:28:18 +00:00
CMakeLists.txt [llvm-extract] Support extracting basic blocks 2018-01-23 21:51:34 +00:00
CalledValuePropagation.cpp Attempt to unbreak the expensive-checks-win bot 2017-10-25 22:46:34 +00:00
ConstantMerge.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-10 22:49:55 +00:00
CrossDSOCFI.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
DeadArgumentElimination.cpp [DAE] don't remove args of musttail target/caller 2018-03-01 00:09:35 +00:00
ElimAvailExtern.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-10 22:49:55 +00:00
ExtractGV.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
ForceFunctionAttrs.cpp [X86] Added support for nocf_check attribute for indirect Branch Tracking 2018-03-17 13:29:46 +00:00
FunctionAttrs.cpp [FunctionAttrs][ArgumentPromotion][GlobalOpt] Disable some optimisations passes for naked functions 2018-02-22 14:42:08 +00:00
FunctionImport.cpp Reland r327041: [ThinLTO] Keep available_externally symbols live 2018-03-13 05:08:48 +00:00
GlobalDCE.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
GlobalOpt.cpp [GlobalOpt] don't change CC of musttail calle(e|r) 2018-02-28 22:28:44 +00:00
GlobalSplit.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-10 22:49:55 +00:00
IPConstantPropagation.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
IPO.cpp [llvm-extract] Support extracting basic blocks 2018-01-23 21:51:34 +00:00
InferFunctionAttrs.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
InlineSimple.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
Inliner.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-19 21:21:30 +00:00
Internalize.cpp
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LoopExtractor.cpp [llvm-extract] Support extracting basic blocks 2018-01-23 21:51:34 +00:00
LowerTypeTests.cpp Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00
MergeFunctions.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-19 21:21:30 +00:00
PartialInlining.cpp [PartialInlining] Use isInlineViable to detect constructs preventing inlining. 2018-03-10 14:53:44 +00:00
PassManagerBuilder.cpp Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
PruneEH.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
SampleProfile.cpp [SampleProf] NFC. Expose reusable functionality in SampleProfile. 2018-02-22 06:42:57 +00:00
StripDeadPrototypes.cpp
StripSymbols.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SyntheticCountsPropagation.cpp [SyntheticCounts] Rewrite the code using only graph traits. 2018-01-25 22:02:29 +00:00
ThinLTOBitcodeWriter.cpp Pass a module reference to CloneModule. 2018-02-14 19:50:40 +00:00
WholeProgramDevirt.cpp Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00