Function rustc::middle::trans::callee::trans_call_inner[src]

pub fn trans_call_inner<'a>(bcx: &'a Block<'a>, call_info: Option<NodeInfo>, callee_ty: t, get_callee: |bcx: &'a Block<'a>, arg_cleanup_scope: ScopeId| -> Callee<'a>, args: CallArgs, dest: Option<Dest>) -> Result<'a>

This behemoth of a function translates function calls. Unfortunately, in order to generate more efficient LLVM output at -O0, it has quite a complex signature (refactoring this into two functions seems like a good idea).

In particular, for lang items, it is invoked with a dest of None, and in that case the return value contains the result of the fn. The lang item must not return a structural type or else all heck breaks loose.

For non-lang items, dest is always Some, and hence the result is written into memory somewhere. Nonetheless we return the actual return value of the function.