diff options
Diffstat (limited to 'lib/AsmParser/LLParser.cpp')
-rw-r--r-- | lib/AsmParser/LLParser.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 61b1ae5..19e51e3 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -3710,8 +3710,12 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS, !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector<const Type*> ParamTypes; - for (unsigned i = 0, e = ArgList.size(); i != e; ++i) + for (unsigned i = 0, e = ArgList.size(); i != e; ++i) { + const Type* ArgTy = ArgList[i].V->getType(); + if (!FunctionType::isValidArgumentType(ArgTy)) + return Error(ArgList[i].Loc, "Invalid argument type for LLVM function"); ParamTypes.push_back(ArgList[i].V->getType()); + } if (!FunctionType::isValidReturnType(RetType)) return Error(RetTypeLoc, "Invalid result type for LLVM function"); |