From 7925bed48d28e08d4f3fe23a6a18b213e09ece56 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Wed, 28 Feb 2007 17:34:50 +0000 Subject: [PATCH] * is_signed() only returns true for orddef's whose low value is < 0 (and not for all s8bit..s64bit types, since subrange types may be marked like that but not have a lower bound < 0). This is needed for bitpacking negative values, because e.g. both 0..7 and -3..3 can be stored in 3 bits, but 0..7 must be zero-extended when extracted (so must be unsigned) and -3..3 must be sign-extended when extracted (so must be considered signed) git-svn-id: trunk@6682 - --- compiler/defutil.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/defutil.pas b/compiler/defutil.pas index f40cdfbef7..6bc71b5a3b 100644 --- a/compiler/defutil.pas +++ b/compiler/defutil.pas @@ -437,7 +437,7 @@ implementation begin case def.typ of orddef : - result:=(torddef(def).ordtype in [s8bit,s16bit,s32bit,s64bit,scurrency]); + result:=torddef(def).low < 0; enumdef : result:=tenumdef(def).min < 0; arraydef :