Handle vaarg instructions correctly.
llvm-svn: 38504
diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
index 944f532..31a3e02 100644
--- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -67,6 +67,9 @@
pointerSize = C->getZExtValue();
else
pointerSize = ~0UL;
+ } else if (VAArgInst* V = dyn_cast<VAArgInst>(QI)) {
+ pointer = V->getOperand(0);
+ pointerSize = TD.getTypeSize(V->getType());
} else if (FreeInst* F = dyn_cast<FreeInst>(QI)) {
pointer = F->getPointerOperand();
@@ -130,6 +133,9 @@
dependee = L->getPointerOperand();
dependeeSize = TD.getTypeSize(L->getType());
queryIsVolatile = L->isVolatile();
+ } else if (VAArgInst* V = dyn_cast<VAArgInst>(QI)) {
+ dependee = V->getOperand(0);
+ dependeeSize = TD.getTypeSize(V->getType());
} else if (FreeInst* F = dyn_cast<FreeInst>(QI)) {
dependee = F->getPointerOperand();
@@ -176,6 +182,9 @@
pointerSize = C->getZExtValue();
else
pointerSize = ~0UL;
+ } else if (VAArgInst* V = dyn_cast<VAArgInst>(QI)) {
+ pointer = V->getOperand(0);
+ pointerSize = TD.getTypeSize(V->getType());
} else if (FreeInst* F = dyn_cast<FreeInst>(QI)) {
pointer = F->getPointerOperand();