The following code example leads to bad assembler code
being generated:
///////// test.c
unsigned char screen[8][7];
void main() {
unsigned char i;
for (i = 1; i < 7; i++) {
screen[i][0]= 0xaa;
}
}
////////
compile with "sdcc --no-peep test.c"
I expect screen[1..6][0] to be filled with 0xaa.
Instead, however, screen[0..5][0] will be filled, while
screen[6][0] remains empty. (The index variable runs
from 5 down to 0.)
If the screen variable is one-dimensional, everything
work as expected.
I have tried this with the following sdcc version:
SDCC :
mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
2.4.1 (May 7 2004) (UNIX)
I am using the following platform:
SunOS sun73 5.8 Generic_108528-23 sun4u sparc
SUNW,Sun-Blade-1000
Logged In: YES
user_id=635249
Fixed in src/SDCCast.c 1.237