diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 2f37d3d..1f933cd 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -268,7 +268,7 @@ impl<'a> WasmFuncBackend<'a> { } self.lower_op(op, func); if root { - for &local in &ctx.locals.values[value] { + for &local in ctx.locals.values[value].iter().rev() { func.instruction( &wasm_encoder::Instruction::LocalSet(local.index() as u32), ); diff --git a/tests/roundtrip/multi-value-call.wat b/tests/roundtrip/multi-value-call.wat new file mode 100644 index 0000000..9014a24 --- /dev/null +++ b/tests/roundtrip/multi-value-call.wat @@ -0,0 +1,9 @@ +(module + (func (export "f") (param i32 i32) (result i32 i32) + local.get 0 + local.get 1 + call 1) + + (func (param i32 i32) (result i32 i32) + local.get 0 + local.get 1))