There is a bug that results in the wrong address being used for POINTER_SET: Compiling the attahced file using --std-c99 --opt-code-size --nolospre --max-allocs-per-node 17610 gives the correct code, but when using --std-c99 --opt-code-size --nolospre --max-allocs-per-node 17615 the code is broken. The code for line edge_cache.prev = (i + 3) % 4; uses iy as if it held the address of edge_cache.prev, but it holds the address of edge_cache.v
I see this issue with sdcc 3.2.1 #8088 on debian/GNU Linux.
Priority 7, since bad code is generated silently.
Log in to post a comment.