summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/s2wasm.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index 0c56e4bfb..b9ae08c02 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -264,10 +264,10 @@ private:
}
};
auto setOutput = [&](Expression* curr, Name assign) {
- if (assign.str[1] == 'p') { // push
- estack.push_back(curr);
- } else if (assign.str[1] == 'd') { // discard
+ if (assign.isNull() || assign.str[1] == 'd') { // discard
bstack.back()->list.push_back(curr);
+ } else if (assign.str[1] == 'p') { // push
+ estack.push_back(curr);
} else { // set to a local
auto set = allocator.alloc<SetLocal>();
set->name = assign;
@@ -351,8 +351,11 @@ private:
default: abort_on("i32.?");
}
} else if (match("call")) {
- Name assign = getAssign();
- skipComma();
+ Name assign;
+ if (*s == '$') {
+ assign = getAssign();
+ skipComma();
+ }
auto curr = allocator.alloc<Call>();
curr->target = getCommaSeparated();
while (1) {