AA metadata refactoring (introduce AAMDNodes)
authorHal Finkel <hfinkel@anl.gov>
Thu, 24 Jul 2014 12:16:19 +0000 (12:16 +0000)
committerHal Finkel <hfinkel@anl.gov>
Thu, 24 Jul 2014 12:16:19 +0000 (12:16 +0000)
commit2c7c54c86c0619a0d3b9e22a6990b075fd174529
tree6f75c6f4003b53e08cf49c09030bdf8ea3171c52
parenta4abc43a568cfb7eed0cb6e975b24d3ea5759469
AA metadata refactoring (introduce AAMDNodes)

In order to enable the preservation of noalias function parameter information
after inlining, and the representation of block-level __restrict__ pointer
information (etc.), additional kinds of aliasing metadata will be introduced.
This metadata needs to be carried around in AliasAnalysis::Location objects
(and MMOs at the SDAG level), and so we need to generalize the current scheme
(which is hard-coded to just one TBAA MDNode*).

This commit introduces only the necessary refactoring to allow for the
introduction of other aliasing metadata types, but does not actually introduce
any (that will come in a follow-up commit). What it does introduce is a new
AAMDNodes structure to hold all of the aliasing metadata nodes associated with
a particular memory-accessing instruction, and uses that structure instead of
the raw MDNode* in AliasAnalysis::Location, etc.

No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213859 91177308-0d34-0410-b5e6-96231b3b80d8
50 files changed:
include/llvm/Analysis/AliasAnalysis.h
include/llvm/Analysis/AliasSetTracker.h
include/llvm/Analysis/Loads.h
include/llvm/Analysis/MemoryDependenceAnalysis.h
include/llvm/CodeGen/MachineFunction.h
include/llvm/CodeGen/MachineMemOperand.h
include/llvm/CodeGen/SelectionDAG.h
include/llvm/CodeGen/SelectionDAGNodes.h
include/llvm/IR/Instruction.h
include/llvm/IR/MDBuilder.h
include/llvm/IR/Metadata.h
lib/Analysis/AliasAnalysis.cpp
lib/Analysis/AliasAnalysisEvaluator.cpp
lib/Analysis/AliasSetTracker.cpp
lib/Analysis/BasicAliasAnalysis.cpp
lib/Analysis/Loads.cpp
lib/Analysis/MemoryDependenceAnalysis.cpp
lib/Analysis/ScalarEvolutionAliasAnalysis.cpp
lib/Analysis/TypeBasedAliasAnalysis.cpp
lib/CodeGen/MachineFunction.cpp
lib/CodeGen/MachineInstr.cpp
lib/CodeGen/ScheduleDAGInstrs.cpp
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/FastISel.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/IR/Metadata.cpp
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/Mips/MipsSEISelLowering.cpp
lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
lib/Target/XCore/XCoreISelLowering.cpp
lib/Transforms/IPO/ArgumentPromotion.cpp
lib/Transforms/IPO/FunctionAttrs.cpp
lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
lib/Transforms/ObjCARC/ObjCARCAliasAnalysis.cpp
lib/Transforms/Scalar/GVN.cpp
lib/Transforms/Scalar/JumpThreading.cpp
lib/Transforms/Scalar/LICM.cpp
lib/Transforms/Scalar/SROA.cpp
lib/Transforms/Scalar/ScalarReplAggregates.cpp
lib/Transforms/Vectorize/LoopVectorize.cpp
test/Analysis/TypeBasedAliasAnalysis/placement-tbaa.ll
test/Analysis/TypeBasedAliasAnalysis/tbaa-path.ll
unittests/Analysis/MixedTBAATest.cpp