Struct rustc_codegen_llvm::common::Funclet
source · pub struct Funclet<'ll> {
cleanuppad: &'ll Value,
operand: OperandBundleDef<'ll>,
}
Expand description
A structure representing an active landing pad for the duration of a basic block.
Each Block
may contain an instance of this, indicating whether the block
is part of a landing pad or not. This is used to make decision about whether
to emit invoke
instructions (e.g., in a landing pad we don’t continue to
use invoke
) and also about various function call metadata.
For GNU exceptions (landingpad
+ resume
instructions) this structure is
just a bunch of None
instances (not too interesting), but for MSVC
exceptions (cleanuppad
+ cleanupret
instructions) this contains data.
When inside of a landing pad, each function call in LLVM IR needs to be
annotated with which landing pad it’s a part of. This is accomplished via
the OperandBundleDef
value created for MSVC landing pads.
Fields§
§cleanuppad: &'ll Value
§operand: OperandBundleDef<'ll>
Implementations§
Auto Trait Implementations§
impl<'ll> !DynSend for Funclet<'ll>
impl<'ll> !DynSync for Funclet<'ll>
impl<'ll> Freeze for Funclet<'ll>
impl<'ll> !RefUnwindSafe for Funclet<'ll>
impl<'ll> !Send for Funclet<'ll>
impl<'ll> !Sync for Funclet<'ll>
impl<'ll> Unpin for Funclet<'ll>
impl<'ll> !UnwindSafe for Funclet<'ll>
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
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Filterable for T
impl<T> Filterable for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes