Forwarded temporaries would never declare a temporary. Figure out all result types ahead of time so we can deal with those temporaries as well.
We don't have a mechanism to move temporaries to their appropriate scope, and Phi behavior is weird enough that it will be a heroic effort to not do this rather ugly codegen :(
Need to flush variable to static expression rather than a variable.