From dcbbc36c929a41a4bd6b28ee37223051bc7dfb8b Mon Sep 17 00:00:00 2001 From: johanknol Date: Fri, 12 Oct 2001 12:36:05 +0000 Subject: [PATCH] Another big endian fix git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1391 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCval.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/SDCCval.c b/src/SDCCval.c index 04fd633c..6d645ee2 100644 --- a/src/SDCCval.c +++ b/src/SDCCval.c @@ -343,33 +343,31 @@ value *cheapestVal (value *val) { } if (SPEC_USIGN(val->type)) { + if (uval<=0xffff) { + SPEC_LONG(val->type)=0; + SPEC_CVAL(val->type).v_uint = uval; + } if (uval<=0xff) { SPEC_NOUN(val->type)=V_CHAR; - SPEC_LONG(val->type)=0; - } else { - if (uval<=0xffff) { - SPEC_LONG(val->type)=0; - } } - } else { + } else { // not unsigned if (sval<0) { + if (sval>=-32768) { + SPEC_LONG(val->type)=0; + SPEC_CVAL(val->type).v_int = sval & 0xffff; + } if (sval>=-128) { SPEC_NOUN(val->type)=V_CHAR; SPEC_CVAL(val->type).v_int &= 0xff; + } + } else { // sval>=0 + SPEC_USIGN(val->type)=1; + if (sval<=65535) { SPEC_LONG(val->type)=0; - } else { - if (sval>=-32768) { - SPEC_LONG(val->type)=0; - } + SPEC_CVAL(val->type).v_int = sval; } - } else { - if (sval<=127) { + if (sval<=255) { SPEC_NOUN(val->type)=V_CHAR; - SPEC_LONG(val->type)=0; - } else { - if (sval<=32767) { - SPEC_LONG(val->type)=0; - } } } } -- 2.30.2