diff options
| author | Owen Anderson <resistor@mac.com> | 2007-07-10 18:43:15 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2007-07-10 18:43:15 +0000 |
| commit | 1fa6132e8578531b92f77ae158b6e3fe53641f1c (patch) | |
| tree | 60f10eae84f0fc3f6f70d6d9296ba2286536175e /llvm/lib | |
| parent | 60d6f96da37b8cc2f991645ad3a5f902f7f9d46f (diff) | |
| download | bcm5719-llvm-1fa6132e8578531b92f77ae158b6e3fe53641f1c.tar.gz bcm5719-llvm-1fa6132e8578531b92f77ae158b6e3fe53641f1c.zip | |
Handle vaarg instructions correctly.
llvm-svn: 38504
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp index 944f532407a..31a3e02b367 100644 --- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp +++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp @@ -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(); |

