} by {
; Peephole 107 removed redundant ljmp
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
jc %1
; Peephole 115.b jump optimization
jz %3
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
replace {
clr a
; Peephole 160.a removed sjmp by inverse jump logic
jc %2
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
jc %1
; Peephole 160.b removed sjmp by inverse jump logic
jnc %2
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
jnz %1
; Peephole 160.c removed sjmp by inverse jump logic
jz %2
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
jz %1
; Peephole 160.d removed sjmp by inverse jump logic
jnz %2
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
jnb %3,%1
; Peephole 160.e removed sjmp by inverse jump logic
jb %3,%2
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
jb %3,%1
; Peephole 160.f removed sjmp by inverse jump logic
jnb %3,%2
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
mov %1,%2
; Peephole 168 jump optimization
jb %1,%3
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
replace {
jb %1,%2
; Peephole 169 jump optimization
jnb %1,%3
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
replace {
clr a
inc dptr
}
-// char indexed access to: char code table[] = {4,3,2,1};
-replace {
- add a,#%1
- mov dpl,a
- clr a
- addc a,#(%1 >> 8)
- mov dph,a
- clr a
- movc a,@a+dptr
-} by {
- ; Peephole 186.d optimized movc sequence
- mov dptr,#%1
- movc a,@a+dptr
-}
+// disabled due to bug #1434401
+//// char indexed access to: char code table[] = {4,3,2,1};
+//replace {
+// add a,#%1
+// mov dpl,a
+// clr a
+// addc a,#(%1 >> 8)
+// mov dph,a
+// clr a
+// movc a,@a+dptr
+//} by {
+// ; Peephole 186.d optimized movc sequence
+// mov dptr,#%1
+// movc a,@a+dptr
+//}
// char indexed access to: int code table[] = {4,3,2,1};
replace {
} by {
; Peephole 200.a removed redundant sjmp
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
sjmp %1
; Peephole 200.b removed redundant sjmp
%2:
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
push acc
mov %3,%4
%1:
ret
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
replace {
sjmp %1
mov dph,%6
%1:
ret
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
// applies to f.e. device/lib/log10f.c
replace {
inc a
%0:
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
// applies to generic pointer compare
replace {
inc a
%0:
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
// applies to f.e. time.c
replace {
inc a
%0:
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
// applies to f.e. malloc.c
replace {
inc a
%0:
%1:
-} labelRefCountChange(%1 -1)
+} if labelRefCountChange(%1 -1)
// applies to f.e. j = (k!=0x1000);
// with volatile idata long k;
inc a
%1:
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
// applies to f.e. j = (p!=NULL);
// with volatile idata char *p;
inc a
%1:
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
// applies to f.e. j = (k!=0x1000);
// with volatile idata int k;
inc a
%1:
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
// applies to f.e. vprintf.asm (--stack-auto)
replace {
inc a
%1:
%2:
-} labelRefCountChange(%2 -1)
+} if labelRefCountChange(%2 -1)
// applies to f.e. scott-bool1.c
replace {
mov r%1,a
%4:
%3:
-} labelRefCountChange(%3 -1)
+} if labelRefCountChange(%3 -1)
// in_byte>>=1; if(in_bit) in_byte|=0x80;
replace {
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