With the options --nopurity --nogenconstprop --nolabelopt --no-peep --max-allocs-per-node 128, three tests from GCC fail for s08; all of them are about rotations.
philipp@notebook7:~/sdcc-trunk/sdcc/support/regression$ make random-test-11520
Creating random-11520 based on s08 with additional options: --nopurity --nogenconstprop --nolabelopt --no-peep --max-allocs-per-node 128
Running random-11520 regression tests
Summary for 'random-11520': 3 failures, 36299 tests, 6253 test cases, 8275960 bytes, 441300529 ticks
Failure: gcc-torture-execute-20020226-1.c
Failure: gcc-torture-execute-20020508-1.c
Failure: gcc-torture-execute-20020508-2.c
The problem is in code generation for shifts. When the result and the right operand overlap in memory, the right operand gets overwritten when the left operand gets copied into the result.
I see the same for hc08: