fixed a shift bug
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 19 Feb 2003 12:07:16 +0000 (12:07 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 19 Feb 2003 12:07:16 +0000 (12:07 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2284 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/ds390/gen.c
src/mcs51/gen.c

index 6b5cb9c6b09179b17746e60628ff32fa03be46bd..f4bd67bb95f66b697c4827c4abe2d4ded19f3c25 100644 (file)
@@ -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
     {
index 1df46f84607a980952cb2a735e2901526edf5524..e40b01115a6527f91a74d61bb40456bf4caaec88 100644 (file)
@@ -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);