;; NOTE: Assertions have been generated by update_lit_checks.py --output=fuzz-exec and should not be edited.

;; RUN: wasm-opt %s -all --fuzz-exec -q -o /dev/null 2>&1 | filecheck %s

(module
 (memory $0 i64 16 17)

 (data $0 "\00\00\00\00\00")

 ;; CHECK:      [fuzz-exec] calling memory.init.trap
 ;; CHECK-NEXT: [trap out of bounds segment access in memory.init]
 (func $memory.init.trap (export "memory.init.trap")
  ;; Trap on OOB on the segment offset.
  (memory.init $0
   (i64.const 0)
   (i32.const -3)
   (i32.const 1)
  )
 )

 ;; CHECK:      [fuzz-exec] calling memory.init.trap2
 ;; CHECK-NEXT: [trap out of bounds segment access in memory.init]
 (func $memory.init.trap2 (export "memory.init.trap2")
  ;; Trap on OOB on the size.
  (memory.init $0
   (i64.const 0)
   (i32.const 1)
   (i32.const 10)
  )
 )

 ;; CHECK:      [fuzz-exec] calling memory.grow.fail
 ;; CHECK-NEXT: [fuzz-exec] note result: memory.grow.fail => -1
 (func $memory.grow.fail (export "memory.grow.fail") (result i64)
  (memory.grow
   (i64.const -1)
  )
 )
)

;; CHECK:      [fuzz-exec] calling memory.init.trap
;; CHECK-NEXT: [trap out of bounds segment access in memory.init]

;; CHECK:      [fuzz-exec] calling memory.init.trap2
;; CHECK-NEXT: [trap out of bounds segment access in memory.init]

;; CHECK:      [fuzz-exec] calling memory.grow.fail
;; CHECK-NEXT: [fuzz-exec] note result: memory.grow.fail => -1
;; CHECK-NEXT: [fuzz-exec] comparing memory.grow.fail
;; CHECK-NEXT: [fuzz-exec] comparing memory.init.trap
;; CHECK-NEXT: [fuzz-exec] comparing memory.init.trap2