pub const Kind = enum(u32) {
// Parameter Attributes
zeroext = @backingInt(ATTR_KIND.Z_EXT),
signext = @backingInt(ATTR_KIND.S_EXT),
noext = @backingInt(ATTR_KIND.NO_EXT),
inreg = @backingInt(ATTR_KIND.IN_REG),
byval = @backingInt(ATTR_KIND.BY_VAL),
byref = @backingInt(ATTR_KIND.BYREF),
preallocated = @backingInt(ATTR_KIND.PREALLOCATED),
inalloca = @backingInt(ATTR_KIND.IN_ALLOCA),
sret = @backingInt(ATTR_KIND.STRUCT_RET),
elementtype = @backingInt(ATTR_KIND.ELEMENTTYPE),
@"align" = @backingInt(ATTR_KIND.ALIGNMENT),
@"noalias" = @backingInt(ATTR_KIND.NO_ALIAS),
nocapture = @backingInt(ATTR_KIND.NO_CAPTURE),
captures = @backingInt(ATTR_KIND.CAPTURES),
nofree = @backingInt(ATTR_KIND.NOFREE),
nest = @backingInt(ATTR_KIND.NEST),
returned = @backingInt(ATTR_KIND.RETURNED),
nonnull = @backingInt(ATTR_KIND.NON_NULL),
dereferenceable = @backingInt(ATTR_KIND.DEREFERENCEABLE),
dereferenceable_or_null = @backingInt(ATTR_KIND.DEREFERENCEABLE_OR_NULL),
swiftself = @backingInt(ATTR_KIND.SWIFT_SELF),
swiftasync = @backingInt(ATTR_KIND.SWIFT_ASYNC),
swifterror = @backingInt(ATTR_KIND.SWIFT_ERROR),
immarg = @backingInt(ATTR_KIND.IMMARG),
noundef = @backingInt(ATTR_KIND.NOUNDEF),
nofpclass = @backingInt(ATTR_KIND.NOFPCLASS),
alignstack = @backingInt(ATTR_KIND.STACK_ALIGNMENT),
allocalign = @backingInt(ATTR_KIND.ALLOC_ALIGN),
allocptr = @backingInt(ATTR_KIND.ALLOCATED_POINTER),
readnone = @backingInt(ATTR_KIND.READ_NONE),
readonly = @backingInt(ATTR_KIND.READ_ONLY),
writeonly = @backingInt(ATTR_KIND.WRITEONLY),
writable = @backingInt(ATTR_KIND.WRITABLE),
initializes = @backingInt(ATTR_KIND.INITIALIZES),
dead_on_unwind = @backingInt(ATTR_KIND.DEAD_ON_UNWIND),
dead_on_return = @backingInt(ATTR_KIND.DEAD_ON_RETURN),
range = @backingInt(ATTR_KIND.RANGE),
// Function Attributes
//alignstack = @intFromEnum(ATTR_KIND.STACK_ALIGNMENT),
allockind = @backingInt(ATTR_KIND.ALLOC_KIND),
allocsize = @backingInt(ATTR_KIND.ALLOC_SIZE),
alwaysinline = @backingInt(ATTR_KIND.ALWAYS_INLINE),
builtin = @backingInt(ATTR_KIND.BUILTIN),
cold = @backingInt(ATTR_KIND.COLD),
convergent = @backingInt(ATTR_KIND.CONVERGENT),
disable_sanitizer_instrumentation = @backingInt(ATTR_KIND.DISABLE_SANITIZER_INSTRUMENTATION),
fn_ret_thunk_extern = @backingInt(ATTR_KIND.FNRETTHUNK_EXTERN),
hot = @backingInt(ATTR_KIND.HOT),
inlinehint = @backingInt(ATTR_KIND.INLINE_HINT),
jumptable = @backingInt(ATTR_KIND.JUMP_TABLE),
memory = @backingInt(ATTR_KIND.MEMORY),
minsize = @backingInt(ATTR_KIND.MIN_SIZE),
naked = @backingInt(ATTR_KIND.NAKED),
nobuiltin = @backingInt(ATTR_KIND.NO_BUILTIN),
nocallback = @backingInt(ATTR_KIND.NO_CALLBACK),
nodivergencesource = @backingInt(ATTR_KIND.NO_DIVERGENCE_SOURCE),
noduplicate = @backingInt(ATTR_KIND.NO_DUPLICATE),
//nofree = @intFromEnum(ATTR_KIND.NOFREE),
noimplicitfloat = @backingInt(ATTR_KIND.NO_IMPLICIT_FLOAT),
@"noinline" = @backingInt(ATTR_KIND.NO_INLINE),
nomerge = @backingInt(ATTR_KIND.NO_MERGE),
nonlazybind = @backingInt(ATTR_KIND.NON_LAZY_BIND),
noprofile = @backingInt(ATTR_KIND.NO_PROFILE),
skipprofile = @backingInt(ATTR_KIND.SKIP_PROFILE),
noredzone = @backingInt(ATTR_KIND.NO_RED_ZONE),
noreturn = @backingInt(ATTR_KIND.NO_RETURN),
norecurse = @backingInt(ATTR_KIND.NO_RECURSE),
willreturn = @backingInt(ATTR_KIND.WILLRETURN),
nosync = @backingInt(ATTR_KIND.NOSYNC),
nounwind = @backingInt(ATTR_KIND.NO_UNWIND),
nosanitize_bounds = @backingInt(ATTR_KIND.NO_SANITIZE_BOUNDS),
nosanitize_coverage = @backingInt(ATTR_KIND.NO_SANITIZE_COVERAGE),
null_pointer_is_valid = @backingInt(ATTR_KIND.NULL_POINTER_IS_VALID),
optdebug = @backingInt(ATTR_KIND.OPTIMIZE_FOR_DEBUGGING),
optforfuzzing = @backingInt(ATTR_KIND.OPT_FOR_FUZZING),
optnone = @backingInt(ATTR_KIND.OPTIMIZE_NONE),
optsize = @backingInt(ATTR_KIND.OPTIMIZE_FOR_SIZE),
//preallocated = @intFromEnum(ATTR_KIND.PREALLOCATED),
returns_twice = @backingInt(ATTR_KIND.RETURNS_TWICE),
safestack = @backingInt(ATTR_KIND.SAFESTACK),
sanitize_address = @backingInt(ATTR_KIND.SANITIZE_ADDRESS),
sanitize_memory = @backingInt(ATTR_KIND.SANITIZE_MEMORY),
sanitize_thread = @backingInt(ATTR_KIND.SANITIZE_THREAD),
sanitize_hwaddress = @backingInt(ATTR_KIND.SANITIZE_HWADDRESS),
sanitize_memtag = @backingInt(ATTR_KIND.SANITIZE_MEMTAG),
sanitize_realtime = @backingInt(ATTR_KIND.SANITIZE_REALTIME),
sanitize_realtime_blocking = @backingInt(ATTR_KIND.SANITIZE_REALTIME_BLOCKING),
sanitize_alloc_token = @backingInt(ATTR_KIND.SANITIZE_ALLOC_TOKEN),
speculative_load_hardening = @backingInt(ATTR_KIND.SPECULATIVE_LOAD_HARDENING),
speculatable = @backingInt(ATTR_KIND.SPECULATABLE),
ssp = @backingInt(ATTR_KIND.STACK_PROTECT),
sspstrong = @backingInt(ATTR_KIND.STACK_PROTECT_STRONG),
sspreq = @backingInt(ATTR_KIND.STACK_PROTECT_REQ),
strictfp = @backingInt(ATTR_KIND.STRICT_FP),
denormal_fpenv = @backingInt(ATTR_KIND.DENORMAL_FPENV),
uwtable = @backingInt(ATTR_KIND.UW_TABLE),
nocf_check = @backingInt(ATTR_KIND.NOCF_CHECK),
shadowcallstack = @backingInt(ATTR_KIND.SHADOWCALLSTACK),
mustprogress = @backingInt(ATTR_KIND.MUSTPROGRESS),
vscale_range = @backingInt(ATTR_KIND.VSCALE_RANGE),
nooutline = @backingInt(ATTR_KIND.NOOUTLINE),
nocreateundeforpoison = @backingInt(ATTR_KIND.NO_CREATE_UNDEF_OR_POISON),
string = maxInt(u31),
none = maxInt(u32),
_,
pub const len = @typeInfo(Kind).@"enum".field_names.len - 2;
pub fn fromString(str: String) Kind {
assert(!str.isAnon());
const kind: Kind = @fromBackingInt(@backingInt(str));
assert(kind != .none);
return kind;
}
fn toString(self: Kind) ?String {
assert(self != .none);
const str: String = @fromBackingInt(@backingInt(self));
return if (str.isAnon()) null else str;
}
/// enum AttributeKindCodes
const ATTR_KIND = enum(u32) {
ALIGNMENT = 1,
ALWAYS_INLINE = 2,
BY_VAL = 3,
INLINE_HINT = 4,
IN_REG = 5,
MIN_SIZE = 6,
NAKED = 7,
NEST = 8,
NO_ALIAS = 9,
NO_BUILTIN = 10,
NO_CAPTURE = 11,
NO_DUPLICATE = 12,
NO_IMPLICIT_FLOAT = 13,
NO_INLINE = 14,
NON_LAZY_BIND = 15,
NO_RED_ZONE = 16,
NO_RETURN = 17,
NO_UNWIND = 18,
OPTIMIZE_FOR_SIZE = 19,
READ_NONE = 20,
READ_ONLY = 21,
RETURNED = 22,
RETURNS_TWICE = 23,
S_EXT = 24,
STACK_ALIGNMENT = 25,
STACK_PROTECT = 26,
STACK_PROTECT_REQ = 27,
STACK_PROTECT_STRONG = 28,
STRUCT_RET = 29,
SANITIZE_ADDRESS = 30,
SANITIZE_THREAD = 31,
SANITIZE_MEMORY = 32,
UW_TABLE = 33,
Z_EXT = 34,
BUILTIN = 35,
COLD = 36,
OPTIMIZE_NONE = 37,
IN_ALLOCA = 38,
NON_NULL = 39,
JUMP_TABLE = 40,
DEREFERENCEABLE = 41,
DEREFERENCEABLE_OR_NULL = 42,
CONVERGENT = 43,
SAFESTACK = 44,
ARGMEMONLY = 45,
SWIFT_SELF = 46,
SWIFT_ERROR = 47,
NO_RECURSE = 48,
INACCESSIBLEMEM_ONLY = 49,
INACCESSIBLEMEM_OR_ARGMEMONLY = 50,
ALLOC_SIZE = 51,
WRITEONLY = 52,
SPECULATABLE = 53,
STRICT_FP = 54,
SANITIZE_HWADDRESS = 55,
NOCF_CHECK = 56,
OPT_FOR_FUZZING = 57,
SHADOWCALLSTACK = 58,
SPECULATIVE_LOAD_HARDENING = 59,
IMMARG = 60,
WILLRETURN = 61,
NOFREE = 62,
NOSYNC = 63,
SANITIZE_MEMTAG = 64,
PREALLOCATED = 65,
NO_MERGE = 66,
NULL_POINTER_IS_VALID = 67,
NOUNDEF = 68,
BYREF = 69,
MUSTPROGRESS = 70,
NO_CALLBACK = 71,
HOT = 72,
NO_PROFILE = 73,
VSCALE_RANGE = 74,
SWIFT_ASYNC = 75,
NO_SANITIZE_COVERAGE = 76,
ELEMENTTYPE = 77,
DISABLE_SANITIZER_INSTRUMENTATION = 78,
NO_SANITIZE_BOUNDS = 79,
ALLOC_ALIGN = 80,
ALLOCATED_POINTER = 81,
ALLOC_KIND = 82,
PRESPLIT_COROUTINE = 83,
FNRETTHUNK_EXTERN = 84,
SKIP_PROFILE = 85,
MEMORY = 86,
NOFPCLASS = 87,
OPTIMIZE_FOR_DEBUGGING = 88,
WRITABLE = 89,
CORO_ONLY_DESTROY_WHEN_COMPLETE = 90,
DEAD_ON_UNWIND = 91,
RANGE = 92,
SANITIZE_NUMERICAL_STABILITY = 93,
INITIALIZES = 94,
HYBRID_PATCHABLE = 95,
SANITIZE_REALTIME = 96,
SANITIZE_REALTIME_BLOCKING = 97,
CORO_ELIDE_SAFE = 98,
NO_EXT = 99,
NO_DIVERGENCE_SOURCE = 100,
SANITIZE_TYPE = 101,
CAPTURES = 102,
DEAD_ON_RETURN = 103,
SANITIZE_ALLOC_TOKEN = 104,
NO_CREATE_UNDEF_OR_POISON = 105,
DENORMAL_FPENV = 106,
NOOUTLINE = 107,
FLATTEN = 108,
};
}