summaryrefslogtreecommitdiff
path: root/src/passes/RemoveUnusedNames.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/RemoveUnusedNames.cpp')
-rw-r--r--src/passes/RemoveUnusedNames.cpp6
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();
}