diff options
author | Michael Bebenita <mbebenita@gmail.com> | 2016-05-06 11:10:46 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-05-06 11:10:46 -0700 |
commit | cff4b04d4306e0192c914c2a6281992e2610109c (patch) | |
tree | eaaff0074c4bbb376eea233ce030c4fc70b579a0 | |
parent | 07f0bad2540a6023ab7b0029b9532e1d44b41c03 (diff) | |
download | binaryen-cff4b04d4306e0192c914c2a6281992e2610109c.tar.gz binaryen-cff4b04d4306e0192c914c2a6281992e2610109c.tar.bz2 binaryen-cff4b04d4306e0192c914c2a6281992e2610109c.zip |
Fix BreakSeeker for switch default targets. (#447)
-rw-r--r-- | src/ast_utils.h | 1 | ||||
-rw-r--r-- | test/reg_switch.wast | 13 | ||||
-rw-r--r-- | test/reg_switch.wast.fromBinary | 17 |
3 files changed, 31 insertions, 0 deletions
diff --git a/src/ast_utils.h b/src/ast_utils.h index ebb6861da..e09104cc6 100644 --- a/src/ast_utils.h +++ b/src/ast_utils.h @@ -36,6 +36,7 @@ struct BreakSeeker : public PostWalker<BreakSeeker, Visitor<BreakSeeker>> { for (auto name : curr->targets) { if (name == target) found++; } + if (curr->default_ == target) found++; } static bool has(Expression* tree, Name target) { diff --git a/test/reg_switch.wast b/test/reg_switch.wast new file mode 100644 index 000000000..b53d45f54 --- /dev/null +++ b/test/reg_switch.wast @@ -0,0 +1,13 @@ +(module + (memory 0) + (func $0 + (if + (nop) + (block $A + (br_table $A + (nop) + ) + ) + ) + ) +) diff --git a/test/reg_switch.wast.fromBinary b/test/reg_switch.wast.fromBinary new file mode 100644 index 000000000..89a2fe061 --- /dev/null +++ b/test/reg_switch.wast.fromBinary @@ -0,0 +1,17 @@ +(module + (memory 0) + (type $0 (func)) + (func $0 (type $0) + (if + (nop) + (block $label$0 + (block $label$1 + (br_table $label$1 + (nop) + ) + ) + ) + ) + ) +) + |