Skip to content

Commit ae65781

Browse files
committed
[inferbo] Make a more precise upper/lower bound when adding two upper/lower bounds
1 parent 567eeaa commit ae65781

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

infer/src/bufferoverrun/bounds.ml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -950,25 +950,25 @@ module Bound = struct
950950
let plus_l : weak:bool -> t -> t -> t =
951951
plus_exact ~otherwise:(fun x y ->
952952
match (x, y) with
953-
| MinMax (c1, Plus, Max, d1, _), Linear (c2, x2)
954-
| Linear (c2, x2), MinMax (c1, Plus, Max, d1, _) ->
955-
Linear (Z.(c1 + d1 + c2), x2)
956-
| MinMax (c1, Minus, Min, d1, _), Linear (c2, x2)
957-
| Linear (c2, x2), MinMax (c1, Minus, Min, d1, _) ->
958-
Linear (Z.(c1 - d1 + c2), x2)
953+
| MinMax (c1, Plus, Max, d1, x1), Linear (c2, x2)
954+
| Linear (c2, x2), MinMax (c1, Plus, Max, d1, x1) ->
955+
mk_MinMaxB (Max, (Linear (Z.(c1 + d1 + c2), x2)), (Linear (Z.(c1 + c2), SymLinear.plus (SymLinear.singleton_one x1) x2)))
956+
| MinMax (c1, Minus, Min, d1, x1), Linear (c2, x2)
957+
| Linear (c2, x2), MinMax (c1, Minus, Min, d1, x1) ->
958+
mk_MinMaxB (Max, (Linear (Z.(c1 - d1 + c2), x2)), (Linear (Z.(c1 + c2), SymLinear.plus (SymLinear.singleton_minus_one x1) x2)))
959959
| _, _ ->
960960
MInf )
961961

962962

963963
let plus_u : weak:bool -> t -> t -> t =
964964
plus_exact ~otherwise:(fun x y ->
965965
match (x, y) with
966-
| MinMax (c1, Plus, Min, d1, _), Linear (c2, x2)
967-
| Linear (c2, x2), MinMax (c1, Plus, Min, d1, _) ->
968-
Linear (Z.(c1 + d1 + c2), x2)
969-
| MinMax (c1, Minus, Max, d1, _), Linear (c2, x2)
970-
| Linear (c2, x2), MinMax (c1, Minus, Max, d1, _) ->
971-
Linear (Z.(c1 - d1 + c2), x2)
966+
| MinMax (c1, Plus, Min, d1, x1), Linear (c2, x2)
967+
| Linear (c2, x2), MinMax (c1, Plus, Min, d1, x1) ->
968+
mk_MinMaxB (Min, (Linear (Z.(c1 + d1 + c2), x2)), (Linear (Z.(c1 + c2), SymLinear.plus (SymLinear.singleton_one x1) x2)))
969+
| MinMax (c1, Minus, Max, d1, x1), Linear (c2, x2)
970+
| Linear (c2, x2), MinMax (c1, Minus, Max, d1, x1) ->
971+
mk_MinMaxB (Min, (Linear (Z.(c1 - d1 + c2), x2)), (Linear (Z.(c1 + c2), SymLinear.plus (SymLinear.singleton_minus_one x1) x2)))
972972
| _, _ ->
973973
PInf )
974974

0 commit comments

Comments
 (0)