|
1 | 1 | ;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
|
2 | 2 |
|
3 | 3 | ;; RUN: wasm-opt -all %s -S -o - | filecheck %s
|
| 4 | + |
4 | 5 | ;; RUN: wasm-opt -all --roundtrip %s -S -o - | filecheck %s --check-prefix=RTRIP
|
5 | 6 |
|
| 7 | +;; RUN: wasm-opt -all %s -g -o %t.wasm -osm %t.map |
| 8 | +;; RUN: wasm-opt -all %t.wasm -ism %t.map -S -o - | filecheck %s --check-prefix=SRCMP |
| 9 | + |
6 | 10 | (module
|
7 | 11 |
|
8 | 12 | ;; CHECK: (type $0 (func (param i32)))
|
|
27 | 31 | ;; RTRIP-NEXT: )
|
28 | 32 | ;; RTRIP-NEXT: )
|
29 | 33 | ;; RTRIP-NEXT: )
|
| 34 | + ;; SRCMP: (type $0 (func (param i32))) |
| 35 | + |
| 36 | + ;; SRCMP: (type $1 (func (param anyref))) |
| 37 | + |
| 38 | + ;; SRCMP: (func $no-annotations (type $0) (param $x i32) |
| 39 | + ;; SRCMP-NEXT: (block $block |
| 40 | + ;; SRCMP-NEXT: (br_if $block |
| 41 | + ;; SRCMP-NEXT: (local.get $x) |
| 42 | + ;; SRCMP-NEXT: ) |
| 43 | + ;; SRCMP-NEXT: ) |
| 44 | + ;; SRCMP-NEXT: ) |
30 | 45 | (func $no-annotations (param $x i32)
|
31 | 46 | ;; A function with no annotations. This tests that we use function indexes
|
32 | 47 | ;; properly in the section.
|
|
69 | 84 | ;; RTRIP-NEXT: )
|
70 | 85 | ;; RTRIP-NEXT: )
|
71 | 86 | ;; RTRIP-NEXT: )
|
| 87 | + ;; SRCMP: (func $branch-hints-br_if (type $0) (param $x i32) |
| 88 | + ;; SRCMP-NEXT: (block $block |
| 89 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\00") |
| 90 | + ;; SRCMP-NEXT: (br_if $block |
| 91 | + ;; SRCMP-NEXT: (local.get $x) |
| 92 | + ;; SRCMP-NEXT: ) |
| 93 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\01") |
| 94 | + ;; SRCMP-NEXT: (br_if $block |
| 95 | + ;; SRCMP-NEXT: (local.get $x) |
| 96 | + ;; SRCMP-NEXT: ) |
| 97 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\00") |
| 98 | + ;; SRCMP-NEXT: (br_if $block |
| 99 | + ;; SRCMP-NEXT: (local.get $x) |
| 100 | + ;; SRCMP-NEXT: ) |
| 101 | + ;; SRCMP-NEXT: ) |
| 102 | + ;; SRCMP-NEXT: ) |
72 | 103 | (func $branch-hints-br_if (param $x i32)
|
73 | 104 | (block $out
|
74 | 105 | ;; A branch annotated as unlikely, and one as likely.
|
|
107 | 138 | ;; RTRIP-NEXT: )
|
108 | 139 | ;; RTRIP-NEXT: )
|
109 | 140 | ;; RTRIP-NEXT: )
|
| 141 | + ;; SRCMP: (func $branch_hints-br_if-2 (type $0) (param $x i32) |
| 142 | + ;; SRCMP-NEXT: (local $unused f64) |
| 143 | + ;; SRCMP-NEXT: (block $block |
| 144 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\01") |
| 145 | + ;; SRCMP-NEXT: (br_if $block |
| 146 | + ;; SRCMP-NEXT: (local.get $x) |
| 147 | + ;; SRCMP-NEXT: ) |
| 148 | + ;; SRCMP-NEXT: ) |
| 149 | + ;; SRCMP-NEXT: ) |
110 | 150 | (func $branch_hints-br_if-2 (param $x i32)
|
111 | 151 | (local $unused f64)
|
112 | 152 | ;; A second function with hints. This one also has local definitions, which
|
|
137 | 177 | ;; RTRIP-NEXT: )
|
138 | 178 | ;; RTRIP-NEXT: )
|
139 | 179 | ;; RTRIP-NEXT: )
|
| 180 | + ;; SRCMP: (func $mixing (type $0) (param $x i32) |
| 181 | + ;; SRCMP-NEXT: ;;@ mixing.src:1337:42 |
| 182 | + ;; SRCMP-NEXT: (block $block |
| 183 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\01") |
| 184 | + ;; SRCMP-NEXT: (br_if $block |
| 185 | + ;; SRCMP-NEXT: (local.get $x) |
| 186 | + ;; SRCMP-NEXT: ) |
| 187 | + ;; SRCMP-NEXT: ) |
| 188 | + ;; SRCMP-NEXT: ) |
140 | 189 | (func $mixing (param $x i32)
|
141 |
| - ;; Mix branch hints with source locations. Both hints should remain. |
142 |
| - ;; TODO: Fix this in the binary format. Atm we test with --roundtrip here, |
143 |
| - ;; which does not use source maps, so it is expected for the source |
144 |
| - ;; annotation to vanish. But using source maps does not fix it, see |
145 |
| - ;; the TODO in the code. |
146 |
| - |
| 190 | + ;; Mix branch hints with source locations. Both hints should remain (though |
| 191 | + ;; not in --roundtrip, which does not use source maps). |
147 | 192 | ;;@ mixing.src:1337:42
|
148 | 193 | (block $out
|
149 | 194 | (@metadata.code.branch_hint "\01")
|
|
183 | 228 | ;; RTRIP-NEXT: )
|
184 | 229 | ;; RTRIP-NEXT: )
|
185 | 230 | ;; RTRIP-NEXT: )
|
| 231 | + ;; SRCMP: (func $branch-hints-if (type $0) (param $x i32) |
| 232 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\00") |
| 233 | + ;; SRCMP-NEXT: (if |
| 234 | + ;; SRCMP-NEXT: (local.get $x) |
| 235 | + ;; SRCMP-NEXT: (then |
| 236 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\01") |
| 237 | + ;; SRCMP-NEXT: (if |
| 238 | + ;; SRCMP-NEXT: (local.get $x) |
| 239 | + ;; SRCMP-NEXT: (then |
| 240 | + ;; SRCMP-NEXT: (nop) |
| 241 | + ;; SRCMP-NEXT: ) |
| 242 | + ;; SRCMP-NEXT: ) |
| 243 | + ;; SRCMP-NEXT: ) |
| 244 | + ;; SRCMP-NEXT: ) |
| 245 | + ;; SRCMP-NEXT: ) |
186 | 246 | (func $branch-hints-if (param $x i32)
|
187 | 247 | (@metadata.code.branch_hint "\00")
|
188 | 248 | (if
|
|
219 | 279 | ;; RTRIP-NEXT: )
|
220 | 280 | ;; RTRIP-NEXT: )
|
221 | 281 | ;; RTRIP-NEXT: )
|
| 282 | + ;; SRCMP: (func $branch-hints-br_on (type $1) (param $x anyref) |
| 283 | + ;; SRCMP-NEXT: (block $block |
| 284 | + ;; SRCMP-NEXT: (drop |
| 285 | + ;; SRCMP-NEXT: (@metadata.code.branch_hint "\00") |
| 286 | + ;; SRCMP-NEXT: (br_on_null $block |
| 287 | + ;; SRCMP-NEXT: (local.get $x) |
| 288 | + ;; SRCMP-NEXT: ) |
| 289 | + ;; SRCMP-NEXT: ) |
| 290 | + ;; SRCMP-NEXT: ) |
| 291 | + ;; SRCMP-NEXT: ) |
222 | 292 | (func $branch-hints-br_on (param $x anyref)
|
223 | 293 | (block $out
|
224 | 294 | (drop
|
|
0 commit comments