]> git.gag.com Git - fw/sdcc/commitdiff
* src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 18 May 2006 10:54:34 +0000 (10:54 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 18 May 2006 10:54:34 +0000 (10:54 +0000)
  with offset
* src/mcs51/peeph.def (186.x): updated and reenabled to fix bugs
  14890161434401 and 1490124

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4177 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/mcs51/gen.c
src/mcs51/peeph.def

index 35c6bea1dd562c971a8e8ba8aaf7b8c97a2cb63e..05c00c798c09e526d97a2a7923301e0ba3534cc4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-18 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc
+         with offset
+       * src/mcs51/peeph.def (186.x): updated and reenabled to fix bugs
+         1489016, 1434401 and 1490124
+
 2006-05-17 Borut Razem <borut.razem AT siol.net>
 
        * support/Util/dbuf.c: fixed bug #1489008 fix dbuf_c_str(),
index 52889d3f5609731fe3b6ab4549634f875b3423b9..baaf26643a2f95900d80fe6bddb94813586b2bef 100644 (file)
@@ -9868,21 +9868,12 @@ genCodePointerGet (operand * left,
 
       while (size--)
         {
-          if (pi)
-            {
-              emitcode ("clr", "a");
-              emitcode ("movc", "a,@a+dptr");
-              if (!ifx)
-              aopPut (result, "a", offset++, isOperandVolatile (result, FALSE));
-              emitcode ("inc", "dptr");
-            }
-          else
-            {
-              emitcode ("mov", "a,#0x%02x", offset);
-              emitcode ("movc", "a,@a+dptr");
-              if (!ifx)
-              aopPut (result, "a", offset++, isOperandVolatile (result, FALSE));
-            }
+          emitcode ("clr", "a");
+          emitcode ("movc", "a,@a+dptr");
+          if (!ifx)
+            aopPut (result, "a", offset++, isOperandVolatile (result, FALSE));
+          if (size || pi)
+            emitcode ("inc", "dptr");
         }
     }
 
index e0aed8b39b97174867b308a546b1476aa1295a64..b2c403356bcab90373a764fe97174880ec20de70 100644 (file)
@@ -1449,7 +1449,8 @@ replace {
        mov     %1,a
 } if notVolatile %1
 
-replace {
+// char indexed access to: long code table[] = {4,3,2,1};
+replace restart {
        add     a,#%1
        mov     dpl,a
        clr     a
@@ -1468,25 +1469,28 @@ replace {
        mov     %4,a
        inc     dptr
        clr     a
+       movc    a,@a+dptr
 } by {
        ;       Peephole 186.a  optimized movc sequence
+       mov     b,a
        mov     dptr,#%1
-       mov     b,acc
        movc    a,@a+dptr
        mov     %2,a
-       mov     acc,b
        inc     dptr
+       mov     a,b
        movc    a,@a+dptr
        mov     %3,a
-       mov     acc,b
        inc     dptr
+       mov     a,b
        movc    a,@a+dptr
        mov     %4,a
-       mov     acc,b
        inc     dptr
+       mov     a,b
+       movc    a,@a+dptr
 }
 
-replace {
+// char indexed access to: void* code table[] = {4,3,2,1};
+replace restart {
        add     a,#%1
        mov     dpl,a
        clr     a
@@ -1501,21 +1505,24 @@ replace {
        mov     %3,a
        inc     dptr
        clr     a
+       movc    a,@a+dptr
 } by {
        ;       Peephole 186.b  optimized movc sequence
+       mov     b,a
        mov     dptr,#%1
-       mov     b,acc
        movc    a,@a+dptr
        mov     %2,a
-       mov     acc,b
        inc     dptr
+       mov     a,b
        movc    a,@a+dptr
        mov     %3,a
-       mov     acc,b
        inc     dptr
+       mov     a,b
+       movc    a,@a+dptr
 }
 
-replace {
+// char indexed access to: int code table[] = {4,3,2,1};
+replace restart {
        add     a,#%1
        mov     dpl,a
        clr     a
@@ -1526,31 +1533,31 @@ replace {
        mov     %2,a
        inc     dptr
        clr     a
+       movc    a,@a+dptr
 } by {
        ;       Peephole 186.c  optimized movc sequence
+       mov     %2,a
        mov     dptr,#%1
-       mov     b,acc
        movc    a,@a+dptr
-       mov     %2,a
-       mov     acc,b
+       xch     a,%2
        inc     dptr
+       movc    a,@a+dptr
 }
 
-// disabled due to bug #1434401
-//// char indexed access to: char code table[] = {4,3,2,1};
-//replace {
-//     add     a,#%1
-//     mov     dpl,a
-//     clr     a
-//     addc    a,#(%1 >> 8)
-//     mov     dph,a
-//     clr     a
-//     movc    a,@a+dptr
-//} by {
-//     ;       Peephole 186.d  optimized movc sequence
-//     mov     dptr,#%1
-//     movc    a,@a+dptr
-//}
+// char indexed access to: char code table[] = {4,3,2,1};
+replace {
+       add     a,#%1
+       mov     dpl,a
+       clr     a
+       addc    a,#(%1 >> 8)
+       mov     dph,a
+       clr     a
+       movc    a,@a+dptr
+} by {
+       ;       Peephole 186.d  optimized movc sequence
+       mov     dptr,#%1
+       movc    a,@a+dptr
+}
 
 // char indexed access to: int code table[] = {4,3,2,1};
 replace {