* src/mcs51/peeph.def: added 177.i (mov from a is slightly cheaper)
[fw/sdcc] / src / mcs51 / peeph.def
index 168866f13b164f8370f7ef32050ccaa33025813b..e21e5f24b66eb4f0516b3bd633ee6b3f4636c349 100644 (file)
@@ -740,17 +740,18 @@ replace {
        jc      %5
 } if operandsLiteral(%1)
 
-replace {
-       clr     c
-       mov     a,%1
-       subb    a,#%2
-       mov     %3,c
-} by {
-       ;       Peephole 132.d  optimized genCmpGt by inverse logic
-       mov     a,#0x100 - %2
-       add     a,%1
-       mov     %3,c
-} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
+// disabled. See bug1734654.c
+//replace {
+//     clr     c
+//     mov     a,%1
+//     subb    a,#%2
+//     mov     %3,c
+//} by {
+//     ;       Peephole 132.d  optimized genCmpGt by inverse logic
+//     mov     a,#0x100 - %2
+//     add     a,%1
+//     mov     %3,c
+//} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
 
 replace {
        clr     c
@@ -1366,6 +1367,16 @@ replace {
        mov     %1,a
 } if notVolatile %2
 
+// applies to f.e. testfwk.c
+replace {
+       mov     r%1,a
+       mov     ar%2,r%1
+} by {
+       mov     r%1,a
+       ;       peephole 177.i  optimized mov sequence
+       mov     r%2,a
+}
+
 replace {
        mov     a,%1
        mov     b,a
@@ -3851,16 +3862,17 @@ replace {
        djnz    %1,%2
 } if notVolatile(%1)
 
-// unsigned char i=8; do{ } while(--i != 0);
-// this applies if i is kept in data memory
-replace {
-       dec     %1
-       mov     a,%1
-       jnz     %2
-} by {
-       ;       Peephole 257.b  optimized decrement with compare
-       djnz    %1,%2
-} if notVolatile(%1), operandsNotRelated(%1 '@r0' '@r1')
+//// unsigned char i=8; do{ } while(--i != 0);
+//// this applies if i is kept in data memory
+// Disabled because together with 256.c it causes bug #1721024
+//replace {
+//     dec     %1
+//     mov     a,%1
+//     jnz     %2
+//} by {
+//     ;       Peephole 257.b  optimized decrement with compare
+//     djnz    %1,%2
+//} if notVolatile(%1), operandsNotRelated(%1 '@r0' '@r1')
 
 
 // in_byte<<=1; if(in_bit) in_byte|=1;
@@ -4537,7 +4549,7 @@ replace {
 } by {
        ;       Peephole 263.a  optimized loading const
        mov     %1,#(%2 + 3)
-}
+} if notVolatile(%1)
 
 replace {
        mov     %1,#%2
@@ -4546,7 +4558,7 @@ replace {
 } by {
        ;       Peephole 263.b  optimized loading const
        mov     %1,#(%2 + 2)
-}
+} if notVolatile(%1)
 
 replace {
        mov     %1,#%2
@@ -4554,7 +4566,7 @@ replace {
 } by {
        ;       Peephole 263.c  optimized loading const
        mov     %1,#(%2 + 1)
-}
+} if notVolatile(%1)
 
 
 replace {
@@ -4574,7 +4586,7 @@ replace restart {
        pop     ar%1
 } by {
        ;       Peephole 300    pop ar%1 removed
-} if deadMove %1
+} if deadMove(%1)
 
 replace {
        mov     r%1,%2