mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
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
This commit is contained in:
parent
bb3e5dad66
commit
e6291ae96e
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user