I really don't get it. In SDCCast.c lines 3229-3243 the operand of ++ or -- is marked lvalue, no matter if it really is one or not. IMO that is too late. It should check whether the operand is an lvalue instead. And IMO it should mark the ast as rvalue. Can anyone explain?