summaryrefslogtreecommitdiff
path: root/test/lit/exec/trap.wast
blob: a0ed6f0f2dc81636cf129c59cb0cb1e5d471a33e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
;; NOTE: Assertions have been generated by update_lit_checks.py --output=fuzz-exec and should not be edited.

;; RUN: wasm-opt %s --vacuum --fuzz-exec -q -o /dev/null 2>&1 | filecheck %s
;; RUN: wasm-opt %s --ignore-implicit-traps --vacuum --fuzz-exec -q -o /dev/null 2>&1 | filecheck %s --check-prefix=IIT
;; RUN: wasm-opt %s --traps-never-happen --vacuum --fuzz-exec -q -o /dev/null 2>&1 | filecheck %s --check-prefix=TNH

(module
  ;; CHECK:      [fuzz-exec] calling trap
  ;; CHECK-NEXT: [trap unreachable]
  ;; IIT:      [fuzz-exec] calling trap
  ;; IIT-NEXT: [trap unreachable]
  ;; TNH:      [fuzz-exec] calling trap
  ;; TNH-NEXT: [trap unreachable]
  (func "trap"
    (unreachable)
  )

  (memory 1 1)
  ;; CHECK:      [fuzz-exec] calling load-trap
  ;; CHECK-NEXT: [trap highest > memory: 65536 > 65532]
  ;; IIT:      [fuzz-exec] calling load-trap
  ;; IIT-NEXT: [trap highest > memory: 65536 > 65532]
  ;; TNH:      [fuzz-exec] calling load-trap
  ;; TNH-NEXT: [trap highest > memory: 65536 > 65532]
  (func "load-trap"
    ;; This load traps, so this cannot be removed. But if either of
    ;; --ignore-implicit-traps or --traps-never-happen is set, this load is
    ;; assumed not to trap and we end up optimizing this out with --vacuum,
    ;; causes the trap behavior to change. This should not result in [fuzz-exec]
    ;; comparison failure.
    (drop
      (i32.load (i32.const 65536))
    )
  )
)
;; CHECK:      [fuzz-exec] calling trap
;; CHECK-NEXT: [trap unreachable]

;; CHECK:      [fuzz-exec] calling load-trap
;; CHECK-NEXT: [trap highest > memory: 65536 > 65532]
;; CHECK-NEXT: [fuzz-exec] comparing load-trap
;; CHECK-NEXT: [fuzz-exec] comparing trap

;; IIT:      [fuzz-exec] calling trap
;; IIT-NEXT: [trap unreachable]

;; IIT:      [fuzz-exec] calling load-trap
;; IIT-NEXT: [fuzz-exec] comparing load-trap
;; IIT-NEXT: [fuzz-exec] comparing trap

;; TNH:      [fuzz-exec] calling trap

;; TNH:      [fuzz-exec] calling load-trap
;; TNH-NEXT: [fuzz-exec] comparing load-trap
;; TNH-NEXT: [fuzz-exec] comparing trap