summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp')
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
index fe821ced672..7b5eab42f87 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
@@ -700,14 +700,22 @@ bool WebAssemblyFastISel::fastLowerArguments() {
MRI.addLiveIn(WebAssembly::ARGUMENTS);
auto *MFI = MF->getInfo<WebAssemblyFunctionInfo>();
- for (auto const &Arg : F->args())
- MFI->addParam(getLegalType(getSimpleType(Arg.getType())));
+ for (auto const &Arg : F->args()) {
+ MVT::SimpleValueType ArgTy = getLegalType(getSimpleType(Arg.getType()));
+ if (ArgTy == MVT::INVALID_SIMPLE_VALUE_TYPE) {
+ MFI->clearParamsAndResults();
+ return false;
+ }
+ MFI->addParam(ArgTy);
+ }
if (!F->getReturnType()->isVoidTy()) {
- MVT::SimpleValueType RetTy = getSimpleType(F->getReturnType());
- if (RetTy == MVT::INVALID_SIMPLE_VALUE_TYPE)
+ MVT::SimpleValueType RetTy = getLegalType(getSimpleType(F->getReturnType()));
+ if (RetTy == MVT::INVALID_SIMPLE_VALUE_TYPE) {
+ MFI->clearParamsAndResults();
return false;
- MFI->addResult(getLegalType(RetTy));
+ }
+ MFI->addResult(RetTy);
}
return true;
OpenPOWER on IntegriCloud