pub struct TailCall {
pub target: Callee,
pub args: Vec<LocalValueId>,
}Expand description
A tail call: an unconditional transfer of control to another function’s
entry (a thunk jmp realfunc, or a tail jmp/jcc that the disassembler
resolved to a sibling function). Unlike Branch, whose target is a
BlockId within the same function, a TailCall carries a Callee:
normally a real FunctionId, or temporarily a pass-local minted
placeholder. It is a function-level terminator with no intra-function CFG
successor. This is the honest encoding of cross-function control flow — the
IR never stores a foreign BlockId. See the context-split design, ruling
2 (“strict IR locality”).
Fields§
§target: Callee§args: Vec<LocalValueId>Values passed to the callee, one per inferred callee input, in order. Empty on the freshly-lifted IR; populated once the call interface is known.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for TailCall
impl<'de> Deserialize<'de> for TailCall
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for TailCall
impl StructuralPartialEq for TailCall
Auto Trait Implementations§
impl Freeze for TailCall
impl RefUnwindSafe for TailCall
impl Send for TailCall
impl Sync for TailCall
impl Unpin for TailCall
impl UnsafeUnpin for TailCall
impl UnwindSafe for TailCall
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more