diff options
-rw-r--r-- | test/lit/passes/global-effects.wast | 108 |
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 |