]> git.gag.com Git - fw/sdcc/commitdiff
removed obsolete peephole 100.a, added peephole 254 (left shift), 255 (jump table)
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 5 Jun 2004 13:38:49 +0000 (13:38 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 5 Jun 2004 13:38:49 +0000 (13:38 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3343 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/mcs51/peeph.def

index b7005720f5ed20c33c9f3f1b45129bb6dd886d3c..eff214daae4f726b09d26fbb8851c420dcf94164 100644 (file)
@@ -69,12 +69,6 @@ replace {
         movx    @dptr,a
 } if notVolatile %1
 
-replace {
-        mov     a,acc
-} by {
-        ;       Peephole 100.a  removed redundant mov
-}
-
 replace {
         mov     a,%1
         movx    @dptr,a
@@ -3209,3 +3203,38 @@ replace {
 %2:
         ret
 }
+
+// applies to f.e. funptrs.c
+// saves one byte if %1 is a register or @register
+replace {
+        mov     a,%1
+        add     a,acc
+} by {
+        ;       Peephole 254    optimized left shift
+        mov     a,%1
+        add     a,%1
+} if notVolatile %1
+
+// applies to f.e. switch.c
+replace {
+        clr     c
+        mov     a,#%1
+        subb    a,%2
+        jc      %3
+%4:
+        mov     a,%2
+        add     a,acc
+        add     a,%2
+        mov     dptr,%5
+        jmp     @a+dptr
+} by {
+        ;       Peephole 255    optimized jump table index calculation
+        mov     a,%2
+        cjne    a,#(%1+0x01),.+1
+        jnc     %3
+%4:
+        add     a,%2
+        add     a,%2
+        mov     dptr,%5
+        jmp     @a+dptr
+}