From: bernhardheld Date: Thu, 24 Jul 2003 11:17:52 +0000 (+0000) Subject: src/SDCCicode.c (operandOperation): fixed problem with bitops and 0xffffffff X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=7c633d42e7c8d6979524e1d930b3c3585b6b926d;p=fw%2Fsdcc src/SDCCicode.c (operandOperation): fixed problem with bitops and 0xffffffff git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2770 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 5d86caeb..3754bee3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-07-24 Bernhard Held + + * src/SDCCicode.c (operandOperation): fixed problem with bitops and 0xffffffff; + after {double d = 0xffffffff; long l = d;} l will be 0x80000000 (LONG_MIN) + 2003-07-23 Bernhard Held added DUMMY_READ_VOLATILE: diff --git a/src/SDCCicode.c b/src/SDCCicode.c index a49f75ab..e4e54e7c 100644 --- a/src/SDCCicode.c +++ b/src/SDCCicode.c @@ -1143,16 +1143,16 @@ operandOperation (operand * left, operand * right, operandLitValue (right)); break; case BITWISEAND: - retval = operandFromLit ((long)operandLitValue(left) & - (long)operandLitValue(right)); + retval = operandFromLit ((unsigned long)operandLitValue(left) & + (unsigned long)operandLitValue(right)); break; case '|': - retval = operandFromLit ((long)operandLitValue (left) | - (long)operandLitValue (right)); + retval = operandFromLit ((unsigned long)operandLitValue (left) | + (unsigned long)operandLitValue (right)); break; case '^': - retval = operandFromLit ((long)operandLitValue (left) ^ - (long)operandLitValue (right)); + retval = operandFromLit ((unsigned long)operandLitValue (left) ^ + (unsigned long)operandLitValue (right)); break; case AND_OP: retval = operandFromLit (operandLitValue (left) && @@ -1164,7 +1164,7 @@ operandOperation (operand * left, operand * right, break; case RRC: { - long i = (long) operandLitValue (left); + unsigned long i = (unsigned long) operandLitValue (left); retval = operandFromLit ((i >> (getSize (operandType (left)) * 8 - 1)) | (i << 1)); @@ -1172,7 +1172,7 @@ operandOperation (operand * left, operand * right, break; case RLC: { - long i = (long) operandLitValue (left); + unsigned long i = (unsigned long) operandLitValue (left); retval = operandFromLit ((i << (getSize (operandType (left)) * 8 - 1)) | (i >> 1)); @@ -1184,7 +1184,7 @@ operandOperation (operand * left, operand * right, break; case '~': - retval = operandFromLit (~((long) operandLitValue (left))); + retval = operandFromLit (~((unsigned long) operandLitValue (left))); break; case '!':