Currently, the following tests fail for some z80-related ports when --max-allocs-per-node 10 is added to SDCCFLAGS in spec.mk:
banked:
fails for ez80-z80
gcc-torture-execute-961213-1:
fails for ucr3ka, ez80-z80 and tlcs90.
rotate2:
fails for ucz80-resiy and ucgbz80.
The failure of banked for ez80-z80 is actually a bug in peephole rule 33, which apparently gets confused about 8-bit vs. 16-bit loads:
Looks like a zero byte was loaded into one of the bytes of a variable om the stack, then that varaible was loaded into hl. The rule replaced that by a load of a zero word into hl.
banked fixed for eZ80 in [r12174]
genSwap generate invalid swap32 when left is AOP_STK with offset -4. Currently I do not understand how to compare aopu.aop_stk.
Fixed in [r12178].
But test gcc-torture-execute-961213-1 for tlcs90 and ez80 is failing yet.
Last edit: Sergey Belyashov 2021-04-01
I have added new fix for gcc-torture-execute-961213-1 in [r12181], but it cause new regressions. For example, z80n:ast_constant_folding, genPlus generates code for bc = hl + fix:
As of [r12258], I do not see any remaining code generation issues when using --max-allocs-per-node 10.
There is one bug triggered for r3ka when using --max-allocs-per-node 10, but it looks like a peephole issue to me, so I'll open a new bug report.