]> git.gag.com Git - fw/sdcc/blobdiff - src/mcs51/peeph.def
* fixed GCC 4.4.0 mingw compilation:
[fw/sdcc] / src / mcs51 / peeph.def
index d2206dcb7443a901cb8c639b4d4c51398aaa52e3..71a44c509785de3334c7c8708f60068939969bf3 100644 (file)
@@ -1332,14 +1332,13 @@ replace restart {
 } 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
 replace {
-       mov     r%1,%2
-       mov     ar%1,%3
+       mov     %1,%2
+       mov     a%1,%3
 } by {
-       ;       peephole 177.e  removed redundant mov
-       mov     ar%1,%3
-} if notVolatile %2 %3
+       ;       peephole 177.e  removed redundant mov %1,%2
+       mov     a%1,%3
+} if notVolatile(%2), operandsNotRelated(%1 %3)
 
 replace {
        mov     ar%1,%2
@@ -1377,6 +1376,16 @@ replace {
        mov     r%2,a
 }
 
+replace {
+       mov     r%1,%2
+       mov     ar%3,r%1
+       mov     r%1,%4
+} by {
+       ;       peephole 177.j  optimized mov sequence
+       mov     r%3,%2
+       mov     r%1,%4
+}
+
 replace {
        mov     a,%1
        mov     b,a
@@ -4654,13 +4663,13 @@ replace {
 } if notVolatile(%1)
 
 //accessing struct/array on stack
-replace {
-       add     a,#%1
-       add     a,#%2
-} by {
-       ;       Peephole 270    removed redundant add
-       add     a,#%1+%2
-}
+//replace {
+//     add     a,#%1
+//     add     a,#%2
+//} by {
+//     ;       Peephole 270    removed redundant add (carry might differ, bug 2736282)
+//     add     a,#%1+%2
+//}
 
 replace {
        jz      %1