Skip to main content

AttrKind

Enum AttrKind 

Source
#[repr(u8)]
pub enum AttrKind {
Show 95 variants Alignment = 1, AlwaysInline = 2, ByVal = 3, InlineHint = 4, InReg = 5, MinSize = 6, Naked = 7, Nest = 8, NoAlias = 9, NoBuiltin = 10, NoCapture = 11, NoDuplicate = 12, NoImplicitFloat = 13, NoInline = 14, NonLazyBind = 15, NoRedZone = 16, NoReturn = 17, NoUnwind = 18, OptimizeForSize = 19, ReadNone = 20, ReadOnly = 21, Returned = 22, ReturnsTwice = 23, SExt = 24, StackAlignment = 25, StackProtect = 26, StackProtectReq = 27, StackProtectStrong = 28, StructRet = 29, SanitizeAddress = 30, SanitizeThread = 31, SanitizeMemory = 32, UwTable = 33, ZExt = 34, Builtin = 35, Cold = 36, OptimizeNone = 37, InAlloca = 38, NonNull = 39, JumpTable = 40, Dereferenceable = 41, DereferenceableOrNull = 42, Convergent = 43, Safestack = 44, ArgMemOnly = 45, SwiftSelf = 46, SwiftError = 47, NoRecurse = 48, InaccessibleMemOnly = 49, InaccessiblememOrArgMemOnly = 50, AllocSize = 51, Writeonly = 52, Speculatable = 53, StrictFp = 54, SanitizeHwaddress = 55, NocfCheck = 56, OptForFuzzing = 57, Shadowcallstack = 58, SpeculativeLoadHardening = 59, Immarg = 60, Willreturn = 61, Nofree = 62, Nosync = 63, SanitizeMemtag = 64, Preallocated = 65, NoMerge = 66, NullPointerIsValid = 67, Noundef = 68, Byref = 69, Mustprogress = 70, NoCallback = 71, Hot = 72, NoProfile = 73, VscaleRange = 74, SwiftAsync = 75, NoSanitizeCoverage = 76, Elementtype = 77, DisableSanitizerInstrumentation = 78, NoSanitizeBounds = 79, AllocAlign = 80, AllocatedPointer = 81, AllocKind = 82, PresplitCoroutine = 83, FnretthunkExtern = 84, SkipProfile = 85, Memory = 86, Nofpclass = 87, OptimizeForDebugging = 88, Writable = 89, CoroOnlyDestroyWhenComplete = 90, DeadOnUnwind = 91, Range = 92, SanitizeNumericalStability = 93, Initializes = 94, HybridPatchable = 95,
}

Variants§

§

Alignment = 1

Alignment of parameter (5 bits) stored as log2 of alignment with +1 bias. 0 means unaligned (different from align(1)).

§

AlwaysInline = 2

inline=always.

§

ByVal = 3

Pass structure by value.

§

InlineHint = 4

Source said inlining was desirable.

§

InReg = 5

Force argument to be passed in register.

§

MinSize = 6

Function must be optimized for size first.

§

Naked = 7

Naked function.

§

Nest = 8

Nested function static chain.

§

NoAlias = 9

Considered to not alias after call.

§

NoBuiltin = 10

Callee isn’t recognized as a builtin.

§

NoCapture = 11

§

NoDuplicate = 12

Call cannot be duplicated.

§

NoImplicitFloat = 13

Disable implicit floating point insts.

§

NoInline = 14

inline=never.

§

NonLazyBind = 15

Function is called early and/or often, so lazy binding isn’t worthwhile.

§

NoRedZone = 16

Disable redzone.

§

NoReturn = 17

Mark the function as not returning.

§

NoUnwind = 18

Function doesn’t unwind stack.

§

OptimizeForSize = 19

opt_size.

§

ReadNone = 20

Function does not access memory.

§

ReadOnly = 21

Function only reads from memory.

§

Returned = 22

Return value is always equal to this argument.

§

ReturnsTwice = 23

Function can return twice.

§

SExt = 24

Sign extended before/after call.

§

StackAlignment = 25

Alignment of stack for function (3 bits) stored as log2 of alignment with +1 bias 0 means unaligned (different from alignstack=(1)).

§

StackProtect = 26

Stack protection.

§

StackProtectReq = 27

Stack protection required.

§

StackProtectStrong = 28

Strong Stack protection.

§

StructRet = 29

Hidden pointer to structure to return.

§

SanitizeAddress = 30

AddressSanitizer is on.

§

SanitizeThread = 31

ThreadSanitizer is on.

§

SanitizeMemory = 32

MemorySanitizer is on.

§

UwTable = 33

Function must be in a unwind table.

§

ZExt = 34

Zero extended before/after call.

§

Builtin = 35

Callee is recognized as a builtin, despite nobuiltin attribute on its declaration.

§

Cold = 36

Marks function as being in a cold path.

§

OptimizeNone = 37

Function must not be optimized.

§

InAlloca = 38

Pass structure in an alloca.

§

NonNull = 39

Pointer is known to be not null.

§

JumpTable = 40

Build jump-instruction tables and replace refs.

§

Dereferenceable = 41

Pointer is known to be dereferenceable.

§

DereferenceableOrNull = 42

Pointer is either null or dereferenceable.

§

Convergent = 43

Can only be moved to control-equivalent blocks. NB: Could be IntersectCustom with “or” handling.

§

Safestack = 44

Safe Stack protection.

§

ArgMemOnly = 45

Unused

§

SwiftSelf = 46

Argument is swift self/context.

§

SwiftError = 47

Argument is swift error.

§

NoRecurse = 48

The function does not recurse.

§

InaccessibleMemOnly = 49

Unused

§

InaccessiblememOrArgMemOnly = 50

Unused

§

AllocSize = 51

The result of the function is guaranteed to point to a number of bytes that we can determine if we know the value of the function’s arguments.

§

Writeonly = 52

Function only writes to memory.

§

Speculatable = 53

Function can be speculated.

§

StrictFp = 54

Function was called in a scope requiring strict floating point semantics.

§

SanitizeHwaddress = 55

HWAddressSanitizer is on.

§

NocfCheck = 56

Disable Indirect Branch Tracking.

§

OptForFuzzing = 57

Select optimizations for best fuzzing signal.

§

Shadowcallstack = 58

Shadow Call Stack protection.

§

SpeculativeLoadHardening = 59

Speculative Load Hardening is enabled.

Note that this uses the default compatibility (always compatible during inlining) and a conservative merge strategy where inlining an attributed body will add the attribute to the caller. This ensures that code carrying this attribute will always be lowered with hardening enabled.

§

Immarg = 60

Parameter is required to be a trivial constant.

§

Willreturn = 61

Function always comes back to callsite.

§

Nofree = 62

Function does not deallocate memory.

§

Nosync = 63

Function does not synchronize.

§

SanitizeMemtag = 64

MemTagSanitizer is on.

§

Preallocated = 65

Similar to byval but without a copy.

§

NoMerge = 66

Disable merging for specified functions or call sites.

§

NullPointerIsValid = 67

Null pointer in address space zero is valid.

§

Noundef = 68

Parameter or return value may not contain uninitialized or poison bits.

§

Byref = 69

Mark in-memory ABI type.

§

Mustprogress = 70

Function is required to make Forward Progress.

§

NoCallback = 71

Function cannot enter into caller’s translation unit.

§

Hot = 72

Marks function as being in a hot path and frequently called.

§

NoProfile = 73

Function should not be instrumented.

§

VscaleRange = 74

Minimum/Maximum vscale value for function.

§

SwiftAsync = 75

Argument is swift async context.

§

NoSanitizeCoverage = 76

No SanitizeCoverage instrumentation.

§

Elementtype = 77

Provide pointer element type to intrinsic.

§

DisableSanitizerInstrumentation = 78

Do not instrument function with sanitizers.

§

NoSanitizeBounds = 79

No SanitizeBounds instrumentation.

§

AllocAlign = 80

Parameter of a function that tells us the alignment of an allocation, as in aligned_alloc and aligned ::operator::new.

§

AllocatedPointer = 81

Parameter is the pointer to be manipulated by the allocator function.

§

AllocKind = 82

Describes behavior of an allocator function in terms of known properties.

§

PresplitCoroutine = 83

Function is a presplit coroutine.

§

FnretthunkExtern = 84

Whether to keep return instructions, or replace with a jump to an external symbol.

§

SkipProfile = 85

§

Memory = 86

Memory effects of the function.

§

Nofpclass = 87

Forbidden floating-point classes.

§

OptimizeForDebugging = 88

Select optimizations that give decent debug info.

§

Writable = 89

Pointer argument is writable.

§

CoroOnlyDestroyWhenComplete = 90

§

DeadOnUnwind = 91

Argument is dead if the call unwinds.

§

Range = 92

Parameter or return value is within the specified range.

§

SanitizeNumericalStability = 93

NumericalStabilitySanitizer is on.

§

Initializes = 94

Pointer argument memory is initialized.

§

HybridPatchable = 95

Function has a hybrid patchable thunk.

Trait Implementations§

Source§

impl Clone for AttrKind

Source§

fn clone(&self) -> AttrKind

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AttrKind

Source§

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

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

impl PartialEq for AttrKind

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<u8> for AttrKind

Source§

type Error = TryFromPrimitiveError<AttrKind>

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

fn try_from(number: u8) -> Result<Self, TryFromPrimitiveError<Self>>

Performs the conversion.
Source§

impl TryFromPrimitive for AttrKind

Source§

impl Copy for AttrKind

Source§

impl StructuralPartialEq for AttrKind

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.