diff options
Diffstat (limited to 'test/lit/basic')
-rw-r--r-- | test/lit/basic/exception-handling-old.wast | 32 | ||||
-rw-r--r-- | test/lit/basic/exception-handling.wast | 116 | ||||
-rw-r--r-- | test/lit/basic/polymorphic_stack.wast | 80 | ||||
-rw-r--r-- | test/lit/basic/reference-types.wast | 200 | ||||
-rw-r--r-- | test/lit/basic/reg_switch.wast | 32 | ||||
-rw-r--r-- | test/lit/basic/unit.wat | 352 | ||||
-rw-r--r-- | test/lit/basic/unreachable-code.wast | 192 | ||||
-rw-r--r-- | test/lit/basic/untaken-br_if.wast | 56 |
8 files changed, 749 insertions, 311 deletions
diff --git a/test/lit/basic/exception-handling-old.wast b/test/lit/basic/exception-handling-old.wast index c082c1977..6fcb33ed4 100644 --- a/test/lit/basic/exception-handling-old.wast +++ b/test/lit/basic/exception-handling-old.wast @@ -1160,8 +1160,12 @@ ;; CHECK-TEXT-NEXT: (throw $e-i32 ;; CHECK-TEXT-NEXT: (if (result i32) ;; CHECK-TEXT-NEXT: (pop i32) - ;; CHECK-TEXT-NEXT: (i32.const 0) - ;; CHECK-TEXT-NEXT: (i32.const 3) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (i32.const 3) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -1176,8 +1180,12 @@ ;; CHECK-BIN-NEXT: (throw $e-i32 ;; CHECK-BIN-NEXT: (if (result i32) ;; CHECK-BIN-NEXT: (pop i32) - ;; CHECK-BIN-NEXT: (i32.const 0) - ;; CHECK-BIN-NEXT: (i32.const 3) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (i32.const 3) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) @@ -1191,8 +1199,12 @@ (if (result i32) ;; pop is within an if condition, so this is OK. (pop i32) - (i32.const 0) - (i32.const 3) + (then + (i32.const 0) + ) + (else + (i32.const 3) + ) ) ) ) @@ -1764,8 +1776,12 @@ ;; CHECK-BIN-NODEBUG-NEXT: (throw $tag$0 ;; CHECK-BIN-NODEBUG-NEXT: (if (result i32) ;; CHECK-BIN-NODEBUG-NEXT: (pop i32) -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) diff --git a/test/lit/basic/exception-handling.wast b/test/lit/basic/exception-handling.wast index b94f89e1a..e1fa9c14d 100644 --- a/test/lit/basic/exception-handling.wast +++ b/test/lit/basic/exception-handling.wast @@ -79,12 +79,20 @@ ;; CHECK-TEXT-NEXT: (local $null-exn nullexnref) ;; CHECK-TEXT-NEXT: (if (result exnref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (if (result nullexnref) - ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (local.get $null-exn) - ;; CHECK-TEXT-NEXT: (ref.null noexn) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (if (result nullexnref) + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (local.get $null-exn) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (ref.null noexn) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (local.get $exn) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (local.get $exn) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (func $exnref-nullexnref-test (type $3) (result exnref) @@ -92,23 +100,39 @@ ;; CHECK-BIN-NEXT: (local $null-exn nullexnref) ;; CHECK-BIN-NEXT: (if (result exnref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (if (result nullexnref) - ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (local.get $null-exn) - ;; CHECK-BIN-NEXT: (ref.null noexn) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (if (result nullexnref) + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (local.get $null-exn) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (ref.null noexn) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (local.get $exn) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (local.get $exn) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $exnref-nullexnref-test (result exnref) (local $exn exnref) (local $null-exn nullexnref) (if (result exnref) (i32.const 1) - (if (result nullexnref) - (i32.const 1) - (local.get $null-exn) - (ref.null noexn) + (then + (if (result nullexnref) + (i32.const 1) + (then + (local.get $null-exn) + ) + (else + (ref.null noexn) + ) + ) + ) + (else + (local.get $exn) ) - (local.get $exn) ) ) @@ -631,11 +655,15 @@ ;; CHECK-TEXT-NEXT: (try_table (catch $e-i32 $l-catch-inner) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 0) - ;; CHECK-TEXT-NEXT: (throw $e-i32 - ;; CHECK-TEXT-NEXT: (i32.const 3) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (throw $e-i32 + ;; CHECK-TEXT-NEXT: (i32.const 3) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (throw $e-eqref - ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (throw $e-eqref + ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -653,11 +681,15 @@ ;; CHECK-BIN-NEXT: (try_table (catch $e-i32 $label$2) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 0) - ;; CHECK-BIN-NEXT: (throw $e-i32 - ;; CHECK-BIN-NEXT: (i32.const 3) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (throw $e-i32 + ;; CHECK-BIN-NEXT: (i32.const 3) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (throw $e-eqref - ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (throw $e-eqref + ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) @@ -675,8 +707,12 @@ (try_table (catch $e-i32 $l-catch-inner) (if (i32.const 0) - (throw $e-i32 (i32.const 3)) - (throw $e-eqref (ref.null eq)) + (then + (throw $e-i32 (i32.const 3)) + ) + (else + (throw $e-eqref (ref.null eq)) + ) ) ) ) @@ -725,12 +761,20 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local $1 nullexnref) ;; CHECK-BIN-NODEBUG-NEXT: (if (result exnref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (if (result nullexnref) -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null noexn) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (if (result nullexnref) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (ref.null noexn) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -988,11 +1032,15 @@ ;; CHECK-BIN-NODEBUG-NEXT: (try_table (catch $tag$0 $label$2) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) -;; CHECK-BIN-NODEBUG-NEXT: (throw $tag$0 -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (throw $tag$0 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (throw $tag$3 -;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (throw $tag$3 +;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) diff --git a/test/lit/basic/polymorphic_stack.wast b/test/lit/basic/polymorphic_stack.wast index d51117e16..fc743bf2a 100644 --- a/test/lit/basic/polymorphic_stack.wast +++ b/test/lit/basic/polymorphic_stack.wast @@ -162,8 +162,10 @@ ;; CHECK-TEXT-NEXT: (local $0 f32) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 259) - ;; CHECK-TEXT-NEXT: (local.tee $0 - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (local.tee $0 + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -171,15 +173,19 @@ ;; CHECK-BIN-NEXT: (local $0 f32) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 259) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $tee2 (local $0 f32) (if (i32.const 259) - (local.set $0 - (unreachable) + (then + (local.set $0 + (unreachable) + ) ) ) ) @@ -245,8 +251,10 @@ ;; CHECK-TEXT: (func $unreachable-in-block-but-code-before (type $FUNCSIG$ii) (param $0 i32) (result i32) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (local.get $0) - ;; CHECK-TEXT-NEXT: (return - ;; CHECK-TEXT-NEXT: (i32.const 127) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 127) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (block $label$0 (result i32) @@ -261,8 +269,10 @@ ;; CHECK-BIN: (func $unreachable-in-block-but-code-before (type $FUNCSIG$ii) (param $0 i32) (result i32) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (local.get $0) - ;; CHECK-BIN-NEXT: (return - ;; CHECK-BIN-NEXT: (i32.const 127) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 127) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (block $label$2 (result i32) @@ -277,8 +287,10 @@ (func $unreachable-in-block-but-code-before (param $0 i32) (result i32) (if (local.get $0) - (return - (i32.const 127) + (then + (return + (i32.const 127) + ) ) ) (block $label$0 (result i32) @@ -325,11 +337,15 @@ ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 0) - ;; CHECK-TEXT-NEXT: (br_if $label$8 + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br_if $label$8 + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (i32.const 0) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (unreachable) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -340,8 +356,12 @@ ;; CHECK-BIN-NEXT: (block $label$2 ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 0) - ;; CHECK-BIN-NEXT: (unreachable) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (unreachable) @@ -353,11 +373,15 @@ (drop (if (i32.const 0) - (br_if $label$8 + (then + (br_if $label$8 + (unreachable) + (i32.const 0) + ) + ) + (else (unreachable) - (i32.const 0) ) - (unreachable) ) ) ) @@ -393,7 +417,9 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local $0 f32) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 259) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -416,8 +442,10 @@ ;; CHECK-BIN-NODEBUG: (func $6 (type $1) (param $0 i32) (result i32) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) -;; CHECK-BIN-NODEBUG-NEXT: (return -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 127) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 127) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (block $label$2 (result i32) @@ -443,8 +471,12 @@ ;; CHECK-BIN-NODEBUG-NEXT: (block $label$2 ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (unreachable) diff --git a/test/lit/basic/reference-types.wast b/test/lit/basic/reference-types.wast index 2b502d789..94d4f3525 100644 --- a/test/lit/basic/reference-types.wast +++ b/test/lit/basic/reference-types.wast @@ -525,45 +525,69 @@ ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if (result eqref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (local.get $local_eqref) - ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (local.get $local_eqref) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if (result funcref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (local.get $local_funcref) - ;; CHECK-TEXT-NEXT: (ref.null nofunc) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (local.get $local_funcref) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (ref.null nofunc) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if (result anyref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (local.get $local_anyref) - ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (local.get $local_anyref) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if (result anyref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (local.get $local_eqref) - ;; CHECK-TEXT-NEXT: (local.get $local_eqref) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (local.get $local_eqref) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (local.get $local_eqref) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if (result anyref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (ref.null none) - ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (ref.null none) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (if (result anyref) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (ref.i31 - ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (ref.i31 + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (ref.null none) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (ref.null none) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (drop @@ -1036,45 +1060,69 @@ ;; CHECK-BIN-NEXT: (drop ;; CHECK-BIN-NEXT: (if (result eqref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (local.get $local_eqref) - ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (local.get $local_eqref) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (drop ;; CHECK-BIN-NEXT: (if (result funcref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (local.get $local_funcref) - ;; CHECK-BIN-NEXT: (ref.null nofunc) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (local.get $local_funcref) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (ref.null nofunc) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (drop ;; CHECK-BIN-NEXT: (if (result anyref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (local.get $local_anyref) - ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (local.get $local_anyref) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (drop ;; CHECK-BIN-NEXT: (if (result anyref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (local.get $local_eqref) - ;; CHECK-BIN-NEXT: (local.get $local_eqref) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (local.get $local_eqref) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (local.get $local_eqref) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (drop ;; CHECK-BIN-NEXT: (if (result anyref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (ref.null none) - ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (ref.null none) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (drop ;; CHECK-BIN-NEXT: (if (result anyref) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (ref.i31 - ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (ref.i31 + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (ref.null none) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (ref.null none) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (drop @@ -1420,22 +1468,34 @@ (drop (if (result eqref) (i32.const 1) - (local.get $local_eqref) - (ref.null eq) + (then + (local.get $local_eqref) + ) + (else + (ref.null eq) + ) ) ) (drop (if (result funcref) (i32.const 1) - (local.get $local_funcref) - (ref.null func) + (then + (local.get $local_funcref) + ) + (else + (ref.null func) + ) ) ) (drop (if (result anyref) (i32.const 1) - (local.get $local_anyref) - (ref.null any) + (then + (local.get $local_anyref) + ) + (else + (ref.null any) + ) ) ) @@ -1443,24 +1503,36 @@ (drop (if (result anyref) (i32.const 1) - (local.get $local_eqref) - (local.get $local_eqref) + (then + (local.get $local_eqref) + ) + (else + (local.get $local_eqref) + ) ) ) (drop (if (result anyref) (i32.const 1) - (ref.null eq) - (ref.null i31) + (then + (ref.null eq) + ) + (else + (ref.null i31) + ) ) ) (drop (if (result anyref) (i32.const 1) - (ref.i31 - (i32.const 0) + (then + (ref.i31 + (i32.const 0) + ) + ) + (else + (ref.null eq) ) - (ref.null eq) ) ) @@ -2201,45 +2273,69 @@ ;; CHECK-BIN-NODEBUG-NEXT: (drop ;; CHECK-BIN-NODEBUG-NEXT: (if (result eqref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (drop ;; CHECK-BIN-NODEBUG-NEXT: (if (result funcref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null nofunc) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (ref.null nofunc) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (drop ;; CHECK-BIN-NODEBUG-NEXT: (if (result anyref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $2) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (local.get $2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (drop ;; CHECK-BIN-NODEBUG-NEXT: (if (result anyref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) -;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (drop ;; CHECK-BIN-NODEBUG-NEXT: (if (result anyref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (drop ;; CHECK-BIN-NODEBUG-NEXT: (if (result anyref) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (ref.i31 -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (ref.i31 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (ref.null none) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (drop diff --git a/test/lit/basic/reg_switch.wast b/test/lit/basic/reg_switch.wast index 5f9dd5d7f..db7494511 100644 --- a/test/lit/basic/reg_switch.wast +++ b/test/lit/basic/reg_switch.wast @@ -22,9 +22,11 @@ ;; CHECK-TEXT: (func $0 (type $0) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 0) - ;; CHECK-TEXT-NEXT: (block $A - ;; CHECK-TEXT-NEXT: (br_table $A - ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (block $A + ;; CHECK-TEXT-NEXT: (br_table $A + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -32,9 +34,11 @@ ;; CHECK-BIN: (func $0 (type $0) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 0) - ;; CHECK-BIN-NEXT: (block $label$2 - ;; CHECK-BIN-NEXT: (br_table $label$2 - ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (block $label$2 + ;; CHECK-BIN-NEXT: (br_table $label$2 + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) @@ -42,9 +46,11 @@ ;; CHECK-BIN-NODEBUG: (func $0 (type $0) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) - ;; CHECK-BIN-NODEBUG-NEXT: (block $label$2 - ;; CHECK-BIN-NODEBUG-NEXT: (br_table $label$2 - ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) + ;; CHECK-BIN-NODEBUG-NEXT: (then + ;; CHECK-BIN-NODEBUG-NEXT: (block $label$2 + ;; CHECK-BIN-NODEBUG-NEXT: (br_table $label$2 + ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) + ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -52,9 +58,11 @@ (func $0 (type $0) (if (i32.const 0) - (block $A - (br_table $A - (i32.const 0) + (then + (block $A + (br_table $A + (i32.const 0) + ) ) ) ) diff --git a/test/lit/basic/unit.wat b/test/lit/basic/unit.wat index 4fc36b3b7..9cdcb5792 100644 --- a/test/lit/basic/unit.wat +++ b/test/lit/basic/unit.wat @@ -191,8 +191,10 @@ ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (i32.const 0) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (br $topmost - ;; CHECK-TEXT-NEXT: (f64.const -3.4) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const -3.4) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if @@ -202,8 +204,10 @@ ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (f64.const 0) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (br $topmost - ;; CHECK-TEXT-NEXT: (f64.const 5.6) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const 5.6) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (f64.const 1.2) @@ -243,8 +247,10 @@ ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (i32.const 0) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (br $label$1 - ;; CHECK-BIN-NEXT: (f64.const -3.4) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const -3.4) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (if @@ -254,8 +260,10 @@ ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (f64.const 0) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (br $label$1 - ;; CHECK-BIN-NEXT: (f64.const 5.6) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const 5.6) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (f64.const 1.2) @@ -295,8 +303,10 @@ ) (i32.const 0) ) - (br $topmost - (f64.const -3.4) + (then + (br $topmost + (f64.const -3.4) + ) ) ) (if @@ -306,8 +316,10 @@ ) (f64.const 0) ) - (br $topmost - (f64.const 5.6) + (then + (br $topmost + (f64.const 5.6) + ) ) ) (f64.const 1.2) @@ -323,8 +335,10 @@ ;; CHECK-TEXT-NEXT: (local.get $x) ;; CHECK-TEXT-NEXT: (f64.const 0) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (br $topmost - ;; CHECK-TEXT-NEXT: (f64.const 1.2) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const 1.2) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if @@ -332,8 +346,10 @@ ;; CHECK-TEXT-NEXT: (local.get $Int) ;; CHECK-TEXT-NEXT: (f64.const 0) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (br $topmost - ;; CHECK-TEXT-NEXT: (f64.const -3.4) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const -3.4) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if @@ -341,8 +357,10 @@ ;; CHECK-TEXT-NEXT: (local.get $Double) ;; CHECK-TEXT-NEXT: (i32.const 0) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (br $topmost - ;; CHECK-TEXT-NEXT: (f64.const 5.6) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const 5.6) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if @@ -350,8 +368,10 @@ ;; CHECK-TEXT-NEXT: (local.get $x) ;; CHECK-TEXT-NEXT: (local.get $y) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (br $topmost - ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (local.get $y) @@ -367,8 +387,10 @@ ;; CHECK-BIN-NEXT: (local.get $x) ;; CHECK-BIN-NEXT: (f64.const 0) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (br $label$1 - ;; CHECK-BIN-NEXT: (f64.const 1.2) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const 1.2) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (if @@ -376,8 +398,10 @@ ;; CHECK-BIN-NEXT: (local.get $Int) ;; CHECK-BIN-NEXT: (f64.const 0) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (br $label$1 - ;; CHECK-BIN-NEXT: (f64.const -3.4) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const -3.4) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (if @@ -385,8 +409,10 @@ ;; CHECK-BIN-NEXT: (local.get $Double) ;; CHECK-BIN-NEXT: (i32.const 0) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (br $label$1 - ;; CHECK-BIN-NEXT: (f64.const 5.6) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const 5.6) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (if @@ -394,8 +420,10 @@ ;; CHECK-BIN-NEXT: (local.get $x) ;; CHECK-BIN-NEXT: (local.get $y) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (br $label$1 - ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (local.get $y) @@ -411,8 +439,10 @@ (local.get $x) (f64.const 0) ) - (br $topmost - (f64.const 1.2) + (then + (br $topmost + (f64.const 1.2) + ) ) ) (if @@ -420,8 +450,10 @@ (local.get $Int) (f64.const 0) ) - (br $topmost - (f64.const -3.4) + (then + (br $topmost + (f64.const -3.4) + ) ) ) (if @@ -429,8 +461,10 @@ (local.get $Double) (i32.const 0) ) - (br $topmost - (f64.const 5.6) + (then + (br $topmost + (f64.const 5.6) + ) ) ) (if @@ -438,8 +472,10 @@ (local.get $x) (local.get $y) ) - (br $topmost - (local.get $x) + (then + (br $topmost + (local.get $x) + ) ) ) (local.get $y) @@ -1497,11 +1533,15 @@ ;; CHECK-TEXT-NEXT: (f64.abs ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 3) - ;; CHECK-TEXT-NEXT: (return - ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (return - ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -1509,11 +1549,15 @@ ;; CHECK-BIN: (func $unreachable-if (type $5) (result i32) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 3) - ;; CHECK-BIN-NEXT: (return - ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (return - ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) @@ -1521,38 +1565,54 @@ (f64.abs (if ;; note no type - valid in binaryen IR, in wasm must be i32 (i32.const 3) - (return (i32.const 2)) - (return (i32.const 1)) + (then + (return (i32.const 2)) + ) + (else + (return (i32.const 1)) + ) ) ) ) ;; CHECK-TEXT: (func $unreachable-if-toplevel (type $5) (result i32) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 3) - ;; CHECK-TEXT-NEXT: (return - ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) - ;; CHECK-TEXT-NEXT: (return - ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (func $unreachable-if-toplevel (type $5) (result i32) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 3) - ;; CHECK-BIN-NEXT: (return - ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) - ;; CHECK-BIN-NEXT: (return - ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $unreachable-if-toplevel (result i32) (if ;; note no type - valid in binaryen IR, in wasm must be i32 (i32.const 3) - (return (i32.const 2)) - (return (i32.const 1)) + (then + (return (i32.const 2)) + ) + (else + (return (i32.const 1)) + ) ) ) ;; CHECK-TEXT: (func $unreachable-loop (type $5) (result i32) @@ -1648,68 +1708,102 @@ ;; CHECK-TEXT: (func $unreachable-ifs (type $FUNCSIG$v) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (nop) - ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (nop) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (nop) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (func $unreachable-ifs (type $FUNCSIG$v) ;; CHECK-BIN-NEXT: (unreachable) ;; CHECK-BIN-NEXT: ) (func $unreachable-ifs - (if (unreachable) (nop)) - (if (unreachable) (unreachable)) - (if (unreachable) (nop) (nop)) - (if (unreachable) (unreachable) (nop)) - (if (unreachable) (nop) (unreachable)) - (if (unreachable) (unreachable) (unreachable)) + (if (unreachable) (then (nop))) + (if (unreachable) (then (unreachable))) + (if (unreachable) (then (nop) )(else (nop))) + (if (unreachable) (then (unreachable) )(else (nop))) + (if (unreachable) (then (nop) )(else (unreachable))) + (if (unreachable) (then (unreachable) )(else (unreachable))) ;; - (if (i32.const 1) (unreachable) (nop)) - (if (i32.const 1) (nop) (unreachable)) - (if (i32.const 1) (unreachable) (unreachable)) + (if (i32.const 1) (then (unreachable) )(else (nop))) + (if (i32.const 1) (then (nop) )(else (unreachable))) + (if (i32.const 1) (then (unreachable) )(else (unreachable))) ) ;; CHECK-TEXT: (func $unreachable-if-arm (type $FUNCSIG$v) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (nop) - ;; CHECK-TEXT-NEXT: (block + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else ;; CHECK-TEXT-NEXT: (unreachable) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (i32.const 1) @@ -1720,20 +1814,28 @@ ;; CHECK-BIN: (func $unreachable-if-arm (type $FUNCSIG$v) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (nop) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $unreachable-if-arm (if (i32.const 1) - (block - (nop) + (then + (block + (nop) + ) ) - (block - (unreachable) - (drop - (i32.const 1) + (else + (block + (unreachable) + (drop + (i32.const 1) + ) ) ) ) @@ -1800,8 +1902,10 @@ ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 -;; CHECK-BIN-NODEBUG-NEXT: (f64.const -3.4) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -3.4) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (if @@ -1811,8 +1915,10 @@ ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 -;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.6) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.6) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (f64.const 1.2) @@ -1829,8 +1935,10 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) ;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 -;; CHECK-BIN-NODEBUG-NEXT: (f64.const 1.2) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 1.2) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (if @@ -1838,8 +1946,10 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local.get $3) ;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 -;; CHECK-BIN-NODEBUG-NEXT: (f64.const -3.4) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -3.4) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (if @@ -1847,8 +1957,10 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local.get $4) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 -;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.6) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.6) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (if @@ -1856,8 +1968,10 @@ ;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) ;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 -;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) @@ -2229,11 +2343,15 @@ ;; CHECK-BIN-NODEBUG: (func $29 (type $0) (result i32) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) -;; CHECK-BIN-NODEBUG-NEXT: (return -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (return -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -2241,11 +2359,15 @@ ;; CHECK-BIN-NODEBUG: (func $30 (type $0) (result i32) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) -;; CHECK-BIN-NODEBUG-NEXT: (return -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) -;; CHECK-BIN-NODEBUG-NEXT: (return -;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -2291,7 +2413,11 @@ ;; CHECK-BIN-NODEBUG: (func $36 (type $1) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (nop) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) diff --git a/test/lit/basic/unreachable-code.wast b/test/lit/basic/unreachable-code.wast index 16ec691a5..0dfb00c40 100644 --- a/test/lit/basic/unreachable-code.wast +++ b/test/lit/basic/unreachable-code.wast @@ -15,7 +15,9 @@ ;; CHECK-TEXT: (func $a (type $0) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (type $0 (func)) @@ -23,52 +25,74 @@ ;; CHECK-BIN: (func $a (type $0) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $a (if (i32.const 1) - (unreachable) + (then + (unreachable) + ) ) ) ;; CHECK-TEXT: (func $b (type $0) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (func $b (type $0) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $b (if (i32.const 1) - (unreachable) - (unreachable) + (then + (unreachable) + ) + (else + (unreachable) + ) ) ) ;; CHECK-TEXT: (func $a-block (type $0) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (func $a-block (type $0) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $a-block (block (if (i32.const 1) - (unreachable) + (then + (unreachable) + ) ) ) ) @@ -76,22 +100,34 @@ ;; CHECK-TEXT: (func $b-block (type $0) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-BIN: (func $b-block (type $0) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $b-block (block (if (i32.const 1) - (unreachable) - (unreachable) + (then + (unreachable) + ) + (else + (unreachable) + ) ) ) ) @@ -100,7 +136,9 @@ ;; CHECK-TEXT-NEXT: (nop) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (nop) ;; CHECK-TEXT-NEXT: ) @@ -108,14 +146,18 @@ ;; CHECK-BIN-NEXT: (nop) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (nop) ;; CHECK-BIN-NEXT: ) (func $a-prepost (nop) (if (i32.const 1) - (unreachable) + (then + (unreachable) + ) ) (nop) ) @@ -124,8 +166,12 @@ ;; CHECK-TEXT-NEXT: (nop) ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (nop) ;; CHECK-TEXT-NEXT: ) @@ -133,15 +179,23 @@ ;; CHECK-BIN-NEXT: (nop) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $b-prepost (nop) (if (i32.const 1) - (unreachable) - (unreachable) + (then + (unreachable) + ) + (else + (unreachable) + ) ) (nop) ) @@ -151,7 +205,9 @@ ;; CHECK-TEXT-NEXT: (block ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (nop) @@ -160,7 +216,9 @@ ;; CHECK-BIN-NEXT: (nop) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: (nop) ;; CHECK-BIN-NEXT: ) @@ -168,7 +226,9 @@ (nop) (block (if (i32.const 1) - (unreachable) + (then + (unreachable) + ) ) ) (nop) @@ -179,8 +239,12 @@ ;; CHECK-TEXT-NEXT: (block ;; CHECK-TEXT-NEXT: (if ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: (nop) @@ -189,16 +253,24 @@ ;; CHECK-BIN-NEXT: (nop) ;; CHECK-BIN-NEXT: (if ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) - ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: (then + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $b-block-prepost (nop) (block (if (i32.const 1) - (unreachable) - (unreachable) + (then + (unreachable) + ) + (else + (unreachable) + ) ) ) (nop) @@ -272,30 +344,42 @@ ;; CHECK-BIN-NODEBUG: (func $0 (type $0) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG: (func $1 (type $0) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG: (func $2 (type $0) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG: (func $3 (type $0) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -303,7 +387,9 @@ ;; CHECK-BIN-NODEBUG-NEXT: (nop) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (nop) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -312,8 +398,12 @@ ;; CHECK-BIN-NODEBUG-NEXT: (nop) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -321,7 +411,9 @@ ;; CHECK-BIN-NODEBUG-NEXT: (nop) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: (nop) ;; CHECK-BIN-NODEBUG-NEXT: ) @@ -330,8 +422,12 @@ ;; CHECK-BIN-NODEBUG-NEXT: (nop) ;; CHECK-BIN-NODEBUG-NEXT: (if ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: (then +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) diff --git a/test/lit/basic/untaken-br_if.wast b/test/lit/basic/untaken-br_if.wast index 23063d796..bf2ad1ce3 100644 --- a/test/lit/basic/untaken-br_if.wast +++ b/test/lit/basic/untaken-br_if.wast @@ -15,11 +15,15 @@ ;; CHECK-TEXT: (func $binaryify-untaken-br_if (type $0) (result f32) ;; CHECK-TEXT-NEXT: (if (result f32) ;; CHECK-TEXT-NEXT: (i32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) - ;; CHECK-TEXT-NEXT: (block $label$1 (result f32) - ;; CHECK-TEXT-NEXT: (br_if $label$1 - ;; CHECK-TEXT-NEXT: (f32.const 1) - ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (then + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (else + ;; CHECK-TEXT-NEXT: (block $label$1 (result f32) + ;; CHECK-TEXT-NEXT: (br_if $label$1 + ;; CHECK-TEXT-NEXT: (f32.const 1) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) ;; CHECK-TEXT-NEXT: ) @@ -29,23 +33,31 @@ ;; CHECK-BIN: (func $binaryify-untaken-br_if (type $0) (result f32) ;; CHECK-BIN-NEXT: (if (result f32) ;; CHECK-BIN-NEXT: (i32.const 1) - ;; CHECK-BIN-NEXT: (unreachable) - ;; CHECK-BIN-NEXT: (block $label$3 (result f32) - ;; CHECK-BIN-NEXT: (drop - ;; CHECK-BIN-NEXT: (f32.const 1) - ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (then ;; CHECK-BIN-NEXT: (unreachable) ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (else + ;; CHECK-BIN-NEXT: (block $label$3 (result f32) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) ;; CHECK-BIN-NEXT: ) (func $binaryify-untaken-br_if (result f32) (if (result f32) (i32.const 1) - (unreachable) - (block $label$1 (result f32) - (br_if $label$1 - (f32.const 1) - (unreachable) + (then + (unreachable) + ) + (else + (block $label$1 (result f32) + (br_if $label$1 + (f32.const 1) + (unreachable) + ) ) ) ) @@ -56,12 +68,16 @@ ;; CHECK-BIN-NODEBUG: (func $0 (type $0) (result f32) ;; CHECK-BIN-NODEBUG-NEXT: (if (result f32) ;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: (unreachable) -;; CHECK-BIN-NODEBUG-NEXT: (block $label$3 (result f32) -;; CHECK-BIN-NODEBUG-NEXT: (drop -;; CHECK-BIN-NODEBUG-NEXT: (f32.const 1) -;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (then ;; CHECK-BIN-NODEBUG-NEXT: (unreachable) ;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (else +;; CHECK-BIN-NODEBUG-NEXT: (block $label$3 (result f32) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) ;; CHECK-BIN-NODEBUG-NEXT: ) |