diff options
-rw-r--r-- | src/wasm2asm.h | 2 | ||||
-rw-r--r-- | test/unit.2asm.js | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h index ba52b1878..c48834085 100644 --- a/src/wasm2asm.h +++ b/src/wasm2asm.h @@ -892,7 +892,7 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { case Sqrt: ret = ValueBuilder::makeCall(MATH_SQRT, value); break; case TruncSFloat32: ret = ValueBuilder::makePrefix(B_NOT, ValueBuilder::makePrefix(B_NOT, value)); break; case PromoteFloat32: - case ConvertSInt32: ret = ValueBuilder::makePrefix(PLUS, value); break; + case ConvertSInt32: ret = ValueBuilder::makePrefix(PLUS, ValueBuilder::makeBinary(value, OR, ValueBuilder::makeNum(0))); break; case ConvertUInt32: ret = ValueBuilder::makePrefix(PLUS, ValueBuilder::makeBinary(value, TRSHIFT, ValueBuilder::makeNum(0))); break; case DemoteFloat64: ret = value; break; default: std::cerr << curr << '\n'; abort(); diff --git a/test/unit.2asm.js b/test/unit.2asm.js index 9df831571..def524246 100644 --- a/test/unit.2asm.js +++ b/test/unit.2asm.js @@ -72,7 +72,7 @@ function asmFunc(global, env, buffer) { function conversions() { var i = 0, d = 0.0; i = f64_to_int(+d) | 0; - d = +i; + d = +(i | 0); d = +((i >>> 0 | 0) >>> 0); } |