Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion interpreter/exec/i32_convert.ml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ let trunc_f64_s x =
raise Numeric_error.InvalidConversionToInteger
else
let xf = F64.to_float x in
if xf >= -.Int32.(to_float min_int) || xf < Int32.(to_float min_int) then
if xf >= -.Int32.(to_float min_int) || xf <= Int32.(to_float min_int) -. 1.0 then
raise Numeric_error.IntegerOverflow
else
Int32.of_float xf
Expand Down
6 changes: 4 additions & 2 deletions test/core/conversions.wast
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@
(assert_return (invoke "i32.trunc_f64_s" (f64.const -2.0)) (i32.const -2))
(assert_return (invoke "i32.trunc_f64_s" (f64.const 2147483647.0)) (i32.const 2147483647))
(assert_return (invoke "i32.trunc_f64_s" (f64.const -2147483648.0)) (i32.const -2147483648))
(assert_return (invoke "i32.trunc_f64_s" (f64.const 2147483647.9999998)) (i32.const 2147483647))
(assert_trap (invoke "i32.trunc_f64_s" (f64.const 2147483647.9999999)) "integer overflow")
(assert_return (invoke "i32.trunc_f64_s" (f64.const -2147483648.9)) (i32.const -2147483648))
(assert_return (invoke "i32.trunc_f64_s" (f64.const 2147483647.9)) (i32.const 2147483647))
(assert_trap (invoke "i32.trunc_f64_s" (f64.const 2147483648.0)) "integer overflow")
(assert_trap (invoke "i32.trunc_f64_s" (f64.const -2147483649.0)) "integer overflow")
(assert_trap (invoke "i32.trunc_f64_s" (f64.const inf)) "integer overflow")
Expand All @@ -145,6 +145,8 @@
(assert_return (invoke "i32.trunc_f64_u" (f64.const -0x1.ccccccccccccdp-1)) (i32.const 0))
(assert_return (invoke "i32.trunc_f64_u" (f64.const -0x1.fffffffffffffp-1)) (i32.const 0))
(assert_return (invoke "i32.trunc_f64_u" (f64.const 1e8)) (i32.const 100000000))
(assert_return (invoke "i32.trunc_f64_u" (f64.const -0.9)) (i32.const 0))
(assert_return (invoke "i32.trunc_f64_u" (f64.const 4294967295.9)) (i32.const 4294967295))
(assert_trap (invoke "i32.trunc_f64_u" (f64.const 4294967296.0)) "integer overflow")
(assert_trap (invoke "i32.trunc_f64_u" (f64.const -1.0)) "integer overflow")
(assert_trap (invoke "i32.trunc_f64_u" (f64.const 1e16)) "integer overflow")
Expand Down