Harald van Dijk wrote:
As that commit is an optimization, not a codegen fix, I would like to
ask whether the original issue is still present and just requires a more
complex test case to expose, or whether it has accidentally been fixed
by this commit.
No, I think this bug must exist since the very early days of
the project, on all 32-bit platforms. This might fix it:
--- a/tccgen.c
+++ b/tccgen.c
@@ -1990,6 +1990,7 @@ static void gen_opl(int op)
vtop[-1] = vtop[-2];
vtop[-2] = tmp;
/* stack: L1 L2 H1 H2 */
+ save_regs(4);
/* compare high */
op1 = op;
/* when values are equal, we need to compare low words. since