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> !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
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