1;;! gc = true
2
3(module
4  (type $arr_i8 (array i8))
5  (type $arr_i64 (array i64))
6
7  ;; Overflow on `elems_size = len * sizeof(elem_type)`
8  (func (export "overflow-elems-size") (result (ref $arr_i64))
9    (array.new_default $arr_i64 (i32.const -1))
10  )
11
12  ;; Overflow on `base_size + elems_size`
13  (func (export "overflow-add-base-size") (result (ref $arr_i8))
14    (array.new_default $arr_i8 (i32.const -1))
15  )
16
17  ;; Larger than can fit in `VMGcHeader`'s reserved 27 bits.
18  (func (export "bigger-than-reserved-bits") (result (ref $arr_i8))
19    (array.new_default $arr_i8 (i32.shl (i32.const 1) (i32.const 27)))
20  )
21)
22
23(assert_trap (invoke "overflow-elems-size") "allocation size too large")
24(assert_trap (invoke "overflow-add-base-size") "allocation size too large")
25(assert_trap (invoke "bigger-than-reserved-bits") "allocation size too large")
26