llvm-project/llvm/lib/CodeGen/SelectionDAG
Andrew Paverd d157a9bc8b Add Windows Control Flow Guard checks (/guard:cf).
Summary:
A new function pass (Transforms/CFGuard/CFGuard.cpp) inserts CFGuard checks on
indirect function calls, using either the check mechanism (X86, ARM, AArch64) or
or the dispatch mechanism (X86-64). The check mechanism requires a new calling
convention for the supported targets. The dispatch mechanism adds the target as
an operand bundle, which is processed by SelectionDAG. Another pass
(CodeGen/CFGuardLongjmp.cpp) identifies and emits valid longjmp targets, as
required by /guard:cf. This feature is enabled using the `cfguard` CC1 option.

Reviewers: thakis, rnk, theraven, pcc

Subscribers: ychen, hans, metalcanine, dmajor, tomrittervg, alex, mehdi_amini, mgorny, javed.absar, kristof.beyls, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D65761
2019-10-28 15:19:39 +00:00
..
CMakeLists.txt
DAGCombiner.cpp [DAGCombiner] widen any_ext of popcount based on target support 2019-10-28 10:07:12 -04:00
FastISel.cpp Add Windows Control Flow Guard checks (/guard:cf). 2019-10-28 15:19:39 +00:00
FunctionLoweringInfo.cpp Prune a LegacyDivergenceAnalysis and MachineLoopInfo include each 2019-10-19 01:31:09 +00:00
InstrEmitter.cpp [DebugInfo] Remove some users of DBG_VALUEs IsIndirect field 2019-10-15 10:46:24 +00:00
InstrEmitter.h [SelectionDAG] Enhance the simplification of `copyto` from `implicit-def`. 2019-05-27 18:26:29 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LegalizeDAG.cpp Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
LegalizeFloatTypes.cpp [Codegen][ARM] Add float softening for cbrt 2019-10-28 11:08:55 +00:00
LegalizeIntegerTypes.cpp [LegalizeTypes] When promoting BITREVERSE/BSWAP don't take the shift amount into account when determining the shift amount VT. 2019-10-27 12:20:35 -07:00
LegalizeTypes.cpp [LegalizeTypes] Remove code for softening a float type to itself. 2019-09-12 05:55:14 +00:00
LegalizeTypes.h [Codegen][ARM] Add float softening for cbrt 2019-10-28 11:08:55 +00:00
LegalizeTypesGeneric.cpp [LegalizeTypes][X86] When splitting a vselect for type legalization, don't split a setcc condition if the setcc input is legal and vXi1 conditions are supported 2019-10-06 18:43:03 +00:00
LegalizeVectorOps.cpp Prune a LegacyDivergenceAnalysis and MachineLoopInfo include each 2019-10-19 01:31:09 +00:00
LegalizeVectorTypes.cpp [LegalizeTypes] Don't use PromoteTargetBoolean in WidenVecOp_SETCC. 2019-10-16 03:29:24 +00:00
ResourcePriorityQueue.cpp Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
SDNodeDbgValue.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ScheduleDAGFast.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
ScheduleDAGRRList.cpp [ScheduleDAG] When a node is cloned, add an edge between the nodes. 2019-10-04 19:51:40 +00:00
ScheduleDAGSDNodes.cpp Revert "Add an instruction marker field to the ExtraInfo in MachineInstrs." 2019-10-25 12:41:34 -07:00
ScheduleDAGSDNodes.h Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
ScheduleDAGVLIW.cpp Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
SelectionDAG.cpp [AArch64][SVE] Implement masked load intrinsics 2019-10-28 10:06:14 +00:00
SelectionDAGAddressAnalysis.cpp Prune a LegacyDivergenceAnalysis and MachineLoopInfo include each 2019-10-19 01:31:09 +00:00
SelectionDAGBuilder.cpp Add Windows Control Flow Guard checks (/guard:cf). 2019-10-28 15:19:39 +00:00
SelectionDAGBuilder.h [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
SelectionDAGDumper.cpp [AArch64][SVE] Add SPLAT_VECTOR ISD Node 2019-10-18 11:48:35 +00:00
SelectionDAGISel.cpp Prune a LegacyDivergenceAnalysis and MachineLoopInfo include each 2019-10-19 01:31:09 +00:00
SelectionDAGPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SelectionDAGTargetInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StatepointLowering.cpp [Statepoints] Fix overalignment of loads in no-realign-stack functions 2019-08-02 20:17:37 +00:00
StatepointLowering.h [FastISel] Fix crash for gc.relocate lowring 2019-04-05 05:41:08 +00:00
TargetLowering.cpp [TargetLowering] Add getBooleanContents contents check to "SETCC (SETCC), [0|1], [EQ|NE] -> SETCC" combine. 2019-10-27 10:07:15 -07:00