Skip to content

Commit cd31b32

Browse files
committed
Add tests
1 parent 1e2420d commit cd31b32

4 files changed

Lines changed: 302 additions & 0 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
2+
;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up.
3+
4+
;; RUN: foreach %s %t wasm-opt --flatten --all-features -S -o - | filecheck %s
5+
6+
(module
7+
;; CHECK: (type $s (sub (struct)))
8+
(type $s (sub (struct)))
9+
;; CHECK: (type $t (sub $s (struct)))
10+
(type $t (sub $s (struct)))
11+
12+
;; CHECK: (type $2 (func (param (ref $s)) (result (ref $t))))
13+
14+
;; CHECK: (func $br_on_cast (type $2) (param $x (ref $s)) (result (ref $t))
15+
;; CHECK-NEXT: (local $1 (ref $s))
16+
;; CHECK-NEXT: (local $2 (ref $s))
17+
;; CHECK-NEXT: (local $3 i32)
18+
;; CHECK-NEXT: (local $4 (ref null $t))
19+
;; CHECK-NEXT: (local $5 (ref $s))
20+
;; CHECK-NEXT: (local $6 (ref $s))
21+
;; CHECK-NEXT: (local $7 (ref (exact $t)))
22+
;; CHECK-NEXT: (local $8 (ref $t))
23+
;; CHECK-NEXT: (block $label0
24+
;; CHECK-NEXT: (local.set $1
25+
;; CHECK-NEXT: (local.get $x)
26+
;; CHECK-NEXT: )
27+
;; CHECK-NEXT: (local.set $2
28+
;; CHECK-NEXT: (local.get $1)
29+
;; CHECK-NEXT: )
30+
;; CHECK-NEXT: (local.set $3
31+
;; CHECK-NEXT: (ref.test (ref $t)
32+
;; CHECK-NEXT: (local.get $2)
33+
;; CHECK-NEXT: )
34+
;; CHECK-NEXT: )
35+
;; CHECK-NEXT: (if
36+
;; CHECK-NEXT: (local.get $3)
37+
;; CHECK-NEXT: (then
38+
;; CHECK-NEXT: (local.set $4
39+
;; CHECK-NEXT: (ref.cast (ref $t)
40+
;; CHECK-NEXT: (local.get $2)
41+
;; CHECK-NEXT: )
42+
;; CHECK-NEXT: )
43+
;; CHECK-NEXT: (br $label0)
44+
;; CHECK-NEXT: )
45+
;; CHECK-NEXT: )
46+
;; CHECK-NEXT: (local.set $5
47+
;; CHECK-NEXT: (local.get $2)
48+
;; CHECK-NEXT: )
49+
;; CHECK-NEXT: (local.set $6
50+
;; CHECK-NEXT: (local.get $5)
51+
;; CHECK-NEXT: )
52+
;; CHECK-NEXT: (drop
53+
;; CHECK-NEXT: (local.get $6)
54+
;; CHECK-NEXT: )
55+
;; CHECK-NEXT: (local.set $7
56+
;; CHECK-NEXT: (struct.new_default $t)
57+
;; CHECK-NEXT: )
58+
;; CHECK-NEXT: (local.set $4
59+
;; CHECK-NEXT: (local.get $7)
60+
;; CHECK-NEXT: )
61+
;; CHECK-NEXT: )
62+
;; CHECK-NEXT: (local.set $8
63+
;; CHECK-NEXT: (ref.as_non_null
64+
;; CHECK-NEXT: (local.get $4)
65+
;; CHECK-NEXT: )
66+
;; CHECK-NEXT: )
67+
;; CHECK-NEXT: (return
68+
;; CHECK-NEXT: (local.get $8)
69+
;; CHECK-NEXT: )
70+
;; CHECK-NEXT: (unreachable)
71+
;; CHECK-NEXT: )
72+
(func $br_on_cast (param $x (ref $s)) (result (ref $t))
73+
(return (block $label0 (result (ref $t))
74+
(drop (br_on_cast $label0 (ref $s) (ref $t) (local.get $x)))
75+
(struct.new $t))))
76+
)
77+
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
2+
;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up.
3+
4+
;; RUN: foreach %s %t wasm-opt --flatten --all-features -S -o - | filecheck %s
5+
6+
(module
7+
;; CHECK: (type $s (sub (struct)))
8+
(type $s (sub (struct)))
9+
;; CHECK: (type $t (sub $s (struct)))
10+
(type $t (sub $s (struct)))
11+
12+
;; CHECK: (type $2 (func (param (ref $s)) (result (ref $t))))
13+
14+
;; CHECK: (func $br_on_cast_fail (type $2) (param $x (ref $s)) (result (ref $t))
15+
;; CHECK-NEXT: (local $1 (ref $s))
16+
;; CHECK-NEXT: (local $2 (ref $s))
17+
;; CHECK-NEXT: (local $3 i32)
18+
;; CHECK-NEXT: (local $4 (ref null $s))
19+
;; CHECK-NEXT: (local $5 i32)
20+
;; CHECK-NEXT: (local $6 (ref $t))
21+
;; CHECK-NEXT: (local $7 (ref $t))
22+
;; CHECK-NEXT: (local $8 (ref $s))
23+
;; CHECK-NEXT: (local $9 (ref (exact $t)))
24+
;; CHECK-NEXT: (local $10 (ref $t))
25+
;; CHECK-NEXT: (local $11 (ref $t))
26+
;; CHECK-NEXT: (block
27+
;; CHECK-NEXT: (block $label0
28+
;; CHECK-NEXT: (local.set $1
29+
;; CHECK-NEXT: (local.get $x)
30+
;; CHECK-NEXT: )
31+
;; CHECK-NEXT: (local.set $2
32+
;; CHECK-NEXT: (local.get $1)
33+
;; CHECK-NEXT: )
34+
;; CHECK-NEXT: (local.set $3
35+
;; CHECK-NEXT: (ref.test (ref $t)
36+
;; CHECK-NEXT: (local.get $2)
37+
;; CHECK-NEXT: )
38+
;; CHECK-NEXT: )
39+
;; CHECK-NEXT: (local.set $5
40+
;; CHECK-NEXT: (i32.eqz
41+
;; CHECK-NEXT: (local.get $3)
42+
;; CHECK-NEXT: )
43+
;; CHECK-NEXT: )
44+
;; CHECK-NEXT: (if
45+
;; CHECK-NEXT: (local.get $5)
46+
;; CHECK-NEXT: (then
47+
;; CHECK-NEXT: (local.set $4
48+
;; CHECK-NEXT: (local.get $2)
49+
;; CHECK-NEXT: )
50+
;; CHECK-NEXT: (br $label0)
51+
;; CHECK-NEXT: )
52+
;; CHECK-NEXT: )
53+
;; CHECK-NEXT: (local.set $6
54+
;; CHECK-NEXT: (ref.cast (ref $t)
55+
;; CHECK-NEXT: (local.get $2)
56+
;; CHECK-NEXT: )
57+
;; CHECK-NEXT: )
58+
;; CHECK-NEXT: (local.set $7
59+
;; CHECK-NEXT: (local.get $6)
60+
;; CHECK-NEXT: )
61+
;; CHECK-NEXT: (return
62+
;; CHECK-NEXT: (local.get $7)
63+
;; CHECK-NEXT: )
64+
;; CHECK-NEXT: (unreachable)
65+
;; CHECK-NEXT: )
66+
;; CHECK-NEXT: (local.set $8
67+
;; CHECK-NEXT: (ref.as_non_null
68+
;; CHECK-NEXT: (local.get $4)
69+
;; CHECK-NEXT: )
70+
;; CHECK-NEXT: )
71+
;; CHECK-NEXT: (drop
72+
;; CHECK-NEXT: (local.get $8)
73+
;; CHECK-NEXT: )
74+
;; CHECK-NEXT: (local.set $9
75+
;; CHECK-NEXT: (struct.new_default $t)
76+
;; CHECK-NEXT: )
77+
;; CHECK-NEXT: (local.set $10
78+
;; CHECK-NEXT: (local.get $9)
79+
;; CHECK-NEXT: )
80+
;; CHECK-NEXT: )
81+
;; CHECK-NEXT: (local.set $11
82+
;; CHECK-NEXT: (local.get $10)
83+
;; CHECK-NEXT: )
84+
;; CHECK-NEXT: (return
85+
;; CHECK-NEXT: (local.get $11)
86+
;; CHECK-NEXT: )
87+
;; CHECK-NEXT: )
88+
(func $br_on_cast_fail (param $x (ref $s)) (result (ref $t))
89+
(drop (block $label0 (result (ref $s))
90+
(return (br_on_cast_fail $label0 (ref $s) (ref $t) (local.get $x)))))
91+
(struct.new $t))
92+
)
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
2+
;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up.
3+
4+
;; RUN: foreach %s %t wasm-opt --flatten --all-features -S -o - | filecheck %s
5+
6+
(module
7+
;; CHECK: (type $s (sub (struct)))
8+
(type $s (sub (struct)))
9+
(type $t (sub $s (struct)))
10+
11+
;; CHECK: (type $1 (func (param (ref null $s)) (result (ref $s))))
12+
13+
;; CHECK: (func $br_on_non_null (type $1) (param $x (ref null $s)) (result (ref $s))
14+
;; CHECK-NEXT: (local $1 (ref null $s))
15+
;; CHECK-NEXT: (local $2 (ref $s))
16+
;; CHECK-NEXT: (local $3 (ref null $s))
17+
;; CHECK-NEXT: (local $4 i32)
18+
;; CHECK-NEXT: (local $5 i32)
19+
;; CHECK-NEXT: (local $6 (ref (exact $s)))
20+
;; CHECK-NEXT: (local $7 (ref null $s))
21+
;; CHECK-NEXT: (local $8 (ref $s))
22+
;; CHECK-NEXT: (block $label0
23+
;; CHECK-NEXT: (local.set $1
24+
;; CHECK-NEXT: (local.get $x)
25+
;; CHECK-NEXT: )
26+
;; CHECK-NEXT: (local.set $3
27+
;; CHECK-NEXT: (local.get $1)
28+
;; CHECK-NEXT: )
29+
;; CHECK-NEXT: (local.set $4
30+
;; CHECK-NEXT: (ref.is_null
31+
;; CHECK-NEXT: (local.get $3)
32+
;; CHECK-NEXT: )
33+
;; CHECK-NEXT: )
34+
;; CHECK-NEXT: (local.set $5
35+
;; CHECK-NEXT: (i32.eqz
36+
;; CHECK-NEXT: (local.get $4)
37+
;; CHECK-NEXT: )
38+
;; CHECK-NEXT: )
39+
;; CHECK-NEXT: (br_if $label0
40+
;; CHECK-NEXT: (local.get $5)
41+
;; CHECK-NEXT: )
42+
;; CHECK-NEXT: (local.set $6
43+
;; CHECK-NEXT: (struct.new_default $s)
44+
;; CHECK-NEXT: )
45+
;; CHECK-NEXT: (local.set $7
46+
;; CHECK-NEXT: (local.get $6)
47+
;; CHECK-NEXT: )
48+
;; CHECK-NEXT: )
49+
;; CHECK-NEXT: (local.set $8
50+
;; CHECK-NEXT: (ref.as_non_null
51+
;; CHECK-NEXT: (local.get $7)
52+
;; CHECK-NEXT: )
53+
;; CHECK-NEXT: )
54+
;; CHECK-NEXT: (return
55+
;; CHECK-NEXT: (local.get $8)
56+
;; CHECK-NEXT: )
57+
;; CHECK-NEXT: (unreachable)
58+
;; CHECK-NEXT: )
59+
(func $br_on_non_null (param $x (ref null $s)) (result (ref $s))
60+
(return (block $label0 (result (ref $s))
61+
(br_on_non_null $label0 (local.get $x))
62+
(struct.new $s))))
63+
)
64+
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
2+
;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up.
3+
4+
;; RUN: foreach %s %t wasm-opt --flatten --all-features -S -o - | filecheck %s
5+
6+
(module
7+
;; CHECK: (type $s (sub (struct)))
8+
(type $s (sub (struct)))
9+
(type $t (sub $s (struct)))
10+
11+
;; CHECK: (type $1 (func (param (ref null $s)) (result (ref $s))))
12+
13+
;; CHECK: (func $br_on_null (type $1) (param $x (ref null $s)) (result (ref $s))
14+
;; CHECK-NEXT: (local $1 (ref null $s))
15+
;; CHECK-NEXT: (local $2 (ref $s))
16+
;; CHECK-NEXT: (local $3 (ref null $s))
17+
;; CHECK-NEXT: (local $4 i32)
18+
;; CHECK-NEXT: (local $5 (ref $s))
19+
;; CHECK-NEXT: (local $6 (ref (exact $s)))
20+
;; CHECK-NEXT: (local $7 (ref $s))
21+
;; CHECK-NEXT: (local $8 (ref $s))
22+
;; CHECK-NEXT: (block
23+
;; CHECK-NEXT: (block $label0
24+
;; CHECK-NEXT: (local.set $1
25+
;; CHECK-NEXT: (local.get $x)
26+
;; CHECK-NEXT: )
27+
;; CHECK-NEXT: (local.set $3
28+
;; CHECK-NEXT: (local.get $1)
29+
;; CHECK-NEXT: )
30+
;; CHECK-NEXT: (local.set $4
31+
;; CHECK-NEXT: (ref.is_null
32+
;; CHECK-NEXT: (local.get $3)
33+
;; CHECK-NEXT: )
34+
;; CHECK-NEXT: )
35+
;; CHECK-NEXT: (br_if $label0
36+
;; CHECK-NEXT: (local.get $4)
37+
;; CHECK-NEXT: )
38+
;; CHECK-NEXT: (local.set $2
39+
;; CHECK-NEXT: (ref.as_non_null
40+
;; CHECK-NEXT: (local.get $3)
41+
;; CHECK-NEXT: )
42+
;; CHECK-NEXT: )
43+
;; CHECK-NEXT: (local.set $5
44+
;; CHECK-NEXT: (local.get $2)
45+
;; CHECK-NEXT: )
46+
;; CHECK-NEXT: (return
47+
;; CHECK-NEXT: (local.get $5)
48+
;; CHECK-NEXT: )
49+
;; CHECK-NEXT: (unreachable)
50+
;; CHECK-NEXT: )
51+
;; CHECK-NEXT: (local.set $6
52+
;; CHECK-NEXT: (struct.new_default $s)
53+
;; CHECK-NEXT: )
54+
;; CHECK-NEXT: (local.set $7
55+
;; CHECK-NEXT: (local.get $6)
56+
;; CHECK-NEXT: )
57+
;; CHECK-NEXT: )
58+
;; CHECK-NEXT: (local.set $8
59+
;; CHECK-NEXT: (local.get $7)
60+
;; CHECK-NEXT: )
61+
;; CHECK-NEXT: (return
62+
;; CHECK-NEXT: (local.get $8)
63+
;; CHECK-NEXT: )
64+
;; CHECK-NEXT: )
65+
(func $br_on_null (param $x (ref null $s)) (result (ref $s))
66+
(block $label0
67+
(return (br_on_null $label0 (local.get $x))))
68+
(struct.new $s))
69+
)

0 commit comments

Comments
 (0)