Before:
(module
)
Keeping: <none>
After:
(module
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32)))
 (global $glob (mut i32) (i32.const 7))
 (memory $mem 3 42 shared)
 (table $tab 3 42 funcref)
 (tag $e (type $0) (param i32))
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32)))
 (memory $mem 3 42 shared)
 (table $tab 3 42 funcref)
 (tag $e (type $0) (param i32))
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32)))
 (import "env" "mem" (memory $mem 3 42 shared))
 (import "env" "tab" (table $tab 3 42 funcref))
 (import "env" "glob" (global $glob (mut i32)))
 (import "env" "e" (tag $e (type $0) (param i32)))
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32)))
 (import "env" "mem" (memory $mem 3 42 shared))
 (import "env" "tab" (table $tab 3 42 funcref))
 (import "env" "e" (tag $e (type $0) (param i32)))
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32)))
 (global $glob (mut i32) (i32.const 7))
 (memory $mem 3 42 shared)
 (table $tab 3 42 funcref)
 (tag $e (type $0) (param i32))
 (export "mem" (memory $mem))
 (export "tab" (table $tab))
 (export "glob" (global $glob))
 (export "e" (tag $e))
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32)))
 (global $glob (mut i32) (i32.const 7))
 (memory $mem 3 42 shared)
 (table $tab 3 42 funcref)
 (tag $e (type $0) (param i32))
 (export "mem" (memory $mem))
 (export "tab" (table $tab))
 (export "glob" (global $glob))
 (export "e" (tag $e))
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (export "foo" (func $foo))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (export "foo" (func $foo))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 1 funcref)
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 1 funcref)
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 2 funcref)
 (elem $0 (i32.const 0) $foo $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 2 funcref)
 (elem $0 (i32.const 0) $foo $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 1 funcref)
 (elem $0 (global.get $base) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 1 funcref)
 (elem $0 (global.get $base) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 2 funcref)
 (elem $0 (global.get $base) $foo $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 2 funcref)
 (elem $0 (global.get $base) $foo $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "foo" (func $foo (type $0) (param i32) (result i32)))
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "foo" (func $foo (type $0) (param i32) (result i32)))
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "foo" (func $foo (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (elem $0 (i32.const 42) $foo)
 (export "foo" (func $foo))
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "foo" (func $foo (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (elem $0 (i32.const 42) $foo)
 (export "foo" (func $foo))
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (import "env" "foo" (func $foo (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (elem $0 (global.get $base) $foo)
 (export "foo" (func $foo))
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (import "env" "foo" (func $foo (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (elem $0 (global.get $base) $foo)
 (export "foo" (func $foo))
)
Secondary:
(module
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (export "foo" (func $foo))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $0 1 funcref)
 (elem $0 (i32.const 0) $placeholder_0)
 (export "foo" (func $trampoline_foo))
 (export "%table" (table $0))
 (func $trampoline_foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 1 funcref)
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $table 1 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (i32.const 0) func $trampoline_foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "%table" (table $0))
 (func $trampoline_foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 2 funcref)
 (elem $0 (i32.const 0) $foo $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $table 2 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (i32.const 0) func $trampoline_foo $trampoline_foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "%table" (table $0))
 (func $trampoline_foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 1000 funcref)
 (elem $0 (i32.const 42) $foo)
 (export "foo" (func $foo))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (i32.const 42) func $trampoline_foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "foo" (func $trampoline_foo))
 (export "%table" (table $0))
 (func $trampoline_foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 1000 funcref)
 (elem $0 (global.get $base) $foo)
 (export "foo" (func $foo))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (global.get $base) func $trampoline_foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "foo" (func $trampoline_foo))
 (export "%table" (table $0))
 (func $trampoline_foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 1000 funcref)
 (elem $0 (global.get $base) $foo $foo)
 (export "foo" (func $foo))
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $table 1000 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (global.get $base) func $trampoline_foo $trampoline_foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "foo" (func $trampoline_foo))
 (export "%table" (table $0))
 (func $trampoline_foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func))
 (type $1 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (table $table 1000 funcref)
 (elem $0 (global.get $base) $null $foo)
 (export "foo" (func $foo))
 (func $null (type $0)
 )
 (func $foo (type $1) (param $0 i32) (result i32)
  (local.get $0)
 )
)
Keeping: null
After:
(module
 (type $0 (func))
 (type $1 (func (param i32) (result i32)))
 (import "env" "base" (global $base i32))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $1) (param i32) (result i32)))
 (table $table 1000 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (global.get $base) func $null $trampoline_foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "foo" (func $trampoline_foo))
 (export "%table" (table $0))
 (func $null (type $0)
 )
 (func $trampoline_foo (type $1) (param $0 i32) (result i32)
  (call_indirect $0 (type $1)
   (local.get $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (local.get $0)
 )
)


Before:
(module
 (type $0 (func))
 (func $foo (type $0)
  (call $bar)
 )
 (func $bar (type $0)
  (nop)
 )
)
Keeping: bar, foo
After:
(module
 (type $0 (func))
 (func $foo (type $0)
  (call $bar)
 )
 (func $bar (type $0)
  (nop)
 )
)
Secondary:
(module
)


Before:
(module
 (type $0 (func))
 (func $foo (type $0)
  (call $bar)
 )
 (func $bar (type $0)
  (nop)
 )
)
Keeping: bar
After:
(module
 (type $0 (func))
 (export "%bar" (func $bar))
 (func $bar (type $0)
  (nop)
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%bar" (func $bar (exact (type $0))))
 (func $foo (type $0)
  (call $bar)
 )
)


Before:
(module
 (type $0 (func))
 (func $foo (type $0)
  (call $bar)
 )
 (func $bar (type $0)
  (nop)
 )
)
Keeping: foo
After:
(module
 (type $0 (func))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (table $0 1 funcref)
 (elem $0 (i32.const 0) $placeholder_0)
 (export "%table" (table $0))
 (func $foo (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $bar)
 (func $bar (type $0)
  (nop)
 )
)


Before:
(module
 (type $0 (func))
 (func $foo (type $0)
  (call $bar)
 )
 (func $bar (type $0)
  (nop)
 )
)
Keeping: <none>
After:
(module
)
Secondary:
(module
 (type $0 (func))
 (func $bar (type $0)
  (nop)
 )
 (func $foo (type $0)
  (call $bar)
 )
)


Before:
(module
 (type $0 (func))
 (export "%foo" (func $bar))
 (func $foo (type $0)
  (nop)
 )
 (func $bar (type $0)
  (call $foo)
 )
)
Keeping: foo
After:
(module
 (type $0 (func))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (table $0 1 funcref)
 (elem $0 (i32.const 0) $placeholder_0)
 (export "%foo" (func $trampoline_bar))
 (export "%foo_1" (func $foo))
 (export "%table" (table $0))
 (func $foo (type $0)
  (nop)
 )
 (func $trampoline_bar (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 1 funcref))
 (import "primary" "%foo_1" (func $foo (exact (type $0))))
 (elem $0 (i32.const 0) $bar)
 (func $bar (type $0)
  (call $foo)
 )
)


Before:
(module
 (type $0 (func))
 (table $table 4 funcref)
 (elem $0 (i32.const 0) $foo $bar $baz $quux)
 (func $foo (type $0)
  (nop)
 )
 (func $bar (type $0)
  (nop)
 )
 (func $baz (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
)
Keeping: bar, quux
After:
(module
 (type $0 (func))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (import "placeholder.deferred" "1" (func $placeholder_1 (type $0)))
 (table $table 4 funcref)
 (table $0 2 funcref)
 (elem $0 (table $table) (i32.const 0) func $trampoline_foo $bar $trampoline_baz $quux)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0 $placeholder_1)
 (export "%table" (table $0))
 (func $bar (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
 (func $trampoline_foo (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
 (func $trampoline_baz (type $0)
  (call_indirect $0 (type $0)
   (i32.const 1)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 2 funcref))
 (elem $0 (i32.const 0) $foo $baz)
 (func $baz (type $0)
  (nop)
 )
 (func $foo (type $0)
  (nop)
 )
)


Before:
(module
 (type $0 (func))
 (import "env" "base" (global $base i32))
 (table $table 4 funcref)
 (elem $0 (global.get $base) $foo $bar $baz $quux)
 (func $foo (type $0)
  (nop)
 )
 (func $bar (type $0)
  (nop)
 )
 (func $baz (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
)
Keeping: bar, quux
After:
(module
 (type $0 (func))
 (import "env" "base" (global $base i32))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (import "placeholder.deferred" "1" (func $placeholder_1 (type $0)))
 (table $table 4 funcref)
 (table $0 2 funcref)
 (elem $0 (table $table) (global.get $base) func $trampoline_foo $bar $trampoline_baz $quux)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0 $placeholder_1)
 (export "%table" (table $0))
 (func $bar (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
 (func $trampoline_foo (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
 (func $trampoline_baz (type $0)
  (call_indirect $0 (type $0)
   (i32.const 1)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 2 funcref))
 (elem $0 (i32.const 0) $foo $baz)
 (func $baz (type $0)
  (nop)
 )
 (func $foo (type $0)
  (nop)
 )
)


Before:
(module
 (type $0 (func))
 (table $table 4 funcref)
 (elem $0 (i32.const 0) $foo $bar $baz $quux)
 (func $foo (type $0)
  (nop)
 )
 (func $bar (type $0)
  (nop)
 )
 (func $baz (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
)
Keeping: baz
After:
(module
 (type $0 (func))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (import "placeholder.deferred" "1" (func $placeholder_1 (type $0)))
 (import "placeholder.deferred" "2" (func $placeholder_2 (type $0)))
 (table $table 4 funcref)
 (table $0 3 funcref)
 (elem $0 (table $table) (i32.const 0) func $trampoline_foo $trampoline_bar $baz $trampoline_quux)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0 $placeholder_1 $placeholder_2)
 (export "%table" (table $0))
 (func $baz (type $0)
  (nop)
 )
 (func $trampoline_foo (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
 (func $trampoline_bar (type $0)
  (call_indirect $0 (type $0)
   (i32.const 1)
  )
 )
 (func $trampoline_quux (type $0)
  (call_indirect $0 (type $0)
   (i32.const 2)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 3 funcref))
 (elem $0 (i32.const 0) $foo $bar $quux)
 (func $bar (type $0)
  (nop)
 )
 (func $foo (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
)


Before:
(module
 (type $0 (func))
 (import "env" "base" (global $base i32))
 (table $table 4 funcref)
 (elem $0 (global.get $base) $foo $bar $baz $quux)
 (func $foo (type $0)
  (nop)
 )
 (func $bar (type $0)
  (nop)
 )
 (func $baz (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
)
Keeping: baz
After:
(module
 (type $0 (func))
 (import "env" "base" (global $base i32))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (import "placeholder.deferred" "1" (func $placeholder_1 (type $0)))
 (import "placeholder.deferred" "2" (func $placeholder_2 (type $0)))
 (table $table 4 funcref)
 (table $0 3 funcref)
 (elem $0 (table $table) (global.get $base) func $trampoline_foo $trampoline_bar $baz $trampoline_quux)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0 $placeholder_1 $placeholder_2)
 (export "%table" (table $0))
 (func $baz (type $0)
  (nop)
 )
 (func $trampoline_foo (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
 (func $trampoline_bar (type $0)
  (call_indirect $0 (type $0)
   (i32.const 1)
  )
 )
 (func $trampoline_quux (type $0)
  (call_indirect $0 (type $0)
   (i32.const 2)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 3 funcref))
 (elem $0 (i32.const 0) $foo $bar $quux)
 (func $bar (type $0)
  (nop)
 )
 (func $foo (type $0)
  (nop)
 )
 (func $quux (type $0)
  (nop)
 )
)


Before:
(module
 (type $0 (func))
 (import "env" "base" (global $base i32))
 (table $table 2 funcref)
 (elem $0 (global.get $base) $foo $bar)
 (func $foo (type $0)
  (nop)
 )
 (func $bar (type $0)
  (call $foo)
 )
)
Keeping: foo
After:
(module
 (type $0 (func))
 (import "env" "base" (global $base i32))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (table $table 2 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (global.get $base) func $foo $trampoline_bar)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "%foo" (func $foo))
 (export "%table" (table $0))
 (func $foo (type $0)
  (nop)
 )
 (func $trampoline_bar (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 1 funcref))
 (import "primary" "%foo" (func $foo (exact (type $0))))
 (elem $0 (i32.const 0) $bar)
 (func $bar (type $0)
  (call $foo)
 )
)


Before:
(module
 (type $0 (func (param i32) (result i32)))
 (table $table 1 1 funcref)
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0) (param $0 i32) (result i32)
  (call $bar
   (i32.const 0)
  )
 )
 (func $bar (type $0) (param $0 i32) (result i32)
  (call $foo
   (i32.const 1)
  )
 )
)
Keeping: foo
After:
(module
 (type $0 (func (param i32) (result i32)))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0) (param i32) (result i32)))
 (table $table 1 1 funcref)
 (table $0 1 funcref)
 (elem $0 (table $table) (i32.const 0) func $foo)
 (elem $0_1 (table $0) (i32.const 0) func $placeholder_0)
 (export "%foo" (func $foo))
 (export "%table" (table $0))
 (func $foo (type $0) (param $0 i32) (result i32)
  (call_indirect $0 (type $0)
   (i32.const 0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func (param i32) (result i32)))
 (import "primary" "%table" (table $0 1 funcref))
 (import "primary" "%foo" (func $foo (exact (type $0) (param i32) (result i32))))
 (elem $0 (i32.const 0) $bar)
 (func $bar (type $0) (param $0 i32) (result i32)
  (call $foo
   (i32.const 1)
  )
 )
)


Before:
(module
 (type $0 (func))
 (export "foo1" (func $foo))
 (export "foo2" (func $foo))
 (func $foo (type $0)
 )
)
Keeping: <none>
After:
(module
 (type $0 (func))
 (import "placeholder.deferred" "0" (func $placeholder_0 (type $0)))
 (table $0 1 funcref)
 (elem $0 (i32.const 0) $placeholder_0)
 (export "foo1" (func $trampoline_foo))
 (export "foo2" (func $trampoline_foo))
 (export "%table" (table $0))
 (func $trampoline_foo (type $0)
  (call_indirect $0 (type $0)
   (i32.const 0)
  )
 )
)
Secondary:
(module
 (type $0 (func))
 (import "primary" "%table" (table $0 1 funcref))
 (elem $0 (i32.const 0) $foo)
 (func $foo (type $0)
 )
)


Minimized names primary:
(module
 (type $0 (func))
 (export "already_exported" (func $3))
 (export "%b" (func $7))
 (export "%a" (func $0))
 (export "%c" (func $1))
 (export "%d" (func $2))
 (export "%e" (func $4))
 (export "%f" (func $5))
 (export "%g" (func $6))
 (export "%h" (func $8))
 (export "%i" (func $9))
 (func $0 (type $0)
  (nop)
 )
 (func $1 (type $0)
  (nop)
 )
 (func $2 (type $0)
  (nop)
 )
 (func $3 (type $0)
  (nop)
 )
 (func $4 (type $0)
  (nop)
 )
 (func $5 (type $0)
  (nop)
 )
 (func $6 (type $0)
  (nop)
 )
 (func $7 (type $0)
  (nop)
 )
 (func $8 (type $0)
  (nop)
 )
 (func $9 (type $0)
  (nop)
 )
)

Minimized names secondary:
(module
 (type $0 (func))
 (import "primary" "%a" (func $0 (exact (type $0))))
 (import "primary" "%c" (func $1 (exact (type $0))))
 (import "primary" "%d" (func $2 (exact (type $0))))
 (import "primary" "already_exported" (func $3 (exact (type $0))))
 (import "primary" "%e" (func $4 (exact (type $0))))
 (import "primary" "%f" (func $5 (exact (type $0))))
 (import "primary" "%g" (func $6 (exact (type $0))))
 (import "primary" "%b" (func $7 (exact (type $0))))
 (import "primary" "%h" (func $8 (exact (type $0))))
 (import "primary" "%i" (func $9 (exact (type $0))))
 (func $call (type $0)
  (call $0)
  (call $1)
  (call $2)
  (call $3)
  (call $4)
  (call $5)
  (call $6)
  (call $7)
  (call $8)
  (call $9)
 )
)

