diff options
author | Dan Gohman <gohman@apple.com> | 2010-09-14 23:28:12 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-09-14 23:28:12 +0000 |
commit | e6291ae96efa1e27ca6606ac59b17e35d45c057e (patch) | |
tree | 55c48da6ed82508481430d7a20c76e89d38a1415 /lib/Analysis | |
parent | bb3e5dad6685dd54625edae789d1a703f4107a69 (diff) | |
download | llvm-e6291ae96efa1e27ca6606ac59b17e35d45c057e.tar.gz llvm-e6291ae96efa1e27ca6606ac59b17e35d45c057e.tar.bz2 llvm-e6291ae96efa1e27ca6606ac59b17e35d45c057e.tar.xz |
Convert TBAA to use the new TBAATag field of AliasAnalysis::Location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113892 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis')
-rw-r--r-- | lib/Analysis/TypeBasedAliasAnalysis.cpp | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/lib/Analysis/TypeBasedAliasAnalysis.cpp b/lib/Analysis/TypeBasedAliasAnalysis.cpp index f6c8201c03..7069a178cb 100644 --- a/lib/Analysis/TypeBasedAliasAnalysis.cpp +++ b/lib/Analysis/TypeBasedAliasAnalysis.cpp @@ -44,7 +44,7 @@ namespace { public: TBAANode() : Node(0) {} - explicit TBAANode(MDNode *N) : Node(N) {} + explicit TBAANode(const MDNode *N) : Node(N) {} /// getNode - Get the MDNode for this TBAANode. const MDNode *getNode() const { return Node; } @@ -119,21 +119,11 @@ TypeBasedAliasAnalysis::getAnalysisUsage(AnalysisUsage &AU) const { AliasAnalysis::AliasResult TypeBasedAliasAnalysis::alias(const Location &LocA, const Location &LocB) { - // Currently, metadata can only be attached to Instructions. - const Instruction *AI = dyn_cast<Instruction>(LocA.Ptr); - if (!AI) return MayAlias; - const Instruction *BI = dyn_cast<Instruction>(LocB.Ptr); - if (!BI) return MayAlias; - // Get the attached MDNodes. If either value lacks a tbaa MDNode, we must // be conservative. - MDNode *AM = - AI->getMetadata(AI->getParent()->getParent()->getParent() - ->getMDKindID("tbaa")); + const MDNode *AM = LocA.TBAATag; if (!AM) return MayAlias; - MDNode *BM = - BI->getMetadata(BI->getParent()->getParent()->getParent() - ->getMDKindID("tbaa")); + const MDNode *BM = LocB.TBAATag; if (!BM) return MayAlias; // Keep track of the root node for A and B. @@ -175,13 +165,7 @@ TypeBasedAliasAnalysis::alias(const Location &LocA, } bool TypeBasedAliasAnalysis::pointsToConstantMemory(const Location &Loc) { - // Currently, metadata can only be attached to Instructions. - const Instruction *I = dyn_cast<Instruction>(Loc.Ptr); - if (!I) return false; - - MDNode *M = - I->getMetadata(I->getParent()->getParent()->getParent() - ->getMDKindID("tbaa")); + const MDNode *M = Loc.TBAATag; if (!M) return false; // If this is an "immutable" type, we can assume the pointer is pointing |