summaryrefslogtreecommitdiff
path: root/test/passes/remove-unused-module-elements.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes/remove-unused-module-elements.wast')
-rw-r--r--test/passes/remove-unused-module-elements.wast93
1 files changed, 92 insertions, 1 deletions
diff --git a/test/passes/remove-unused-module-elements.wast b/test/passes/remove-unused-module-elements.wast
index 4dfb9300f..e1a704355 100644
--- a/test/passes/remove-unused-module-elements.wast
+++ b/test/passes/remove-unused-module-elements.wast
@@ -69,10 +69,101 @@
(unreachable)
)
)
-(module ;; leave the table and memory alone
+(module ;; remove the table and memory
(import "env" "memory" (memory $0 256))
(import "env" "table" (table 0 anyfunc))
)
+(module ;; also when not imported
+ (memory 256)
+ (table 1 anyfunc)
+)
+(module ;; but not when exported
+ (import "env" "memory" (memory $0 256))
+ (import "env" "table" (table 1 anyfunc))
+ (export "mem" (memory 0))
+ (export "tab" (table 0))
+)
+(module ;; and not when there are segments
+ (import "env" "memory" (memory $0 256))
+ (import "env" "table" (table 1 anyfunc))
+ (data (i32.const 1) "hello, world!")
+ (elem (i32.const 0) $waka)
+ (func $waka)
+)
+(module ;; and not when used
+ (type $0 (func))
+ (import "env" "memory" (memory $0 256))
+ (import "env" "table" (table 0 anyfunc))
+ (export "user" $user)
+ (func $user
+ (drop (i32.load (i32.const 0)))
+ (call_indirect (type $0) (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (memory $0 (shared 23 256))
+ (export "user" $user)
+ (func $user
+ (i32.store (i32.const 0) (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (memory $0 (shared 23 256))
+ (export "user" $user)
+ (func $user (result i32)
+ (i32.atomic.rmw.add (i32.const 0) (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (memory $0 (shared 23 256))
+ (export "user" $user)
+ (func $user (result i32)
+ (i32.atomic.rmw8_u.cmpxchg (i32.const 0) (i32.const 0) (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (memory $0 (shared 23 256))
+ (export "user" $user)
+ (func $user
+ (local $0 i32)
+ (local $1 i64)
+ (drop
+ (i32.wait
+ (get_local $0)
+ (get_local $0)
+ (get_local $1)
+ )
+ )
+ )
+)
+(module ;; more use checks
+ (memory $0 (shared 23 256))
+ (export "user" $user)
+ (func $user (result i32)
+ (wake (i32.const 0) (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (memory $0 23 256)
+ (export "user" $user)
+ (func $user (result i32)
+ (grow_memory (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (import "env" "memory" (memory $0 256))
+ (export "user" $user)
+ (func $user (result i32)
+ (grow_memory (i32.const 0))
+ )
+)
+(module ;; more use checks
+ (memory $0 23 256)
+ (export "user" $user)
+ (func $user (result i32)
+ (current_memory)
+ )
+)
(module
(import "env" "memory" (memory $0 256))
(import "env" "table" (table 0 anyfunc))