From e8a8d0a81be4ef1ffbb5c382705a27bd24ebefea Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Mon, 8 Jan 2018 12:43:15 +0100 Subject: dialyzer: Correct handling of erlang:abs/1 See also https://bugs.erlang.org/browse/ERL-551. --- lib/hipe/cerl/erl_bif_types.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/hipe') diff --git a/lib/hipe/cerl/erl_bif_types.erl b/lib/hipe/cerl/erl_bif_types.erl index a3a936322a..2e56d25694 100644 --- a/lib/hipe/cerl/erl_bif_types.erl +++ b/lib/hipe/cerl/erl_bif_types.erl @@ -1992,9 +1992,11 @@ arith_abs(X1, Opaques) -> case infinity_geq(Min1, 0) of true -> {Min1, Max1}; false -> + NegMin1 = infinity_inv(Min1), + NegMax1 = infinity_inv(Max1), case infinity_geq(Max1, 0) of - true -> {0, infinity_inv(Min1)}; - false -> {infinity_inv(Max1), infinity_inv(Min1)} + true -> {0, max(NegMin1, Max1)}; + false -> {NegMax1, NegMin1} end end, t_from_range(NewMin, NewMax) -- cgit v1.2.3