virtual void getAnalysisUsage(AnalysisUsage &AU) const;
/// getDependency - Return the instruction on which a memory operation
- /// depends. See the class comment for more details.
+ /// depends. See the class comment for more details. It is illegal to call
+ /// this on non-memory instructions.
MemDepResult getDependency(Instruction *QueryInst);
/// getDependencyFrom - Return the instruction on which the memory operation
MemPtr = F->getPointerOperand();
// FreeInsts erase the entire structure, not just a field.
MemSize = ~0UL;
- } else if (isa<CallInst>(QueryInst) || isa<InvokeInst>(QueryInst))
+ } else {
+ assert((isa<CallInst>(QueryInst) || isa<InvokeInst>(QueryInst)) &&
+ "Can only get dependency info for memory instructions!");
return getCallSiteDependency(CallSite::get(QueryInst), ScanIt, BB);
- else // Non-memory instructions depend on nothing.
- return MemDepResult::getNone();
+ }
// Walk backwards through the basic block, looking for dependencies
while (ScanIt != BB->begin()) {