DataFlowSanitizer: fix a use-after-free. Spotted by libgmalloc.

llvm-svn: 188216
This commit is contained in:
Peter Collingbourne 2013-08-12 22:38:39 +00:00
parent 9f798c877d
commit 10cbe4a9bb

View File

@ -422,9 +422,12 @@ bool DataFlowSanitizer::runOnModule(Module &M) {
// instruction's next pointer and moving the next instruction to the
// tail block from which we should continue.
Instruction *Next = Inst->getNextNode();
// DFSanVisitor may delete Inst, so keep track of whether it was a
// terminator.
bool IsTerminator = isa<TerminatorInst>(Inst);
if (!DFSF.SkipInsts.count(Inst))
DFSanVisitor(DFSF).visit(Inst);
if (isa<TerminatorInst>(Inst))
if (IsTerminator)
break;
Inst = Next;
}