1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 22:12:57 +02:00
llvm-mirror/include/llvm/Analysis
Peter Collingbourne 41f4d00801 IR: Introduce llvm.type.checked.load intrinsic.
This intrinsic safely loads a function pointer from a virtual table pointer
using type metadata. This intrinsic is used to implement control flow integrity
in conjunction with virtual call optimization. The virtual call optimization
pass will optimize away llvm.type.checked.load intrinsics associated with
devirtualized calls, thereby removing the type check in cases where it is
not needed to enforce the control flow integrity constraint.

This patch also introduces the capability to copy type metadata between
global variables, and teaches the virtual call optimization pass to do so.

Differential Revision: http://reviews.llvm.org/D21121

llvm-svn: 273756
2016-06-25 00:23:04 +00:00
..
AliasAnalysis.h Split IntrReadArgMem into IntrReadMem and IntrArgMemOnly 2016-04-21 17:48:02 +00:00
AliasAnalysisEvaluator.h PM: Remove some redundant name() methods 2016-04-22 17:25:43 +00:00
AliasSetTracker.h Use the same underlying type for bitfields 2016-06-24 04:05:25 +00:00
AssumptionCache.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
BasicAliasAnalysis.h [BasicAA] Extend inbound GEP negative offset logic to GlobalVariables 2016-05-26 19:30:49 +00:00
BlockFrequencyInfo.h [PM] port Branch Frequency Analaysis pass to new PM 2016-05-05 21:13:27 +00:00
BlockFrequencyInfoImpl.h [BFI]: NFC refactoring 2016-06-22 17:12:12 +00:00
BranchProbabilityInfo.h Revert r272891 "[JumpThreading] Prevent dangling pointer problems in BranchProbabilityInfo" 2016-06-16 16:25:53 +00:00
CallGraph.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
CallGraphSCCPass.h Interprocedural Register Allocation (IPRA) Analysis 2016-06-10 16:19:46 +00:00
CallPrinter.h [CG] Rename the DOT printing pass to actually reference "DOT". 2016-03-10 11:04:40 +00:00
CaptureTracking.h
CFG.h
CFGPrinter.h
CFLAliasAnalysis.h [CFLAA] Add interprocedural function summaries. 2016-06-20 23:10:56 +00:00
CGSCCPassManager.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
CodeMetrics.h
ConstantFolding.h CodeGen: Use PLT relocations for relative references to unnamed_addr functions. 2016-04-22 20:40:10 +00:00
DemandedBits.h Port DemandedBits to the new pass manager. 2016-04-18 23:55:01 +00:00
DependenceAnalysis.h [PM] Port of the DepndenceAnalysis to the new PM. 2016-05-12 22:19:39 +00:00
DivergenceAnalysis.h
DominanceFrontier.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
DominanceFrontierImpl.h
DomPrinter.h
DOTGraphTraitsPass.h
EHPersonalities.h X86: permit using SjLj EH on x86 targets as an option 2016-05-31 01:48:07 +00:00
GlobalsModRef.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
InlineCost.h Use ProfileSummaryInfo in inline cost analysis. 2016-06-09 22:23:21 +00:00
InstructionSimplify.h
Interval.h
IntervalIterator.h
IntervalPartition.h
IteratedDominanceFrontier.h Correct IDF calculator for ReverseIDF 2016-04-19 06:13:28 +00:00
IVUsers.h
LazyCallGraph.h [LCG] Make the name of an SCC include more of the functions in it. 2016-06-23 22:51:14 +00:00
LazyValueInfo.h [PM] Port LVI to the new PM. 2016-06-13 22:01:25 +00:00
Lint.h
Loads.h Fix documentation for FindAvailableLoadedValue. 2016-06-24 21:32:15 +00:00
LoopAccessAnalysis.h [PM]: LoopAccessInfo simple refactoring 2016-06-22 23:20:59 +00:00
LoopInfo.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LoopInfoImpl.h
LoopIterator.h
LoopPass.h Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
LoopPassManager.h PM: Check that loop passes preserve a basic set of analyses 2016-05-03 21:35:08 +00:00
LoopUnrollAnalyzer.h Revert "Revert "[Unroll] Implement a conservative and monotonically increasing cost tracking system during the full unroll heuristic analysis that avoids counting any instruction cost until that instruction becomes "live" through a side-effect or use outside the..."" 2016-05-13 21:23:25 +00:00
MemoryBuiltins.h Calculate __builtin_object_size when pointer depends on a condition 2016-04-13 12:25:25 +00:00
MemoryDependenceAnalysis.h [memdep] Just require domtree for memdep. 2016-03-11 13:46:00 +00:00
MemoryLocation.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ModuleSummaryAnalysis.h ThinLTO: fix assertion and refactor check for hidden use from inline ASM in a helper function 2016-05-06 08:25:33 +00:00
ObjCARCAliasAnalysis.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
ObjCARCAnalysisUtils.h
ObjCARCInstKind.h
OrderedBasicBlock.h
Passes.h [PM] Port of the DepndenceAnalysis to the new PM. 2016-05-12 22:19:39 +00:00
PHITransAddr.h
PostDominators.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
ProfileSummaryInfo.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
PtrUseVisitor.h
RegionInfo.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
RegionInfoImpl.h Unify XDEBUG and EXPENSIVE_CHECKS (into the latter), and add an option to the cmake build to enable them. 2016-04-29 15:22:48 +00:00
RegionIterator.h
RegionPass.h
RegionPrinter.h
ScalarEvolution.h Factor out a loopHasNoAbnormalExits; NFC 2016-06-09 01:13:54 +00:00
ScalarEvolutionAliasAnalysis.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
ScalarEvolutionExpander.h [SCEV] Keep SCEVExpander insert points consistent. 2016-06-01 20:03:09 +00:00
ScalarEvolutionExpressions.h [SCEV] Don't unnecessarily namespace; NFC 2016-06-23 18:03:32 +00:00
ScalarEvolutionNormalization.h
ScopedNoAliasAA.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
SparsePropagation.h
TargetFolder.h
TargetLibraryInfo.def [NVPTX] Infer __nvvm_reflect as nounwind, readnone 2016-03-31 21:29:57 +00:00
TargetLibraryInfo.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
TargetTransformInfo.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
TargetTransformInfoImpl.h TTI: Add hook for memory width to vectorize 2016-06-16 21:43:12 +00:00
Trace.h
TypeBasedAliasAnalysis.h [PM] Make the AnalysisManager parameter to run methods a reference. 2016-03-11 11:05:24 +00:00
TypeMetadataUtils.h IR: Introduce llvm.type.checked.load intrinsic. 2016-06-25 00:23:04 +00:00
ValueTracking.h [ValueTracking] improve ComputeNumSignBits for vector constants 2016-06-22 19:20:59 +00:00
VectorUtils.h [ValueTracking, VectorUtils] Refactor getIntrinsicIDForCall 2016-04-19 19:10:21 +00:00