1. line 2177 - 2188
if (pushed_left && !regDead (A_IDX, ic))
pop (ASMOP_A, 0, 1);
pushed_a = FALSE;
else if (pushed_left)
emitcode ("ld", "a, (1, sp)");
cost (2, 1);
cheapMove (ASMOP_A, 0, left->aop, i, FALSE);
In which case it will fall into the first and the second branches? I tried many c code, but all falled into the third else branch.

2. Line 2156    
          genMove_o (result->aop, i, left->aop, i, 2, (regDead (A_IDX, ic) || pushed_a) && !result_in_a && !(left_in_a > i), regFree (X_IDX, ic), regFree (Y_IDX, ic)); // todo: More aggressively report state of X and Y.
Should the regFree call here be changed to regDead be better?
Since rSurv field of icode is used in stm8, but rMask is not.

Ben Shi