From ce1204f6b78f5ae59099a288bd60207106e11c20 Mon Sep 17 00:00:00 2001 From: johanknol Date: Wed, 19 Feb 2003 12:07:16 +0000 Subject: [PATCH] fixed a shift bug git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2284 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/ds390/gen.c | 2 ++ src/mcs51/gen.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ds390/gen.c b/src/ds390/gen.c index 6b5cb9c6..f4bd67bb 100644 --- a/src/ds390/gen.c +++ b/src/ds390/gen.c @@ -8548,6 +8548,8 @@ genRightShiftLiteral (operand * left, MOVA (aopGet (AOP (left), size - 1, FALSE, FALSE, TRUE)); } addSign (result, LSB, sign); + freeAsmop (left, NULL, ic, TRUE); + freeAsmop (result, NULL, ic, TRUE); } else { diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index 1df46f84..e40b0111 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -6826,10 +6826,13 @@ genRightShiftLiteral (operand * left, else if (shCount >= (size * 8)) { - if (sign) + if (sign) { /* get sign in acc.7 */ MOVA (aopGet (AOP (left), size - 1, FALSE, FALSE)); + } addSign (result, LSB, sign); + freeAsmop (left, NULL, ic, TRUE); + freeAsmop (result, NULL, ic, TRUE); } else { @@ -8449,8 +8452,9 @@ genAssign (iCode * ic) right = IC_RIGHT (ic); /* if they are the same */ - if (operandsEqu (IC_RESULT (ic), IC_RIGHT (ic))) + if (operandsEqu (result, right)) { return; + } aopOp (right, ic, FALSE); -- 2.30.2