* src/hc08/gen.c (genSwap): fix swap regression test
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 11 Feb 2007 12:30:15 +0000 (12:30 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 11 Feb 2007 12:30:15 +0000 (12:30 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4629 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/hc08/gen.c

index 82008415f6b75537d93e0d72b6dcfd68766294c6..0f65d7a7c0c7517f13f04ca90a0df48fd05ee72a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-02-11 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/hc08/gen.c (genSwap): fix swap regression test
+
 2007-02-10 Borut Razem <borut.razem AT siol.net>
 
        * src/SDCCsymt.c: fixed bug #1159134: invalid duplicate declarations
index 8c93b380c85b1083471488e31910cd8b5eb77e86..f7f9be1801bd273dca82497fe6723405bf3a37ed 100644 (file)
@@ -1621,6 +1621,7 @@ operandsEqu (operand * op1, operand * op2)
   if (sym1 == sym2)
     return TRUE;
 
+  /* if they have the same rname */
   if (sym1->rname[0] && sym2->rname[0]
       && strcmp (sym1->rname, sym2->rname) == 0)
     return TRUE;
@@ -5702,7 +5703,7 @@ genSwap (iCode * ic)
       hc08_freeReg (hc08_reg_a);
       break;
     case 2: /* swap bytes in a word */
-      if (operandsEqu (left, result))
+      if (operandsEqu (left, result) || sameRegs (AOP (left), AOP (result)))
         {
           loadRegFromAop (hc08_reg_a, AOP (left), 0);
           hc08_useReg (hc08_reg_a);