From 3b1dda8e92af79d1895528cc4e24182d81e66814 Mon Sep 17 00:00:00 2001 From: Ryan Hunt Date: Wed, 27 Nov 2019 14:18:51 -0600 Subject: [PATCH] Wasm: Ensure result of `ref.is_null` is I32 The (r32|r64).is_null instruction yields a boolean type, so we must convert a Wasm `ref.is_null` to an integer so we don't get verifier errors. --- cranelift/wasm/src/code_translator.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cranelift/wasm/src/code_translator.rs b/cranelift/wasm/src/code_translator.rs index bb92e8e85e..baaa335be4 100644 --- a/cranelift/wasm/src/code_translator.rs +++ b/cranelift/wasm/src/code_translator.rs @@ -975,7 +975,8 @@ pub fn translate_operator( Operator::RefIsNull => { let arg = state.pop1(); let val = builder.ins().is_null(arg); - state.push1(val); + let val_int = builder.ins().bint(I32, val); + state.push1(val_int); } Operator::RefFunc { function_index } => { state.push1(environ.translate_ref_func(builder.cursor(), *function_index)?);