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 :(
A continue block might have used a temporary which existed only in the loop body.