aeecf28c2f8374ace1119a1cd97800324bb7df4a
[platform/framework/web/lwnode.git] /
1 ;; Failures in unreachable code.
2
3 (assert_invalid
4   (module (func $local-index (unreachable) (drop (local.get 0))))
5   "unknown local"
6 )
7 (assert_invalid
8   (module (func $global-index (unreachable) (drop (global.get 0))))
9   "unknown global"
10 )
11 (assert_invalid
12   (module (func $func-index (unreachable) (call 1)))
13   "unknown function"
14 )
15 (assert_invalid
16   (module (func $label-index (unreachable) (br 1)))
17   "unknown label"
18 )
19
20 (assert_invalid
21   (module (func $type-num-vs-num
22     (unreachable) (drop (i64.eqz (i32.const 0))))
23   )
24   "type mismatch"
25 )
26 (assert_invalid
27   (module (func $type-poly-num-vs-num (result i32)
28     (unreachable) (i64.const 0) (i32.const 0) (select)
29   ))
30   "type mismatch"
31 )
32 (assert_invalid
33   (module (func $type-poly-transitive-num-vs-num (result i32)
34     (unreachable)
35     (i64.const 0) (i32.const 0) (select)
36     (i32.const 0) (i32.const 0) (select)
37   ))
38   "type mismatch"
39 )
40
41 (assert_invalid
42   (module (func $type-unconsumed-const (unreachable) (i32.const 0)))
43   "type mismatch"
44 )
45 (assert_invalid
46   (module (func $type-unconsumed-result (unreachable) (i32.eqz)))
47   "type mismatch"
48 )
49 (assert_invalid
50   (module (func $type-unconsumed-result2
51     (unreachable) (i32.const 0) (i32.add)
52   ))
53   "type mismatch"
54 )
55 (assert_invalid
56   (module (func $type-unconsumed-poly0 (unreachable) (select)))
57   "type mismatch"
58 )
59 (assert_invalid
60   (module (func $type-unconsumed-poly1 (unreachable) (i32.const 0) (select)))
61   "type mismatch"
62 )
63 (assert_invalid
64   (module (func $type-unconsumed-poly2
65     (unreachable) (i32.const 0) (i32.const 0) (select)
66   ))
67   "type mismatch"
68 )
69
70 (assert_invalid
71   (module (func $type-unary-num-vs-void-after-break
72     (block (br 0) (block (drop (i32.eqz (nop)))))
73   ))
74   "type mismatch"
75 )
76 (assert_invalid
77   (module (func $type-unary-num-vs-num-after-break
78     (block (br 0) (drop (i32.eqz (f32.const 1))))
79   ))
80   "type mismatch"
81 )
82 (assert_invalid
83   (module (func $type-binary-num-vs-void-after-break
84     (block (br 0) (block (drop (f32.eq (i32.const 1)))))
85   ))
86   "type mismatch"
87 )
88 (assert_invalid
89   (module (func $type-binary-num-vs-num-after-break
90     (block (br 0) (drop (f32.eq (i32.const 1) (f32.const 0))))
91   ))
92   "type mismatch"
93 )
94 (assert_invalid
95   (module (func $type-block-value-num-vs-void-after-break
96     (block (br 0) (i32.const 1))
97   ))
98   "type mismatch"
99 )
100 (assert_invalid
101   (module (func $type-block-value-num-vs-num-after-break (result i32)
102     (block (result i32) (i32.const 1) (br 0) (f32.const 0))
103   ))
104   "type mismatch"
105 )
106 (assert_invalid
107   (module (func $type-loop-value-num-vs-void-after-break
108     (block (loop (br 1) (i32.const 1)))
109   ))
110   "type mismatch"
111 )
112 (assert_invalid
113   (module (func $type-loop-value-num-vs-num-after-break (result i32)
114     (loop (result i32) (br 1 (i32.const 1)) (f32.const 0))
115   ))
116   "type mismatch"
117 )
118 (assert_invalid
119   (module (func $type-func-value-num-vs-void-after-break
120     (br 0) (i32.const 1)
121   ))
122   "type mismatch"
123 )
124 (assert_invalid
125   (module (func $type-func-value-num-vs-num-after-break (result i32)
126     (br 0 (i32.const 1)) (f32.const 0)
127   ))
128   "type mismatch"
129 )
130
131 (assert_invalid
132   (module (func $type-unary-num-vs-void-after-return
133     (return) (block (drop (i32.eqz (nop))))
134   ))
135   "type mismatch"
136 )
137 (assert_invalid
138   (module (func $type-unary-num-vs-num-after-return
139     (return) (drop (i32.eqz (f32.const 1)))
140   ))
141   "type mismatch"
142 )
143 (assert_invalid
144   (module (func $type-binary-num-vs-void-after-return
145     (return) (block (drop (f32.eq (i32.const 1))))
146   ))
147   "type mismatch"
148 )
149 (assert_invalid
150   (module (func $type-binary-num-vs-num-after-return
151     (return) (drop (f32.eq (i32.const 1) (f32.const 0)))
152   ))
153   "type mismatch"
154 )
155 (assert_invalid
156   (module (func $type-block-value-num-vs-void-after-return
157     (block (return) (i32.const 1))
158   ))
159   "type mismatch"
160 )
161 (assert_invalid
162   (module (func $type-block-value-num-vs-num-after-return (result i32)
163     (block (result i32) (i32.const 1) (return (i32.const 0)) (f32.const 0))
164   ))
165   "type mismatch"
166 )
167 (assert_invalid
168   (module (func $type-loop-value-num-vs-void-after-return
169     (block (loop (return) (i32.const 1)))
170   ))
171   "type mismatch"
172 )
173 (assert_invalid
174   (module (func $type-loop-value-num-vs-num-after-return (result i32)
175     (loop (result i32) (return (i32.const 1)) (f32.const 0))
176   ))
177   "type mismatch"
178 )
179 (assert_invalid
180   (module (func $type-func-value-num-vs-void-after-return
181     (return) (i32.const 1)
182   ))
183   "type mismatch"
184 )
185 (assert_invalid
186   (module (func $type-func-value-num-vs-num-after-return (result i32)
187     (return (i32.const 1)) (f32.const 0)
188   ))
189   "type mismatch"
190 )
191
192 (assert_invalid
193   (module (func $type-unary-num-vs-void-after-unreachable
194     (unreachable) (block (drop (i32.eqz (nop))))
195   ))
196   "type mismatch"
197 )
198 (assert_invalid
199   (module (func $type-unary-num-vs-void-in-loop-after-unreachable
200     (unreachable) (loop (drop (i32.eqz (nop))))
201   ))
202   "type mismatch"
203 )
204 (assert_invalid
205   (module (func $type-unary-num-vs-void-in-i32-loop-after-unreachable
206     (unreachable) (loop (result i32) (i32.eqz (nop)))
207   ))
208   "type mismatch"
209 )
210 (assert_invalid
211   (module (func $type-unary-num-vs-num-after-unreachable
212     (unreachable) (drop (i32.eqz (f32.const 1)))
213   ))
214   "type mismatch"
215 )
216 (assert_invalid
217   (module (func $type-binary-num-vs-void-after-unreachable
218     (unreachable) (block (drop (f32.eq (i32.const 1))))
219   ))
220   "type mismatch"
221 )
222 (assert_invalid
223   (module (func $type-binary-num-vs-num-after-unreachable
224     (unreachable) (drop (f32.eq (i32.const 1) (f32.const 0)))
225   ))
226   "type mismatch"
227 )
228 (assert_invalid
229   (module (func $type-block-value-num-vs-void-after-unreachable
230     (block (unreachable) (i32.const 1))
231   ))
232   "type mismatch"
233 )
234 (assert_invalid
235   (module (func $type-block-value-num-vs-num-after-unreachable (result i32)
236     (block (result i32) (i32.const 1) (unreachable) (f32.const 0))
237   ))
238   "type mismatch"
239 )
240 (assert_invalid
241   (module (func $type-loop-value-num-vs-void-after-unreachable
242     (block (loop (unreachable) (i32.const 1)))
243   ))
244   "type mismatch"
245 )
246 (assert_invalid
247   (module (func $type-loop-value-num-vs-num-after-unreachable (result i32)
248     (loop (result i32) (unreachable) (f32.const 0))
249   ))
250   "type mismatch"
251 )
252 (assert_invalid
253   (module (func $type-func-value-num-vs-void-after-unreachable
254     (unreachable) (i32.const 1)
255   ))
256   "type mismatch"
257 )
258 (assert_invalid
259   (module (func $type-func-value-num-vs-num-after-unreachable (result i32)
260     (unreachable) (f32.const 0)
261   ))
262   "type mismatch"
263 )
264 (assert_invalid
265   (module (func $type-unary-num-vs-void-in-if-after-unreachable
266     (unreachable) (if (i32.const 0) (then (drop (i32.eqz (nop)))))
267   ))
268   "type mismatch"
269 )
270 (assert_invalid
271   (module (func $type-unary-num-vs-void-in-else-after-unreachable
272     (unreachable) (if (i32.const 0) (then (nop)) (else (drop (i32.eqz (nop)))))
273   ))
274   "type mismatch"
275 )
276 (assert_invalid
277   (module (func $type-unary-num-vs-void-in-else-after-unreachable-if
278     (if (i32.const 0) (then (unreachable)) (else (drop (i32.eqz (nop)))))
279   ))
280   "type mismatch"
281 )
282
283 (assert_invalid
284   (module (func $type-unary-num-vs-void-after-nested-unreachable
285     (block (unreachable)) (block (drop (i32.eqz (nop))))
286   ))
287   "type mismatch"
288 )
289 (assert_invalid
290   (module (func $type-unary-num-vs-num-after-nested-unreachable
291     (block (unreachable)) (drop (i32.eqz (f32.const 1)))
292   ))
293   "type mismatch"
294 )
295 (assert_invalid
296   (module (func $type-binary-num-vs-void-after-nested-unreachable
297     (block (unreachable)) (block (drop (f32.eq (i32.const 1))))
298   ))
299   "type mismatch"
300 )
301 (assert_invalid
302   (module (func $type-binary-num-vs-num-after-nested-unreachable
303     (block (unreachable)) (drop (f32.eq (i32.const 1) (f32.const 0)))
304   ))
305   "type mismatch"
306 )
307 (assert_invalid
308   (module (func $type-block-value-num-vs-void-after-nested-unreachable
309     (block (block (unreachable)) (i32.const 1))
310   ))
311   "type mismatch"
312 )
313 (assert_invalid
314   (module (func $type-block-value-num-vs-num-after-nested-unreachable
315     (result i32)
316     (block (result i32) (i32.const 1) (block (unreachable)) (f32.const 0))
317   ))
318   "type mismatch"
319 )
320 (assert_invalid
321   (module (func $type-loop-value-num-vs-void-after-nested-unreachable
322     (block (loop (block (unreachable)) (i32.const 1)))
323   ))
324   "type mismatch"
325 )
326 (assert_invalid
327   (module (func $type-loop-value-num-vs-num-after-nested-unreachable
328     (result i32)
329     (loop (result i32) (block (unreachable)) (f32.const 0))
330   ))
331   "type mismatch"
332 )
333 (assert_invalid
334   (module (func $type-func-value-num-vs-void-after-nested-unreachable
335     (block (unreachable)) (i32.const 1)
336   ))
337   "type mismatch"
338 )
339 (assert_invalid
340   (module (func $type-func-value-num-vs-num-after-nested-unreachable
341     (result i32)
342     (block (unreachable)) (f32.const 0)
343   ))
344   "type mismatch"
345 )
346
347 (assert_invalid
348   (module (func $type-unary-num-vs-void-after-infinite-loop
349     (loop (br 0)) (block (drop (i32.eqz (nop))))
350   ))
351   "type mismatch"
352 )
353 (assert_invalid
354   (module (func $type-unary-num-vs-num-after-infinite-loop
355     (loop (br 0)) (drop (i32.eqz (f32.const 1)))
356   ))
357   "type mismatch"
358 )
359 (assert_invalid
360   (module (func $type-binary-num-vs-void-after-infinite-loop
361     (loop (br 0)) (block (drop (f32.eq (i32.const 1))))
362   ))
363   "type mismatch"
364 )
365 (assert_invalid
366   (module (func $type-binary-num-vs-num-after-infinite-loop
367     (loop (br 0)) (drop (f32.eq (i32.const 1) (f32.const 0)))
368   ))
369   "type mismatch"
370 )
371 (assert_invalid
372   (module (func $type-block-value-num-vs-void-after-infinite-loop
373     (block (loop (br 0)) (i32.const 1))
374   ))
375   "type mismatch"
376 )
377 (assert_invalid
378   (module (func $type-block-value-num-vs-num-after-infinite-loop (result i32)
379     (block (result i32) (i32.const 1) (loop (br 0)) (f32.const 0))
380   ))
381   "type mismatch"
382 )
383 (assert_invalid
384   (module (func $type-loop-value-num-vs-void-after-infinite-loop
385     (block (loop (loop (br 0)) (i32.const 1)))
386   ))
387   "type mismatch"
388 )
389 (assert_invalid
390   (module (func $type-loop-value-num-vs-num-after-infinite-loop (result i32)
391     (loop (result i32) (loop (br 0)) (f32.const 0))
392   ))
393   "type mismatch"
394 )
395 (assert_invalid
396   (module (func $type-func-value-num-vs-void-after-infinite-loop
397     (loop (br 0)) (i32.const 1)
398   ))
399   "type mismatch"
400 )
401 (assert_invalid
402   (module (func $type-func-value-num-vs-num-after-infinite-loop (result i32)
403     (loop (br 0)) (f32.const 0)
404   ))
405   "type mismatch"
406 )
407
408 (assert_invalid
409   (module (func $type-unary-num-vs-void-in-dead-body
410     (if (i32.const 0) (then (drop (i32.eqz (nop)))))
411   ))
412   "type mismatch"
413 )
414 (assert_invalid
415   (module (func $type-unary-num-vs-num-in-dead-body
416     (if (i32.const 0) (then (drop (i32.eqz (f32.const 1)))))
417   ))
418   "type mismatch"
419 )
420 (assert_invalid
421   (module (func $type-binary-num-vs-void-in-dead-body
422     (if (i32.const 0) (then (drop (f32.eq (i32.const 1)))))
423   ))
424   "type mismatch"
425 )
426 (assert_invalid
427   (module (func $type-binary-num-vs-num-in-dead-body
428     (if (i32.const 0) (then (drop (f32.eq (i32.const 1) (f32.const 0)))))
429   ))
430   "type mismatch"
431 )
432 (assert_invalid
433   (module (func $type-if-value-num-vs-void-in-dead-body
434     (if (i32.const 0) (then (i32.const 1)))
435   ))
436   "type mismatch"
437 )
438 (assert_invalid
439   (module (func $type-if-value-num-vs-num-in-dead-body (result i32)
440     (if (result i32) (i32.const 0) (then (f32.const 0)))
441   ))
442   "type mismatch"
443 )
444 (assert_invalid
445   (module (func $type-block-value-num-vs-void-in-dead-body
446     (if (i32.const 0) (then (block (i32.const 1))))
447   ))
448   "type mismatch"
449 )
450 (assert_invalid
451   (module (func $type-block-value-num-vs-num-in-dead-body (result i32)
452     (if (result i32) (i32.const 0) (then (block (result i32) (f32.const 0))))
453   ))
454   "type mismatch"
455 )
456 (assert_invalid
457   (module (func $type-block-value-num-vs-void-in-dead-body
458     (if (i32.const 0) (then (loop (i32.const 1))))
459   ))
460   "type mismatch"
461 )
462 (assert_invalid
463   (module (func $type-block-value-num-vs-num-in-dead-body (result i32)
464     (if (result i32) (i32.const 0) (then (loop (result i32) (f32.const 0))))
465   ))
466   "type mismatch"
467 )
468
469 (assert_invalid
470   (module (func $type-return-second-num-vs-num (result i32)
471     (return (i32.const 1)) (return (f64.const 1))
472   ))
473   "type mismatch"
474 )
475
476 (assert_invalid
477   (module (func $type-br-second-num-vs-num (result i32)
478     (block (result i32) (br 0 (i32.const 1)) (br 0 (f64.const 1)))
479   ))
480   "type mismatch"
481 )
482
483 (assert_invalid
484   (module (func $type-br_if-cond-num-vs-num-after-unreachable
485     (block (br_if 0 (unreachable) (f32.const 0)))
486   ))
487   "type mismatch"
488 )
489 (assert_invalid
490   (module (func $type-br_if-num-vs-void-after-unreachable (result i32)
491     (block (result i32)
492       (block (unreachable) (br_if 1 (i32.const 0) (i32.const 0)))
493     )
494   ))
495   "type mismatch"
496 )
497 (assert_invalid
498   (module (func $type-br_if-num-vs-num-after-unreachable (result i32)
499     (block (result i32)
500       (block (result f32) (unreachable) (br_if 1 (i32.const 0) (i32.const 0)))
501       (drop) (i32.const 0)
502     )
503   ))
504   "type mismatch"
505 )
506 (assert_invalid
507   (module (func $type-br_if-num2-vs-num-after-unreachable (result i32)
508     (block (result i32)
509       (unreachable) (br_if 0 (i32.const 0) (i32.const 0)) (i32.const 0)
510     )
511   ))
512   "type mismatch"
513 )
514 (assert_invalid
515   (module (func $type-br_table-num-vs-num-after-unreachable
516     (block (br_table 0 (unreachable) (f32.const 1)))
517   ))
518   "type mismatch"
519 )
520 (assert_invalid
521   (module (func $type-br_table-label-num-vs-num-after-unreachable (result i32)
522     (block (result i32) (unreachable) (br_table 0 (f32.const 0) (i32.const 1)))
523   ))
524   "type mismatch"
525 )
526 (assert_invalid
527   (module (func $type-br_table-label-num-vs-label-void-after-unreachable
528     (block
529       (block (result f32)
530         (unreachable)
531         (br_table 0 1 0 (i32.const 1))
532       )
533       (drop)
534     )
535   ))
536   "type mismatch"
537 )
538
539 (assert_invalid
540   (module (func $type-br_table-label-num-vs-label-num-after-unreachable
541     (block (result f64)
542       (block (result f32)
543         (unreachable)
544         (br_table 0 1 1 (i32.const 1))
545       )
546       (drop)
547       (f64.const 0)
548     )
549     (drop)
550   ))
551   "type mismatch"
552 )
553
554 (assert_invalid
555   (module (func $type-block-value-nested-unreachable-num-vs-void
556     (block (i32.const 3) (block (unreachable)))
557   ))
558   "type mismatch"
559 )
560 (assert_invalid
561   (module (func $type-block-value-nested-unreachable-void-vs-num (result i32)
562     (block (block (unreachable)))
563   ))
564   "type mismatch"
565 )
566 (assert_invalid
567   (module (func $type-block-value-nested-unreachable-num-vs-num (result i32)
568     (block (result i64) (i64.const 0) (block (unreachable)))
569   ))
570   "type mismatch"
571 )
572 (assert_invalid
573   (module (func $type-block-value-nested-unreachable-num2-vs-void (result i32)
574     (block (i32.const 3) (block (i64.const 1) (unreachable))) (i32.const 9)
575   ))
576   "type mismatch"
577 )
578
579 (assert_invalid
580   (module (func $type-block-value-nested-br-num-vs-void
581     (block (i32.const 3) (block (br 1)))
582   ))
583   "type mismatch"
584 )
585 (assert_invalid
586   (module (func $type-block-value-nested-br-void-vs-num (result i32)
587     (block (result i32) (block (br 1 (i32.const 0))))
588   ))
589   "type mismatch"
590 )
591 (assert_invalid
592   (module (func $type-block-value-nested-br-num-vs-num (result i32)
593     (block (result i32) (i64.const 0) (block (br 1 (i32.const 0))))
594   ))
595   "type mismatch"
596 )
597
598 (assert_invalid
599   (module (func $type-block-value-nested2-br-num-vs-void
600     (block (block (i32.const 3) (block (br 2))))
601   ))
602   "type mismatch"
603 )
604 (assert_invalid
605   (module (func $type-block-value-nested2-br-void-vs-num (result i32)
606     (block (result i32) (block (block (br 2 (i32.const 0)))))
607   ))
608   "type mismatch"
609 )
610 (assert_invalid
611   (module (func $type-block-value-nested2-br-num-vs-num (result i32)
612     (block (result i32)
613       (block (result i64) (i64.const 0) (block (br 2 (i32.const 0))))
614     )
615   ))
616   "type mismatch"
617 )
618 (assert_invalid
619   (module (func $type-block-value-nested2-br-num2-vs-void (result i32)
620     (block (i32.const 3) (block (i64.const 1) (br 1))) (i32.const 9)
621   ))
622   "type mismatch"
623 )
624
625 (assert_invalid
626   (module (func $type-block-value-nested-return-num-vs-void
627     (block (i32.const 3) (block (return)))
628   ))
629   "type mismatch"
630 )
631 (assert_invalid
632   (module (func $type-block-value-nested-return-void-vs-num (result i32)
633     (block (block (return (i32.const 0))))
634   ))
635   "type mismatch"
636 )
637 (assert_invalid
638   (module (func $type-block-value-nested-return-num-vs-num (result i32)
639     (block (result i64) (i64.const 0) (block (return (i32.const 0))))
640   ))
641   "type mismatch"
642 )
643 (assert_invalid
644   (module (func $type-block-value-nested-return-num2-vs-void (result i32)
645     (block (i32.const 3) (block (i64.const 1) (return (i32.const 0))))
646     (i32.const 9)
647   ))
648   "type mismatch"
649 )
650
651 (assert_invalid
652   (module (func $type-loop-value-nested-unreachable-num-vs-void
653     (loop (i32.const 3) (block (unreachable)))
654   ))
655   "type mismatch"
656 )
657 (assert_invalid
658   (module (func $type-loop-value-nested-unreachable-void-vs-num (result i32)
659     (loop (block (unreachable)))
660   ))
661   "type mismatch"
662 )
663 (assert_invalid
664   (module (func $type-loop-value-nested-unreachable-num-vs-num (result i32)
665     (loop (result i64) (i64.const 0) (block (unreachable)))
666   ))
667   "type mismatch"
668 )
669
670 (assert_invalid
671   (module (func $type-cont-last-void-vs-empty (result i32)
672     (loop (br 0 (nop)))
673   ))
674   "type mismatch"
675 )
676 (assert_invalid
677   (module (func $type-cont-last-num-vs-empty (result i32)
678     (loop (br 0 (i32.const 0)))
679   ))
680   "type mismatch"
681 )
682
683 (assert_invalid
684   (module (func $tee-local-unreachable-value
685     (local i32)
686     (local.tee 0 (unreachable))
687   ))
688   "type mismatch"
689 )
690 (assert_invalid
691   (module (func $br_if-unreachable (result i32)
692     (block (result i32)
693       (block
694         (br_if 1 (unreachable) (i32.const 0))
695       )
696       (i32.const 0)
697     )
698   ))
699   "type mismatch"
700 )
701 (assert_invalid 
702   (module
703     (func $type-br_if-after-unreachable (result i64)
704       unreachable
705       br_if 0
706       i64.extend_i32_u
707     )
708   )
709  "type mismatch"
710 )