From 118c148ec89dc0b53bb377cf637cfdcd800f06e5 Mon Sep 17 00:00:00 2001 From: xleroy Date: Thu, 8 Jul 2010 08:57:32 +0000 Subject: Bug in cparser/AddCasts.ml. git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1376 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- cparser/AddCasts.ml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'cparser') diff --git a/cparser/AddCasts.ml b/cparser/AddCasts.ml index 9ec128d9..eb3fa08a 100644 --- a/cparser/AddCasts.ml +++ b/cparser/AddCasts.ml @@ -26,7 +26,8 @@ open Transform (* We have the option of materializing all casts or leave "widening" casts implicit. Widening casts are: - from a small integer type to a larger integer type, -- from a small float type to a larger float type, + provided both types have the same signedness; +- from a small float type to a larger float type; - from a pointer type to void *. *) @@ -35,8 +36,8 @@ let omit_widening_casts = ref false let widening_cast env tfrom tto = begin match unroll env tfrom, unroll env tto with | TInt(k1, _), TInt(k2, _) -> - let r1 = integer_rank k1 and r2 = integer_rank k2 in - r1 < r2 || (r1 = r2 && is_signed_ikind k1 = is_signed_ikind k2) + integer_rank k1 <= integer_rank k2 + && is_signed_ikind k1 = is_signed_ikind k2 | TFloat(k1, _), TFloat(k2, _) -> float_rank k1 <= float_rank k2 | TPtr(ty1, _), TPtr(ty2, _) -> is_void_type env ty2 -- cgit