This patch handles the straightforward cases. Upcoming separate patches will handle the cases that are more subtle.
This patch is part of the ongoing migration to strict handling of value categories (see https://discourse.llvm.org/t/70086 for details).
Depends On D150653
the name "forward" isn't clear to me - if anything suggesting std::forward, but not assignment.
Maybe assignValue or copyValue, and aliasLocation for the storageloc variant?
That leaves "forwardValueOrStorageLocation", but that only has one callsite and part of the point of this refactoring is that we're best thinking about these cases explicitly, right? So could just inline the if.