summaryrefslogtreecommitdiff
path: root/src/passes/RemoveUnusedBrs.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-01-07 16:22:46 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-01-07 16:23:14 -0800
commitd0863fa49acc642353c99aa9c46a1aacc4be57d0 (patch)
tree6ec2dbeff39f1a2293d794233ce4107721255ac0 /src/passes/RemoveUnusedBrs.cpp
parent5110e2adc9351c7df283419041c154bf79eaddc7 (diff)
downloadbinaryen-d0863fa49acc642353c99aa9c46a1aacc4be57d0.tar.gz
binaryen-d0863fa49acc642353c99aa9c46a1aacc4be57d0.tar.bz2
binaryen-d0863fa49acc642353c99aa9c46a1aacc4be57d0.zip
optimize RemoveUnusedBrs some more - handle values #84
Diffstat (limited to 'src/passes/RemoveUnusedBrs.cpp')
-rw-r--r--src/passes/RemoveUnusedBrs.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/passes/RemoveUnusedBrs.cpp b/src/passes/RemoveUnusedBrs.cpp
index ff50847de..5f3018c5f 100644
--- a/src/passes/RemoveUnusedBrs.cpp
+++ b/src/passes/RemoveUnusedBrs.cpp
@@ -29,9 +29,13 @@ struct RemoveUnusedBrs : public Pass {
if (curr->list.size() == 0) return;
Break* last = curr->list.back()->dyn_cast<Break>();
if (!last) return;
- if (last->value) return;
+ if (last->condition) return;
if (last->name == curr->name) {
- curr->list.pop_back();
+ if (!last->value) {
+ curr->list.pop_back();
+ } else {
+ curr->list[curr->list.size()-1] = last->value; // can replace with the value
+ }
}
}
};