Improved the documentation of the FnAbi struct · rust-lang/rust@257d222

Original file line numberDiff line numberDiff line change

@@ -779,26 +779,31 @@ impl RiscvInterruptKind {

779779

/// Metadata describing how the arguments to a native function

780780

/// should be passed in order to respect the native ABI.

781781

///

782+

/// The signature represented by this type may not match the MIR function signature.

783+

/// Certain attributes, like `#[track_caller]` can introduce additional arguments, which are present in [`FnAbi`], but not in `FnSig`.

784+

/// While this difference is rarely relevant, it should still be kept in mind.

785+

///

782786

/// I will do my best to describe this structure, but these

783787

/// comments are reverse-engineered and may be inaccurate. -NDM

784788

#[derive(Clone, PartialEq, Eq, Hash, HashStable_Generic)]

785789

pub struct FnAbi<'a, Ty> {

786-

/// The LLVM types of each argument.

790+

/// The type, layout, and information about how each argument is passed.

787791

pub args: Box<[ArgAbi<'a, Ty>]>,

788792
789-

/// LLVM return type.

793+

/// The layout, type, and the way a value is returned from this function.

790794

pub ret: ArgAbi<'a, Ty>,

791795
796+

/// Marks this function as variadic (accepting a variable number of arguments).

792797

pub c_variadic: bool,

793798
794799

/// The count of non-variadic arguments.

795800

///

796801

/// Should only be different from args.len() when c_variadic is true.

797802

/// This can be used to know whether an argument is variadic or not.

798803

pub fixed_count: u32,

799-
804+

/// The calling convention of this function.

800805

pub conv: Conv,

801-
806+

/// Indicates if an unwind may happen across a call to this function.

802807

pub can_unwind: bool,

803808

}

804809