Improved the documentation of the FnAbi struct · rust-lang/rust@257d222 (original) (raw)

Original file line number Diff line number Diff line change
@@ -779,26 +779,31 @@ impl RiscvInterruptKind {
779 779 /// Metadata describing how the arguments to a native function
780 780 /// should be passed in order to respect the native ABI.
781 781 ///
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 +///
782 786 /// I will do my best to describe this structure, but these
783 787 /// comments are reverse-engineered and may be inaccurate. -NDM
784 788 #[derive(Clone, PartialEq, Eq, Hash, HashStable_Generic)]
785 789 pub struct FnAbi<'a, Ty> {
786 -/// The LLVM types of each argument.
790 +/// The type, layout, and information about how each argument is passed.
787 791 pub args: Box<[ArgAbi<'a, Ty>]>,
788 792
789 -/// LLVM return type.
793 +/// The layout, type, and the way a value is returned from this function.
790 794 pub ret: ArgAbi<'a, Ty>,
791 795
796 +/// Marks this function as variadic (accepting a variable number of arguments).
792 797 pub c_variadic: bool,
793 798
794 799 /// The count of non-variadic arguments.
795 800 ///
796 801 /// Should only be different from args.len() when c_variadic is true.
797 802 /// This can be used to know whether an argument is variadic or not.
798 803 pub fixed_count: u32,
799 -
804 + /// The calling convention of this function.
800 805 pub conv: Conv,
801 -
806 + /// Indicates if an unwind may happen across a call to this function.
802 807 pub can_unwind: bool,
803 808 }
804 809