Description
There's a bug in CodegenContext.withSubExprEliminationExprs() that makes it effectively always clear the subexpression elimination state after it's called.
The original intent of this function was that it should save the old state, set the given new state as current and perform codegen (invoke Expression.genCode()), and at the end restore the subexpression elimination state back to the old state. This ticket tracks a fix to actually implement the original intent.