diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-02-16 14:27:23 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-16 14:27:23 -0800 |
commit | 5e29a613bb8bf059f5f7b9ec2f166f8d2e413ac5 (patch) | |
tree | 64eb41cbef50830367255672091c62fd10724ce2 /test/unit.wast.fromBinary | |
parent | 97077693a6458d51bd5b3dc85187d5a4bd16c3ee (diff) | |
download | binaryen-5e29a613bb8bf059f5f7b9ec2f166f8d2e413ac5.tar.gz binaryen-5e29a613bb8bf059f5f7b9ec2f166f8d2e413ac5.tar.bz2 binaryen-5e29a613bb8bf059f5f7b9ec2f166f8d2e413ac5.zip |
Fix emitting of unreachable block/if/loop (#911)
* an unreachable block is one with an unreachable child, plus no breaks
* document new difference between binaryen IR and wasm
* fix relooper missing finalize
* add a bunch of tests
* don't assume that test/*.wast files print to themselves exactly; print to from.wast. this allows wast tests with comments in them
* emit unreachable blocks as (block .. unreachable) unreachable
* if without else and unreachable ifTrue is still not unreachable, it should be none
* update wasm.js
* cleanups
* empty blocks have none type
Diffstat (limited to 'test/unit.wast.fromBinary')
-rw-r--r-- | test/unit.wast.fromBinary | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/test/unit.wast.fromBinary b/test/unit.wast.fromBinary index 1f1cf753f..7ed6268c8 100644 --- a/test/unit.wast.fromBinary +++ b/test/unit.wast.fromBinary @@ -272,6 +272,7 @@ (br $label$15) (br $label$16) ) + (unreachable) (br $label$9) ) ) @@ -280,8 +281,11 @@ (br $label$9) (br $label$18) ) + (unreachable) (br $label$9) + (unreachable) ) + (unreachable) ) (nop) ) @@ -457,5 +461,139 @@ (get_local $var$1) ) ) + (func $return-unreachable (type $5) (result i32) + (return + (i32.const 1) + ) + ) + (func $unreachable-block (type $5) (result i32) + (block $label$0 + (drop + (i32.const 1) + ) + (return + (i32.const 2) + ) + (unreachable) + ) + (f64.abs + (unreachable) + ) + ) + (func $unreachable-block-toplevel (type $5) (result i32) + (block $label$0 + (drop + (i32.const 1) + ) + (return + (i32.const 2) + ) + (unreachable) + ) + (unreachable) + ) + (func $unreachable-block0 (type $5) (result i32) + (block $label$0 + (return + (i32.const 2) + ) + (unreachable) + ) + (f64.abs + (unreachable) + ) + ) + (func $unreachable-block0-toplevel (type $5) (result i32) + (block $label$0 + (return + (i32.const 2) + ) + (unreachable) + ) + (unreachable) + ) + (func $unreachable-block-with-br (type $5) (result i32) + (block $label$0 i32 + (block $label$1 + (drop + (i32.const 1) + ) + (br $label$1) + ) + (i32.const 1) + ) + ) + (func $unreachable-if (type $5) (result i32) + (if + (i32.const 3) + (block $label$0 + (return + (i32.const 2) + ) + ) + (block $label$1 + (return + (i32.const 1) + ) + ) + ) + (f64.abs + (unreachable) + ) + ) + (func $unreachable-if-toplevel (type $5) (result i32) + (if + (i32.const 3) + (block $label$0 + (return + (i32.const 2) + ) + ) + (block $label$1 + (return + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (func $unreachable-loop (type $5) (result i32) + (loop $label$0 + (nop) + (return + (i32.const 1) + ) + ) + (f64.abs + (unreachable) + ) + ) + (func $unreachable-loop0 (type $5) (result i32) + (loop $label$0 + (return + (i32.const 1) + ) + ) + (f64.abs + (unreachable) + ) + ) + (func $unreachable-loop-toplevel (type $5) (result i32) + (loop $label$0 + (nop) + (return + (i32.const 1) + ) + ) + (unreachable) + ) + (func $unreachable-loop0-toplevel (type $5) (result i32) + (loop $label$0 + (return + (i32.const 1) + ) + ) + (unreachable) + ) ) |