Commits

Chris Lattner committed 0013ceea398
Rework how existential member references (i.e., calls to protocol methods) to non-@mutating methods work in the AST: now the base expression is always computed as an rvalue, instead of computing them as an lvalue. The optimization that we were accidentally getting before is now explicitly modeled, and the non-optimized case is now handled by standard temporary emission in SILGen instead of with MaterializeExpr. The upshot of this carefully choreographed step is that there is no change in generated code (!). Archetype member references still need to be switched over to this new scheme (at which point materializeexpr is dead), and the optimization needs to be replicated for 'let' bases (at which point arguments becoming 'let' is only gated on debug info). Swift SVN r12120