Corrected: L251 code optimization does not remove common blocks for unused functions. These code blocks remains inside the image. Example:
unsigned char a, b, c;
unsigned char darr [0x10];
void FuncA (void) {
darr[c] = darr[b];
}
void FuncB (void) {
darr[c] = darr[b];
}
void FuncC (void) {
darr[c] = darr[a] + darr[b];
}
void FuncD (void) {
darr[c] = darr[a] + darr[b];
}
void main(void) {
FuncA ();
FuncB ();
while(1);
}
; FUNCTION FuncA (BEGIN) ; FUNCTION FuncB (BEGIN) ; FUNCTION FuncC (BEGIN) ; FUNCTION FuncD (BEGIN)
R MOV A,#LOW darr R MOV A,#LOW darr R MOV A,#LOW darr ----- + ----- R MOV A,#LOW darr
R ADD A,b R ADD A,b R ADD A,b | R ADD A,b
MOV R0,A ----- + ----- MOV R0,A MOV