diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-11 23:16:13 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-11 23:16:13 -0500 |
commit | 84288282ef586d5664159b9a9fc54dacfc89c052 (patch) | |
tree | 602ff56fc98c75efe0d54f49cab4f11d57e99d40 | |
parent | 339b2bfa765a95cdb7d7a991257b59fafe23aef1 (diff) | |
download | binaryen-84288282ef586d5664159b9a9fc54dacfc89c052.tar.gz binaryen-84288282ef586d5664159b9a9fc54dacfc89c052.tar.bz2 binaryen-84288282ef586d5664159b9a9fc54dacfc89c052.zip |
handle missing assign in call as a discard
-rw-r--r-- | src/s2wasm.h | 13 |
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) { |