summaryrefslogtreecommitdiff
path: root/src/passes/OptimizeInstructions.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-21 19:33:11 -0700
committerGitHub <noreply@github.com>2016-09-21 19:33:11 -0700
commit8be82627c6a8cbded0dab67ad1f31906a54ba78c (patch)
treeb7b14f1899ffe39a7562007474a58948685146c8 /src/passes/OptimizeInstructions.cpp
parent7292ef9c863a0766c697cc0a77516447ff652820 (diff)
parent740e36eab98d679387fea60cd642591a69ce809f (diff)
downloadbinaryen-8be82627c6a8cbded0dab67ad1f31906a54ba78c.tar.gz
binaryen-8be82627c6a8cbded0dab67ad1f31906a54ba78c.tar.bz2
binaryen-8be82627c6a8cbded0dab67ad1f31906a54ba78c.zip
Merge pull request #703 from WebAssembly/spec-update
Spec update - get us passing the 0xc spec tests (minus stacky stuff)
Diffstat (limited to 'src/passes/OptimizeInstructions.cpp')
-rw-r--r--src/passes/OptimizeInstructions.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp
index 669a19b89..48639a341 100644
--- a/src/passes/OptimizeInstructions.cpp
+++ b/src/passes/OptimizeInstructions.cpp
@@ -55,15 +55,20 @@ struct PatternDatabase {
input = strdup(
#include "OptimizeInstructions.wast.processed"
);
- SExpressionParser parser(input);
- Element& root = *parser.root;
- SExpressionWasmBuilder builder(wasm, *root[0]);
- // parse module form
- auto* func = wasm.getFunction("patterns");
- auto* body = func->body->cast<Block>();
- for (auto* item : body->list) {
- auto* pair = item->cast<Block>();
- patternMap[pair->list[0]->_id].emplace_back(pair->list[0], pair->list[1]);
+ try {
+ SExpressionParser parser(input);
+ Element& root = *parser.root;
+ SExpressionWasmBuilder builder(wasm, *root[0]);
+ // parse module form
+ auto* func = wasm.getFunction("patterns");
+ auto* body = func->body->cast<Block>();
+ for (auto* item : body->list) {
+ auto* pair = item->cast<Block>();
+ patternMap[pair->list[0]->_id].emplace_back(pair->list[0], pair->list[1]);
+ }
+ } catch (ParseException& p) {
+ p.dump(std::cerr);
+ Fatal() << "error in parsing wasm binary";
}
}