diff options
-rw-r--r-- | src/wasm2asm.h | 4 | ||||
-rw-r--r-- | test/emcc_O2_hello_world.2asm.js | 54 | ||||
-rw-r--r-- | test/hello_world.2asm.js | 2 | ||||
-rw-r--r-- | test/min.2asm.js | 2 | ||||
-rw-r--r-- | test/unit.2asm.js | 14 |
5 files changed, 38 insertions, 38 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h index 6a27337a8..8f8025dfa 100644 --- a/src/wasm2asm.h +++ b/src/wasm2asm.h @@ -236,13 +236,13 @@ Ref Wasm2AsmBuilder::processFunction(Function* func) { flattenAppend(ret, ValueBuilder::makeStatement(processFunctionBody(func->body, result))); if (func->result != none) { // do the actual return - ret[3]->push_back(ValueBuilder::makeStatement(ValueBuilder::makeReturn(ValueBuilder::makeName(result)))); + ret[3]->push_back(ValueBuilder::makeStatement(ValueBuilder::makeReturn(makeAsmCoercion(ValueBuilder::makeName(result), wasmToAsmType(func->result))))); freeTemp(func->result, result); } } else { // whole thing is an expression, just do a return if (func->result != none) { - ret[3]->push_back(ValueBuilder::makeStatement(ValueBuilder::makeReturn(processFunctionBody(func->body, EXPRESSION_RESULT)))); + ret[3]->push_back(ValueBuilder::makeStatement(ValueBuilder::makeReturn(makeAsmCoercion(processFunctionBody(func->body, EXPRESSION_RESULT), wasmToAsmType(func->result))))); } else { flattenAppend(ret, processFunctionBody(func->body, NO_RESULT)); } diff --git a/test/emcc_O2_hello_world.2asm.js b/test/emcc_O2_hello_world.2asm.js index 3efd85b7c..8d0394b7b 100644 --- a/test/emcc_O2_hello_world.2asm.js +++ b/test/emcc_O2_hello_world.2asm.js @@ -1344,7 +1344,7 @@ function asmFunc(global, env, buffer) { i13 = 0; wasm2asm_i32$0 = i13; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function _free(i1) { @@ -1872,7 +1872,7 @@ function asmFunc(global, env, buffer) { HEAP32[8 >> 2] = i4; wasm2asm_i32$0 = i24; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___fwritex(i1, i2, i3) { @@ -1939,7 +1939,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_i32$0 = i8; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function _fflush(i1) { @@ -1983,7 +1983,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_i32$0 = i2; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function _strlen(i1) { @@ -2040,7 +2040,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_i32$0 = i7 - i2 | 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___overflow(i1, i2) { @@ -2082,7 +2082,7 @@ function asmFunc(global, env, buffer) { HEAP32[8 >> 2] = i3; wasm2asm_i32$0 = i10; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___fflush_unlocked(i1) { @@ -2110,7 +2110,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_i32$0 = i4; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function _memcpy(i1, i2, i3) { @@ -2156,7 +2156,7 @@ function asmFunc(global, env, buffer) { } while (0); wasm2asm_i32$0 = i4; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function runPostSets() { @@ -2199,7 +2199,7 @@ function asmFunc(global, env, buffer) { } while (0); wasm2asm_i32$0 = i1 - i3 | 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function _puts(i1) { @@ -2227,7 +2227,7 @@ function asmFunc(global, env, buffer) { if (i3) ___unlockfile(i2 | 0); wasm2asm_i32$0 = (i4 << 31 | 0) >> 31 | 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___stdio_seek(i1, i2, i3) { @@ -2252,7 +2252,7 @@ function asmFunc(global, env, buffer) { HEAP32[8 >> 2] = i4; wasm2asm_i32$0 = i7; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___towrite(i1) { @@ -2277,7 +2277,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_i32$0 = i4; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function _fwrite(i1, i2, i3, i4) { @@ -2299,7 +2299,7 @@ function asmFunc(global, env, buffer) { if ((i8 | 0) == (i5 | 0)) i9 = i3; else i9 = (i8 >>> 0 | 0) / (i2 >>> 0 | 0) | 0; wasm2asm_i32$0 = i9; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___stdout_write(i1, i2, i3) { @@ -2323,7 +2323,7 @@ function asmFunc(global, env, buffer) { HEAP32[8 >> 2] = i4; wasm2asm_i32$0 = i5; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function copyTempDouble(i1) { @@ -2350,7 +2350,7 @@ function asmFunc(global, env, buffer) { HEAP32[8 >> 2] = i2; wasm2asm_i32$0 = i1; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function copyTempFloat(i1) { @@ -2371,7 +2371,7 @@ function asmFunc(global, env, buffer) { } else i2 = i1; wasm2asm_i32$0 = i2; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function dynCall_iiii(i1, i2, i3, i4) { @@ -2379,7 +2379,7 @@ function asmFunc(global, env, buffer) { i2 = i2 | 0; i3 = i3 | 0; i4 = i4 | 0; - return FUNCTION_TABLE[(i1 & 7 | 0) + 2 | 0](i2 | 0, i3 | 0, i4 | 0) | 0; + return FUNCTION_TABLE[(i1 & 7 | 0) + 2 | 0](i2 | 0, i3 | 0, i4 | 0) | 0 | 0; } function stackAlloc(i1) { @@ -2391,7 +2391,7 @@ function asmFunc(global, env, buffer) { HEAP32[8 >> 2] = ((HEAPU32[8 >> 2] | 0) + 15 | 0) & 4294967280 | 0; wasm2asm_i32$0 = i2; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___errno_location() { @@ -2400,7 +2400,7 @@ function asmFunc(global, env, buffer) { if ((HEAPU32[8 >> 2] | 0 | 0) == (0 | 0)) i1 = 60; else i1 = HEAPU32[((_pthread_self() | 0) + 60 | 0) >> 2] | 0; wasm2asm_i32$0 = i1; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function setThrew(i1, i2) { @@ -2415,13 +2415,13 @@ function asmFunc(global, env, buffer) { function _fputs(i1, i2) { i1 = i1 | 0; i2 = i2 | 0; - return (_fwrite(i1 | 0, _strlen(i1 | 0) | 0 | 0, 1 | 0, i2 | 0) | 0) + 4294967295 | 0; + return (_fwrite(i1 | 0, _strlen(i1 | 0) | 0 | 0, 1 | 0, i2 | 0) | 0) + 4294967295 | 0 | 0; } function dynCall_ii(i1, i2) { i1 = i1 | 0; i2 = i2 | 0; - return FUNCTION_TABLE[(i1 & 1 | 0) + 0 | 0](i2 | 0) | 0; + return FUNCTION_TABLE[(i1 & 1 | 0) + 0 | 0](i2 | 0) | 0 | 0; } function _cleanup_418(i1) { @@ -2454,7 +2454,7 @@ function asmFunc(global, env, buffer) { abort(1 | 0); wasm2asm_i32$0 = 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function stackRestore(i1) { @@ -2474,7 +2474,7 @@ function asmFunc(global, env, buffer) { abort(0 | 0); wasm2asm_i32$0 = 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function ___unlockfile(i1) { @@ -2486,11 +2486,11 @@ function asmFunc(global, env, buffer) { function ___lockfile(i1) { i1 = i1 | 0; - return 0; + return 0 | 0; } function getTempRet0() { - return HEAPU32[160 >> 2] | 0; + return HEAPU32[160 >> 2] | 0 | 0; } function _main() { @@ -2499,11 +2499,11 @@ function asmFunc(global, env, buffer) { _puts(672 | 0) | 0; wasm2asm_i32$0 = 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function stackSave() { - return HEAPU32[8 >> 2] | 0; + return HEAPU32[8 >> 2] | 0 | 0; } function b2(i1) { diff --git a/test/hello_world.2asm.js b/test/hello_world.2asm.js index eb13f89c9..a7437f64b 100644 --- a/test/hello_world.2asm.js +++ b/test/hello_world.2asm.js @@ -11,7 +11,7 @@ function asmFunc(global, env, buffer) { function add(x, y) { x = x | 0; y = y | 0; - return x + y | 0; + return x + y | 0 | 0; } } diff --git a/test/min.2asm.js b/test/min.2asm.js index d988beb6b..bd15fd5aa 100644 --- a/test/min.2asm.js +++ b/test/min.2asm.js @@ -11,7 +11,7 @@ function asmFunc(global, env, buffer) { function floats(f) { f = Math_fround(f); var t = Math_fround(0); - return Math_fround(t + f); + return Math_fround(Math_fround(t + f)); } function neg(k, p) { diff --git a/test/unit.2asm.js b/test/unit.2asm.js index 18a4cccb6..c33736a61 100644 --- a/test/unit.2asm.js +++ b/test/unit.2asm.js @@ -31,7 +31,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_f64$0 = 1.2; } - return wasm2asm_f64$0; + return +wasm2asm_f64$0; } function doubleCompares(x, y) { @@ -57,12 +57,12 @@ function asmFunc(global, env, buffer) { } wasm2asm_f64$0 = y; } - return wasm2asm_f64$0; + return +wasm2asm_f64$0; } function intOps() { var x = 0; - return (x | 0) == (0 | 0); + return (x | 0) == (0 | 0) | 0; } function conversions() { @@ -144,7 +144,7 @@ function asmFunc(global, env, buffer) { } wasm2asm_i32$0 = 0; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function blocker() { @@ -154,7 +154,7 @@ function asmFunc(global, env, buffer) { } function frem() { - return +f64_rem(+(5.5), +(1.2)); + return +(+f64_rem(+(5.5), +(1.2))); } function big_uint_div_u() { @@ -163,7 +163,7 @@ function asmFunc(global, env, buffer) { x = (4294967295 / 2 | 0) & 4294967295 | 0; wasm2asm_i32$0 = x; } - return wasm2asm_i32$0; + return wasm2asm_i32$0 | 0; } function fr(x) { @@ -178,7 +178,7 @@ function asmFunc(global, env, buffer) { } function negZero() { - return -0.0; + return +(-0.0); } function abs() { |