fixed the stupid mistake I made in genMinus()
authorwiml <wiml@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 19 Sep 2002 06:52:00 +0000 (06:52 +0000)
committerwiml <wiml@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 19 Sep 2002 06:52:00 +0000 (06:52 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2102 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/mcs51/gen.c

index dea40707c4df46ff64e513997ee9536cf4e300f4..86b8664954173e62dadc497c25325f8282705f4c 100644 (file)
@@ -3451,9 +3451,7 @@ genMinus (iCode * ic)
   else
     {
       asmop *leftOp, *rightOp;
-      bool borrow;
 
-      borrow = FALSE;
       leftOp = AOP(IC_LEFT(ic));
       rightOp = AOP(IC_RIGHT(ic));
 
@@ -3462,7 +3460,7 @@ genMinus (iCode * ic)
          if (aopGetUsesAcc(rightOp, offset)) {
            wassertl(!aopGetUsesAcc(leftOp, offset), "accumulator clash");
            MOVA (aopGet(rightOp, offset, FALSE, TRUE));
-           if (borrow) {
+           if (offset > 0) {
              emitcode( "cpl", "c");
            } else {
              emitcode( "setb", "c");
@@ -3471,12 +3469,13 @@ genMinus (iCode * ic)
            emitcode("cpl", "a");
          } else {
            MOVA (aopGet (leftOp, offset, FALSE, FALSE));
-           emitcode ((borrow? "subb" : "sub"), "a,%s",
+           if (offset == 0)
+             CLRC;
+           emitcode ("subb", "a,%s",
                      aopGet(rightOp, offset, FALSE, TRUE));
          }
 
          aopPut (AOP (IC_RESULT (ic)), "a", offset++);
-         borrow = TRUE;  /* subsequent subtracts must propagate borrow */
        }
     }