]> git.gag.com Git - fw/sdcc/blobdiff - src/mcs51/peeph.def
* src/mcs51/peeph.def: moved rules 257.x to 253.x and re-enabled 253.b
[fw/sdcc] / src / mcs51 / peeph.def
index 51e251225c6122972dee40d09b6609f7d310ae41..66909c942e035907b483ddba5cb0ab5e041416dd 100644 (file)
@@ -3734,6 +3734,29 @@ replace {
        mov     r%3,a
 }
 
+// unsigned char i=8; do{ } while(--i != 0);
+// this applies if i is kept in a register
+replace {
+       dec     %1
+       cjne    %1,#0x00,%2
+} by {
+       ;       Peephole 253.a  optimized decrement with compare
+       djnz    %1,%2
+} if notVolatile(%1)
+
+// unsigned char i=8; do{ } while(--i != 0);
+// this applies if i is kept in data memory
+// must come before 256, see bug 1721024
+replace {
+       dec     %1
+       mov     a,%1
+       jnz     %2
+} by {
+       ;       Peephole 253.b  optimized decrement with compare
+       djnz    %1,%2
+} if notVolatile(%1), operandsNotRelated(%1 '@r0' '@r1')
+
+
 // applies to f.e. funptrs.c
 // saves one byte if %1 is a register or @register
 replace {
@@ -3852,29 +3875,6 @@ replace {
 } if labelRefCount(%2 0),operandsNotRelated('a' %4 %6 %8)
 
 
-// unsigned char i=8; do{ } while(--i != 0);
-// this applies if i is kept in a register
-replace {
-       dec     %1
-       cjne    %1,#0x00,%2
-} by {
-       ;       Peephole 257.a  optimized decrement with compare
-       djnz    %1,%2
-} if notVolatile(%1)
-
-//// 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;
 // helps f.e. reading data on a 3-wire (SPI) bus
 replace {