Fixes PR36564.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330215
91177308-0d34-0410-b5e6-
96231b3b80d8
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;
}
--- /dev/null
+; RUN: llc < %s -O0
+; PR36564
+
+; Test that fast-isel properly copes with i24 arguments and return types.
+
+target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
+target triple = "wasm32-unknown-unknown-wasm"
+
+define i24 @add(i24 %x, i24 %y) {
+ %z = add i24 %x, %y
+ ret i24 %z
+}
+
+define i24 @return_zero() {
+ ret i24 0
+}