D-Programming-Language/dmd — pull request #1293 by 9rnsr (2012-11-15 13:36:46+00:00)
Title: fix regression which introduced by fixing bug 8939.

A point out from [here](http://forum.dlang.org/thread/50a4576f8a4e3_79621318ae812076a@sh3.rs.github.com.mail#post-50A49BD9.9010301:40gmx.de).

Pull #1288 broke much user code silently. I must fix the regression by this.

`Expression::optimize` should keep lvalue-ness of ref argument, but its sub-expressions can be optimized aggressively.

New default parameter `keepLvalue` is used only in the lvalue-able expressions, `VarExp`, `PtrExp`, `DotVarExp`, `CallExp`, `CommaExp`, `IndexExp`, and `CondExp`. Other expressions' `optimize` just ignore it.