diff options
Diffstat (limited to 'llvm/lib/VMCore/Verifier.cpp')
-rw-r--r-- | llvm/lib/VMCore/Verifier.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/Verifier.cpp b/llvm/lib/VMCore/Verifier.cpp index 140e6bd8b15..f1f6e2e199b 100644 --- a/llvm/lib/VMCore/Verifier.cpp +++ b/llvm/lib/VMCore/Verifier.cpp @@ -1143,6 +1143,16 @@ void Verifier::visitCallInst(CallInst &CI) { if (Function *F = CI.getCalledFunction()) if (Intrinsic::ID ID = (Intrinsic::ID)F->getIntrinsicID()) visitIntrinsicFunctionCall(ID, CI); + + // Code here matches isMalloc from MallocHelper, which is not in VMCore. + const Module* M = CI.getParent()->getParent()->getParent(); + Constant *MallocFunc = M->getFunction("malloc"); + + if (CI.getOperand(0) == MallocFunc) { + const PointerType *PTy = + PointerType::getUnqual(Type::getInt8Ty(CI.getParent()->getContext())); + Assert1(CI.getType() == PTy, "Malloc call must return i8*", &CI); + } } void Verifier::visitInvokeInst(InvokeInst &II) { |