Handle vaarg instructions correctly.
authorOwen Anderson <resistor@mac.com>
Tue, 10 Jul 2007 18:43:15 +0000 (18:43 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 10 Jul 2007 18:43:15 +0000 (18:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38504 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/MemoryDependenceAnalysis.cpp

index 944f532407ab06801a4d52923d3adadbbdf7a694..31a3e02b3675406a72dbe891a27d783e8ebf424b 100644 (file)
@@ -67,6 +67,9 @@ Instruction* MemoryDependenceAnalysis::getCallSiteDependency(CallSite C, bool lo
         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 @@ Instruction* MemoryDependenceAnalysis::getDependency(Instruction* query,
     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 @@ Instruction* MemoryDependenceAnalysis::getDependency(Instruction* query,
         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();