#[repr(u8)]pub enum AttrKind {
Show 107 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,
SanitizeRealtime = 96,
SanitizeRealtimeBlocking = 97,
CoroElideSafe = 98,
NoExt = 99,
NoDivergenceSource = 100,
SanitizeType = 101,
Captures = 102,
DeadOnReturn = 103,
SanitizeAllocToken = 104,
NoCreateUndefOrPoison = 105,
DenormalFpEnv = 106,
NoOutline = 107,
}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.
SanitizeRealtime = 96
RealtimeSanitizer is on.
SanitizeRealtimeBlocking = 97
RealtimeSanitizer should error if a real-time unsafe function is invoked
during a real-time sanitized function (see sanitize_realtime).
CoroElideSafe = 98
The coroutine call meets the elide requirement. Hint the optimization pipeline to perform elide on the call or invoke instruction.
NoExt = 99
No extension needed before/after call (high bits are undefined).
NoDivergenceSource = 100
Function is not a source of divergence.
SanitizeType = 101
TypeSanitizer is on.
Captures = 102
Specify how the pointer may be captured.
DeadOnReturn = 103
Argument is dead upon function return.
SanitizeAllocToken = 104
Allocation token instrumentation is on.
NoCreateUndefOrPoison = 105
Result will not be undef or poison if all arguments are not undef and not poison.
DenormalFpEnv = 106
Indicate the denormal handling of the default floating-point environment.