diff --git a/CHANGELOG.md b/CHANGELOG.md index ff87114e303..75867467af2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Looking for changes that affect our C API? See the [C API Changelog](lib/c-api/C - [#2157](https://github.com/wasmerio/wasmer/pull/2157) Simplify the code behind `WasmPtr` ### Fixed +- [#2391](https://github.com/wasmerio/wasmer/pull/2391) Fix Singlepass emit bug, [#2347](https://github.com/wasmerio/wasmer/issues/2347) and [#2159](https://github.com/wasmerio/wasmer/issues/2159) - [#2327](https://github.com/wasmerio/wasmer/pull/2327) Fix memory leak preventing internal instance memory from being freed when a WasmerEnv contained an exported extern (e.g. Memory, etc.). - [#2247](https://github.com/wasmerio/wasmer/pull/2247) Internal WasiFS logic updated to be closer to what WASI libc does when finding a preopened fd for a path. - [#2241](https://github.com/wasmerio/wasmer/pull/2241) Fix Undefined Behavior in setting memory in emscripten `EmEnv`. diff --git a/lib/compiler-singlepass/src/codegen_x64.rs b/lib/compiler-singlepass/src/codegen_x64.rs index 6a7670fcdaf..953bda078dd 100644 --- a/lib/compiler-singlepass/src/codegen_x64.rs +++ b/lib/compiler-singlepass/src/codegen_x64.rs @@ -330,9 +330,9 @@ impl<'a> FuncGen<'a> { let tmp1 = self.machine.acquire_temp_xmm().unwrap(); let tmp2 = self.machine.acquire_temp_xmm().unwrap(); let tmp3 = self.machine.acquire_temp_xmm().unwrap(); - let tmpg1 = self.machine.acquire_temp_gpr().unwrap(); self.emit_relaxed_binop(Assembler::emit_mov, sz, input, Location::XMM(tmp1)); + let tmpg1 = self.machine.acquire_temp_gpr().unwrap(); match sz { Size::S32 => { diff --git a/tests/wast/wasmer/nan-canonicalization-issue-2159.wast b/tests/wast/wasmer/nan-canonicalization-issue-2159.wast new file mode 100644 index 00000000000..6a1253ce26f --- /dev/null +++ b/tests/wast/wasmer/nan-canonicalization-issue-2159.wast @@ -0,0 +1,10 @@ +;; https://github.com/wasmerio/wasmer/issues/2159 +(module + (func (export "_start") (result f64) + f64.const 0x0p+0 (;=0;) + f64.const 0x0p+0 (;=0;) + f64.const 0x0p+0 (;=0;) + f64.div + f64.copysign + ) +) \ No newline at end of file diff --git a/tests/wast/wasmer/nan-canonicalization-issue-2347.wast b/tests/wast/wasmer/nan-canonicalization-issue-2347.wast new file mode 100644 index 00000000000..575d33c65d7 --- /dev/null +++ b/tests/wast/wasmer/nan-canonicalization-issue-2347.wast @@ -0,0 +1,14 @@ +;; https://github.com/wasmerio/wasmer/issues/2347 +(module + (type (;0;) (func (param f64) (result i32))) + (func (;0;) (type 0) (param f64) (result i32) + unreachable) + (func (;1;) (type 0) (param f64) (result i32) + i32.const -16579585 + f64.convert_i32_s + f64.ceil + f64.ceil + local.get 0 + f64.copysign + unreachable)) + \ No newline at end of file