diff options
Diffstat (limited to 'test/lit/passes/simplify-locals-eh-legacy.wast')
-rw-r--r-- | test/lit/passes/simplify-locals-eh-legacy.wast | 105 |
1 files changed, 3 insertions, 102 deletions
diff --git a/test/lit/passes/simplify-locals-eh-legacy.wast b/test/lit/passes/simplify-locals-eh-legacy.wast index 7b48707d4..d7fb75776 100644 --- a/test/lit/passes/simplify-locals-eh-legacy.wast +++ b/test/lit/passes/simplify-locals-eh-legacy.wast @@ -4,7 +4,7 @@ (module ;; CHECK: (tag $e-i32 (param i32)) (tag $e-i32 (param i32)) - ;; CHECK: (func $foo (type $2) (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $3) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo (param i32 i32)) @@ -83,7 +83,7 @@ ) ) - ;; CHECK: (func $bar (type $3) (result i32) + ;; CHECK: (func $bar (type $1) (result i32) ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) (func $bar (result i32) (i32.const 3)) @@ -152,7 +152,7 @@ ) ) - ;; CHECK: (func $return-call-can-be-sinked-into-try (type $3) (result i32) + ;; CHECK: (func $return-call-can-be-sinked-into-try (type $1) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (try (result i32) @@ -202,103 +202,4 @@ ) ) ) - - ;; CHECK: (func $equivalent-set-removal-call (type $1) (param $0 i32) - ;; CHECK-NEXT: (local $1 i32) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (call $equivalent-set-removal-call - ;; CHECK-NEXT: (i32.const 2) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - (func $equivalent-set-removal-call (param $0 i32) - (local $1 i32) - (local.set $1 (local.get $0)) - (drop (local.get $0)) - (drop (local.get $1)) - ;; Even with EH enabled we can look past the call and optimize the final 1 - ;; to a 0, since they contain the same (and while the call might branch, - ;; such a branch does not cause a problem here, as if we branch we just - ;; don't reach the change later down). - (call $equivalent-set-removal-call - (i32.const 2) - ) - (drop (local.get $0)) - (drop (local.get $1)) - ) - - ;; CHECK: (func $equivalent-set-removal-if (type $2) (param $p i32) (param $0 i32) - ;; CHECK-NEXT: (local $1 i32) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $1 - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $p) - ;; CHECK-NEXT: (then - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (else - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (local.get $1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - (func $equivalent-set-removal-if (param $p i32) (param $0 i32) - (local $1 i32) - (local.set $1 (local.get $0)) - (drop (local.get $0)) - ;; This local.get of 1 can be of 0. - (drop (local.get $1)) - (if - (local.get $p) - (then - (block - ;; We also optimize in this block, which is adjacent to the code before - ;; us. It is valid to optimize the 1 to a 0 here, as it is dominated by - ;; the code earlier. - (drop (local.get $0)) - (drop (local.get $1)) - ) - ) - (else - (block - ;; We could also optimize here, but atm just look at code adjacent to - ;; its dominator. TODO - (drop (local.get $0)) - (drop (local.get $1)) - ) - ) - ) - ;; As in the else, this could be optimized. TODO - (drop (local.get $0)) - (drop (local.get $1)) - ) ) |