summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wasm2asm.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index a19416e04..46a9bc969 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -397,7 +397,7 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) {
Ref ret = visit(curr, result);
// if it's not already a statement, then it's an expression, and we need to assign it
// (if it is a statement, it already assigns to the result var)
- if (!isStatement(curr)) {
+ if (!isStatement(curr) && result != NO_RESULT) { // XXX also not EXPRESSION_RESULT?
ret = ValueBuilder::makeStatement(ValueBuilder::makeAssign(ValueBuilder::makeName(result), ret));
}
return ret;
@@ -496,10 +496,10 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) {
Ref visitIf(If *curr) override {
IString temp;
Ref condition = visitForExpression(curr->condition, i32, temp);
- Ref ifTrue = visit(curr->ifTrue, result);
+ Ref ifTrue = visitAndAssign(curr->ifTrue, result);
Ref ifFalse;
if (curr->ifFalse) {
- ifFalse = visit(curr->ifFalse, result);
+ ifFalse = visitAndAssign(curr->ifFalse, result);
}
if (temp.isNull()) {
return ValueBuilder::makeIf(condition, ifTrue, ifFalse); // simple if