diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-02-08 13:33:34 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-02-08 13:33:34 -0800 |
commit | 2262204746437423211930d83d8ea336be3efac2 (patch) | |
tree | 7d85bb4d6ab8531abc074d3a5043fb00963fdb9e /src/wasm-s-parser.h | |
parent | 271504de91e3f396251041f94c0f29094af92207 (diff) | |
parent | 28ac77ff3f5668d543a6c7a99f3e1b1dceff6201 (diff) | |
download | binaryen-2262204746437423211930d83d8ea336be3efac2.tar.gz binaryen-2262204746437423211930d83d8ea336be3efac2.tar.bz2 binaryen-2262204746437423211930d83d8ea336be3efac2.zip |
Merge pull request #189 from WebAssembly/br_if-changes
br_if updates
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r-- | src/wasm-s-parser.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index dc946fc3b..ce216fd8e 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -868,10 +868,6 @@ private: Expression* makeBreak(Element& s) { auto ret = allocator.alloc<Break>(); size_t i = 1; - if (s[0]->str() == BR_IF) { - ret->condition = parseExpression(s[i]); - i++; - } if (s[i]->dollared()) { ret->name = s[i]->str(); } else { @@ -881,7 +877,14 @@ private: ret->name = labelStack[labelStack.size() - 1 - offset]; } i++; - if (i < s.size()) { + if (i == s.size()) return ret; + if (s[0]->str() == BR_IF) { + if (i + 1 < s.size()) { + ret->value = parseExpression(s[i]); + i++; + } + ret->condition = parseExpression(s[i]); + } else { ret->value = parseExpression(s[i]); } return ret; |