Skip to main content

InlineFailure

Enum InlineFailure 

Source
pub enum InlineFailure {
Show 14 variants Recursive, Mismatch, ByValue, VaStart, ComputedGoto, Setjmp, ApplyArgs, MemorySsa, Pack, Alloca, TooLarge, TooDeep, Unwinds, Target,
}
Expand description

Why a call to an always_inline function was not inlined.

Variants§

§

Recursive

The function reaches itself through calls of this kind.

§

Mismatch

The arguments or the results of the call are not what the body takes and gives.

§

ByValue

A parameter is a structure passed by value, whose copy the call is what makes. Only a call that is not always_inline is refused for this. An always_inline one is inlined with the copy made in the caller.

§

VaStart

The body starts a variable argument list of its own, which only a frame of its own has.

§

ComputedGoto

The body jumps to a label by its address, or a static table holds one of its labels, either of which would still name the original body from the copy.

§

Setjmp

The body calls setjmp, whose frame would become the caller’s.

§

ApplyArgs

The body saves the registers it was called with, which in the caller hold the caller’s.

§

MemorySsa

The IR has memory SSA in it, which this step runs before.

§

Pack

A va_arg_pack whose arguments cannot be forwarded to where it is.

§

Alloca

The body grows the stack by an amount only known when it runs, which in a loop in the caller would grow it once for every time round. Only a hint is refused for this.

§

TooLarge

The body is larger than a callee declared inline is allowed to be.

§

TooDeep

The call is inside more loops than a function called once may be inlined into.

§

Unwinds

The call has a landing pad but not in the shape the lowering builds, an unwound straight after it read by the branch that ends its block, so there is no pad to hand the calls the body makes once it is copied in.

§

Target

The callee is built for x86-64 extensions the caller is not, so its body may use instructions the caller may not assume. gcc’s words for it are the ones used.

Implementations§

Source§

impl InlineFailure

Source

pub const fn why(self) -> &'static str

What -fopt-info says about it.

Source

pub const fn hint(self) -> &'static str

What -fopt-info says about it for a call to a function that was only declared inline.

Source

pub const fn once(self) -> &'static str

What -fopt-info says about it for the one call to a static function called once.

Trait Implementations§

Source§

impl Clone for InlineFailure

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for InlineFailure

Source§

impl Debug for InlineFailure

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for InlineFailure

Source§

impl PartialEq for InlineFailure

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for InlineFailure

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.