Make it illegal to call getDependency* on non-memory instructions

like binary operators.

llvm-svn: 60600
This commit is contained in:
Chris Lattner 2008-12-05 18:46:19 +00:00
parent 88909849bb
commit eda6432beb
2 changed files with 6 additions and 4 deletions

View File

@ -180,7 +180,8 @@ namespace llvm {
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

View File

@ -118,10 +118,11 @@ getDependencyFrom(Instruction *QueryInst, BasicBlock::iterator ScanIt,
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()) {