fixed a shift bug
[fw/sdcc] / src / mcs51 / gen.c
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);