summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/RemoveUnusedNames.cpp24
-rw-r--r--test/emcc_O2_hello_world.fromasm38
-rw-r--r--test/emcc_hello_world.fromasm68
-rw-r--r--test/unit.fromasm4
4 files changed, 66 insertions, 68 deletions
diff --git a/src/passes/RemoveUnusedNames.cpp b/src/passes/RemoveUnusedNames.cpp
index 9c0b4a83f..62de48567 100644
--- a/src/passes/RemoveUnusedNames.cpp
+++ b/src/passes/RemoveUnusedNames.cpp
@@ -24,25 +24,23 @@
namespace wasm {
struct RemoveUnusedNames : public Pass {
- std::set<Name> used;
-
- void prepare(PassRunner* runner, Module *module) override {
- struct Scanner : public WasmWalker {
- std::set<Name>& used;
- Scanner(std::set<Name>& used) : used(used) {}
- void visitBreak(Break *curr) override {
- used.insert(curr->name);
- }
- };
- Scanner scanner(used);
- scanner.startWalk(module);
+ // We maintain a list of branches that we saw in children, then when we reach
+ // a parent block, we know if it was branched to
+ std::set<Name> branchesSeen;
+
+ void visitBreak(Break *curr) override {
+ branchesSeen.insert(curr->name);
}
void visitBlock(Block *curr) override {
- if (curr->name.is() && used.count(curr->name) == 0) {
+ if (curr->name.is() && branchesSeen.count(curr->name) == 0) {
curr->name = Name();
}
}
+
+ void visitFunction(Function *curr) override {
+ branchesSeen.clear();
+ }
};
static RegisterPass<RemoveUnusedNames> registerPass("remove-unused-names", "removes names from locations that are never branched to");
diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm
index 5104fbb2b..736e6bd6d 100644
--- a/test/emcc_O2_hello_world.fromasm
+++ b/test/emcc_O2_hello_world.fromasm
@@ -9280,7 +9280,7 @@
(local $i22 i32)
(local $i23 i32)
(local $i24 i32)
- (block $topmost
+ (block
(set_local $i4
(i32.load align=4
(i32.const 8)
@@ -9743,7 +9743,7 @@
(local $i13 i32)
(local $i14 i32)
(local $i15 i32)
- (block $topmost
+ (block
(set_local $i4
(i32.add
(get_local $i3)
@@ -10008,7 +10008,7 @@
(local $i6 i32)
(local $i7 i32)
(local $i8 i32)
- (block $topmost
+ (block
(block $do-once$0
(if_else
(get_local $i1)
@@ -10207,7 +10207,7 @@
(local $i9 i32)
(local $i10 i32)
(local $i11 i32)
- (block $topmost
+ (block
(set_local $i2
(get_local $i1)
)
@@ -10411,7 +10411,7 @@
(local $i9 i32)
(local $i10 i32)
(local $i11 i32)
- (block $topmost
+ (block
(set_local $i3
(i32.load align=4
(i32.const 8)
@@ -10594,7 +10594,7 @@
(local $i6 i32)
(local $i7 i32)
(local $i8 i32)
- (block $topmost
+ (block
(set_local $i2
(i32.add
(get_local $i1)
@@ -10897,7 +10897,7 @@
(local $i5 i32)
(local $i6 i32)
(local $i7 i32)
- (block $topmost
+ (block
(set_local $i4
(i32.add
(get_local $i1)
@@ -11055,7 +11055,7 @@
(local $i4 i32)
(local $i5 i32)
(local $i6 i32)
- (block $topmost
+ (block
(set_local $i2
(i32.load align=4
(i32.const 52)
@@ -11180,7 +11180,7 @@
(local $i5 i32)
(local $i6 i32)
(local $i7 i32)
- (block $topmost
+ (block
(set_local $i4
(i32.load align=4
(i32.const 8)
@@ -11277,7 +11277,7 @@
(local $i2 i32)
(local $i3 i32)
(local $i4 i32)
- (block $topmost
+ (block
(set_local $i2
(i32.add
(get_local $i1)
@@ -11390,7 +11390,7 @@
(local $i7 i32)
(local $i8 i32)
(local $i9 i32)
- (block $topmost
+ (block
(set_local $i5
(i32.mul
(get_local $i3)
@@ -11467,7 +11467,7 @@
(func $___stdout_write (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
(local $i4 i32)
(local $i5 i32)
- (block $topmost
+ (block
(set_local $i4
(i32.load align=4
(i32.const 8)
@@ -11679,7 +11679,7 @@
(func $___stdio_close (param $i1 i32) (result i32)
(local $i2 i32)
(local $i3 i32)
- (block $topmost
+ (block
(set_local $i2
(i32.load align=4
(i32.const 8)
@@ -11777,7 +11777,7 @@
)
(func $___syscall_ret (param $i1 i32) (result i32)
(local $i2 i32)
- (block $topmost
+ (block
(if_else
(i32.gt_u
(get_local $i1)
@@ -11818,7 +11818,7 @@
)
(func $stackAlloc (param $i1 i32) (result i32)
(local $i2 i32)
- (block $topmost
+ (block
(set_local $i2
(i32.load align=4
(i32.const 8)
@@ -11850,7 +11850,7 @@
)
(func $___errno_location (result i32)
(local $i1 i32)
- (block $topmost
+ (block
(if_else
(i32.eq
(i32.load align=4
@@ -11962,7 +11962,7 @@
)
)
(func $b1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
- (block $topmost
+ (block
(call_import $abort
(i32.const 1)
)
@@ -11982,7 +11982,7 @@
)
)
(func $b0 (param $i1 i32) (result i32)
- (block $topmost
+ (block
(call_import $abort
(i32.const 0)
)
@@ -12003,7 +12003,7 @@
)
)
(func $_main (result i32)
- (block $topmost
+ (block
(call $_puts
(i32.const 672)
)
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm
index b578f9caf..5e1a98ac3 100644
--- a/test/emcc_hello_world.fromasm
+++ b/test/emcc_hello_world.fromasm
@@ -47,7 +47,7 @@
(table $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2)
(func $stackAlloc (param $size i32) (result i32)
(local $ret i32)
- (block $topmost
+ (block
(set_local $ret
(i32.load align=4
(i32.const 8)
@@ -311,7 +311,7 @@
(local $$vararg_buffer i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -374,7 +374,7 @@
(local $$x$addr$0 f64)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -554,7 +554,7 @@
(local $$call f64)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -591,7 +591,7 @@
(local $$tobool8 i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -802,7 +802,7 @@
(local $$tobool i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -855,7 +855,7 @@
(local $$vararg_buffer i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -934,7 +934,7 @@
(local $$write i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -1096,7 +1096,7 @@
(local $$vararg_ptr4 i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -1271,7 +1271,7 @@
(local $$wpos i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -1568,7 +1568,7 @@
(local $$call i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -1623,7 +1623,7 @@
(func $___lockfile (param $$f i32) (result i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -1716,7 +1716,7 @@
(local $$wpos i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -2358,7 +2358,7 @@
(local $label i32)
(local $sp i32)
(local $stop i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -2830,7 +2830,7 @@
(local $$write15 i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -3212,7 +3212,7 @@
(local $$wpos i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -3435,7 +3435,7 @@
(local $$tobool i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -3825,7 +3825,7 @@
(local $$tobool i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -3917,7 +3917,7 @@
(local $$xor i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -4456,7 +4456,7 @@
(local $$sub i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -4519,7 +4519,7 @@
(local $$write i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -5815,7 +5815,7 @@
(local $$z$7$ph$i i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -15939,7 +15939,7 @@
(local $$y$010 i32)
(local $label i32)
(local $sp i32)
- (block $topmost
+ (block
(set_local $sp
(i32.load align=4
(i32.const 8)
@@ -30468,7 +30468,7 @@
(func $_i64Subtract (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32)
(local $l i32)
(local $h i32)
- (block $topmost
+ (block
(set_local $l
(i32.sub
(get_local $a)
@@ -30505,7 +30505,7 @@
(func $_i64Add (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32)
(local $l i32)
(local $h i32)
- (block $topmost
+ (block
(set_local $l
(i32.add
(get_local $a)
@@ -30538,7 +30538,7 @@
(local $value4 i32)
(local $stop4 i32)
(local $unaligned i32)
- (block $topmost
+ (block
(set_local $stop
(i32.add
(get_local $ptr)
@@ -31144,7 +31144,7 @@
(local $$8 i32)
(local $$11 i32)
(local $$12 i32)
- (block $topmost
+ (block
(set_local $$1
(i32.and
(get_local $$a)
@@ -31250,7 +31250,7 @@
(local $$7$1 i32)
(local $$8$0 i32)
(local $$10$0 i32)
- (block $topmost
+ (block
(set_local $$1$0
(i32.or
(i32.shr_s
@@ -31428,7 +31428,7 @@
(local $$10$0 i32)
(local $$10$1 i32)
(local $__stackBase__ i32)
- (block $topmost
+ (block
(set_local $__stackBase__
(i32.load align=4
(i32.const 8)
@@ -31623,7 +31623,7 @@
(local $$1$0 i32)
(local $$1$1 i32)
(local $$2 i32)
- (block $topmost
+ (block
(set_local $$x_sroa_0_0_extract_trunc
(get_local $$a$0)
)
@@ -31679,7 +31679,7 @@
)
(func $___udivdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32)
(local $$1$0 i32)
- (block $topmost
+ (block
(set_local $$1$0
(call $___udivmoddi4
(get_local $$a$0)
@@ -31695,7 +31695,7 @@
(func $___uremdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32)
(local $$rem i32)
(local $__stackBase__ i32)
- (block $topmost
+ (block
(set_local $__stackBase__
(i32.load align=4
(i32.const 8)
@@ -33032,7 +33032,7 @@
)
)
(func $b0 (param $p0 i32) (result i32)
- (block $topmost
+ (block
(call_import $nullFunc_ii
(i32.const 0)
)
@@ -33040,7 +33040,7 @@
)
)
(func $b1 (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32)
- (block $topmost
+ (block
(call_import $nullFunc_iiii
(i32.const 1)
)
diff --git a/test/unit.fromasm b/test/unit.fromasm
index 4b95dfea1..df54513fa 100644
--- a/test/unit.fromasm
+++ b/test/unit.fromasm
@@ -261,7 +261,7 @@
)
(func $big_uint_div_u (result i32)
(local $x i32)
- (block $topmost
+ (block
(set_local $x
(i32.and
(i32.div_u
@@ -369,7 +369,7 @@
(func $smallCompare (result i32)
(local $i i32)
(local $j i32)
- (block $topmost
+ (block
(if
(i32.lt_s
(get_local $i)