* src/configure.in, src/configure, src/Makefile.in, as/z80/Makefile.in,
[fw/sdcc] / src / mcs51 / peeph.def
index 489def433af0adc43e1410a02643d1e231a12eef..96db036d26177b4da9572f2964faf8db7d7dee3e 100644 (file)
@@ -44,7 +44,7 @@ replace {
        mov     %1,a
 }
 
-replace {
+replace restart {
 // saving 1 byte, loosing 1 cycle but maybe allowing peephole 3.b to start
        mov     %1,#0x00
        mov     %2,#0x00
@@ -126,7 +126,7 @@ replace {
        clr     a
        mov     %1,a
        mov     %2,a
-       ;       Peephole 3.h    changed mov %3,#0x00 to %3,a
+       ;       Peephole 3.h    changed mov %3,#0x00 to ...,a
        mov     %3,a
 }
 
@@ -141,7 +141,7 @@ replace {
        mov     %1,a
        mov     %2,a
        mov     %3,a
-       ;       Peephole 3.i    changed mov %4,#0x00 to %4,a
+       ;       Peephole 3.i    changed mov %4,#0x00 to ...,a
        mov     %4,a
 }
 
@@ -158,7 +158,7 @@ replace {
        mov     %2,a
        mov     %3,a
        mov     %4,a
-       ;       Peephole 3.j    changed mov %5,#0x00 to %5,a
+       ;       Peephole 3.j    changed mov %5,#0x00 to ...,a
        mov     %5,a
 }
 
@@ -177,7 +177,7 @@ replace {
        mov %3,a
        mov %4,a
        mov %5,a
-       ;       Peephole 3.k    changed mov %6,#0x00 to %6,a
+       ;       Peephole 3.k    changed mov %6,#0x00 to ...,a
        mov %6,a
 }
 
@@ -187,9 +187,9 @@ replace {
        mov     a,%1
        movx    @dptr,a
 } by {
-       ;       Peephole 100    removed redundant mov
        mov     %1,a
        mov     dptr,#%2
+       ;       Peephole 100    removed redundant mov
        movx    @dptr,a
 } if notVolatile %1
 
@@ -200,10 +200,10 @@ replace {
        mov     a,%1
        movx    @dptr,a
 } by {
-       ;       Peephole 101    removed redundant mov
        mov     a,%1
        movx    @dptr,a
        inc     dptr
+       ;       Peephole 101    removed redundant mov
        movx    @dptr,a
 } if notVolatile %1
 
@@ -266,8 +266,8 @@ replace {
        mov     %1,a
        mov     a,%1
 } by {
-       ;       Peephole 105    removed redundant mov
        mov     %1,a
+;      Peephole 105    removed redundant mov
 } if notVolatile %1
 
 replace {
@@ -275,9 +275,9 @@ replace {
        clr     c
        mov     a,%1
 } by {
-       ;       Peephole 106    removed redundant mov
        mov     %1,a
        clr     c
+       ;       Peephole 106    removed redundant mov
 } if notVolatile %1
 
 replace {
@@ -286,7 +286,7 @@ replace {
 } by {
        ;       Peephole 107    removed redundant ljmp
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        jc      %1
@@ -398,11 +398,11 @@ replace {
        sjmp    %3
 %2:
 } by {
-       ;       Peephole 115.b  jump optimization
        mov     %1,a
+       ;       Peephole 115.b  jump optimization
        jz      %3
 %2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
 
 replace {
        clr     a
@@ -684,7 +684,7 @@ replace {
        mov     a,%2
        add     a,#0xff - %1
        mov     %3,c
-}
+} if operandsLiteral(%1)
 
 replace {
        clr     c
@@ -696,7 +696,7 @@ replace {
        mov     a,%2
        add     a,#0xff - %1
        jnc     %5
-}
+} if operandsLiteral(%1)
 
 replace {
        clr     c
@@ -708,7 +708,7 @@ replace {
        mov     a,%2
        add     a,#0xff - %1
        jc      %5
-}
+} if operandsLiteral(%1)
 
 replace {
        clr     c
@@ -720,7 +720,7 @@ replace {
        mov     a,#0x100 - %2
        add     a,%1
        mov     %3,c
-} if operandsNotRelated('0x00' %2)
+} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
 
 replace {
        clr     c
@@ -732,7 +732,7 @@ replace {
        mov     a,#0x100 - %2
        add     a,%1
        jc      %5
-} if operandsNotRelated('0x00' %2)
+} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
 
 replace {
        clr     c
@@ -744,7 +744,7 @@ replace {
        mov     a,#0x100 - %2
        add     a,%1
        jnc     %5
-} if operandsNotRelated('0x00' %2)
+} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
 
 
 replace {
@@ -754,8 +754,8 @@ replace {
        mov     r%4,%2
        mov     @r%4,ar%3
 } by {
-       ;       Peephole 133    removed redundant moves
        mov     r%1,%2
+       ;       Peephole 133    removed redundant moves
        inc     @r%1
        mov     ar%3,@r%1
 } if notVolatile
@@ -767,8 +767,8 @@ replace {
        mov     r%4,%2
        mov     @r%4,ar%3
 } by {
-       ;       Peephole 134    removed redundant moves
        mov     r%1,%2
+       ;       Peephole 134    removed redundant moves
        dec     @r%1
        mov     ar%3,@r%1
 } if notVolatile
@@ -778,8 +778,8 @@ replace {
        mov     a,r%2
        orl     a,r%1
 } by {
-       ;       Peephole 135    removed redundant mov
        mov     r%1,a
+       ;       Peephole 135    removed redundant mov
        orl     a,r%2
 }
 
@@ -789,10 +789,10 @@ replace {
        mov     dph,%3
        mov     a,%1
 } by {
-       ;       Peephole 136    removed redundant moves
        mov     %1,a
        mov     dpl,%2
        mov     dph,%3
+       ;       Peephole 136    removed redundant move
 } if notVolatile %1
 
 // WTF? Doesn't look sensible to me...
@@ -856,6 +856,19 @@ replace {
        mov     r%1,a
 }
 
+// applies to genlshOne
+replace {
+       mov     ar%1,@%2
+       mov     a,r%1
+       add     a,acc
+       mov     r%1,a
+} by {
+       ;       Peephole 140    removed redundant mov
+       mov     a,@%2
+       add     a,@%2
+       mov     r%1,a
+}
+
 replace {
        mov     r%1,a
        mov     r%2,ar%1
@@ -900,25 +913,25 @@ replace {
        add     a,%2
 }
 
-// what are #147-#149 for?
+// 147: Fix compiler output to comply with 8051 instruction set.
 replace {
        orl     r%1,a
 } by {
-       ;       Peephole 147    changed target address mode r%1 to ar%1
+       ;       Peephole 147.a  changed target address mode r%1 to ar%1
        orl     ar%1,a
 }
 
 replace {
        anl     r%1,a
 } by {
-       ;       Peephole 148    changed target address mode r%1 to ar%1
+       ;       Peephole 147.b  changed target address mode r%1 to ar%1
        anl     ar%1,a
 }
 
 replace {
        xrl     r%1,a
 } by {
-       ;       Peephole 149    changed target address mode r%1 to ar%1
+       ;       Peephole 147.c  changed target address mode r%1 to ar%1
        xrl     ar%1,a
 }
 
@@ -1046,6 +1059,7 @@ replace {
        ret
 }
 
+// peephole 213.a might revert this
 replace {
        mov     %1,#%2
        xrl     %1,#0x80
@@ -1062,7 +1076,7 @@ replace {
        ;       Peephole 160.a  removed sjmp by inverse jump logic
        jc      %2
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        jc      %1
@@ -1072,7 +1086,7 @@ replace {
        ;       Peephole 160.b  removed sjmp by inverse jump logic
        jnc     %2
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        jnz     %1
@@ -1082,7 +1096,7 @@ replace {
        ;       Peephole 160.c  removed sjmp by inverse jump logic
        jz      %2
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        jz      %1
@@ -1092,7 +1106,7 @@ replace {
        ;       Peephole 160.d  removed sjmp by inverse jump logic
        jnz     %2
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        jnb     %3,%1
@@ -1102,7 +1116,7 @@ replace {
        ;       Peephole 160.e  removed sjmp by inverse jump logic
        jb      %3,%2
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        jb      %3,%1
@@ -1112,16 +1126,16 @@ replace {
        ;       Peephole 160.f  removed sjmp by inverse jump logic
        jnb     %3,%2
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        mov     %1,%2
        mov     %3,%1
        mov     %2,%1
 } by {
-       ;       Peephole 166    removed redundant mov
        mov     %1,%2
        mov     %3,%1
+       ;       Peephole 166    removed redundant mov
 } if notVolatile %1 %2
 
 replace {
@@ -1141,7 +1155,7 @@ replace {
        ;       Peephole 168    jump optimization
        jb      %1,%3
 %2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
 
 replace {
        jb      %1,%2
@@ -1151,7 +1165,7 @@ replace {
        ;       Peephole 169    jump optimization
        jnb     %1,%3
 %2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
 
 replace {
        clr     a
@@ -1220,8 +1234,8 @@ replace {
        subb    a,#0x01
        mov     %2,a
 } by {
-       ;       Peephole 174.a  optimized decrement (acc not set to %2, flags undefined)
        mov     r%1,%2
+       ;       Peephole 174.a  optimized decrement (acc not set to %2, flags undefined)
        dec     %2
 }
 
@@ -1231,8 +1245,8 @@ replace {
        add     a,#0x01
        mov     %2,a
 } by {
-       ;       Peephole 174.b  optimized increment (acc not set to %2, flags undefined)
        mov     r%1,%2
+       ;       Peephole 174.b  optimized increment (acc not set to %2, flags undefined)
        inc     %2
 }
 
@@ -1251,8 +1265,8 @@ replace {
        mov  %1,%2
        mov  %2,%1
 } by {
-       ;       Peephole 177.a  removed redundant mov
        mov  %1,%2
+       ;       Peephole 177.a  removed redundant mov
 } if notVolatile %1 %2
 
 // applies to f.e. scott-add.asm (--model-large)
@@ -1260,8 +1274,8 @@ replace {
        mov     r%1,a
        mov     a,ar%1
 } by {
-       ;       Peephole 177.b  removed redundant mov
        mov     r%1,a
+       ;       Peephole 177.b  removed redundant mov
 }
 
 // applies to f.e. bug-408972.c
@@ -1280,10 +1294,10 @@ replace restart {
        mov     %3,%4
        mov     %2,%1
 } by {
-       ;       Peephole 177.d  removed redundant move
        mov     %1,%2
        mov     %3,%4
-} if notVolatile(%1 %2),operandsNotRelated(%1 %3)
+       ;       Peephole 177.d  removed redundant move
+} if notVolatile(%1 %2),operandsNotRelated(%1 %2 %3)
 
 // applies to f.e. bug-607243.c
 // also check notVolatile %3, as it will return FALSE if it's @r%1
@@ -1350,10 +1364,10 @@ replace {
        movx    @dptr,a
        mov     dptr,%1
 } by {
-       ;       Peephole 180.a  removed redundant mov to dptr
        mov     dptr,%1
        mov     a,%2
        movx    @dptr,a
+       ;       Peephole 180.a  removed redundant mov to dptr
 }
 
 // volatile xdata char t; t=0x01; t=0x03; t=0x01;
@@ -1365,12 +1379,12 @@ replace {
        movx    @dptr,a
        mov     dptr,%1
 } by {
-       ;       Peephole 180.b  removed redundant mov to dptr
        mov     dptr,%1
        mov     a,%2
        movx    @dptr,a
        mov     a,%3
        movx    @dptr,a
+       ;       Peephole 180.b  removed redundant mov to dptr
 }
 
 // saving 1 byte, 0 cycles
@@ -1425,7 +1439,7 @@ replace {
        anl     %1,#%3
 } by {
        ;       Peephole 183    avoided anl during execution
-       anl     %1,#(%2 & %3)
+       anl     %1,#(%2&%3)
 }
 
 replace {
@@ -1448,7 +1462,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
@@ -1467,25 +1482,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
@@ -1500,21 +1518,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
@@ -1525,14 +1546,15 @@ 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
 }
 
 // char indexed access to: char code table[] = {4,3,2,1};
@@ -1556,8 +1578,8 @@ replace {
        mul     ab
        add     a,#%2
        mov     dpl,a
-       mov     a,b
-       addc    a,#(%2 >> 8)
+       mov     a,#(%2 >> 8)
+       addc    a,b
        mov     dph,a
        clr     a
        movc    a,@a+dptr
@@ -1607,9 +1629,9 @@ replace {
        mov     a,#0x0f
        anl     a,%1
 } by {
-       ;       Peephole 189    removed redundant mov and anl
        anl     a,#0x0f
        mov     %1,a
+       ;       Peephole 189    removed redundant mov and anl
 } if notVolatile %1
 
 // rules 190 & 191 need to be in order
@@ -1618,9 +1640,9 @@ replace {
        lcall   __gptrput
        mov     a,%1
 } by {
-       ;       Peephole 190    removed redundant mov
        mov     a,%1
        lcall   __gptrput
+       ;       Peephole 190    removed redundant mov
 } if notVolatile %1
 
 replace {
@@ -1630,19 +1652,19 @@ replace {
        mov     b,%4
        mov     a,%1
 } by {
-       ;       Peephole 191    removed redundant mov
        mov     %1,a
        mov     dpl,%2
        mov     dph,%3
        mov     b,%4
+       ;       Peephole 191    removed redundant mov
 } if notVolatile %1
 
 replace {
        mov     r%1,a
        mov     @r%2,ar%1
 } by {
-       ;       Peephole 192    used a instead of ar%1 as source
        mov     r%1,a
+       ;       Peephole 192    used a instead of ar%1 as source
        mov     @r%2,a
 }
 
@@ -1892,7 +1914,7 @@ replace {
 } by {
        ;       Peephole 200.a  removed redundant sjmp
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        sjmp    %1
@@ -1902,7 +1924,7 @@ replace {
        ;       Peephole 200.b  removed redundant sjmp
 %2:
 %1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        push    acc
@@ -2004,6 +2026,7 @@ replace {
        inc     r%1
 }
 
+// reverts peephole 159? asx8051 cannot handle, too complex?
 replace {
        mov     %1,#(( %2 >> 8 ) ^ 0x80)
 } by {
@@ -2026,8 +2049,8 @@ replace    {
        mov     a,%2
        add     a,%1
 } by {
-       ;       Peephole 214    reduced some extra moves
        mov     %1,a
+       ;       Peephole 214    reduced some extra moves
        add     a,%2
 } if operandsNotSame
 
@@ -2049,9 +2072,9 @@ replace {
        dec     r%1
        mov     @r%1,a
 } by {
-       ;       Peephole 216.a  simplified clear (2bytes)
        mov     r%1,%2
        clr     a
+       ;       Peephole 216.a  simplified clear (2 bytes)
        mov     @r%1,a
        inc     r%1
        mov     @r%1,a
@@ -2068,9 +2091,9 @@ replace {
        dec     r%1
        mov     @r%1,a
 } by {
-       ;       Peephole 216.b  simplified clear (3bytes)
        mov     r%1,%2
        clr     a
+       ;       Peephole 216.b  simplified clear (3 bytes)
        mov     @r%1,a
        inc     r%1
        mov     @r%1,a
@@ -2092,9 +2115,9 @@ replace {
        dec     r%1
        mov     @r%1,a
 } by {
-       ;       Peephole 216.c  simplified clear (4bytes)
        mov     r%1,%2
        clr     a
+       ;       Peephole 216.c  simplified clear (4 bytes)
        mov     @r%1,a
        inc     r%1
        mov     @r%1,a
@@ -2127,12 +2150,12 @@ replace {
        clr     a
        movx    @dptr,a
 } by {
-       ;       Peephole 219.b  removed redundant clear
        clr     a
        movx    @dptr,a
        mov     dptr,%1
        movx    @dptr,a
        mov     dptr,%2
+       ;       Peephole 219.b  removed redundant clear
        movx    @dptr,a
 }
 
@@ -2177,9 +2200,9 @@ replace {
        mov     dpl,%1
        mov     dph,%2
 } by {
-       ;       Peephole 223.a  removed redundant dph/dpl moves
        mov     %1,dpl
        mov     %2,dph
+       ;       Peephole 223.a  removed redundant dph/dpl moves
 } if notVolatile %1 %2
 
 replace {
@@ -2188,9 +2211,9 @@ replace {
        mov     dpl,%1
        mov     dph,(%1 + 1)
 } by {
-       ;       Peephole 223.b  removed redundant dph/dpl moves
        mov     %1,dpl
        mov     (%1 + 1),dph
+       ;       Peephole 223.b  removed redundant dph/dpl moves
 } if notVolatile %1
 
 replace {
@@ -2201,14 +2224,26 @@ replace {
        mov     b,%4
        mov     a,%1
 } by {
-       ;       Peephole 225    removed redundant move to acc
        mov     a,%1
        movx    @dptr,a
        mov     dpl,%2
        mov     dph,%3
        mov     b,%4
+       ;       Peephole 225    removed redundant move to acc
 } if notVolatile %1
 
+replace {
+       clr     a
+       movx    @%1,a
+       inc     %1
+       clr     a
+} by {
+       clr     a
+       movx    @%1,a
+       inc     %1
+       ;       Peephole 226.a  removed unnecessary clr
+}
+
 replace {
        clr     a
        movx    @%1,a
@@ -2217,12 +2252,12 @@ replace {
        inc     %1
        clr     a
 } by {
-       ;       Peephole 226    removed unnecessary clr
        clr     a
        movx    @%1,a
        inc     %1
        movx    @%1,a
        inc     %1
+       ;       Peephole 226.b  removed unnecessary clr
 }
 
 replace {
@@ -2239,9 +2274,9 @@ replace {
        lcall   __decdptr
        movx    @dptr,a
 } by {
-       ;       Peephole 227.a  replaced inefficient 32 bit clear
        mov     dptr,#%1
        clr     a
+       ;       Peephole 227.a  replaced inefficient 32 bit clear
        movx    @dptr,a
        inc     dptr
        movx    @dptr,a
@@ -2267,8 +2302,8 @@ replace {
        mov     a,#%2
        movx    @dptr,a
 } by {
-       ;       Peephole 227.b  replaced inefficient 32 constant
        mov     dptr,#%1
+       ;       Peephole 227.b  replaced inefficient 32 constant
        mov     a,#%2
        movx    @dptr,a
        inc     dptr
@@ -2289,9 +2324,9 @@ replace {
        lcall   __decdptr
        movx    @dptr,a
 } by {
-       ;       Peephole 227.c  replaced inefficient 16 bit clear
        mov     dptr,#%1
        clr     a
+       ;       Peephole 227.c  replaced inefficient 16 bit clear
        movx    @dptr,a
        inc     dptr
        movx    @dptr,a
@@ -2307,8 +2342,8 @@ replace {
        mov     a,#%2
        movx    @dptr,a
 } by {
-       ;       Peephole 227.d  replaced inefficient 16 bit constant
        mov     dptr,#%1
+       ;       Peephole 227.d  replaced inefficient 16 bit constant
        mov     a,#%2
        movx    @dptr,a
        inc     dptr
@@ -2480,7 +2515,7 @@ replace {
        mov     %3,%4
 %1:
        ret
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 replace {
        sjmp    %1
@@ -2499,7 +2534,7 @@ replace {
        mov     dph,%6
 %1:
        ret
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
 
 // applies to f.e. device/lib/log10f.c
 replace {
@@ -2600,133 +2635,180 @@ replace restart {
        addc    a,%1
 }
 
-// peepholes 241.a to 241.c and 241.d to 241.f need to be in order
+// peepholes 241.a to 241.d and 241.e to 241.h need to be in order
 replace {
-       cjne    r%1,#%2,%3
-       cjne    r%4,#%5,%3
-       cjne    r%6,#%7,%3
-       cjne    r%8,#%9,%3
+       cjne    r%2,#%3,%0
+       cjne    r%4,#%5,%0
+       cjne    r%6,#%7,%0
+       cjne    r%8,#%9,%0
        mov     a,#0x01
-       sjmp    %10
-%3:
+       sjmp    %1
+%0:
        clr     a
-%10:
+%1:
 } by {
        ;       Peephole 241.a  optimized compare
        clr     a
-       cjne    r%1,#%2,%3
-       cjne    r%4,#%5,%3
-       cjne    r%6,#%7,%3
-       cjne    r%8,#%9,%3
+       cjne    r%2,#%3,%0
+       cjne    r%4,#%5,%0
+       cjne    r%6,#%7,%0
+       cjne    r%8,#%9,%0
        inc     a
-%3:
-%10:
-} labelRefCountChange(%10 -1)
+%0:
+%1:
+} if labelRefCountChange(%1 -1)
 
-// applies to f.e. time.c
+// applies to generic pointer compare
 replace {
-       cjne    r%1,#%2,%3
-       cjne    r%4,#%5,%3
+       cjne    r%2,#%3,%0
+       cjne    r%4,#%5,%0
+       cjne    r%6,#%7,%0
        mov     a,#0x01
-       sjmp    %6
-%3:
+       sjmp    %1
+%0:
        clr     a
-%6:
+%1:
 } by {
        ;       Peephole 241.b  optimized compare
        clr     a
-       cjne    r%1,#%2,%3
-       cjne    r%4,#%5,%3
+       cjne    r%2,#%3,%0
+       cjne    r%4,#%5,%0
+       cjne    r%6,#%7,%0
        inc     a
-%3:
-%6:
-} labelRefCountChange(%6 -1)
+%0:
+%1:
+} if labelRefCountChange(%1 -1)
 
-// applies to f.e. malloc.c
+// applies to f.e. time.c
 replace {
-       cjne    r%1,#%2,%3
+       cjne    r%2,#%3,%0
+       cjne    r%4,#%5,%0
        mov     a,#0x01
-       sjmp    %4
-%3:
+       sjmp    %1
+%0:
        clr     a
-%4:
+%1:
 } by {
        ;       Peephole 241.c  optimized compare
        clr     a
-       cjne    r%1,#%2,%3
+       cjne    r%2,#%3,%0
+       cjne    r%4,#%5,%0
        inc     a
-%3:
-%4:
-} labelRefCountChange(%4 -1)
+%0:
+%1:
+} if labelRefCountChange(%1 -1)
+
+// applies to f.e. malloc.c
+replace {
+       cjne    r%2,#%3,%0
+       mov     a,#0x01
+       sjmp    %1
+%0:
+       clr     a
+%1:
+} by {
+       ;       Peephole 241.d  optimized compare
+       clr     a
+       cjne    r%2,#%3,%0
+       inc     a
+%0:
+%1:
+} if labelRefCountChange(%1 -1)
 
 // applies to f.e. j = (k!=0x1000);
 // with volatile idata long k;
 replace {
-       cjne    @r%1,#%2,%3
-       inc     r%1
-       cjne    @r%1,#%4,%3
-       inc     r%1
-       cjne    @r%1,#%5,%3
-       inc     r%1
-       cjne    @r%1,#%6,%3
+       cjne    @r%0,#%3,%1
+       inc     r%0
+       cjne    @r%0,#%4,%1
+       inc     r%0
+       cjne    @r%0,#%5,%1
+       inc     r%0
+       cjne    @r%0,#%6,%1
        mov     a,#0x01
-       sjmp    %7
-%3:
+       sjmp    %2
+%1:
        clr     a
-%7:
+%2:
 } by {
-       ;       Peephole 241.d  optimized compare
+       ;       Peephole 241.e  optimized compare
        clr     a
-       cjne    @r%1,#%2,%3
-       inc     r%1
-       cjne    @r%1,#%4,%3
-       inc     r%1
-       cjne    @r%1,#%5,%3
-       inc     r%1
-       cjne    @r%1,#%6,%3
+       cjne    @r%0,#%3,%1
+       inc     r%0
+       cjne    @r%0,#%4,%1
+       inc     r%0
+       cjne    @r%0,#%5,%1
+       inc     r%0
+       cjne    @r%0,#%6,%1
        inc     a
-%3:
-%7:
-} labelRefCountChange(%7 -1)
+%1:
+%2:
+} if labelRefCountChange(%2 -1)
+
+// applies to f.e. j = (p!=NULL);
+// with volatile idata char *p;
+replace {
+       cjne    @r%0,#%3,%1
+       inc     r%0
+       cjne    @r%0,#%4,%1
+       inc     r%0
+       cjne    @r%0,#%5,%1
+       mov     a,#0x01
+       sjmp    %2
+%1:
+       clr     a
+%2:
+} by {
+       ;       Peephole 241.f  optimized compare
+       clr     a
+       cjne    @r%0,#%3,%1
+       inc     r%0
+       cjne    @r%0,#%4,%1
+       inc     r%0
+       cjne    @r%0,#%5,%1
+       inc     a
+%1:
+%2:
+} if labelRefCountChange(%2 -1)
 
 // applies to f.e. j = (k!=0x1000);
 // with volatile idata int k;
 replace {
-       cjne    @r%1,#%2,%3
-       inc     r%1
-       cjne    @r%1,#%4,%3
+       cjne    @r%0,#%3,%1
+       inc     r%0
+       cjne    @r%0,#%4,%1
        mov     a,#0x01
-       sjmp    %7
-%3:
+       sjmp    %2
+%1:
        clr     a
-%7:
+%2:
 } by {
-       ;       Peephole 241.e  optimized compare
+       ;       Peephole 241.g  optimized compare
        clr     a
-       cjne    @r%1,#%2,%3
-       inc     r%1
-       cjne    @r%1,#%4,%3
+       cjne    @r%0,#%3,%1
+       inc     r%0
+       cjne    @r%0,#%4,%1
        inc     a
-%3:
-%7:
-} labelRefCountChange(%7 -1)
+%1:
+%2:
+} if labelRefCountChange(%2 -1)
 
 // applies to f.e. vprintf.asm (--stack-auto)
 replace {
-       cjne    @r%1,#%2,%3
+       cjne    @r%0,#%3,%1
        mov     a,#0x01
-       sjmp    %7
-%3:
+       sjmp    %2
+%1:
        clr     a
-%7:
+%2:
 } by {
-       ;       Peephole 241.f  optimized compare
+       ;       Peephole 241.h  optimized compare
        clr     a
-       cjne    @r%1,#%2,%3
+       cjne    @r%0,#%3,%1
        inc     a
-%3:
-%7:
-} labelRefCountChange(%7 -1)
+%1:
+%2:
+} if labelRefCountChange(%2 -1)
 
 // applies to f.e. scott-bool1.c
 replace {
@@ -2735,9 +2817,9 @@ replace {
 %1:
        jz      %4
 } by {
-       ;       Peephole 242.a  avoided branch jnz to jz
        jnz     %1
        mov     %2,%3
+       ;       Peephole 242.a  avoided branch jnz to jz
        jz      %4
 %1:
 } if labelRefCount %1 1
@@ -2750,10 +2832,10 @@ replace {
 %1:
        jz      %4
 } by {
-       ;       Peephole 242.b  avoided branch jnz to jz
        jnz     %1
        mov     %2,%3
        orl     a,%5
+       ;       Peephole 242.b  avoided branch jnz to jz
        jz      %4
 %1:
 } if labelRefCount %1 1
@@ -2768,12 +2850,12 @@ replace {
 %1:
        jz      %4
 } by {
-       ;       Peephole 242.c  avoided branch jnz to jz
        jnz     %1
        mov     %2,%3
        orl     a,%5
        orl     a,%6
        orl     a,%7
+       ;       Peephole 242.c  avoided branch jnz to jz
        jz      %4
 %1:
 } if labelRefCount %1 1
@@ -2819,8 +2901,8 @@ replace {
        mov     r%1,a
        mov     dpl,r%1
 } by {
-       ;       Peephole 244.c  loading dpl from a instead of r%1
        mov     r%1,a
+       ;       Peephole 244.c  loading dpl from a instead of r%1
        mov     dpl,a
 }
 
@@ -2828,8 +2910,8 @@ replace {
        mov     r%1,a
        mov     dph,r%1
 } by {
-       ;       Peephole 244.d  loading dph from a instead of r%1
        mov     r%1,a
+       ;       Peephole 244.d  loading dph from a instead of r%1
        mov     dph,a
 }
 
@@ -2901,9 +2983,9 @@ replace {
        anl     a,#%3
        movx    @dptr,a
 } by {
-       ;       Peephole 246.a  combined clr/clr
        mov     dptr,#%1
        movx    a,@dptr
+       ;       Peephole 246.a  combined clr/clr
        anl     a,#%2&%3
        movx    @dptr,a
 } if notVolatile %1
@@ -2918,9 +3000,9 @@ replace {
        orl     a,#%3
        movx    @dptr,a
 } by {
-       ;       Peephole 246.b  combined set/set
        mov     dptr,#%1
        movx    a,@dptr
+       ;       Peephole 246.b  combined set/set
        orl     a,#%2|%3
        movx    @dptr,a
 } if notVolatile %1
@@ -2935,10 +3017,10 @@ replace {
        anl     a,#%3
        movx    @dptr,a
 } by {
-       ;       Peephole 246.c  combined set/clr
        mov     dptr,#%1
        movx    a,@dptr
        orl     a,#%2
+       ;       Peephole 246.c  combined set/clr
        anl     a,#%3
        movx    @dptr,a
 } if notVolatile %1
@@ -2953,10 +3035,10 @@ replace {
        orl     a,#%3
        movx    @dptr,a
 } by {
-       ;       Peephole 246.d  combined clr/set
        mov     dptr,#%1
        movx    a,@dptr
        anl     a,#%2
+       ;       Peephole 246.d  combined clr/set
        orl     a,#%3
        movx    @dptr,a
 } if notVolatile %1
@@ -2972,10 +3054,10 @@ replace {
        anl     a,#%4
        movx    @dptr,a
 } by {
-       ;       Peephole 246.e  combined set/clr/clr
        mov     dptr,#%1
        movx    a,@dptr
        orl     a,#%2
+       ;       Peephole 246.e  combined set/clr/clr
        anl     a,#%3&%4
        movx    @dptr,a
 } if notVolatile %1
@@ -2991,11 +3073,11 @@ replace {
        orl     a,#%4
        movx    @dptr,a
 } by {
-       ;       Peephole 246.f  combined set/clr/set
        mov     dptr,#%1
        movx    a,@dptr
        orl     a,#%2
        anl     a,#%3
+       ;       Peephole 246.f  combined set/clr/set
        orl     a,#%4
        movx    @dptr,a
 } if notVolatile %1
@@ -3011,11 +3093,11 @@ replace {
        anl     a,#%4
        movx    @dptr,a
 } by {
-       ;       Peephole 246.g  combined clr/set/clr
        mov     dptr,#%1
        movx    a,@dptr
        anl     a,#%2
        orl     a,#%3
+       ;       Peephole 246.g  combined clr/set/clr
        anl     a,#%4
        movx    @dptr,a
 } if notVolatile %1
@@ -3031,17 +3113,15 @@ replace {
        orl     a,#%4
        movx    @dptr,a
 } by {
-       ;       Peephole 246.h  combined clr/set/set
        mov     dptr,#%1
        movx    a,@dptr
        anl     a,#%2
+       ;       Peephole 246.h  combined clr/set/set
        orl     a,#%3|%4
        movx    @dptr,a
 } if notVolatile %1
 
 
-
-
 // rules 247.x apply to f.e. bitfields.c
 replace {
        mov     r%5,#%1
@@ -3053,9 +3133,9 @@ replace {
        anl     a,#%3
        mov     @r%5,a
 } by {
-       ;       Peephole 247.a  combined clr/clr
        mov     r%5,#%1
        mov     a,@r%5
+       ;       Peephole 247.a  combined clr/clr
        anl     a,#%2&%3
        mov     @r%5,a
 } if notVolatile %1
@@ -3070,9 +3150,9 @@ replace {
        orl     a,#%3
        mov     @r%5,a
 } by {
-       ;       Peephole 247.b  combined set/set
        mov     r%5,#%1
        mov     a,@r%5
+       ;       Peephole 247.b  combined set/set
        orl     a,#%2|%3
        mov     @r%5,a
 } if notVolatile %1
@@ -3087,10 +3167,10 @@ replace {
        anl     a,#%3
        mov     @r%5,a
 } by {
-       ;       Peephole 247.c  combined set/clr
        mov     r%5,#%1
        mov     a,@r%5
        orl     a,#%2
+       ;       Peephole 247.c  combined set/clr
        anl     a,#%3
        mov     @r%5,a
 } if notVolatile %1
@@ -3105,10 +3185,10 @@ replace {
        orl     a,#%3
        mov     @r%5,a
 } by {
-       ;       Peephole 247.d  combined clr/set
        mov     r%5,#%1
        mov     a,@r%5
        anl     a,#%2
+       ;       Peephole 247.d  combined clr/set
        orl     a,#%3
        mov     @r%5,a
 } if notVolatile %1
@@ -3124,10 +3204,10 @@ replace {
        anl     a,#%4
        mov     @r%5,a
 } by {
-       ;       Peephole 247.e  combined set/clr/clr
        mov     r%5,#%1
        mov     a,@r%5
        orl     a,#%2
+       ;       Peephole 247.e  combined set/clr/clr
        anl     a,#%3&%4
        mov     @r%5,a
 } if notVolatile %1
@@ -3143,11 +3223,11 @@ replace {
        orl     a,#%4
        mov     @r%5,a
 } by {
-       ;       Peephole 247.f  combined set/clr/set
        mov     r%5,#%1
        mov     a,@r%5
        orl     a,#%2
        anl     a,#%3
+       ;       Peephole 247.f  combined set/clr/set
        orl     a,#%4
        mov     @r%5,a
 } if notVolatile %1
@@ -3163,11 +3243,11 @@ replace {
        anl     a,#%4
        mov     @r%5,a
 } by {
-       ;       Peephole 247.g  combined clr/set/clr
        mov     r%5,#%1
        mov     a,@r%5
        anl     a,#%2
        orl     a,#%3
+       ;       Peephole 247.g  combined clr/set/clr
        anl     a,#%4
        mov     @r%5,a
 } if notVolatile %1
@@ -3183,10 +3263,10 @@ replace {
        orl     a,#%4
        mov     @r%5,a
 } by {
-       ;       Peephole 247.h  combined clr/set/set
        mov     r%5,#%1
        mov     a,@r%5
        anl     a,#%2
+       ;       Peephole 247.h  combined clr/set/set
        orl     a,#%3|%4
        mov     @r%5,a
 } if notVolatile %1
@@ -3204,10 +3284,10 @@ replace {
        orl     a,r%2
        movx    @dptr,a
 } by {
-       ;       Peephole 248.a  optimized or to xdata
        mov     dptr,%1
        movx    a,@dptr
        mov     r%2,a
+       ;       Peephole 248.a  optimized or to xdata
        orl     a,%3
        movx    @dptr,a
 }
@@ -3222,10 +3302,10 @@ replace {
        anl     a,r%2
        movx    @dptr,a
 } by {
-       ;       Peephole 248.b  optimized and to xdata
        mov     dptr,%1
        movx    a,@dptr
        mov     r%2,a
+       ;       Peephole 248.b  optimized and to xdata
        anl     a,%3
        movx    @dptr,a
 }
@@ -3240,10 +3320,10 @@ replace {
        xrl     a,r%2
        movx    @dptr,a
 } by {
-       ;       Peephole 248.c  optimized xor to xdata
        mov     dptr,%1
        movx    a,@dptr
        mov     r%2,a
+       ;       Peephole 248.c  optimized xor to xdata
        xrl     a,%3
        movx    @dptr,a
 }
@@ -3268,9 +3348,9 @@ replace {
        orl     a,%5
        movx    @dptr,a
 } by {
-       ;       Peephole 248.d  optimized or/and/or to volatile xdata
        mov     dptr,%1
        movx    a,@dptr
+       ;       Peephole 248.d  optimized or/and/or to volatile xdata
        orl     a,%3
        movx    @dptr,a
        movx    a,@dptr
@@ -3302,9 +3382,9 @@ replace {
        anl     a,%5
        movx    @dptr,a
 } by {
-       ;       Peephole 248.e  optimized and/or/and to volatile xdata
        mov     dptr,%1
        movx    a,@dptr
+       ;       Peephole 248.e  optimized and/or/and to volatile xdata
        anl     a,%3
        movx    @dptr,a
        movx    a,@dptr
@@ -3330,9 +3410,9 @@ replace {
        anl     a,%4
        movx    @dptr,a
 } by {
-       ;       Peephole 248.f  optimized or/and to volatile xdata
        mov     dptr,%1
        movx    a,@dptr
+       ;       Peephole 248.f  optimized or/and to volatile xdata
        orl     a,%3
        movx    @dptr,a
        movx    a,@dptr
@@ -3355,9 +3435,9 @@ replace {
        orl     a,%4
        movx    @dptr,a
 } by {
-       ;       Peephole 248.g  optimized and/or to volatile xdata
        mov     dptr,%1
        movx    a,@dptr
+       ;       Peephole 248.g  optimized and/or to volatile xdata
        anl     a,%3
        movx    @dptr,a
        movx    a,@dptr
@@ -3380,9 +3460,9 @@ replace {
        xrl     a,%4
        movx    @dptr,a
 } by {
-       ;       Peephole 248.h  optimized xor/xor to volatile xdata
        mov     dptr,%1
        movx    a,@dptr
+       ;       Peephole 248.h  optimized xor/xor to volatile xdata
        xrl     a,%3
        movx    @dptr,a
        movx    a,@dptr
@@ -3410,11 +3490,11 @@ replace {
        orl     a,%5
        movx    @dptr,a
 } by {
-       ;       Peephole 248.i  optimized or/and/or to xdata bitfield
        mov     dptr,%1
        movx    a,@dptr
        orl     a,%3
        movx    @dptr,a
+       ;       Peephole 248.i  optimized or/and/or to xdata bitfield
        movx    a,@dptr
        anl     a,%4
        movx    @dptr,a
@@ -3439,11 +3519,11 @@ replace {
        anl     a,%5
        movx    @dptr,a
 } by {
-       ;       Peephole 248.j  optimized and/or/and to xdata bitfield
        mov     dptr,%1
        movx    a,@dptr
        anl     a,%3
        movx    @dptr,a
+       ;       Peephole 248.j  optimized and/or/and to xdata bitfield
        movx    a,@dptr
        orl     a,%4
        movx    @dptr,a
@@ -3463,11 +3543,11 @@ replace {
        anl     a,%4
        movx    @dptr,a
 } by {
-       ;       Peephole 248.k  optimized or/and to xdata bitfield
        mov     dptr,%1
        movx    a,@dptr
        orl     a,%3
        movx    @dptr,a
+       ;       Peephole 248.k  optimized or/and to xdata bitfield
        movx    a,@dptr
        anl     a,%4
        movx    @dptr,a
@@ -3484,11 +3564,11 @@ replace {
        orl     a,%4
        movx    @dptr,a
 } by {
-       ;       Peephole 248.l  optimized and/or to xdata bitfield
        mov     dptr,%1
        movx    a,@dptr
        anl     a,%3
        movx    @dptr,a
+       ;       Peephole 248.l  optimized and/or to xdata bitfield
        movx    a,@dptr
        orl     a,%4
        movx    @dptr,a
@@ -3505,11 +3585,11 @@ replace {
        xrl     a,%4
        movx    @dptr,a
 } by {
-       ;       Peephole 248.m  optimized xor/xor to xdata bitfield
        mov     dptr,%1
        movx    a,@dptr
        xrl     a,%3
        movx    @dptr,a
+       ;       Peephole 248.m  optimized xor/xor to xdata bitfield
        movx    a,@dptr
        xrl     a,%4
        movx    @dptr,a
@@ -3637,8 +3717,8 @@ replace {
        mov     a,%1
        add     a,acc
 } by {
-       ;       Peephole 254    optimized left shift
        mov     a,%1
+       ;       Peephole 254    optimized left shift
        add     a,%1
 } if notVolatile %1
 
@@ -3674,9 +3754,9 @@ replace {
 %2:
        clr     c
 } by {
-       ;       Peephole 256.a  removed redundant clr c
        jc      %1
 %2:
+       ;       Peephole 256.a  removed redundant clr c
 } if labelRefCount %2 0
 
 // applies to f.e. logf.c
@@ -3685,9 +3765,9 @@ replace {
 %2:
        clr     a
 } by {
-       ;       Peephole 256.b  removed redundant clr a
        jnz     %1
 %2:
+       ;       Peephole 256.b  removed redundant clr a
 } if labelRefCount %2 0
 
 // applies to f.e. bug-905492.c
@@ -3696,9 +3776,9 @@ replace {
 %2:
        mov     %3,#0x00
 } by {
-       ;       Peephole 256.c  loading %3 with zero from a
        jnz     %1
 %2:
+       ;       Peephole 256.c  loading %3 with zero from a
        mov     %3,a
 } if labelRefCount %2 0
 
@@ -3709,10 +3789,10 @@ replace {
        mov     %4,%5
        mov     %3,#0x00
 } by {
-       ;       Peephole 256.d  loading %3 with zero from a
        jnz     %1
 %2:
        mov     %4,%5
+       ;       Peephole 256.d  loading %3 with zero from a
        mov     %3,a
 } if labelRefCount(%2 0),operandsNotRelated('a' %4)
 
@@ -3723,11 +3803,11 @@ replace {
        mov     %6,%7
        mov     %3,#0x00
 } by {
-       ;       Peephole 256.e  loading %3 with zero from a
        jnz     %1
 %2:
        mov     %4,%5
        mov     %6,%7
+       ;       Peephole 256.e  loading %3 with zero from a
        mov     %3,a
 } if labelRefCount(%2 0),operandsNotRelated('a' %4 %6)
 
@@ -3739,12 +3819,12 @@ replace {
        mov     %8,%9
        mov     %3,#0x00
 } by {
-       ;       Peephole 256.f  loading %2 with zero from a
        jnz     %1
 %2:
        mov     %4,%5
        mov     %6,%7
        mov     %8,%9
+       ;       Peephole 256.f  loading %2 with zero from a
        mov     %3,a
 } if labelRefCount(%2 0),operandsNotRelated('a' %4 %6 %8)
 
@@ -3771,8 +3851,8 @@ replace {
        orl     %1,#0x01
 %3:
 } by {
-       ;       Peephole 258.a  optimized bitbanging
        mov     a,%1
+       ;       Peephole 258.a  optimized bitbanging
        mov     c,%2
        addc    a,%1
        mov     %1,a
@@ -3790,14 +3870,14 @@ replace {
        orl     ar%1,#0x01
 %3:
 } by {
-       ;       Peephole 258.b  optimized bitbanging
        mov     a,r%1
+       ;       Peephole 258.b  optimized bitbanging
        mov     c,%2
        addc    a,r%1
        mov     r%1,a
 %4:
 %3:
-} labelRefCountChange(%3 -1)
+} if labelRefCountChange(%3 -1)
 
 // in_byte>>=1; if(in_bit) in_byte|=0x80;
 replace {
@@ -3810,8 +3890,8 @@ replace {
        orl     %1,#0x80
 %3:
 } by {
-       ;       Peephole 258.c  optimized bitbanging
        mov     a,%1
+       ;       Peephole 258.c  optimized bitbanging
        mov     c,%2
        rrc     a
        mov     %1,a
@@ -3830,14 +3910,14 @@ replace {
        orl     ar%1,#0x80
 %3:
 } by {
-       ;       Peephole 258.d  optimized bitbanging
        mov     a,r%1
+       ;       Peephole 258.d  optimized bitbanging
        mov     c,%2
        rrc     a
        mov     r%1,a
 %4:
 %3:
-} labelRefCountChange(%3 -1)
+} if labelRefCountChange(%3 -1)
 
 // out_bit=out_byte&0x80; out_byte<<=1;
 // helps f.e. writing data on a 3-wire (SPI) bus
@@ -3849,8 +3929,8 @@ replace {
        add     a,%1
        mov     %1,a
 } by {
-       ;       Peephole 258.e  optimized bitbanging
        mov     a,%1
+       ;       Peephole 258.e  optimized bitbanging
        add     a,%1
        mov     %2,c
        mov     %1,a
@@ -3866,24 +3946,24 @@ replace {
        rrc     a
        mov     %1,a
 } by {
-       ;       Peephole 258.f  optimized bitbanging
        mov     a,%1
+       ;       Peephole 258.f  optimized bitbanging
        clr     c
        rrc     a
        mov     %2,c
        mov     %1,a
 } if notVolatile %1
 
-// Peepholes 259.x rely on the correct labelRefCount. Otherwise they are 
+// Peepholes 259.x rely on the correct labelRefCount. Otherwise they are
 // not compatible with peepholes 250.x
-// Peepholes 250.x add jumps to a previously unused label. If the 
+// Peepholes 250.x add jumps to a previously unused label. If the
 // labelRefCount is not increased, peepholes 259.x are (mistakenly) applied.
 // (Mail on sdcc-devel 2004-10-25)
 //
 // applies to f.e. vprintf.c
 replace {
        sjmp    %1
-%2:    
+%2:
        ret
 } by {
        sjmp    %1
@@ -3894,7 +3974,7 @@ replace {
 // applies to f.e. gets.c
 replace {
        ljmp    %1
-%2:    
+%2:
        ret
 } by {
        ljmp    %1
@@ -4387,9 +4467,9 @@ replace {
        mov     acc.0,c
        mov     %1,a
 } by {
-       ;       Peephole 261.a  optimized left rol
        mov     a,%1
        rlc     a
+       ;       Peephole 261.a  optimized left rol
        xch     a,%2
        rlc     a
        xch     a,%2
@@ -4409,9 +4489,9 @@ replace {
        mov     acc.7,c
        mov     %1,a
 } by {
-       ;       Peephole 261.b  optimized right rol
        mov     a,%1
        rrc     a
+       ;       Peephole 261.b  optimized right rol
        xch     a,%2
        rrc     a
        xch     a,%2
@@ -4419,6 +4499,53 @@ replace {
        mov     %1,a
 }
 
+replace {
+       cpl     c
+       cpl     c
+} by {
+       ;       Peephole 262    removed redundant cpl c
+}
+
+replace {
+       mov     %1,#%2
+       inc     %1
+       inc     %1
+       inc     %1
+} by {
+       ;       Peephole 263.a  optimized loading const
+       mov     %1,#(%2 + 3)
+}
+
+replace {
+       mov     %1,#%2
+       inc     %1
+       inc     %1
+} by {
+       ;       Peephole 263.b  optimized loading const
+       mov     %1,#(%2 + 2)
+}
+
+replace {
+       mov     %1,#%2
+       inc     %1
+} by {
+       ;       Peephole 263.c  optimized loading const
+       mov     %1,#(%2 + 1)
+}
+
+
+replace {
+       clr     a
+       cjne    %1,%2,%3
+       inc     a
+%3:
+       jz      %4
+} by {
+       ;       Peephole 264    jump optimization (acc not set)
+       cjne    %1,%2,%4
+%3:
+} if labelRefCount(%3 1), labelRefCountChange(%3 -1)
+
 // should be one of the last peepholes
 replace{
 %1: