In revision 8834, regression test bug-136564 fails with an invalid instruction on stm8. Register A has a live value and so is pushed when it is also needed for a comparison. However, it is only popped on one of the execution paths which leads to local variable corruption, stack overflow, and eventually the invalid instruction.
; gen/stm8/bug-136564/bug-136564.c: 40: while (c != 'x' && i < 9 )
ld a, _foo_c_1_7+0
cp a, #0x78
; peephole j5 changed absolute to relative unconditional jump.
; skipping generated iCode
cp a, #0x09
Log in to post a comment.