diff options
Diffstat (limited to 'src/passes/RemoveUnusedNames.cpp')
-rw-r--r-- | src/passes/RemoveUnusedNames.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/passes/RemoveUnusedNames.cpp b/src/passes/RemoveUnusedNames.cpp index 3db5a2173..3b04522ad 100644 --- a/src/passes/RemoveUnusedNames.cpp +++ b/src/passes/RemoveUnusedNames.cpp @@ -42,6 +42,8 @@ struct RemoveUnusedNames : public WalkerPass<PostWalker<RemoveUnusedNames>> { branchesSeen[curr->default_].insert(curr); } + void visitBrOnExn(BrOnExn* curr) { branchesSeen[curr->name].insert(curr); } + void handleBreakTarget(Name& name) { if (name.is()) { if (branchesSeen.find(name) == branchesSeen.end()) { @@ -73,6 +75,10 @@ struct RemoveUnusedNames : public WalkerPass<PostWalker<RemoveUnusedNames>> { if (sw->default_ == curr->name) { sw->default_ = child->name; } + } else if (BrOnExn* br = branch->dynCast<BrOnExn>()) { + if (br->name == curr->name) { + br->name = child->name; + } } else { WASM_UNREACHABLE(); } |