1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/lib/IR
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
..
AsmWriter.cpp IR: Introduce Module::global_objects(). 2016-06-22 20:29:42 +00:00
AttributeImpl.h Rename AttributeSetImpl::NumAttrs and AttributeSetImpl::getNumAttributes to reflect that they work on slots rather than attributes. NFC 2016-06-14 22:04:16 +00:00
Attributes.cpp Add support for string attributes in the C API. 2016-06-15 17:50:39 +00:00
AttributesCompatFunc.td Provide a way to specify inliner's attribute compatibility and merging. 2015-12-22 23:57:37 +00:00
AutoUpgrade.cpp [AVX512] Remove masked unpack intrinsics and autoupgrade to vectorshuffle and selects. 2016-06-23 07:37:33 +00:00
BasicBlock.cpp Revert "[SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics" 2016-05-02 19:43:22 +00:00
CMakeLists.txt Move ProfileSummary to IR. 2016-05-19 21:07:12 +00:00
Comdat.cpp [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
ConstantFold.cpp [ConstantFold] NFC cleanup after previous change. 2016-05-26 07:08:09 +00:00
ConstantFold.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ConstantRange.cpp fix formatting, typo; NFC 2016-06-19 17:20:27 +00:00
Constants.cpp [IR] Require ArrayRef of 'uint32_t' instead of 'int' for the mask argument for one of the signatures of CreateShuffleVector. This better emphasises that you can't use it for the -1 as undef behavior. 2016-06-12 00:41:19 +00:00
ConstantsContext.h Increase SmallVector size for ConstantUniqueMap::getHashValue() (NFC) 2016-04-19 00:17:55 +00:00
Core.cpp Add support for string attributes in the C API. 2016-06-15 17:50:39 +00:00
DataLayout.cpp Rename getLargestLegalIntTypeSize to getLargestLegalIntTypeSizeInBits(). NFC. 2016-05-13 18:38:35 +00:00
DebugInfo.cpp StripDebugInfo: uses isa<DbgInfoIntrinsic> instead of matching against llvm.dbg.* (NFC) 2016-05-14 04:58:35 +00:00
DebugInfoMetadata.cpp [codeview] Add DIFlags for pointer to member representations 2016-06-17 21:31:33 +00:00
DebugLoc.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
DiagnosticInfo.cpp Generalize DiagnosticInfoStackSize to support other limits 2016-06-20 18:13:04 +00:00
DiagnosticPrinter.cpp MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
DIBuilder.cpp [codeview] Add DIFlags for pointer to member representations 2016-06-17 21:31:33 +00:00
Dominators.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
Function.cpp Remangle intrinsics names when types are renamed 2016-06-24 15:10:29 +00:00
GCOV.cpp llvm-cov: Fix reading gcov data that does not have function names 2016-02-08 22:49:40 +00:00
Globals.cpp [IR] [DAE] Copy comdats during DAE, and don't copy comdats in GlobalObject::copyAttributesFrom. 2016-06-15 23:20:15 +00:00
GVMaterializer.cpp [Layering] Move GVMaterializer.h into the IR library where its 2014-03-06 03:50:29 +00:00
InlineAsm.cpp [InlineAsm] Avoid creating extra string instances in ConstraintInfo::Parse() 2016-05-23 13:58:04 +00:00
Instruction.cpp [GVN] Respect fast-math-flags on fcmps 2016-04-22 06:37:51 +00:00
Instructions.cpp Add support for string attributes in the C API. 2016-06-15 17:50:39 +00:00
IntrinsicInst.cpp [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
IRBuilder.cpp IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
IRPrintingPasses.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LegacyPassManager.cpp Remove doInitialization() and doFinalization() member declarations without definitions. 2016-04-28 19:21:30 +00:00
LLVMBuild.txt
LLVMContext.cpp IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
LLVMContextImpl.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
LLVMContextImpl.h [DebugInfo] Add calling convention support for DWARF and CodeView 2016-06-08 20:34:29 +00:00
Mangler.cpp Update to use new name alignTo(). 2016-01-14 21:06:47 +00:00
MDBuilder.cpp [MDBuilder] Simplify code using initializer lists. NFC. 2015-11-22 18:03:17 +00:00
Metadata.cpp IR: Introduce llvm.type.checked.load intrinsic. 2016-06-25 00:23:04 +00:00
MetadataImpl.h DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
Module.cpp Remove interface to get/set MaxFunctionCount 2016-06-20 21:36:38 +00:00
ModuleSummaryIndex.cpp [ThinLTO] Introduce typedef for commonly-used map type (NFC) 2016-04-25 21:09:51 +00:00
Operator.cpp [opaque pointer types] [NFC] GEP: replace get(Pointer)ElementType uses with get{Source,Result}ElementType. 2016-01-19 17:28:00 +00:00
OptBisect.cpp Removing unused function. 2016-04-22 22:24:20 +00:00
Pass.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
PassManager.cpp [PM] Run clang-format over various parts of the new pass manager code 2016-06-17 07:15:29 +00:00
PassRegistry.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ProfileSummary.cpp Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
Statepoint.cpp Introduce an GCRelocateInst class [NFC] 2016-04-12 18:05:10 +00:00
SymbolTableListTraitsImpl.h IR: Remove implicit iterator conversions from lib/IR, NFC 2015-10-08 23:49:46 +00:00
Type.cpp fix documentation comments; NFC 2016-06-02 20:37:52 +00:00
TypeFinder.cpp Re-reapply "[IR] Move optional data in llvm::Function into a hungoff uselist" 2015-12-19 08:52:49 +00:00
Use.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
User.cpp [IR] Teach llvm::User to co-allocate a descriptor. 2015-09-24 01:00:49 +00:00
Value.cpp Remove Value::isPointerDereferenceable; NFCI 2016-06-02 00:52:48 +00:00
ValueSymbolTable.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
ValueTypes.cpp Add isScalarInteger helper to EVT/MVT 2016-03-01 18:01:28 +00:00
Verifier.cpp NFC. Move verifyIntrinsicIsVarArg from verifier to Intrinsic::matchIntrinsicVarArg since it will be reused for intrinsic remangling code 2016-06-24 14:47:27 +00:00