summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/lit/passes/global-effects.wast108
1 files changed, 1 insertions, 107 deletions
diff --git a/test/lit/passes/global-effects.wast b/test/lit/passes/global-effects.wast
index d0d3228df..3f4e58e8b 100644
--- a/test/lit/passes/global-effects.wast
+++ b/test/lit/passes/global-effects.wast
@@ -5,10 +5,9 @@
;; RUN: foreach %s %t wasm-opt -all --vacuum -S -o - | filecheck %s --check-prefix WITHOUT
;; RUN: foreach %s %t wasm-opt -all --generate-global-effects --vacuum -S -o - | filecheck %s --check-prefix INCLUDE
-;; RUN: foreach %s %t wasm-opt -all --generate-global-effects --discard-global-effects --vacuum -S -o - | filecheck %s --check-prefix DISCARD
+;; RUN: foreach %s %t wasm-opt -all --generate-global-effects --discard-global-effects --vacuum -S -o - | filecheck %s --check-prefix WITHOUT
(module
-
;; WITHOUT: (type $0 (func))
;; WITHOUT: (type $1 (func (result i32)))
@@ -23,18 +22,10 @@
;; INCLUDE: (type $2 (func (param i32)))
;; INCLUDE: (import "a" "b" (func $import (type $0)))
- ;; DISCARD: (type $0 (func))
-
- ;; DISCARD: (type $1 (func (result i32)))
-
- ;; DISCARD: (type $2 (func (param i32)))
-
- ;; DISCARD: (import "a" "b" (func $import (type $0)))
(import "a" "b" (func $import))
;; WITHOUT: (tag $tag)
;; INCLUDE: (tag $tag)
- ;; DISCARD: (tag $tag)
(tag $tag)
;; WITHOUT: (func $main (type $0)
@@ -54,17 +45,6 @@
;; INCLUDE-NEXT: (call $throw)
;; INCLUDE-NEXT: (call $throw-and-import)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $main (type $0)
- ;; DISCARD-NEXT: (call $nop)
- ;; DISCARD-NEXT: (call $unreachable)
- ;; DISCARD-NEXT: (call $call-nop)
- ;; DISCARD-NEXT: (call $call-unreachable)
- ;; DISCARD-NEXT: (drop
- ;; DISCARD-NEXT: (call $unimportant-effects)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (call $throw)
- ;; DISCARD-NEXT: (call $throw-and-import)
- ;; DISCARD-NEXT: )
(func $main
;; Calling a function with no effects can be optimized away in INCLUDE (but
;; not WITHOUT or DISCARD, where the global effect info is not available).
@@ -93,9 +73,6 @@
;; INCLUDE: (func $cycle (type $0)
;; INCLUDE-NEXT: (call $cycle)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $cycle (type $0)
- ;; DISCARD-NEXT: (call $cycle)
- ;; DISCARD-NEXT: )
(func $cycle
;; Calling a function with no effects in a cycle cannot be optimized out -
;; this must keep hanging forever.
@@ -108,9 +85,6 @@
;; INCLUDE: (func $cycle-1 (type $0)
;; INCLUDE-NEXT: (call $cycle-2)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $cycle-1 (type $0)
- ;; DISCARD-NEXT: (call $cycle-2)
- ;; DISCARD-NEXT: )
(func $cycle-1
;; $cycle-1 and -2 form a cycle together, in which no call can be removed.
(call $cycle-2)
@@ -122,9 +96,6 @@
;; INCLUDE: (func $cycle-2 (type $0)
;; INCLUDE-NEXT: (call $cycle-1)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $cycle-2 (type $0)
- ;; DISCARD-NEXT: (call $cycle-1)
- ;; DISCARD-NEXT: )
(func $cycle-2
(call $cycle-1)
)
@@ -135,9 +106,6 @@
;; INCLUDE: (func $nop (type $0)
;; INCLUDE-NEXT: (nop)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $nop (type $0)
- ;; DISCARD-NEXT: (nop)
- ;; DISCARD-NEXT: )
(func $nop
(nop)
)
@@ -148,9 +116,6 @@
;; INCLUDE: (func $unreachable (type $0)
;; INCLUDE-NEXT: (unreachable)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $unreachable (type $0)
- ;; DISCARD-NEXT: (unreachable)
- ;; DISCARD-NEXT: )
(func $unreachable
(unreachable)
)
@@ -161,9 +126,6 @@
;; INCLUDE: (func $call-nop (type $0)
;; INCLUDE-NEXT: (nop)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $call-nop (type $0)
- ;; DISCARD-NEXT: (call $nop)
- ;; DISCARD-NEXT: )
(func $call-nop
;; This call to a nop can be optimized out, as above, in INCLUDE.
(call $nop)
@@ -175,9 +137,6 @@
;; INCLUDE: (func $call-unreachable (type $0)
;; INCLUDE-NEXT: (call $unreachable)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $call-unreachable (type $0)
- ;; DISCARD-NEXT: (call $unreachable)
- ;; DISCARD-NEXT: )
(func $call-unreachable
(call $unreachable)
)
@@ -200,15 +159,6 @@
;; INCLUDE-NEXT: (local.get $x)
;; INCLUDE-NEXT: )
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $unimportant-effects (type $1) (result i32)
- ;; DISCARD-NEXT: (local $x i32)
- ;; DISCARD-NEXT: (local.set $x
- ;; DISCARD-NEXT: (i32.const 100)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (return
- ;; DISCARD-NEXT: (local.get $x)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
(func $unimportant-effects (result i32)
(local $x i32)
;; Operations on locals should not prevent optimization, as when we return
@@ -250,24 +200,6 @@
;; INCLUDE-NEXT: )
;; INCLUDE-NEXT: )
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $call-throw-and-catch (type $0)
- ;; DISCARD-NEXT: (try $try
- ;; DISCARD-NEXT: (do
- ;; DISCARD-NEXT: (call $throw)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (catch_all
- ;; DISCARD-NEXT: (nop)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (try $try0
- ;; DISCARD-NEXT: (do
- ;; DISCARD-NEXT: (call $throw-and-import)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (catch_all
- ;; DISCARD-NEXT: (nop)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
(func $call-throw-and-catch
(try
(do
@@ -300,16 +232,6 @@
;; INCLUDE: (func $call-unreachable-and-catch (type $0)
;; INCLUDE-NEXT: (call $unreachable)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $call-unreachable-and-catch (type $0)
- ;; DISCARD-NEXT: (try $try
- ;; DISCARD-NEXT: (do
- ;; DISCARD-NEXT: (call $unreachable)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (catch_all
- ;; DISCARD-NEXT: (nop)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
(func $call-unreachable-and-catch
(try
(do
@@ -358,24 +280,6 @@
;; INCLUDE-NEXT: )
;; INCLUDE-NEXT: )
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $call-throw-or-unreachable-and-catch (type $2) (param $x i32)
- ;; DISCARD-NEXT: (try $try
- ;; DISCARD-NEXT: (do
- ;; DISCARD-NEXT: (if
- ;; DISCARD-NEXT: (local.get $x)
- ;; DISCARD-NEXT: (then
- ;; DISCARD-NEXT: (call $throw)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (else
- ;; DISCARD-NEXT: (call $unreachable)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: (catch_all
- ;; DISCARD-NEXT: (nop)
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
- ;; DISCARD-NEXT: )
(func $call-throw-or-unreachable-and-catch (param $x i32)
;; This try-catch-all's body will either call a throw or an unreachable.
;; Since we have both possible effects, we cannot optimize anything here.
@@ -401,9 +305,6 @@
;; INCLUDE: (func $throw (type $0)
;; INCLUDE-NEXT: (throw $tag)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $throw (type $0)
- ;; DISCARD-NEXT: (throw $tag)
- ;; DISCARD-NEXT: )
(func $throw
(throw $tag)
)
@@ -414,9 +315,6 @@
;; INCLUDE: (func $throw-and-import (type $0)
;; INCLUDE-NEXT: (throw $tag)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $throw-and-import (type $0)
- ;; DISCARD-NEXT: (throw $tag)
- ;; DISCARD-NEXT: )
(func $throw-and-import
(if
(i32.const 1)
@@ -437,10 +335,6 @@
;; INCLUDE-NEXT: (call $cycle-with-unknown-call)
;; INCLUDE-NEXT: (call $import)
;; INCLUDE-NEXT: )
- ;; DISCARD: (func $cycle-with-unknown-call (type $0)
- ;; DISCARD-NEXT: (call $cycle-with-unknown-call)
- ;; DISCARD-NEXT: (call $import)
- ;; DISCARD-NEXT: )
(func $cycle-with-unknown-call
;; This function can not only call itself recursively, but also calls an
;; import. We should not remove anything here, and not error during the