1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/lib/IR
Sanjoy Das a0e8011216 [Verifier] Add verification for TBAA metadata
Summary:
This change adds some verification in the IR verifier around struct path
TBAA metadata.

Other than some basic sanity checks (e.g. we get constant integers where
we expect constant integers), this checks:

 - That by the time an struct access tuple `(base-type, offset)` is
   "reduced" to a scalar base type, the offset is `0`.  For instance, in
   C++ you can't start from, say `("struct-a", 16)`, and end up with
   `("int", 4)` -- by the time the base type is `"int"`, the offset
   better be zero.  In particular, a variant of this invariant is needed
   for `llvm::getMostGenericTBAA` to be correct.

 - That there are no cycles in a struct path.

 - That struct type nodes have their offsets listed in an ascending
   order.

 - That when generating the struct access path, you eventually reach the
   access type listed in the tbaa tag node.

Reviewers: dexonsmith, chandlerc, reames, mehdi_amini, manmanren

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 289402
2016-12-11 20:07:15 +00:00
..
AsmWriter.cpp Fix -Werror build with clang-cl. 2016-11-11 23:58:11 +00:00
AttributeImpl.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
Attributes.cpp Kill deprecated attribute API 2016-11-06 07:48:46 +00:00
AttributesCompatFunc.td
AttributeSetNode.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
AutoUpgrade.cpp [X86] Remove masking from 512-bit VPERMIL intrinsics in preparation for being able to constant fold them in InstCombineCalls like we do for 128/256-bit. 2016-12-11 01:26:44 +00:00
BasicBlock.cpp
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
Comdat.cpp
ConstantFold.cpp IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
ConstantFold.h IR: Introduce inrange attribute on getelementptr indices. 2016-11-10 22:34:55 +00:00
ConstantRange.cpp Factor out common parts of LVI and Float2Int into ConstantRange [NFCI] 2016-12-01 20:08:47 +00:00
Constants.cpp [Constants] don't die processing non-ConstantInt GEP indices in isGEPWithNoNotionalOverIndexing() (PR31262) 2016-12-11 20:07:02 +00:00
ConstantsContext.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
Core.cpp IR: Change PointerType to derive from Type rather than SequentialType. 2016-12-02 03:05:41 +00:00
DataLayout.cpp IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
DebugInfo.cpp
DebugInfoMetadata.cpp [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation 2016-12-05 18:04:47 +00:00
DebugLoc.cpp
DiagnosticInfo.cpp [GVN, OptDiag] Include the value that is forwarded in load elimination 2016-12-01 17:34:44 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation 2016-12-05 18:04:47 +00:00
Dominators.cpp [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
Function.cpp
GCOV.cpp
Globals.cpp IR, X86: Understand !absolute_symbol metadata on global variables. 2016-12-08 19:01:00 +00:00
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp
Instructions.cpp fix comment formatting; NFC 2016-11-16 18:09:44 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
IRPrintingPasses.cpp
LegacyPassManager.cpp Timer: Track name and description. 2016-11-18 19:43:18 +00:00
LLVMBuild.txt
LLVMContext.cpp IR, X86: Understand !absolute_symbol metadata on global variables. 2016-12-08 19:01:00 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h
Mangler.cpp
MDBuilder.cpp
Metadata.cpp
MetadataImpl.h
Module.cpp Bitcode: Change the materializer interface to return llvm::Error. 2016-11-09 17:49:19 +00:00
ModuleSummaryIndex.cpp
Operator.cpp IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
OptBisect.cpp
Pass.cpp
PassManager.cpp [PM] Support invalidation of inner analysis managers from a pass over the outer IR unit. 2016-12-10 06:34:44 +00:00
PassRegistry.cpp
ProfileSummary.cpp
Statepoint.cpp
SymbolTableListTraitsImpl.h
Type.cpp IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
TypeFinder.cpp
Use.cpp
User.cpp
Value.cpp [BDCE] Skip metadata while replacing uses. 2016-12-07 21:47:32 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp [Verifier] Add verification for TBAA metadata 2016-12-11 20:07:15 +00:00