This should have no functional effect; evaluation is still generating the same result. But the assertions and comments should make it more clear what's actually happening. Part of a fix to https://bugs.llvm.org/show_bug.cgi?id=40430.
It's possible that instead of doing this, we should fix the AST so we don't have "lvalues" which aren't really lvalues.