diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-05-21 08:07:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-21 08:07:56 -0700 |
commit | 21cb9e8fa9f12680df0a25d969c935c79b388d3e (patch) | |
tree | e26a0fd5865003a7a18ab8735ff6411fc2bf465f /src/cfg/Relooper.cpp | |
parent | 9e0958982d2044949746c2d8290dbc0368546ebf (diff) | |
parent | 026accbe55dde6b9d769292195c3ad1ac0a3b8b0 (diff) | |
download | binaryen-21cb9e8fa9f12680df0a25d969c935c79b388d3e.tar.gz binaryen-21cb9e8fa9f12680df0a25d969c935c79b388d3e.tar.bz2 binaryen-21cb9e8fa9f12680df0a25d969c935c79b388d3e.zip |
Merge pull request #1019 from WebAssembly/fuzz
More fuzz bug fixes
Diffstat (limited to 'src/cfg/Relooper.cpp')
-rw-r--r-- | src/cfg/Relooper.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cfg/Relooper.cpp b/src/cfg/Relooper.cpp index 9fcc9c8be..b326d761d 100644 --- a/src/cfg/Relooper.cpp +++ b/src/cfg/Relooper.cpp @@ -328,7 +328,12 @@ wasm::Expression* Block::Render(RelooperBuilder& Builder, bool InLoop) { NextOuter->list.push_back(Outer); Outer->name = CurrName; // breaking on Outer leads to the content in NextOuter NextOuter->list.push_back(CurrContent); - NextOuter->list.push_back(Builder.makeBreak(SwitchLeave)); + // if this is not a dead end, also need to break to the outside + // this is both an optimization, and avoids incorrectness as adding + // a brak in unreachable code can make a place look reachable that isn't + if (CurrContent->type != wasm::unreachable) { + NextOuter->list.push_back(Builder.makeBreak(SwitchLeave)); + } // prepare for more nesting Outer = NextOuter; } else { |