Cleanup generated empty blocks
Return (owned) for temp variables when possible to avoid useless copies