blob: f9384611f9ed5b658e817fb60c7d6ce2bd2bd275 [file] [edit]
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
;; RUN: wasm-opt %s -all --closed-world -tnh --dae2 --closed-world -S -o - \
;; RUN: | filecheck %s
;; RUN: wasm-opt %s -all --closed-world --dae2 --closed-world -S -o - \
;; RUN: | filecheck %s --check-prefix=TRAPS
(module
;; CHECK: (rec
;; CHECK-NEXT: (type $struct (descriptor $desc) (struct))
;; CHECK: (type $desc (describes $struct) (struct))
;; CHECK: (type $2 (func))
;; CHECK: (type $3 (func))
;; CHECK: (type $f (func))
;; TRAPS: (rec
;; TRAPS-NEXT: (type $struct (descriptor $desc) (struct))
;; TRAPS: (type $desc (describes $struct) (struct))
;; TRAPS: (type $2 (func))
;; TRAPS: (type $3 (func))
;; TRAPS: (type $f (func))
(type $f (func (param i32)))
(rec
(type $struct (descriptor $desc) (struct))
(type $desc (describes $struct) (struct))
)
;; CHECK: (memory $m 0 0)
;; TRAPS: (rec
;; TRAPS-NEXT: (type $5 (func (param i32)))
;; TRAPS: (type $6 (struct))
;; TRAPS: (type $7 (func (param (ref null (exact $desc)))))
;; TRAPS: (rec
;; TRAPS-NEXT: (type $8 (func (param anyref)))
;; TRAPS: (type $9 (struct))
;; TRAPS: (memory $m 0 0)
(memory $m 0 0)
;; CHECK: (func $division (type $2)
;; CHECK-NEXT: (local $x i32)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i32.const -1)
;; CHECK-NEXT: )
;; CHECK-NEXT: (call $division)
;; CHECK-NEXT: )
;; TRAPS: (func $division (type $5) (param $x i32)
;; TRAPS-NEXT: (call $division
;; TRAPS-NEXT: (i32.div_u
;; TRAPS-NEXT: (i32.const -1)
;; TRAPS-NEXT: (local.get $x)
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
(func $division (param $x i32)
(call $division
(i32.div_u
(i32.const -1)
(local.get $x)
)
)
)
;; CHECK: (func $load (type $2)
;; CHECK-NEXT: (local $x i32)
;; CHECK-NEXT: (call $load)
;; CHECK-NEXT: )
;; TRAPS: (func $load (type $5) (param $x i32)
;; TRAPS-NEXT: (call $load
;; TRAPS-NEXT: (i32.load
;; TRAPS-NEXT: (local.get $x)
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
(func $load (param $x i32)
(call $load
(i32.load
(local.get $x)
)
)
)
;; CHECK: (func $cast (type $2)
;; CHECK-NEXT: (local $ref anyref)
;; CHECK-NEXT: (call $cast)
;; CHECK-NEXT: )
;; TRAPS: (func $cast (type $8) (param $ref anyref)
;; TRAPS-NEXT: (call $cast
;; TRAPS-NEXT: (ref.cast (ref i31)
;; TRAPS-NEXT: (local.get $ref)
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
(func $cast (param $ref anyref)
(call $cast
(ref.cast (ref i31)
(local.get $ref)
)
)
)
;; CHECK: (func $allocation (type $2)
;; CHECK-NEXT: (local $desc (ref null (exact $desc)))
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
;; TRAPS: (func $allocation (type $7) (param $desc (ref null (exact $desc)))
;; TRAPS-NEXT: (drop
;; TRAPS-NEXT: (struct.new_default_desc $struct
;; TRAPS-NEXT: (local.get $desc)
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
;; TRAPS-NEXT: )
(func $allocation (param $desc (ref null (exact $desc)))
(drop
(struct.new_desc $struct
(local.get $desc)
)
)
)
)