diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-07 15:38:27 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-07 15:38:27 -0800 |
commit | 4ef7b2ef49787bc22a73a13b24819a43d7d133d6 (patch) | |
tree | a945c8ef648e340ac474d00e729fb8359745566f | |
parent | aa3adeff8a9052e82db4353cd7d77e4da64e9a9d (diff) | |
download | binaryen-4ef7b2ef49787bc22a73a13b24819a43d7d133d6.tar.gz binaryen-4ef7b2ef49787bc22a73a13b24819a43d7d133d6.tar.bz2 binaryen-4ef7b2ef49787bc22a73a13b24819a43d7d133d6.zip |
fix signed int-to-double
-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); } |