diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/passes/remove-unused-brs.wast | 30 | ||||
-rw-r--r-- | test/passes/remove-unused-brs_enable-multivalue.txt | 26 |
2 files changed, 43 insertions, 13 deletions
diff --git a/test/lit/passes/remove-unused-brs.wast b/test/lit/passes/remove-unused-brs.wast index 3380db6b7..2019d37a4 100644 --- a/test/lit/passes/remove-unused-brs.wast +++ b/test/lit/passes/remove-unused-brs.wast @@ -594,4 +594,34 @@ ) ) ) + + ;; CHECK: (func $unreachable-if (type $1) + ;; CHECK-NEXT: (block $block + ;; CHECK-NEXT: (if (result i32) + ;; CHECK-NEXT: (unreachable) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (br $block) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $unreachable-if + ;; Regression test for a problem where blocks were sunk into ifs with + ;; unreachable conditions, causing validation errors when the block type was + ;; incompatible with the if type. + (block $block + (if (result i32) + (unreachable) + (then + (i32.const 0) + ) + (else + (br $block) + ) + ) + ) + ) ) diff --git a/test/passes/remove-unused-brs_enable-multivalue.txt b/test/passes/remove-unused-brs_enable-multivalue.txt index 54780f0d9..a20f2905b 100644 --- a/test/passes/remove-unused-brs_enable-multivalue.txt +++ b/test/passes/remove-unused-brs_enable-multivalue.txt @@ -2389,12 +2389,12 @@ (loop $label$1 (br_if $label$1 (block $label$2 - (if - (block $label$4 - (unreachable) - ) - (then - (block $label$3 + (block $label$3 + (if + (block $label$4 + (unreachable) + ) + (then (br $label$3) ) ) @@ -2405,15 +2405,15 @@ ) ) (func $if-arm-unreachable - (if - (unreachable) - (then - (block $label$1 + (block $label$1 + (if + (unreachable) + (then (nop) ) - ) - (else - (unreachable) + (else + (unreachable) + ) ) ) ) |