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 | e0386dbef16be1a9b98d3301df6f9ca1d63303a6 (patch) | |
tree | b02c77f62e82959e4bd8a234365ffef0cba51052 /llvm | |
parent | 092b6fb1870946e7a82341ca92a87ac1f0b50ad9 (diff) | |
download | bcm5719-llvm-e0386dbef16be1a9b98d3301df6f9ca1d63303a6.tar.gz bcm5719-llvm-e0386dbef16be1a9b98d3301df6f9ca1d63303a6.zip |
Convert TBAA to use the new TBAATag field of AliasAnalysis::Location.
llvm-svn: 113892
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp b/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp index f6c8201c035..7069a178cb0 100644 --- a/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp +++ b/llvm/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 |