Menu

#3918 PDK 14 incorrect code generation

open
nobody
None
PDK
5
2026-01-12
2026-01-12
No

SDCC 4.5.0 for PDK14 generates incorrect code for XOR operation with io register(sfr).
With "sdcc -mpdk14 -S -o main.asm main.c" command
Simple code like below (_pa is an io reg,ster)

   t = _pa;
  if (_pa ^ t) {
    _pa ^= 0x1;
  }

generates

;   main.c: 11: t = __pa;
    mov.io  a, __pa
;   main.c: 12: if (_pa ^ t) {
    xor a, __pa
    cneqsn  a, #0x00

Here "xor a, pa" accesses a memory location not to the io reg, and causes unexpected results.

1 Attachments

Discussion


Log in to post a comment.