[WebAssembly] Teach fast-isel to gracefully recover from illegal return types.

Fixes PR36564.

llvm-svn: 330215
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
index f3ee6e7..c13dd7a 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
@@ -703,8 +703,12 @@
   for (auto const &Arg : F->args())
     MFI->addParam(getLegalType(getSimpleType(Arg.getType())));
 
-  if (!F->getReturnType()->isVoidTy())
-    MFI->addResult(getLegalType(getSimpleType(F->getReturnType())));
+  if (!F->getReturnType()->isVoidTy()) {
+    MVT::SimpleValueType RetTy = getSimpleType(F->getReturnType());
+    if (RetTy == MVT::INVALID_SIMPLE_VALUE_TYPE)
+      return false;
+    MFI->addResult(getLegalType(RetTy));
+  }
 
   return true;
 }