Converting T = *CALL; ASSIGN $v, T into $v = *CALL may not be safe if an exception is thrown after the return value has been populated -- in this case the value might be destroyed twice.