Teach AliasSetTracker about VAArgInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49674 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/AliasSetTracker.cpp b/lib/Analysis/AliasSetTracker.cpp
index c35dc32..50a6bb8 100644
--- a/lib/Analysis/AliasSetTracker.cpp
+++ b/lib/Analysis/AliasSetTracker.cpp
@@ -292,6 +292,12 @@
return NewPtr;
}
+bool AliasSetTracker::add(VAArgInst *VAAI) {
+ bool NewPtr;
+ addPointer(VAAI->getOperand(0), ~0, AliasSet::ModRef, NewPtr);
+ return NewPtr;
+}
+
bool AliasSetTracker::add(CallSite CS) {
if (AA.doesNotAccessMemory(CS))
@@ -321,6 +327,8 @@
return add(II);
else if (FreeInst *FI = dyn_cast<FreeInst>(I))
return add(FI);
+ else if (VAArgInst *VAAI = dyn_cast<VAArgInst>(I))
+ return add(VAAI);
return true;
}
@@ -414,6 +422,13 @@
return true;
}
+bool AliasSetTracker::remove(VAArgInst *VAAI) {
+ AliasSet *AS = findAliasSetForPointer(VAAI->getOperand(0), ~0);
+ if (!AS) return false;
+ remove(*AS);
+ return true;
+}
+
bool AliasSetTracker::remove(CallSite CS) {
if (AA.doesNotAccessMemory(CS))
return false; // doesn't alias anything
@@ -434,6 +449,8 @@
return remove(CI);
else if (FreeInst *FI = dyn_cast<FreeInst>(I))
return remove(FI);
+ else if (VAArgInst *VAAI = dyn_cast<VAArgInst>(I))
+ return remove(VAAI);
return true;
}