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