summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm2asm.h7
-rw-r--r--test/emcc_O2_hello_world.2asm.js34
2 files changed, 12 insertions, 29 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index c2e1141d1..89f33381a 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -481,12 +481,7 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) {
flattenAppend(ret, ValueBuilder::makeStatement(visit(curr->list[i], NO_RESULT)));
}
if (result != NO_RESULT) {
- ret[1]->push_back(ValueBuilder::makeStatement(
- ValueBuilder::makeAssign(
- result,
- visit(curr->list[size-1], result)
- )
- ));
+ flattenAppend(ret, visitAndAssign(curr->list[size-1], result));
}
if (curr->name.is()) {
ret = ValueBuilder::makeLabel(fromName(curr->name), ret);
diff --git a/test/emcc_O2_hello_world.2asm.js b/test/emcc_O2_hello_world.2asm.js
index 5c6e34d62..0b37619dc 100644
--- a/test/emcc_O2_hello_world.2asm.js
+++ b/test/emcc_O2_hello_world.2asm.js
@@ -681,10 +681,8 @@ function asmFunc() {
i52 = HEAPU32[616 >> 2];
if (i52 != 0) {
i51 = HEAPU32[608 >> 2];
- wasm2asm_i32$1 = {
- i50 = i51 + i43 | 0;
- wasm2asm_i32$1 = (i50 >>> 0 | 0) >>> 0 <= (i51 >>> 0 | 0) >>> 0 | (i50 >>> 0 | 0) >>> 0 > (i52 >>> 0 | 0) >>> 0 | 0;
- };
+ i50 = i51 + i43 | 0;
+ wasm2asm_i32$1 = (i50 >>> 0 | 0) >>> 0 <= (i51 >>> 0 | 0) >>> 0 | (i50 >>> 0 | 0) >>> 0 > (i52 >>> 0 | 0) >>> 0 | 0;
} else wasm2asm_i32$1 = 0;
if (wasm2asm_i32$1) {
i13 = 0;
@@ -769,10 +767,8 @@ function asmFunc() {
do_once$26 : {
if ((i53 >>> 0 | 0) >>> 0 > (i61 >>> 0 | 0) >>> 0 & ((i61 >>> 0 | 0) >>> 0 < 2147483647 >>> 0 & i60 != 4294967295 | 0) | 0) {
i52 = HEAPU32[656 >> 2];
- wasm2asm_i32$1 = {
- i5 = ((i44 - i61 | 0) + i52 | 0) & (0 - i52 | 0) | 0;
- wasm2asm_i32$1 = (i5 >>> 0 | 0) >>> 0 < 2147483647 >>> 0;
- };
+ i5 = ((i44 - i61 | 0) + i52 | 0) & (0 - i52 | 0) | 0;
+ wasm2asm_i32$1 = (i5 >>> 0 | 0) >>> 0 < 2147483647 >>> 0;
} else wasm2asm_i32$1 = 0;
if (wasm2asm_i32$1) if ((_sbrk(i5 | 0) | 0) == 4294967295) {
_sbrk(i45 | 0) | 0;
@@ -797,10 +793,8 @@ function asmFunc() {
if (i36 == 190) wasm2asm_i32$3 = (i43 >>> 0 | 0) >>> 0 < 2147483647 >>> 0; else wasm2asm_i32$3 = 0;
if (wasm2asm_i32$3) {
i63 = _sbrk(i43 | 0) | 0;
- wasm2asm_i32$2 = {
- i43 = _sbrk(0 | 0) | 0;
- wasm2asm_i32$2 = (i63 >>> 0 | 0) >>> 0 < (i43 >>> 0 | 0) >>> 0 & (i63 != 4294967295 & i43 != 4294967295 | 0) | 0;
- };
+ i43 = _sbrk(0 | 0) | 0;
+ wasm2asm_i32$2 = (i63 >>> 0 | 0) >>> 0 < (i43 >>> 0 | 0) >>> 0 & (i63 != 4294967295 & i43 != 4294967295 | 0) | 0;
} else wasm2asm_i32$2 = 0;
if (wasm2asm_i32$2) {
i60 = i43 - i63 | 0;
@@ -2209,10 +2203,8 @@ function asmFunc() {
if ((_fputs(i1 | 0, i2 | 0) | 0 | 0) < (0 | 0)) i4 = 1; else {
if (HEAP8[(i2 + 75 | 0) >> 0] != 10) {
i5 = i2 + 20 | 0;
- wasm2asm_i32$1 = {
- i6 = HEAPU32[i5 >> 2];
- wasm2asm_i32$1 = (i6 >>> 0 | 0) >>> 0 < (HEAPU32[(i2 + 16 | 0) >> 2] >>> 0 | 0) >>> 0;
- };
+ i6 = HEAPU32[i5 >> 2];
+ wasm2asm_i32$1 = (i6 >>> 0 | 0) >>> 0 < (HEAPU32[(i2 + 16 | 0) >> 2] >>> 0 | 0) >>> 0;
} else wasm2asm_i32$1 = 0;
if (wasm2asm_i32$1) {
HEAP32[i5 >> 2] = i6 + 1 | 0;
@@ -2313,13 +2305,9 @@ function asmFunc() {
HEAP32[(i1 + 36 | 0) >> 2] = 5;
if ((HEAPU32[i1 >> 2] & 64 | 0) == 0) {
HEAP32[i5 >> 2] = HEAPU32[(i1 + 60 | 0) >> 2];
- wasm2asm_i32$1 = {
- HEAP32[(i5 + 4 | 0) >> 2] = 21505;
- wasm2asm_i32$1 = {
- HEAP32[(i5 + 8 | 0) >> 2] = i4 + 12 | 0;
- wasm2asm_i32$1 = (___syscall54(54 | 0, i5 | 0) | 0) != 0;
- };
- };
+ HEAP32[(i5 + 4 | 0) >> 2] = 21505;
+ HEAP32[(i5 + 8 | 0) >> 2] = i4 + 12 | 0;
+ wasm2asm_i32$1 = (___syscall54(54 | 0, i5 | 0) | 0) != 0;
} else wasm2asm_i32$1 = 0;
if (wasm2asm_i32$1) HEAP8[(i1 + 75 | 0) >> 0] = 4294967295;
i5 = ___stdio_write(i1 | 0, i2 | 0, i3 | 0) | 0;