1#![allow(non_camel_case_types)]
14
15use std::fmt::{self, Debug};
16use std::marker::PhantomData;
17use std::num::NonZero;
18use std::ptr;
19
20use bitflags::bitflags;
21use libc::{c_char, c_int, c_uchar, c_uint, c_ulonglong, c_void, size_t};
22
23use super::RustString;
24use super::debuginfo::{
25 DIArray, DIBuilder, DIDerivedType, DIDescriptor, DIFile, DIFlags, DILocation, DISPFlags,
26 DIScope, DISubprogram, DITemplateTypeParameter, DIType, DebugEmissionKind, DebugNameTableKind,
27};
28use crate::llvm::MetadataKindId;
29use crate::{TryFromU32, llvm};
30
31#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Bool { }
#[automatically_derived]
impl ::core::clone::Clone for Bool {
#[inline]
fn clone(&self) -> Bool {
let _: ::core::clone::AssertParamIsClone<c_int>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Bool { }Copy)]
37#[repr(transparent)]
38pub(crate) struct Bool {
39 value: c_int,
40}
41
42pub(crate) const TRUE: Bool = Bool::TRUE;
43pub(crate) const FALSE: Bool = Bool::FALSE;
44
45impl Bool {
46 pub(crate) const TRUE: Self = Self { value: 1 };
47 pub(crate) const FALSE: Self = Self { value: 0 };
48
49 pub(crate) const fn from_bool(rust_bool: bool) -> Self {
50 if rust_bool { Self::TRUE } else { Self::FALSE }
51 }
52
53 pub(crate) fn is_true(self) -> bool {
55 self.value != Self::FALSE.value
58 }
59}
60
61impl Debug for Bool {
62 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
63 match self.value {
64 0 => f.write_str("FALSE"),
65 1 => f.write_str("TRUE"),
66 v => f.write_fmt(format_args!("TRUE ({0})", v))write!(f, "TRUE ({v})"),
68 }
69 }
70}
71
72pub(crate) trait ToLlvmBool: Copy {
77 fn to_llvm_bool(self) -> llvm::Bool;
78}
79
80impl ToLlvmBool for bool {
81 #[inline(always)]
82 fn to_llvm_bool(self) -> llvm::Bool {
83 llvm::Bool::from_bool(self)
84 }
85}
86
87#[repr(transparent)]
94pub(crate) struct RawEnum<T> {
95 value: u32,
96 _rust_side_type: PhantomData<fn() -> T>,
98}
99
100impl<T: TryFrom<u32>> RawEnum<T> {
101 #[track_caller]
102 pub(crate) fn to_rust(self) -> T
103 where
104 T::Error: Debug,
105 {
106 T::try_from(self.value).expect("enum value returned by LLVM should be known")
108 }
109}
110
111#[derive(#[automatically_derived]
#[allow(dead_code)]
impl ::core::marker::Copy for LLVMRustResult { }Copy, #[automatically_derived]
#[doc(hidden)]
#[allow(dead_code)]
unsafe impl ::core::clone::TrivialClone for LLVMRustResult { }
#[automatically_derived]
#[allow(dead_code)]
impl ::core::clone::Clone for LLVMRustResult {
#[inline]
fn clone(&self) -> LLVMRustResult { *self }
}Clone, #[automatically_derived]
#[allow(dead_code)]
impl ::core::marker::StructuralPartialEq for LLVMRustResult { }
#[automatically_derived]
#[allow(dead_code)]
impl ::core::cmp::PartialEq for LLVMRustResult {
#[inline]
fn eq(&self, other: &LLVMRustResult) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
112#[repr(C)]
113#[allow(dead_code)] pub(crate) enum LLVMRustResult {
115 Success,
116 Failure,
117}
118
119#[derive(#[automatically_derived]
impl ::core::marker::Copy for ModuleFlagMergeBehavior { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for ModuleFlagMergeBehavior { }
#[automatically_derived]
impl ::core::clone::Clone for ModuleFlagMergeBehavior {
#[inline]
fn clone(&self) -> ModuleFlagMergeBehavior { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for ModuleFlagMergeBehavior { }
#[automatically_derived]
impl ::core::cmp::PartialEq for ModuleFlagMergeBehavior {
#[inline]
fn eq(&self, other: &ModuleFlagMergeBehavior) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
132#[repr(C)]
133pub(crate) enum ModuleFlagMergeBehavior {
134 Error = 1,
135 Warning = 2,
136 Require = 3,
137 Override = 4,
138 Append = 5,
139 AppendUnique = 6,
140 Max = 7,
141 Min = 8,
142}
143
144#[derive(#[automatically_derived]
#[allow(dead_code)]
impl ::core::marker::Copy for TailCallKind { }Copy, #[automatically_derived]
#[doc(hidden)]
#[allow(dead_code)]
unsafe impl ::core::clone::TrivialClone for TailCallKind { }
#[automatically_derived]
#[allow(dead_code)]
impl ::core::clone::Clone for TailCallKind {
#[inline]
fn clone(&self) -> TailCallKind { *self }
}Clone, #[automatically_derived]
#[allow(dead_code)]
impl ::core::marker::StructuralPartialEq for TailCallKind { }
#[automatically_derived]
#[allow(dead_code)]
impl ::core::cmp::PartialEq for TailCallKind {
#[inline]
fn eq(&self, other: &TailCallKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
#[allow(dead_code)]
impl ::core::fmt::Debug for TailCallKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TailCallKind::None => "None",
TailCallKind::Tail => "Tail",
TailCallKind::MustTail => "MustTail",
TailCallKind::NoTail => "NoTail",
})
}
}Debug)]
148#[repr(C)]
149#[allow(dead_code)]
150pub(crate) enum TailCallKind {
151 None = 0,
152 Tail = 1,
153 MustTail = 2,
154 NoTail = 3,
155}
156
157#[derive(#[automatically_derived]
impl ::core::marker::Copy for CallConv { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CallConv { }
#[automatically_derived]
impl ::core::clone::Clone for CallConv {
#[inline]
fn clone(&self) -> CallConv { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for CallConv { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CallConv {
#[inline]
fn eq(&self, other: &CallConv) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::fmt::Debug for CallConv {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
CallConv::CCallConv => "CCallConv",
CallConv::FastCallConv => "FastCallConv",
CallConv::ColdCallConv => "ColdCallConv",
CallConv::PreserveMost => "PreserveMost",
CallConv::PreserveAll => "PreserveAll",
CallConv::SwiftCallConv => "SwiftCallConv",
CallConv::Tail => "Tail",
CallConv::PreserveNone => "PreserveNone",
CallConv::X86StdcallCallConv => "X86StdcallCallConv",
CallConv::X86FastcallCallConv => "X86FastcallCallConv",
CallConv::ArmAapcsCallConv => "ArmAapcsCallConv",
CallConv::Msp430Intr => "Msp430Intr",
CallConv::X86_ThisCall => "X86_ThisCall",
CallConv::PtxKernel => "PtxKernel",
CallConv::X86_64_SysV => "X86_64_SysV",
CallConv::X86_64_Win64 => "X86_64_Win64",
CallConv::X86_VectorCall => "X86_VectorCall",
CallConv::X86_Intr => "X86_Intr",
CallConv::AvrNonBlockingInterrupt =>
"AvrNonBlockingInterrupt",
CallConv::AvrInterrupt => "AvrInterrupt",
CallConv::AmdgpuKernel => "AmdgpuKernel",
})
}
}Debug, impl ::core::convert::TryFrom<u32> for CallConv {
type Error = u32;
#[allow(deprecated)]
fn try_from(value: u32) -> ::core::result::Result<CallConv, Self::Error> {
if value == const { CallConv::CCallConv as u32 } {
return Ok(CallConv::CCallConv)
}
if value == const { CallConv::FastCallConv as u32 } {
return Ok(CallConv::FastCallConv)
}
if value == const { CallConv::ColdCallConv as u32 } {
return Ok(CallConv::ColdCallConv)
}
if value == const { CallConv::PreserveMost as u32 } {
return Ok(CallConv::PreserveMost)
}
if value == const { CallConv::PreserveAll as u32 } {
return Ok(CallConv::PreserveAll)
}
if value == const { CallConv::SwiftCallConv as u32 } {
return Ok(CallConv::SwiftCallConv)
}
if value == const { CallConv::Tail as u32 } {
return Ok(CallConv::Tail)
}
if value == const { CallConv::PreserveNone as u32 } {
return Ok(CallConv::PreserveNone)
}
if value == const { CallConv::X86StdcallCallConv as u32 } {
return Ok(CallConv::X86StdcallCallConv)
}
if value == const { CallConv::X86FastcallCallConv as u32 } {
return Ok(CallConv::X86FastcallCallConv)
}
if value == const { CallConv::ArmAapcsCallConv as u32 } {
return Ok(CallConv::ArmAapcsCallConv)
}
if value == const { CallConv::Msp430Intr as u32 } {
return Ok(CallConv::Msp430Intr)
}
if value == const { CallConv::X86_ThisCall as u32 } {
return Ok(CallConv::X86_ThisCall)
}
if value == const { CallConv::PtxKernel as u32 } {
return Ok(CallConv::PtxKernel)
}
if value == const { CallConv::X86_64_SysV as u32 } {
return Ok(CallConv::X86_64_SysV)
}
if value == const { CallConv::X86_64_Win64 as u32 } {
return Ok(CallConv::X86_64_Win64)
}
if value == const { CallConv::X86_VectorCall as u32 } {
return Ok(CallConv::X86_VectorCall)
}
if value == const { CallConv::X86_Intr as u32 } {
return Ok(CallConv::X86_Intr)
}
if value == const { CallConv::AvrNonBlockingInterrupt as u32 } {
return Ok(CallConv::AvrNonBlockingInterrupt)
}
if value == const { CallConv::AvrInterrupt as u32 } {
return Ok(CallConv::AvrInterrupt)
}
if value == const { CallConv::AmdgpuKernel as u32 } {
return Ok(CallConv::AmdgpuKernel)
}
Err(value)
}
}TryFromU32)]
161#[repr(C)]
162pub(crate) enum CallConv {
163 CCallConv = 0,
164 FastCallConv = 8,
165 ColdCallConv = 9,
166 PreserveMost = 14,
167 PreserveAll = 15,
168 SwiftCallConv = 16,
169 Tail = 18,
170 PreserveNone = 21,
171 X86StdcallCallConv = 64,
172 X86FastcallCallConv = 65,
173 ArmAapcsCallConv = 67,
174 Msp430Intr = 69,
175 X86_ThisCall = 70,
176 PtxKernel = 71,
177 X86_64_SysV = 78,
178 X86_64_Win64 = 79,
179 X86_VectorCall = 80,
180 X86_Intr = 83,
181 AvrNonBlockingInterrupt = 84,
182 AvrInterrupt = 85,
183 AmdgpuKernel = 91,
184}
185
186#[derive(#[automatically_derived]
impl ::core::marker::Copy for Linkage { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Linkage { }
#[automatically_derived]
impl ::core::clone::Clone for Linkage {
#[inline]
fn clone(&self) -> Linkage { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for Linkage { }
#[automatically_derived]
impl ::core::cmp::PartialEq for Linkage {
#[inline]
fn eq(&self, other: &Linkage) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, impl ::core::convert::TryFrom<u32> for Linkage {
type Error = u32;
#[allow(deprecated)]
fn try_from(value: u32) -> ::core::result::Result<Linkage, Self::Error> {
if value == const { Linkage::ExternalLinkage as u32 } {
return Ok(Linkage::ExternalLinkage)
}
if value == const { Linkage::AvailableExternallyLinkage as u32 } {
return Ok(Linkage::AvailableExternallyLinkage)
}
if value == const { Linkage::LinkOnceAnyLinkage as u32 } {
return Ok(Linkage::LinkOnceAnyLinkage)
}
if value == const { Linkage::LinkOnceODRLinkage as u32 } {
return Ok(Linkage::LinkOnceODRLinkage)
}
if value == const { Linkage::LinkOnceODRAutoHideLinkage as u32 } {
return Ok(Linkage::LinkOnceODRAutoHideLinkage)
}
if value == const { Linkage::WeakAnyLinkage as u32 } {
return Ok(Linkage::WeakAnyLinkage)
}
if value == const { Linkage::WeakODRLinkage as u32 } {
return Ok(Linkage::WeakODRLinkage)
}
if value == const { Linkage::AppendingLinkage as u32 } {
return Ok(Linkage::AppendingLinkage)
}
if value == const { Linkage::InternalLinkage as u32 } {
return Ok(Linkage::InternalLinkage)
}
if value == const { Linkage::PrivateLinkage as u32 } {
return Ok(Linkage::PrivateLinkage)
}
if value == const { Linkage::DLLImportLinkage as u32 } {
return Ok(Linkage::DLLImportLinkage)
}
if value == const { Linkage::DLLExportLinkage as u32 } {
return Ok(Linkage::DLLExportLinkage)
}
if value == const { Linkage::ExternalWeakLinkage as u32 } {
return Ok(Linkage::ExternalWeakLinkage)
}
if value == const { Linkage::GhostLinkage as u32 } {
return Ok(Linkage::GhostLinkage)
}
if value == const { Linkage::CommonLinkage as u32 } {
return Ok(Linkage::CommonLinkage)
}
if value == const { Linkage::LinkerPrivateLinkage as u32 } {
return Ok(Linkage::LinkerPrivateLinkage)
}
if value == const { Linkage::LinkerPrivateWeakLinkage as u32 } {
return Ok(Linkage::LinkerPrivateWeakLinkage)
}
Err(value)
}
}TryFromU32)]
188#[repr(C)]
189pub(crate) enum Linkage {
190 ExternalLinkage = 0,
191 AvailableExternallyLinkage = 1,
192 LinkOnceAnyLinkage = 2,
193 LinkOnceODRLinkage = 3,
194 #[deprecated = "marked obsolete by LLVM"]
195 LinkOnceODRAutoHideLinkage = 4,
196 WeakAnyLinkage = 5,
197 WeakODRLinkage = 6,
198 AppendingLinkage = 7,
199 InternalLinkage = 8,
200 PrivateLinkage = 9,
201 #[deprecated = "marked obsolete by LLVM"]
202 DLLImportLinkage = 10,
203 #[deprecated = "marked obsolete by LLVM"]
204 DLLExportLinkage = 11,
205 ExternalWeakLinkage = 12,
206 #[deprecated = "marked obsolete by LLVM"]
207 GhostLinkage = 13,
208 CommonLinkage = 14,
209 LinkerPrivateLinkage = 15,
210 LinkerPrivateWeakLinkage = 16,
211}
212
213#[repr(C)]
215#[derive(#[automatically_derived]
impl ::core::marker::Copy for Visibility { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Visibility { }
#[automatically_derived]
impl ::core::clone::Clone for Visibility {
#[inline]
fn clone(&self) -> Visibility { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for Visibility { }
#[automatically_derived]
impl ::core::cmp::PartialEq for Visibility {
#[inline]
fn eq(&self, other: &Visibility) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, impl ::core::convert::TryFrom<u32> for Visibility {
type Error = u32;
#[allow(deprecated)]
fn try_from(value: u32)
-> ::core::result::Result<Visibility, Self::Error> {
if value == const { Visibility::Default as u32 } {
return Ok(Visibility::Default)
}
if value == const { Visibility::Hidden as u32 } {
return Ok(Visibility::Hidden)
}
if value == const { Visibility::Protected as u32 } {
return Ok(Visibility::Protected)
}
Err(value)
}
}TryFromU32)]
216pub(crate) enum Visibility {
217 Default = 0,
218 Hidden = 1,
219 Protected = 2,
220}
221
222#[repr(C)]
224pub(crate) enum UnnamedAddr {
225 No,
226 #[expect(dead_code)]
227 Local,
228 Global,
229}
230
231#[derive(#[automatically_derived]
impl ::core::marker::Copy for DLLStorageClass { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DLLStorageClass { }
#[automatically_derived]
impl ::core::clone::Clone for DLLStorageClass {
#[inline]
fn clone(&self) -> DLLStorageClass { *self }
}Clone)]
233#[repr(C)]
234pub(crate) enum DLLStorageClass {
235 #[allow(dead_code)]
236 Default = 0,
237 DllImport = 1, #[allow(dead_code)]
239 DllExport = 2, }
241
242#[derive(#[automatically_derived]
impl ::core::marker::Copy for UWTableKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for UWTableKind { }
#[automatically_derived]
impl ::core::clone::Clone for UWTableKind {
#[inline]
fn clone(&self) -> UWTableKind { *self }
}Clone)]
244#[repr(C)]
245pub(crate) enum UWTableKind {
246 None = 0,
248 Sync = 1,
250 Async = 2,
252}
253
254#[repr(C)]
256#[derive(#[automatically_derived]
impl ::core::marker::Copy for FramePointerKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FramePointerKind { }
#[automatically_derived]
impl ::core::clone::Clone for FramePointerKind {
#[inline]
fn clone(&self) -> FramePointerKind { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FramePointerKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
FramePointerKind::None => "None",
FramePointerKind::NonLeaf => "NonLeaf",
FramePointerKind::All => "All",
FramePointerKind::Reserved => "Reserved",
FramePointerKind::NonLeafNoReserve => "NonLeafNoReserve",
})
}
}Debug)]
257#[expect(dead_code, reason = "Some variants are unused, but are kept to match LLVM")]
258pub(crate) enum FramePointerKind {
259 None = 0,
260 NonLeaf = 1,
261 All = 2,
262 Reserved = 3,
263 NonLeafNoReserve = 4,
264}
265
266#[repr(C)]
270#[derive(#[automatically_derived]
impl ::core::marker::Copy for AttributeKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AttributeKind { }
#[automatically_derived]
impl ::core::clone::Clone for AttributeKind {
#[inline]
fn clone(&self) -> AttributeKind { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AttributeKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AttributeKind::AlwaysInline => "AlwaysInline",
AttributeKind::ByVal => "ByVal",
AttributeKind::Cold => "Cold",
AttributeKind::InlineHint => "InlineHint",
AttributeKind::MinSize => "MinSize",
AttributeKind::Naked => "Naked",
AttributeKind::NoAlias => "NoAlias",
AttributeKind::CapturesAddress => "CapturesAddress",
AttributeKind::NoInline => "NoInline",
AttributeKind::NonNull => "NonNull",
AttributeKind::NoRedZone => "NoRedZone",
AttributeKind::NoReturn => "NoReturn",
AttributeKind::NoUnwind => "NoUnwind",
AttributeKind::OptimizeForSize => "OptimizeForSize",
AttributeKind::ReadOnly => "ReadOnly",
AttributeKind::SExt => "SExt",
AttributeKind::StructRet => "StructRet",
AttributeKind::UWTable => "UWTable",
AttributeKind::ZExt => "ZExt",
AttributeKind::InReg => "InReg",
AttributeKind::SanitizeThread => "SanitizeThread",
AttributeKind::SanitizeAddress => "SanitizeAddress",
AttributeKind::SanitizeMemory => "SanitizeMemory",
AttributeKind::NonLazyBind => "NonLazyBind",
AttributeKind::OptimizeNone => "OptimizeNone",
AttributeKind::ReadNone => "ReadNone",
AttributeKind::SanitizeHWAddress => "SanitizeHWAddress",
AttributeKind::WillReturn => "WillReturn",
AttributeKind::StackProtectReq => "StackProtectReq",
AttributeKind::StackProtectStrong => "StackProtectStrong",
AttributeKind::StackProtect => "StackProtect",
AttributeKind::NoUndef => "NoUndef",
AttributeKind::SanitizeMemTag => "SanitizeMemTag",
AttributeKind::NoCfCheck => "NoCfCheck",
AttributeKind::ShadowCallStack => "ShadowCallStack",
AttributeKind::AllocSize => "AllocSize",
AttributeKind::AllocatedPointer => "AllocatedPointer",
AttributeKind::AllocAlign => "AllocAlign",
AttributeKind::SanitizeSafeStack => "SanitizeSafeStack",
AttributeKind::FnRetThunkExtern => "FnRetThunkExtern",
AttributeKind::Writable => "Writable",
AttributeKind::DeadOnUnwind => "DeadOnUnwind",
AttributeKind::DeadOnReturn => "DeadOnReturn",
AttributeKind::CapturesReadOnly => "CapturesReadOnly",
AttributeKind::CapturesNone => "CapturesNone",
AttributeKind::SanitizeRealtimeNonblocking =>
"SanitizeRealtimeNonblocking",
AttributeKind::SanitizeRealtimeBlocking =>
"SanitizeRealtimeBlocking",
AttributeKind::Convergent => "Convergent",
AttributeKind::NoFree => "NoFree",
})
}
}Debug)]
271#[expect(dead_code, reason = "Some variants are unused, but are kept to match the C++")]
272pub(crate) enum AttributeKind {
273 AlwaysInline = 0,
274 ByVal = 1,
275 Cold = 2,
276 InlineHint = 3,
277 MinSize = 4,
278 Naked = 5,
279 NoAlias = 6,
280 CapturesAddress = 7,
281 NoInline = 8,
282 NonNull = 9,
283 NoRedZone = 10,
284 NoReturn = 11,
285 NoUnwind = 12,
286 OptimizeForSize = 13,
287 ReadOnly = 14,
288 SExt = 15,
289 StructRet = 16,
290 UWTable = 17,
291 ZExt = 18,
292 InReg = 19,
293 SanitizeThread = 20,
294 SanitizeAddress = 21,
295 SanitizeMemory = 22,
296 NonLazyBind = 23,
297 OptimizeNone = 24,
298 ReadNone = 26,
299 SanitizeHWAddress = 28,
300 WillReturn = 29,
301 StackProtectReq = 30,
302 StackProtectStrong = 31,
303 StackProtect = 32,
304 NoUndef = 33,
305 SanitizeMemTag = 34,
306 NoCfCheck = 35,
307 ShadowCallStack = 36,
308 AllocSize = 37,
309 AllocatedPointer = 38,
310 AllocAlign = 39,
311 SanitizeSafeStack = 40,
312 FnRetThunkExtern = 41,
313 Writable = 42,
314 DeadOnUnwind = 43,
315 DeadOnReturn = 44,
316 CapturesReadOnly = 45,
317 CapturesNone = 46,
318 SanitizeRealtimeNonblocking = 47,
319 SanitizeRealtimeBlocking = 48,
320 Convergent = 49,
321 NoFree = 50,
322}
323
324#[derive(#[automatically_derived]
impl ::core::marker::Copy for IntPredicate { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for IntPredicate { }
#[automatically_derived]
impl ::core::clone::Clone for IntPredicate {
#[inline]
fn clone(&self) -> IntPredicate { *self }
}Clone)]
326#[repr(C)]
327pub(crate) enum IntPredicate {
328 IntEQ = 32,
329 IntNE = 33,
330 IntUGT = 34,
331 IntUGE = 35,
332 IntULT = 36,
333 IntULE = 37,
334 IntSGT = 38,
335 IntSGE = 39,
336 IntSLT = 40,
337 IntSLE = 41,
338}
339
340#[derive(#[automatically_derived]
impl ::core::marker::Copy for RealPredicate { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for RealPredicate { }
#[automatically_derived]
impl ::core::clone::Clone for RealPredicate {
#[inline]
fn clone(&self) -> RealPredicate { *self }
}Clone)]
342#[repr(C)]
343pub(crate) enum RealPredicate {
344 RealPredicateFalse = 0,
345 RealOEQ = 1,
346 RealOGT = 2,
347 RealOGE = 3,
348 RealOLT = 4,
349 RealOLE = 5,
350 RealONE = 6,
351 RealORD = 7,
352 RealUNO = 8,
353 RealUEQ = 9,
354 RealUGT = 10,
355 RealUGE = 11,
356 RealULT = 12,
357 RealULE = 13,
358 RealUNE = 14,
359 RealPredicateTrue = 15,
360}
361
362#[derive(#[automatically_derived]
impl ::core::marker::Copy for TypeKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for TypeKind { }
#[automatically_derived]
impl ::core::clone::Clone for TypeKind {
#[inline]
fn clone(&self) -> TypeKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for TypeKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for TypeKind {
#[inline]
fn eq(&self, other: &TypeKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::fmt::Debug for TypeKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TypeKind::Void => "Void",
TypeKind::Half => "Half",
TypeKind::Float => "Float",
TypeKind::Double => "Double",
TypeKind::X86_FP80 => "X86_FP80",
TypeKind::FP128 => "FP128",
TypeKind::PPC_FP128 => "PPC_FP128",
TypeKind::Label => "Label",
TypeKind::Integer => "Integer",
TypeKind::Function => "Function",
TypeKind::Struct => "Struct",
TypeKind::Array => "Array",
TypeKind::Pointer => "Pointer",
TypeKind::Vector => "Vector",
TypeKind::Metadata => "Metadata",
TypeKind::Token => "Token",
TypeKind::ScalableVector => "ScalableVector",
TypeKind::BFloat => "BFloat",
TypeKind::X86_AMX => "X86_AMX",
})
}
}Debug, impl ::core::convert::TryFrom<u32> for TypeKind {
type Error = u32;
#[allow(deprecated)]
fn try_from(value: u32) -> ::core::result::Result<TypeKind, Self::Error> {
if value == const { TypeKind::Void as u32 } {
return Ok(TypeKind::Void)
}
if value == const { TypeKind::Half as u32 } {
return Ok(TypeKind::Half)
}
if value == const { TypeKind::Float as u32 } {
return Ok(TypeKind::Float)
}
if value == const { TypeKind::Double as u32 } {
return Ok(TypeKind::Double)
}
if value == const { TypeKind::X86_FP80 as u32 } {
return Ok(TypeKind::X86_FP80)
}
if value == const { TypeKind::FP128 as u32 } {
return Ok(TypeKind::FP128)
}
if value == const { TypeKind::PPC_FP128 as u32 } {
return Ok(TypeKind::PPC_FP128)
}
if value == const { TypeKind::Label as u32 } {
return Ok(TypeKind::Label)
}
if value == const { TypeKind::Integer as u32 } {
return Ok(TypeKind::Integer)
}
if value == const { TypeKind::Function as u32 } {
return Ok(TypeKind::Function)
}
if value == const { TypeKind::Struct as u32 } {
return Ok(TypeKind::Struct)
}
if value == const { TypeKind::Array as u32 } {
return Ok(TypeKind::Array)
}
if value == const { TypeKind::Pointer as u32 } {
return Ok(TypeKind::Pointer)
}
if value == const { TypeKind::Vector as u32 } {
return Ok(TypeKind::Vector)
}
if value == const { TypeKind::Metadata as u32 } {
return Ok(TypeKind::Metadata)
}
if value == const { TypeKind::Token as u32 } {
return Ok(TypeKind::Token)
}
if value == const { TypeKind::ScalableVector as u32 } {
return Ok(TypeKind::ScalableVector)
}
if value == const { TypeKind::BFloat as u32 } {
return Ok(TypeKind::BFloat)
}
if value == const { TypeKind::X86_AMX as u32 } {
return Ok(TypeKind::X86_AMX)
}
Err(value)
}
}TryFromU32)]
370#[repr(C)]
371pub(crate) enum TypeKind {
372 Void = 0,
373 Half = 1,
374 Float = 2,
375 Double = 3,
376 X86_FP80 = 4,
377 FP128 = 5,
378 PPC_FP128 = 6,
379 Label = 7,
380 Integer = 8,
381 Function = 9,
382 Struct = 10,
383 Array = 11,
384 Pointer = 12,
385 Vector = 13,
386 Metadata = 14,
387 Token = 16,
388 ScalableVector = 17,
389 BFloat = 18,
390 X86_AMX = 19,
391}
392
393#[derive(#[automatically_derived]
impl ::core::marker::Copy for AtomicRmwBinOp { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AtomicRmwBinOp { }
#[automatically_derived]
impl ::core::clone::Clone for AtomicRmwBinOp {
#[inline]
fn clone(&self) -> AtomicRmwBinOp { *self }
}Clone)]
395#[repr(C)]
396pub(crate) enum AtomicRmwBinOp {
397 AtomicXchg = 0,
398 AtomicAdd = 1,
399 AtomicSub = 2,
400 AtomicAnd = 3,
401 AtomicNand = 4,
402 AtomicOr = 5,
403 AtomicXor = 6,
404 AtomicMax = 7,
405 AtomicMin = 8,
406 AtomicUMax = 9,
407 AtomicUMin = 10,
408}
409
410#[derive(#[automatically_derived]
impl ::core::marker::Copy for AtomicOrdering { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AtomicOrdering { }
#[automatically_derived]
impl ::core::clone::Clone for AtomicOrdering {
#[inline]
fn clone(&self) -> AtomicOrdering { *self }
}Clone)]
412#[repr(C)]
413pub(crate) enum AtomicOrdering {
414 #[allow(dead_code)]
415 NotAtomic = 0,
416 #[allow(dead_code)]
417 Unordered = 1,
418 Monotonic = 2,
419 Acquire = 4,
421 Release = 5,
422 AcquireRelease = 6,
423 SequentiallyConsistent = 7,
424}
425
426#[derive(#[automatically_derived]
impl ::core::marker::Copy for FileType { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FileType { }
#[automatically_derived]
impl ::core::clone::Clone for FileType {
#[inline]
fn clone(&self) -> FileType { *self }
}Clone)]
428#[repr(C)]
429pub(crate) enum FileType {
430 AssemblyFile,
431 ObjectFile,
432}
433
434#[derive(#[automatically_derived]
impl ::core::marker::Copy for AsmDialect { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AsmDialect { }
#[automatically_derived]
impl ::core::clone::Clone for AsmDialect {
#[inline]
fn clone(&self) -> AsmDialect { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for AsmDialect { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AsmDialect {
#[inline]
fn eq(&self, other: &AsmDialect) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
436#[repr(C)]
437pub(crate) enum AsmDialect {
438 Att,
439 Intel,
440}
441
442#[derive(#[automatically_derived]
impl ::core::marker::Copy for CodeGenOptLevel { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CodeGenOptLevel { }
#[automatically_derived]
impl ::core::clone::Clone for CodeGenOptLevel {
#[inline]
fn clone(&self) -> CodeGenOptLevel { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for CodeGenOptLevel { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CodeGenOptLevel {
#[inline]
fn eq(&self, other: &CodeGenOptLevel) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
444#[repr(C)]
445pub(crate) enum CodeGenOptLevel {
446 None,
447 Less,
448 Default,
449 Aggressive,
450}
451
452#[repr(C)]
454pub(crate) enum PassBuilderOptLevel {
455 O0,
456 O1,
457 O2,
458 O3,
459 Os,
460 Oz,
461}
462
463#[derive(#[automatically_derived]
impl ::core::marker::StructuralPartialEq for OptStage { }
#[automatically_derived]
impl ::core::cmp::PartialEq for OptStage {
#[inline]
fn eq(&self, other: &OptStage) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
465#[repr(C)]
466pub(crate) enum OptStage {
467 PreLinkNoLTO,
468 PreLinkThinLTO,
469 PreLinkFatLTO,
470 ThinLTO,
471 FatLTO,
472}
473
474#[repr(C)]
476pub(crate) struct SanitizerOptions {
477 pub sanitize_address: bool,
478 pub sanitize_address_recover: bool,
479 pub sanitize_cfi: bool,
480 pub sanitize_dataflow: bool,
481 pub sanitize_dataflow_abilist: *const *const c_char,
482 pub sanitize_dataflow_abilist_len: size_t,
483 pub sanitize_kcfi: bool,
484 pub sanitize_memory: bool,
485 pub sanitize_memory_recover: bool,
486 pub sanitize_memory_track_origins: c_int,
487 pub sanitize_realtime: bool,
488 pub sanitize_thread: bool,
489 pub sanitize_hwaddress: bool,
490 pub sanitize_hwaddress_recover: bool,
491 pub sanitize_kernel_address: bool,
492 pub sanitize_kernel_address_recover: bool,
493 pub sanitize_kernel_hwaddress: bool,
494 pub sanitize_kernel_hwaddress_recover: bool,
495}
496
497#[derive(#[automatically_derived]
impl ::core::marker::Copy for RelocModel { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for RelocModel { }
#[automatically_derived]
impl ::core::clone::Clone for RelocModel {
#[inline]
fn clone(&self) -> RelocModel { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for RelocModel { }
#[automatically_derived]
impl ::core::cmp::PartialEq for RelocModel {
#[inline]
fn eq(&self, other: &RelocModel) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
499#[repr(C)]
500pub(crate) enum RelocModel {
501 Static,
502 PIC,
503 DynamicNoPic,
504 ROPI,
505 RWPI,
506 ROPI_RWPI,
507}
508
509#[derive(#[automatically_derived]
impl ::core::marker::Copy for FloatAbi { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FloatAbi { }
#[automatically_derived]
impl ::core::clone::Clone for FloatAbi {
#[inline]
fn clone(&self) -> FloatAbi { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for FloatAbi { }
#[automatically_derived]
impl ::core::cmp::PartialEq for FloatAbi {
#[inline]
fn eq(&self, other: &FloatAbi) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
511#[repr(C)]
512pub(crate) enum FloatAbi {
513 Default,
514 Soft,
515 Hard,
516}
517
518#[derive(#[automatically_derived]
impl ::core::marker::Copy for CodeModel { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CodeModel { }
#[automatically_derived]
impl ::core::clone::Clone for CodeModel {
#[inline]
fn clone(&self) -> CodeModel { *self }
}Clone)]
520#[repr(C)]
521pub(crate) enum CodeModel {
522 Tiny,
523 Small,
524 Kernel,
525 Medium,
526 Large,
527 None,
528}
529
530#[derive(#[automatically_derived]
#[allow(dead_code)]
impl ::core::marker::Copy for DiagnosticKind { }Copy, #[automatically_derived]
#[doc(hidden)]
#[allow(dead_code)]
unsafe impl ::core::clone::TrivialClone for DiagnosticKind { }
#[automatically_derived]
#[allow(dead_code)]
impl ::core::clone::Clone for DiagnosticKind {
#[inline]
fn clone(&self) -> DiagnosticKind { *self }
}Clone)]
532#[repr(C)]
533#[allow(dead_code)] pub(crate) enum DiagnosticKind {
535 Other,
536 InlineAsm,
537 StackSize,
538 DebugMetadataVersion,
539 SampleProfile,
540 OptimizationRemark,
541 OptimizationRemarkMissed,
542 OptimizationRemarkAnalysis,
543 OptimizationRemarkAnalysisFPCommute,
544 OptimizationRemarkAnalysisAliasing,
545 OptimizationRemarkOther,
546 OptimizationFailure,
547 PGOProfile,
548 Linker,
549 Unsupported,
550 SrcMgr,
551}
552
553#[derive(#[automatically_derived]
#[allow(dead_code)]
impl ::core::marker::Copy for DiagnosticLevel { }Copy, #[automatically_derived]
#[doc(hidden)]
#[allow(dead_code)]
unsafe impl ::core::clone::TrivialClone for DiagnosticLevel { }
#[automatically_derived]
#[allow(dead_code)]
impl ::core::clone::Clone for DiagnosticLevel {
#[inline]
fn clone(&self) -> DiagnosticLevel { *self }
}Clone)]
555#[repr(C)]
556#[allow(dead_code)] pub(crate) enum DiagnosticLevel {
558 Error,
559 Warning,
560 Note,
561 Remark,
562}
563
564unsafe extern "C" {
565 pub(crate) type ThinLTOData;
567}
568
569#[repr(C)]
571pub(crate) struct ThinLTOModule {
572 pub identifier: *const c_char,
573 pub data: *const u8,
574 pub len: usize,
575}
576
577#[derive(#[automatically_derived]
impl ::core::marker::Copy for ThreadLocalMode { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for ThreadLocalMode { }
#[automatically_derived]
impl ::core::clone::Clone for ThreadLocalMode {
#[inline]
fn clone(&self) -> ThreadLocalMode { *self }
}Clone)]
579#[repr(C)]
580pub(crate) enum ThreadLocalMode {
581 #[expect(dead_code)]
582 NotThreadLocal,
583 GeneralDynamic,
584 LocalDynamic,
585 InitialExec,
586 LocalExec,
587}
588
589#[derive(#[automatically_derived]
impl ::core::marker::Copy for ChecksumKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for ChecksumKind { }
#[automatically_derived]
impl ::core::clone::Clone for ChecksumKind {
#[inline]
fn clone(&self) -> ChecksumKind { *self }
}Clone)]
591#[repr(C)]
592pub(crate) enum ChecksumKind {
593 None,
594 MD5,
595 SHA1,
596 SHA256,
597}
598
599#[derive(#[automatically_derived]
impl ::core::marker::Copy for MemoryEffects { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for MemoryEffects { }
#[automatically_derived]
impl ::core::clone::Clone for MemoryEffects {
#[inline]
fn clone(&self) -> MemoryEffects { *self }
}Clone)]
601#[repr(C)]
602pub(crate) enum MemoryEffects {
603 None,
604 ReadOnly,
605 InaccessibleMemOnly,
606 ReadOnlyNotPure,
607}
608
609#[derive(#[automatically_derived]
impl ::core::marker::Copy for Opcode { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for Opcode { }
#[automatically_derived]
impl ::core::clone::Clone for Opcode {
#[inline]
fn clone(&self) -> Opcode { *self }
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for Opcode { }
#[automatically_derived]
impl ::core::cmp::PartialEq for Opcode {
#[inline]
fn eq(&self, other: &Opcode) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Opcode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq)]
611#[repr(C)]
612#[expect(dead_code, reason = "Some variants are unused, but are kept to match LLVM-C")]
613pub(crate) enum Opcode {
614 Ret = 1,
615 Br = 2,
616 Switch = 3,
617 IndirectBr = 4,
618 Invoke = 5,
619 Unreachable = 7,
620 CallBr = 67,
621 FNeg = 66,
622 Add = 8,
623 FAdd = 9,
624 Sub = 10,
625 FSub = 11,
626 Mul = 12,
627 FMul = 13,
628 UDiv = 14,
629 SDiv = 15,
630 FDiv = 16,
631 URem = 17,
632 SRem = 18,
633 FRem = 19,
634 Shl = 20,
635 LShr = 21,
636 AShr = 22,
637 And = 23,
638 Or = 24,
639 Xor = 25,
640 Alloca = 26,
641 Load = 27,
642 Store = 28,
643 GetElementPtr = 29,
644 Trunc = 30,
645 ZExt = 31,
646 SExt = 32,
647 FPToUI = 33,
648 FPToSI = 34,
649 UIToFP = 35,
650 SIToFP = 36,
651 FPTrunc = 37,
652 FPExt = 38,
653 PtrToInt = 39,
654 IntToPtr = 40,
655 BitCast = 41,
656 AddrSpaceCast = 60,
657 ICmp = 42,
658 FCmp = 43,
659 PHI = 44,
660 Call = 45,
661 Select = 46,
662 UserOp1 = 47,
663 UserOp2 = 48,
664 VAArg = 49,
665 ExtractElement = 50,
666 InsertElement = 51,
667 ShuffleVector = 52,
668 ExtractValue = 53,
669 InsertValue = 54,
670 Freeze = 68,
671 Fence = 55,
672 AtomicCmpXchg = 56,
673 AtomicRMW = 57,
674 Resume = 58,
675 LandingPad = 59,
676 CleanupRet = 61,
677 CatchRet = 62,
678 CatchPad = 63,
679 CleanupPad = 64,
680 CatchSwitch = 65,
681}
682
683#[derive(#[automatically_derived]
impl ::core::marker::Copy for CompressionKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CompressionKind { }
#[automatically_derived]
impl ::core::clone::Clone for CompressionKind {
#[inline]
fn clone(&self) -> CompressionKind { *self }
}Clone)]
685#[repr(C)]
686pub(crate) enum CompressionKind {
687 None = 0,
688 Zlib = 1,
689 Zstd = 2,
690}
691
692unsafe extern "C" {
693 type Opaque;
694}
695#[repr(C)]
696struct InvariantOpaque<'a> {
697 _marker: PhantomData<&'a mut &'a ()>,
698 _opaque: Opaque,
699}
700
701unsafe extern "C" {
703 pub(crate) type Module;
704 pub(crate) type Context;
705 pub(crate) type Type;
706 pub(crate) type Value;
707 pub(crate) type ConstantInt;
708 pub(crate) type Attribute;
709 pub(crate) type Metadata;
710 pub(crate) type BasicBlock;
711 pub(crate) type Comdat;
712 pub(crate) type DbgRecord;
714}
715#[repr(C)]
716pub(crate) struct Builder<'a>(InvariantOpaque<'a>);
717#[repr(C)]
718pub(crate) struct PassManager<'a>(InvariantOpaque<'a>);
719unsafe extern "C" {
720 pub type TargetMachine;
721}
722unsafe extern "C" {
723 pub(crate) type Twine;
724 pub(crate) type DiagnosticInfo;
725 pub(crate) type SMDiagnostic;
726}
727#[repr(C)]
729pub(crate) struct OperandBundle<'a>(InvariantOpaque<'a>);
730#[repr(C)]
731pub(crate) struct Linker<'a>(InvariantOpaque<'a>);
732
733unsafe extern "C" {
734 pub(crate) type DiagnosticHandler;
735}
736
737pub(crate) type DiagnosticHandlerTy = unsafe extern "C" fn(&DiagnosticInfo, *mut c_void);
738
739pub(crate) mod debuginfo {
740 use bitflags::bitflags;
741
742 use super::{InvariantOpaque, Metadata};
743
744 #[repr(C)]
753 pub(crate) struct DIBuilder<'ll>(InvariantOpaque<'ll>);
754
755 pub(crate) type DIDescriptor = Metadata;
756 pub(crate) type DILocation = Metadata;
757 pub(crate) type DIScope = DIDescriptor;
758 pub(crate) type DIFile = DIScope;
759 pub(crate) type DILexicalBlock = DIScope;
760 pub(crate) type DISubprogram = DIScope;
761 pub(crate) type DIType = DIDescriptor;
762 pub(crate) type DIBasicType = DIType;
763 pub(crate) type DIDerivedType = DIType;
764 pub(crate) type DICompositeType = DIDerivedType;
765 pub(crate) type DIVariable = DIDescriptor;
766 pub(crate) type DIArray = DIDescriptor;
767 pub(crate) type DITemplateTypeParameter = DIDescriptor;
768
769 #[doc = r" Must match the layout of `LLVMDIFlags` in the LLVM-C API."]
#[doc = r""]
#[doc = r" Each value declared here must also be covered by the static"]
#[doc = r" assertions in `RustWrapper.cpp` used by `fromRust(LLVMDIFlags)`."]
#[repr(transparent)]
pub(crate) struct DIFlags(<DIFlags as
::bitflags::__private::PublicFlags>::Internal);
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DIFlags { }
#[automatically_derived]
impl ::core::clone::Clone for DIFlags {
#[inline]
fn clone(&self) -> DIFlags {
let _:
::core::clone::AssertParamIsClone<<DIFlags as
::bitflags::__private::PublicFlags>::Internal>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for DIFlags { }
#[automatically_derived]
impl ::core::default::Default for DIFlags {
#[inline]
fn default() -> DIFlags { DIFlags(::core::default::Default::default()) }
}
impl DIFlags {
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagZero: Self = Self::from_bits_retain(0);
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagPrivate: Self = Self::from_bits_retain(1);
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagProtected: Self = Self::from_bits_retain(2);
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagPublic: Self = Self::from_bits_retain(3);
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagFwdDecl: Self = Self::from_bits_retain((1 << 2));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagAppleBlock: Self = Self::from_bits_retain((1 << 3));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagReservedBit4: Self = Self::from_bits_retain((1 << 4));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagVirtual: Self = Self::from_bits_retain((1 << 5));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagArtificial: Self = Self::from_bits_retain((1 << 6));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagExplicit: Self = Self::from_bits_retain((1 << 7));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagPrototyped: Self = Self::from_bits_retain((1 << 8));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagObjcClassComplete: Self = Self::from_bits_retain((1 << 9));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagObjectPointer: Self = Self::from_bits_retain((1 << 10));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagVector: Self = Self::from_bits_retain((1 << 11));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagStaticMember: Self = Self::from_bits_retain((1 << 12));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagLValueReference: Self = Self::from_bits_retain((1 << 13));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagRValueReference: Self = Self::from_bits_retain((1 << 14));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagReserved: Self = Self::from_bits_retain((1 << 15));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagSingleInheritance: Self = Self::from_bits_retain((1 << 16));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagMultipleInheritance: Self =
Self::from_bits_retain((2 << 16));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagVirtualInheritance: Self =
Self::from_bits_retain((3 << 16));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagIntroducedVirtual: Self = Self::from_bits_retain((1 << 18));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagBitField: Self = Self::from_bits_retain((1 << 19));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagNoReturn: Self = Self::from_bits_retain((1 << 20));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagTypePassByValue: Self = Self::from_bits_retain((1 << 22));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagTypePassByReference: Self =
Self::from_bits_retain((1 << 23));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagEnumClass: Self = Self::from_bits_retain((1 << 24));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagThunk: Self = Self::from_bits_retain((1 << 25));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagNonTrivial: Self = Self::from_bits_retain((1 << 26));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagBigEndian: Self = Self::from_bits_retain((1 << 27));
#[allow(deprecated, non_upper_case_globals,)]
pub const FlagLittleEndian: Self = Self::from_bits_retain((1 << 28));
}
impl ::bitflags::Flags for DIFlags {
const FLAGS: &'static [::bitflags::Flag<DIFlags>] =
&[{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagZero", DIFlags::FlagZero)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagPrivate", DIFlags::FlagPrivate)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagProtected",
DIFlags::FlagProtected)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagPublic", DIFlags::FlagPublic)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagFwdDecl", DIFlags::FlagFwdDecl)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagAppleBlock",
DIFlags::FlagAppleBlock)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagReservedBit4",
DIFlags::FlagReservedBit4)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagVirtual", DIFlags::FlagVirtual)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagArtificial",
DIFlags::FlagArtificial)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagExplicit", DIFlags::FlagExplicit)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagPrototyped",
DIFlags::FlagPrototyped)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagObjcClassComplete",
DIFlags::FlagObjcClassComplete)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagObjectPointer",
DIFlags::FlagObjectPointer)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagVector", DIFlags::FlagVector)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagStaticMember",
DIFlags::FlagStaticMember)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagLValueReference",
DIFlags::FlagLValueReference)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagRValueReference",
DIFlags::FlagRValueReference)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagReserved", DIFlags::FlagReserved)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagSingleInheritance",
DIFlags::FlagSingleInheritance)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagMultipleInheritance",
DIFlags::FlagMultipleInheritance)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagVirtualInheritance",
DIFlags::FlagVirtualInheritance)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagIntroducedVirtual",
DIFlags::FlagIntroducedVirtual)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagBitField", DIFlags::FlagBitField)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagNoReturn", DIFlags::FlagNoReturn)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagTypePassByValue",
DIFlags::FlagTypePassByValue)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagTypePassByReference",
DIFlags::FlagTypePassByReference)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagEnumClass",
DIFlags::FlagEnumClass)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagThunk", DIFlags::FlagThunk)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagNonTrivial",
DIFlags::FlagNonTrivial)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagBigEndian",
DIFlags::FlagBigEndian)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("FlagLittleEndian",
DIFlags::FlagLittleEndian)
}];
type Bits = u32;
fn bits(&self) -> u32 { DIFlags::bits(self) }
fn from_bits_retain(bits: u32) -> DIFlags {
DIFlags::from_bits_retain(bits)
}
}
#[allow(dead_code, deprecated, unused_doc_comments, unused_attributes,
unused_mut, unused_imports, non_upper_case_globals, clippy ::
assign_op_pattern, clippy :: indexing_slicing, clippy :: same_name_method,
clippy :: iter_without_into_iter,)]
const _: () =
{
#[repr(transparent)]
pub(crate) struct InternalBitFlags(u32);
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for InternalBitFlags { }
#[automatically_derived]
impl ::core::clone::Clone for InternalBitFlags {
#[inline]
fn clone(&self) -> InternalBitFlags {
let _: ::core::clone::AssertParamIsClone<u32>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for InternalBitFlags { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for InternalBitFlags { }
#[automatically_derived]
impl ::core::cmp::PartialEq for InternalBitFlags {
#[inline]
fn eq(&self, other: &InternalBitFlags) -> bool {
self.0 == other.0
}
}
#[automatically_derived]
impl ::core::cmp::Eq for InternalBitFlags {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
}
}
#[automatically_derived]
impl ::core::cmp::PartialOrd for InternalBitFlags {
#[inline]
fn partial_cmp(&self, other: &InternalBitFlags)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self,
other))
}
}
#[automatically_derived]
impl ::core::cmp::Ord for InternalBitFlags {
#[inline]
fn cmp(&self, other: &InternalBitFlags) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for InternalBitFlags {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
impl ::bitflags::__private::PublicFlags for DIFlags {
type Primitive = u32;
type Internal = InternalBitFlags;
}
impl ::bitflags::__private::core::default::Default for
InternalBitFlags {
#[inline]
fn default() -> Self { InternalBitFlags::empty() }
}
impl ::bitflags::__private::core::fmt::Debug for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
if self.is_empty() {
f.write_fmt(format_args!("{0:#x}",
<u32 as ::bitflags::Bits>::EMPTY))
} else {
::bitflags::__private::core::fmt::Display::fmt(self, f)
}
}
}
impl ::bitflags::__private::core::fmt::Display for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
::bitflags::parser::to_writer(&DIFlags(*self), f)
}
}
impl ::bitflags::__private::core::str::FromStr for InternalBitFlags {
type Err = ::bitflags::parser::ParseError;
fn from_str(s: &str)
->
::bitflags::__private::core::result::Result<Self,
Self::Err> {
::bitflags::parser::from_str::<DIFlags>(s).map(|flags|
flags.0)
}
}
impl ::bitflags::__private::core::convert::AsRef<u32> for
InternalBitFlags {
fn as_ref(&self) -> &u32 { &self.0 }
}
impl ::bitflags::__private::core::convert::From<u32> for
InternalBitFlags {
fn from(bits: u32) -> Self { Self::from_bits_retain(bits) }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl InternalBitFlags {
#[inline]
pub const fn empty() -> Self {
Self(<u32 as ::bitflags::Bits>::EMPTY)
}
#[inline]
pub const fn all() -> Self {
let mut truncated = <u32 as ::bitflags::Bits>::EMPTY;
let mut i = 0;
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DIFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
let _ = i;
Self(truncated)
}
#[inline]
pub const fn bits(&self) -> u32 { self.0 }
#[inline]
pub const fn from_bits(bits: u32)
-> ::bitflags::__private::core::option::Option<Self> {
let truncated = Self::from_bits_truncate(bits).0;
if truncated == bits {
::bitflags::__private::core::option::Option::Some(Self(bits))
} else { ::bitflags::__private::core::option::Option::None }
}
#[inline]
pub const fn from_bits_truncate(bits: u32) -> Self {
Self(bits & Self::all().0)
}
#[inline]
pub const fn from_bits_retain(bits: u32) -> Self { Self(bits) }
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
{
if name == "FlagZero" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagZero.bits()));
}
};
;
{
if name == "FlagPrivate" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagPrivate.bits()));
}
};
;
{
if name == "FlagProtected" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagProtected.bits()));
}
};
;
{
if name == "FlagPublic" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagPublic.bits()));
}
};
;
{
if name == "FlagFwdDecl" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagFwdDecl.bits()));
}
};
;
{
if name == "FlagAppleBlock" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagAppleBlock.bits()));
}
};
;
{
if name == "FlagReservedBit4" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagReservedBit4.bits()));
}
};
;
{
if name == "FlagVirtual" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagVirtual.bits()));
}
};
;
{
if name == "FlagArtificial" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagArtificial.bits()));
}
};
;
{
if name == "FlagExplicit" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagExplicit.bits()));
}
};
;
{
if name == "FlagPrototyped" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagPrototyped.bits()));
}
};
;
{
if name == "FlagObjcClassComplete" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagObjcClassComplete.bits()));
}
};
;
{
if name == "FlagObjectPointer" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagObjectPointer.bits()));
}
};
;
{
if name == "FlagVector" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagVector.bits()));
}
};
;
{
if name == "FlagStaticMember" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagStaticMember.bits()));
}
};
;
{
if name == "FlagLValueReference" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagLValueReference.bits()));
}
};
;
{
if name == "FlagRValueReference" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagRValueReference.bits()));
}
};
;
{
if name == "FlagReserved" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagReserved.bits()));
}
};
;
{
if name == "FlagSingleInheritance" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagSingleInheritance.bits()));
}
};
;
{
if name == "FlagMultipleInheritance" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagMultipleInheritance.bits()));
}
};
;
{
if name == "FlagVirtualInheritance" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagVirtualInheritance.bits()));
}
};
;
{
if name == "FlagIntroducedVirtual" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagIntroducedVirtual.bits()));
}
};
;
{
if name == "FlagBitField" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagBitField.bits()));
}
};
;
{
if name == "FlagNoReturn" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagNoReturn.bits()));
}
};
;
{
if name == "FlagTypePassByValue" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagTypePassByValue.bits()));
}
};
;
{
if name == "FlagTypePassByReference" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagTypePassByReference.bits()));
}
};
;
{
if name == "FlagEnumClass" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagEnumClass.bits()));
}
};
;
{
if name == "FlagThunk" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagThunk.bits()));
}
};
;
{
if name == "FlagNonTrivial" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagNonTrivial.bits()));
}
};
;
{
if name == "FlagBigEndian" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagBigEndian.bits()));
}
};
;
{
if name == "FlagLittleEndian" {
return ::bitflags::__private::core::option::Option::Some(Self(DIFlags::FlagLittleEndian.bits()));
}
};
;
let _ = name;
::bitflags::__private::core::option::Option::None
}
#[inline]
pub const fn is_empty(&self) -> bool {
self.0 == <u32 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn is_all(&self) -> bool {
Self::all().0 | self.0 == self.0
}
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0 & other.0 != <u32 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
#[inline]
pub fn insert(&mut self, other: Self) {
*self = Self(self.0).union(other);
}
#[inline]
pub fn remove(&mut self, other: Self) {
*self = Self(self.0).difference(other);
}
#[inline]
pub fn toggle(&mut self, other: Self) {
*self = Self(self.0).symmetric_difference(other);
}
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
if value { self.insert(other); } else { self.remove(other); }
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0 & other.0)
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0 | other.0)
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0 & !other.0)
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0 ^ other.0)
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self::from_bits_truncate(!self.0)
}
}
impl ::bitflags::__private::core::fmt::Binary for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for InternalBitFlags {
type Output = Self;
#[inline]
fn bitor(self, other: InternalBitFlags) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for
InternalBitFlags {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for InternalBitFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for
InternalBitFlags {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for InternalBitFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for
InternalBitFlags {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for InternalBitFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for InternalBitFlags
{
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for InternalBitFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<InternalBitFlags> for
InternalBitFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<InternalBitFlags>
for InternalBitFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl InternalBitFlags {
#[inline]
pub const fn iter(&self) -> ::bitflags::iter::Iter<DIFlags> {
::bitflags::iter::Iter::__private_const_new(<DIFlags as
::bitflags::Flags>::FLAGS,
DIFlags::from_bits_retain(self.bits()),
DIFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<DIFlags> {
::bitflags::iter::IterNames::__private_const_new(<DIFlags as
::bitflags::Flags>::FLAGS,
DIFlags::from_bits_retain(self.bits()),
DIFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
InternalBitFlags {
type Item = DIFlags;
type IntoIter = ::bitflags::iter::Iter<DIFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
impl InternalBitFlags {
#[inline]
pub fn bits_mut(&mut self) -> &mut u32 { &mut self.0 }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl DIFlags {
#[inline]
pub const fn empty() -> Self { Self(InternalBitFlags::empty()) }
#[inline]
pub const fn all() -> Self { Self(InternalBitFlags::all()) }
#[inline]
pub const fn bits(&self) -> u32 { self.0.bits() }
#[inline]
pub const fn from_bits(bits: u32)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_bits(bits) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn from_bits_truncate(bits: u32) -> Self {
Self(InternalBitFlags::from_bits_truncate(bits))
}
#[inline]
pub const fn from_bits_retain(bits: u32) -> Self {
Self(InternalBitFlags::from_bits_retain(bits))
}
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_name(name) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn is_empty(&self) -> bool { self.0.is_empty() }
#[inline]
pub const fn is_all(&self) -> bool { self.0.is_all() }
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0.intersects(other.0)
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0.contains(other.0)
}
#[inline]
pub fn insert(&mut self, other: Self) { self.0.insert(other.0) }
#[inline]
pub fn remove(&mut self, other: Self) { self.0.remove(other.0) }
#[inline]
pub fn toggle(&mut self, other: Self) { self.0.toggle(other.0) }
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
self.0.set(other.0, value)
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0.intersection(other.0))
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0.union(other.0))
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0.difference(other.0))
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0.symmetric_difference(other.0))
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self(self.0.complement())
}
}
impl ::bitflags::__private::core::fmt::Binary for DIFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for DIFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for DIFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for DIFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for DIFlags {
type Output = Self;
#[inline]
fn bitor(self, other: DIFlags) -> Self { self.union(other) }
}
impl ::bitflags::__private::core::ops::BitOrAssign for DIFlags {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for DIFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for DIFlags {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for DIFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for DIFlags {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for DIFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for DIFlags {
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for DIFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<DIFlags> for DIFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<DIFlags> for
DIFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl DIFlags {
#[inline]
pub const fn iter(&self) -> ::bitflags::iter::Iter<DIFlags> {
::bitflags::iter::Iter::__private_const_new(<DIFlags as
::bitflags::Flags>::FLAGS,
DIFlags::from_bits_retain(self.bits()),
DIFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<DIFlags> {
::bitflags::iter::IterNames::__private_const_new(<DIFlags as
::bitflags::Flags>::FLAGS,
DIFlags::from_bits_retain(self.bits()),
DIFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for DIFlags {
type Item = DIFlags;
type IntoIter = ::bitflags::iter::Iter<DIFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
};bitflags! {
770 #[repr(transparent)]
775 #[derive(Clone, Copy, Default)]
776 pub(crate) struct DIFlags: u32 {
777 const FlagZero = 0;
778 const FlagPrivate = 1;
779 const FlagProtected = 2;
780 const FlagPublic = 3;
781 const FlagFwdDecl = (1 << 2);
782 const FlagAppleBlock = (1 << 3);
783 const FlagReservedBit4 = (1 << 4);
784 const FlagVirtual = (1 << 5);
785 const FlagArtificial = (1 << 6);
786 const FlagExplicit = (1 << 7);
787 const FlagPrototyped = (1 << 8);
788 const FlagObjcClassComplete = (1 << 9);
789 const FlagObjectPointer = (1 << 10);
790 const FlagVector = (1 << 11);
791 const FlagStaticMember = (1 << 12);
792 const FlagLValueReference = (1 << 13);
793 const FlagRValueReference = (1 << 14);
794 const FlagReserved = (1 << 15);
795 const FlagSingleInheritance = (1 << 16);
796 const FlagMultipleInheritance = (2 << 16);
797 const FlagVirtualInheritance = (3 << 16);
798 const FlagIntroducedVirtual = (1 << 18);
799 const FlagBitField = (1 << 19);
800 const FlagNoReturn = (1 << 20);
801 const FlagTypePassByValue = (1 << 22);
803 const FlagTypePassByReference = (1 << 23);
804 const FlagEnumClass = (1 << 24);
805 const FlagThunk = (1 << 25);
806 const FlagNonTrivial = (1 << 26);
807 const FlagBigEndian = (1 << 27);
808 const FlagLittleEndian = (1 << 28);
809 }
810 }
811
812 #[repr(transparent)]
pub(crate) struct DISPFlags(<DISPFlags as
::bitflags::__private::PublicFlags>::Internal);
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DISPFlags { }
#[automatically_derived]
impl ::core::clone::Clone for DISPFlags {
#[inline]
fn clone(&self) -> DISPFlags {
let _:
::core::clone::AssertParamIsClone<<DISPFlags as
::bitflags::__private::PublicFlags>::Internal>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for DISPFlags { }
#[automatically_derived]
impl ::core::default::Default for DISPFlags {
#[inline]
fn default() -> DISPFlags {
DISPFlags(::core::default::Default::default())
}
}
impl DISPFlags {
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagZero: Self = Self::from_bits_retain(0);
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagVirtual: Self = Self::from_bits_retain(1);
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagPureVirtual: Self = Self::from_bits_retain(2);
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagLocalToUnit: Self = Self::from_bits_retain((1 << 2));
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagDefinition: Self = Self::from_bits_retain((1 << 3));
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagOptimized: Self = Self::from_bits_retain((1 << 4));
#[allow(deprecated, non_upper_case_globals,)]
pub const SPFlagMainSubprogram: Self = Self::from_bits_retain((1 << 5));
}
impl ::bitflags::Flags for DISPFlags {
const FLAGS: &'static [::bitflags::Flag<DISPFlags>] =
&[{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagZero", DISPFlags::SPFlagZero)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagVirtual",
DISPFlags::SPFlagVirtual)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagPureVirtual",
DISPFlags::SPFlagPureVirtual)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagLocalToUnit",
DISPFlags::SPFlagLocalToUnit)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagDefinition",
DISPFlags::SPFlagDefinition)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagOptimized",
DISPFlags::SPFlagOptimized)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("SPFlagMainSubprogram",
DISPFlags::SPFlagMainSubprogram)
}];
type Bits = u32;
fn bits(&self) -> u32 { DISPFlags::bits(self) }
fn from_bits_retain(bits: u32) -> DISPFlags {
DISPFlags::from_bits_retain(bits)
}
}
#[allow(dead_code, deprecated, unused_doc_comments, unused_attributes,
unused_mut, unused_imports, non_upper_case_globals, clippy ::
assign_op_pattern, clippy :: indexing_slicing, clippy :: same_name_method,
clippy :: iter_without_into_iter,)]
const _: () =
{
#[repr(transparent)]
pub(crate) struct InternalBitFlags(u32);
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for InternalBitFlags { }
#[automatically_derived]
impl ::core::clone::Clone for InternalBitFlags {
#[inline]
fn clone(&self) -> InternalBitFlags {
let _: ::core::clone::AssertParamIsClone<u32>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for InternalBitFlags { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for InternalBitFlags { }
#[automatically_derived]
impl ::core::cmp::PartialEq for InternalBitFlags {
#[inline]
fn eq(&self, other: &InternalBitFlags) -> bool {
self.0 == other.0
}
}
#[automatically_derived]
impl ::core::cmp::Eq for InternalBitFlags {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
}
}
#[automatically_derived]
impl ::core::cmp::PartialOrd for InternalBitFlags {
#[inline]
fn partial_cmp(&self, other: &InternalBitFlags)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self,
other))
}
}
#[automatically_derived]
impl ::core::cmp::Ord for InternalBitFlags {
#[inline]
fn cmp(&self, other: &InternalBitFlags) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for InternalBitFlags {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
impl ::bitflags::__private::PublicFlags for DISPFlags {
type Primitive = u32;
type Internal = InternalBitFlags;
}
impl ::bitflags::__private::core::default::Default for
InternalBitFlags {
#[inline]
fn default() -> Self { InternalBitFlags::empty() }
}
impl ::bitflags::__private::core::fmt::Debug for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
if self.is_empty() {
f.write_fmt(format_args!("{0:#x}",
<u32 as ::bitflags::Bits>::EMPTY))
} else {
::bitflags::__private::core::fmt::Display::fmt(self, f)
}
}
}
impl ::bitflags::__private::core::fmt::Display for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
::bitflags::parser::to_writer(&DISPFlags(*self), f)
}
}
impl ::bitflags::__private::core::str::FromStr for InternalBitFlags {
type Err = ::bitflags::parser::ParseError;
fn from_str(s: &str)
->
::bitflags::__private::core::result::Result<Self,
Self::Err> {
::bitflags::parser::from_str::<DISPFlags>(s).map(|flags|
flags.0)
}
}
impl ::bitflags::__private::core::convert::AsRef<u32> for
InternalBitFlags {
fn as_ref(&self) -> &u32 { &self.0 }
}
impl ::bitflags::__private::core::convert::From<u32> for
InternalBitFlags {
fn from(bits: u32) -> Self { Self::from_bits_retain(bits) }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl InternalBitFlags {
#[inline]
pub const fn empty() -> Self {
Self(<u32 as ::bitflags::Bits>::EMPTY)
}
#[inline]
pub const fn all() -> Self {
let mut truncated = <u32 as ::bitflags::Bits>::EMPTY;
let mut i = 0;
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<DISPFlags as ::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
let _ = i;
Self(truncated)
}
#[inline]
pub const fn bits(&self) -> u32 { self.0 }
#[inline]
pub const fn from_bits(bits: u32)
-> ::bitflags::__private::core::option::Option<Self> {
let truncated = Self::from_bits_truncate(bits).0;
if truncated == bits {
::bitflags::__private::core::option::Option::Some(Self(bits))
} else { ::bitflags::__private::core::option::Option::None }
}
#[inline]
pub const fn from_bits_truncate(bits: u32) -> Self {
Self(bits & Self::all().0)
}
#[inline]
pub const fn from_bits_retain(bits: u32) -> Self { Self(bits) }
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
{
if name == "SPFlagZero" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagZero.bits()));
}
};
;
{
if name == "SPFlagVirtual" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagVirtual.bits()));
}
};
;
{
if name == "SPFlagPureVirtual" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagPureVirtual.bits()));
}
};
;
{
if name == "SPFlagLocalToUnit" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagLocalToUnit.bits()));
}
};
;
{
if name == "SPFlagDefinition" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagDefinition.bits()));
}
};
;
{
if name == "SPFlagOptimized" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagOptimized.bits()));
}
};
;
{
if name == "SPFlagMainSubprogram" {
return ::bitflags::__private::core::option::Option::Some(Self(DISPFlags::SPFlagMainSubprogram.bits()));
}
};
;
let _ = name;
::bitflags::__private::core::option::Option::None
}
#[inline]
pub const fn is_empty(&self) -> bool {
self.0 == <u32 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn is_all(&self) -> bool {
Self::all().0 | self.0 == self.0
}
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0 & other.0 != <u32 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
#[inline]
pub fn insert(&mut self, other: Self) {
*self = Self(self.0).union(other);
}
#[inline]
pub fn remove(&mut self, other: Self) {
*self = Self(self.0).difference(other);
}
#[inline]
pub fn toggle(&mut self, other: Self) {
*self = Self(self.0).symmetric_difference(other);
}
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
if value { self.insert(other); } else { self.remove(other); }
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0 & other.0)
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0 | other.0)
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0 & !other.0)
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0 ^ other.0)
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self::from_bits_truncate(!self.0)
}
}
impl ::bitflags::__private::core::fmt::Binary for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for InternalBitFlags {
type Output = Self;
#[inline]
fn bitor(self, other: InternalBitFlags) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for
InternalBitFlags {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for InternalBitFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for
InternalBitFlags {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for InternalBitFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for
InternalBitFlags {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for InternalBitFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for InternalBitFlags
{
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for InternalBitFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<InternalBitFlags> for
InternalBitFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<InternalBitFlags>
for InternalBitFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl InternalBitFlags {
#[inline]
pub const fn iter(&self) -> ::bitflags::iter::Iter<DISPFlags> {
::bitflags::iter::Iter::__private_const_new(<DISPFlags as
::bitflags::Flags>::FLAGS,
DISPFlags::from_bits_retain(self.bits()),
DISPFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<DISPFlags> {
::bitflags::iter::IterNames::__private_const_new(<DISPFlags as
::bitflags::Flags>::FLAGS,
DISPFlags::from_bits_retain(self.bits()),
DISPFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
InternalBitFlags {
type Item = DISPFlags;
type IntoIter = ::bitflags::iter::Iter<DISPFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
impl InternalBitFlags {
#[inline]
pub fn bits_mut(&mut self) -> &mut u32 { &mut self.0 }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl DISPFlags {
#[inline]
pub const fn empty() -> Self { Self(InternalBitFlags::empty()) }
#[inline]
pub const fn all() -> Self { Self(InternalBitFlags::all()) }
#[inline]
pub const fn bits(&self) -> u32 { self.0.bits() }
#[inline]
pub const fn from_bits(bits: u32)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_bits(bits) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn from_bits_truncate(bits: u32) -> Self {
Self(InternalBitFlags::from_bits_truncate(bits))
}
#[inline]
pub const fn from_bits_retain(bits: u32) -> Self {
Self(InternalBitFlags::from_bits_retain(bits))
}
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_name(name) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn is_empty(&self) -> bool { self.0.is_empty() }
#[inline]
pub const fn is_all(&self) -> bool { self.0.is_all() }
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0.intersects(other.0)
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0.contains(other.0)
}
#[inline]
pub fn insert(&mut self, other: Self) { self.0.insert(other.0) }
#[inline]
pub fn remove(&mut self, other: Self) { self.0.remove(other.0) }
#[inline]
pub fn toggle(&mut self, other: Self) { self.0.toggle(other.0) }
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
self.0.set(other.0, value)
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0.intersection(other.0))
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0.union(other.0))
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0.difference(other.0))
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0.symmetric_difference(other.0))
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self(self.0.complement())
}
}
impl ::bitflags::__private::core::fmt::Binary for DISPFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for DISPFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for DISPFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for DISPFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for DISPFlags {
type Output = Self;
#[inline]
fn bitor(self, other: DISPFlags) -> Self { self.union(other) }
}
impl ::bitflags::__private::core::ops::BitOrAssign for DISPFlags {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for DISPFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for DISPFlags {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for DISPFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for DISPFlags {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for DISPFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for DISPFlags {
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for DISPFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<DISPFlags> for
DISPFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<DISPFlags> for
DISPFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl DISPFlags {
#[inline]
pub const fn iter(&self) -> ::bitflags::iter::Iter<DISPFlags> {
::bitflags::iter::Iter::__private_const_new(<DISPFlags as
::bitflags::Flags>::FLAGS,
DISPFlags::from_bits_retain(self.bits()),
DISPFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<DISPFlags> {
::bitflags::iter::IterNames::__private_const_new(<DISPFlags as
::bitflags::Flags>::FLAGS,
DISPFlags::from_bits_retain(self.bits()),
DISPFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for DISPFlags {
type Item = DISPFlags;
type IntoIter = ::bitflags::iter::Iter<DISPFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
};bitflags! {
814 #[repr(transparent)]
815 #[derive(Clone, Copy, Default)]
816 pub(crate) struct DISPFlags: u32 {
817 const SPFlagZero = 0;
818 const SPFlagVirtual = 1;
819 const SPFlagPureVirtual = 2;
820 const SPFlagLocalToUnit = (1 << 2);
821 const SPFlagDefinition = (1 << 3);
822 const SPFlagOptimized = (1 << 4);
823 const SPFlagMainSubprogram = (1 << 5);
824 }
825 }
826
827 #[derive(#[automatically_derived]
impl ::core::marker::Copy for DebugEmissionKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DebugEmissionKind { }
#[automatically_derived]
impl ::core::clone::Clone for DebugEmissionKind {
#[inline]
fn clone(&self) -> DebugEmissionKind { *self }
}Clone)]
829 #[repr(C)]
830 pub(crate) enum DebugEmissionKind {
831 NoDebug,
832 FullDebug,
833 LineTablesOnly,
834 DebugDirectivesOnly,
835 }
836
837 #[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DebugNameTableKind { }
#[automatically_derived]
impl ::core::clone::Clone for DebugNameTableKind {
#[inline]
fn clone(&self) -> DebugNameTableKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for DebugNameTableKind { }Copy)]
839 #[repr(C)]
840 pub(crate) enum DebugNameTableKind {
841 Default,
842 #[expect(dead_code)]
843 Gnu,
844 None,
845 }
846}
847
848#[repr(transparent)]
pub(crate) struct AllocKindFlags(<AllocKindFlags as
::bitflags::__private::PublicFlags>::Internal);
#[automatically_derived]
impl ::core::default::Default for AllocKindFlags {
#[inline]
fn default() -> AllocKindFlags {
AllocKindFlags(::core::default::Default::default())
}
}
impl AllocKindFlags {
#[allow(deprecated, non_upper_case_globals,)]
pub const Unknown: Self = Self::from_bits_retain(0);
#[allow(deprecated, non_upper_case_globals,)]
pub const Alloc: Self = Self::from_bits_retain(1);
#[allow(deprecated, non_upper_case_globals,)]
pub const Realloc: Self = Self::from_bits_retain(1 << 1);
#[allow(deprecated, non_upper_case_globals,)]
pub const Free: Self = Self::from_bits_retain(1 << 2);
#[allow(deprecated, non_upper_case_globals,)]
pub const Uninitialized: Self = Self::from_bits_retain(1 << 3);
#[allow(deprecated, non_upper_case_globals,)]
pub const Zeroed: Self = Self::from_bits_retain(1 << 4);
#[allow(deprecated, non_upper_case_globals,)]
pub const Aligned: Self = Self::from_bits_retain(1 << 5);
}
impl ::bitflags::Flags for AllocKindFlags {
const FLAGS: &'static [::bitflags::Flag<AllocKindFlags>] =
&[{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Unknown", AllocKindFlags::Unknown)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Alloc", AllocKindFlags::Alloc)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Realloc", AllocKindFlags::Realloc)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Free", AllocKindFlags::Free)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Uninitialized",
AllocKindFlags::Uninitialized)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Zeroed", AllocKindFlags::Zeroed)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("Aligned", AllocKindFlags::Aligned)
}];
type Bits = u64;
fn bits(&self) -> u64 { AllocKindFlags::bits(self) }
fn from_bits_retain(bits: u64) -> AllocKindFlags {
AllocKindFlags::from_bits_retain(bits)
}
}
#[allow(dead_code, deprecated, unused_doc_comments, unused_attributes,
unused_mut, unused_imports, non_upper_case_globals, clippy ::
assign_op_pattern, clippy :: indexing_slicing, clippy :: same_name_method,
clippy :: iter_without_into_iter,)]
const _: () =
{
#[repr(transparent)]
pub(crate) struct InternalBitFlags(u64);
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for InternalBitFlags { }
#[automatically_derived]
impl ::core::clone::Clone for InternalBitFlags {
#[inline]
fn clone(&self) -> InternalBitFlags {
let _: ::core::clone::AssertParamIsClone<u64>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for InternalBitFlags { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for InternalBitFlags { }
#[automatically_derived]
impl ::core::cmp::PartialEq for InternalBitFlags {
#[inline]
fn eq(&self, other: &InternalBitFlags) -> bool {
self.0 == other.0
}
}
#[automatically_derived]
impl ::core::cmp::Eq for InternalBitFlags {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u64>;
}
}
#[automatically_derived]
impl ::core::cmp::PartialOrd for InternalBitFlags {
#[inline]
fn partial_cmp(&self, other: &InternalBitFlags)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self,
other))
}
}
#[automatically_derived]
impl ::core::cmp::Ord for InternalBitFlags {
#[inline]
fn cmp(&self, other: &InternalBitFlags) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for InternalBitFlags {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
impl ::bitflags::__private::PublicFlags for AllocKindFlags {
type Primitive = u64;
type Internal = InternalBitFlags;
}
impl ::bitflags::__private::core::default::Default for
InternalBitFlags {
#[inline]
fn default() -> Self { InternalBitFlags::empty() }
}
impl ::bitflags::__private::core::fmt::Debug for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
if self.is_empty() {
f.write_fmt(format_args!("{0:#x}",
<u64 as ::bitflags::Bits>::EMPTY))
} else {
::bitflags::__private::core::fmt::Display::fmt(self, f)
}
}
}
impl ::bitflags::__private::core::fmt::Display for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
::bitflags::parser::to_writer(&AllocKindFlags(*self), f)
}
}
impl ::bitflags::__private::core::str::FromStr for InternalBitFlags {
type Err = ::bitflags::parser::ParseError;
fn from_str(s: &str)
->
::bitflags::__private::core::result::Result<Self,
Self::Err> {
::bitflags::parser::from_str::<AllocKindFlags>(s).map(|flags|
flags.0)
}
}
impl ::bitflags::__private::core::convert::AsRef<u64> for
InternalBitFlags {
fn as_ref(&self) -> &u64 { &self.0 }
}
impl ::bitflags::__private::core::convert::From<u64> for
InternalBitFlags {
fn from(bits: u64) -> Self { Self::from_bits_retain(bits) }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl InternalBitFlags {
#[inline]
pub const fn empty() -> Self {
Self(<u64 as ::bitflags::Bits>::EMPTY)
}
#[inline]
pub const fn all() -> Self {
let mut truncated = <u64 as ::bitflags::Bits>::EMPTY;
let mut i = 0;
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<AllocKindFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
let _ = i;
Self(truncated)
}
#[inline]
pub const fn bits(&self) -> u64 { self.0 }
#[inline]
pub const fn from_bits(bits: u64)
-> ::bitflags::__private::core::option::Option<Self> {
let truncated = Self::from_bits_truncate(bits).0;
if truncated == bits {
::bitflags::__private::core::option::Option::Some(Self(bits))
} else { ::bitflags::__private::core::option::Option::None }
}
#[inline]
pub const fn from_bits_truncate(bits: u64) -> Self {
Self(bits & Self::all().0)
}
#[inline]
pub const fn from_bits_retain(bits: u64) -> Self { Self(bits) }
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
{
if name == "Unknown" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Unknown.bits()));
}
};
;
{
if name == "Alloc" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Alloc.bits()));
}
};
;
{
if name == "Realloc" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Realloc.bits()));
}
};
;
{
if name == "Free" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Free.bits()));
}
};
;
{
if name == "Uninitialized" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Uninitialized.bits()));
}
};
;
{
if name == "Zeroed" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Zeroed.bits()));
}
};
;
{
if name == "Aligned" {
return ::bitflags::__private::core::option::Option::Some(Self(AllocKindFlags::Aligned.bits()));
}
};
;
let _ = name;
::bitflags::__private::core::option::Option::None
}
#[inline]
pub const fn is_empty(&self) -> bool {
self.0 == <u64 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn is_all(&self) -> bool {
Self::all().0 | self.0 == self.0
}
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0 & other.0 != <u64 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
#[inline]
pub fn insert(&mut self, other: Self) {
*self = Self(self.0).union(other);
}
#[inline]
pub fn remove(&mut self, other: Self) {
*self = Self(self.0).difference(other);
}
#[inline]
pub fn toggle(&mut self, other: Self) {
*self = Self(self.0).symmetric_difference(other);
}
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
if value { self.insert(other); } else { self.remove(other); }
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0 & other.0)
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0 | other.0)
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0 & !other.0)
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0 ^ other.0)
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self::from_bits_truncate(!self.0)
}
}
impl ::bitflags::__private::core::fmt::Binary for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for InternalBitFlags {
type Output = Self;
#[inline]
fn bitor(self, other: InternalBitFlags) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for
InternalBitFlags {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for InternalBitFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for
InternalBitFlags {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for InternalBitFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for
InternalBitFlags {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for InternalBitFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for InternalBitFlags
{
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for InternalBitFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<InternalBitFlags> for
InternalBitFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<InternalBitFlags>
for InternalBitFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl InternalBitFlags {
#[inline]
pub const fn iter(&self)
-> ::bitflags::iter::Iter<AllocKindFlags> {
::bitflags::iter::Iter::__private_const_new(<AllocKindFlags as
::bitflags::Flags>::FLAGS,
AllocKindFlags::from_bits_retain(self.bits()),
AllocKindFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<AllocKindFlags> {
::bitflags::iter::IterNames::__private_const_new(<AllocKindFlags
as ::bitflags::Flags>::FLAGS,
AllocKindFlags::from_bits_retain(self.bits()),
AllocKindFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
InternalBitFlags {
type Item = AllocKindFlags;
type IntoIter = ::bitflags::iter::Iter<AllocKindFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
impl InternalBitFlags {
#[inline]
pub fn bits_mut(&mut self) -> &mut u64 { &mut self.0 }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl AllocKindFlags {
#[inline]
pub const fn empty() -> Self { Self(InternalBitFlags::empty()) }
#[inline]
pub const fn all() -> Self { Self(InternalBitFlags::all()) }
#[inline]
pub const fn bits(&self) -> u64 { self.0.bits() }
#[inline]
pub const fn from_bits(bits: u64)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_bits(bits) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn from_bits_truncate(bits: u64) -> Self {
Self(InternalBitFlags::from_bits_truncate(bits))
}
#[inline]
pub const fn from_bits_retain(bits: u64) -> Self {
Self(InternalBitFlags::from_bits_retain(bits))
}
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_name(name) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn is_empty(&self) -> bool { self.0.is_empty() }
#[inline]
pub const fn is_all(&self) -> bool { self.0.is_all() }
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0.intersects(other.0)
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0.contains(other.0)
}
#[inline]
pub fn insert(&mut self, other: Self) { self.0.insert(other.0) }
#[inline]
pub fn remove(&mut self, other: Self) { self.0.remove(other.0) }
#[inline]
pub fn toggle(&mut self, other: Self) { self.0.toggle(other.0) }
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
self.0.set(other.0, value)
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0.intersection(other.0))
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0.union(other.0))
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0.difference(other.0))
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0.symmetric_difference(other.0))
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self(self.0.complement())
}
}
impl ::bitflags::__private::core::fmt::Binary for AllocKindFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for AllocKindFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for AllocKindFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for AllocKindFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for AllocKindFlags {
type Output = Self;
#[inline]
fn bitor(self, other: AllocKindFlags) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for AllocKindFlags
{
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for AllocKindFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for AllocKindFlags
{
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for AllocKindFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for AllocKindFlags
{
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for AllocKindFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for AllocKindFlags {
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for AllocKindFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<AllocKindFlags> for
AllocKindFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<AllocKindFlags>
for AllocKindFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl AllocKindFlags {
#[inline]
pub const fn iter(&self)
-> ::bitflags::iter::Iter<AllocKindFlags> {
::bitflags::iter::Iter::__private_const_new(<AllocKindFlags as
::bitflags::Flags>::FLAGS,
AllocKindFlags::from_bits_retain(self.bits()),
AllocKindFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<AllocKindFlags> {
::bitflags::iter::IterNames::__private_const_new(<AllocKindFlags
as ::bitflags::Flags>::FLAGS,
AllocKindFlags::from_bits_retain(self.bits()),
AllocKindFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
AllocKindFlags {
type Item = AllocKindFlags;
type IntoIter = ::bitflags::iter::Iter<AllocKindFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
};bitflags! {
850 #[repr(transparent)]
851 #[derive(Default)]
852 pub(crate) struct AllocKindFlags : u64 {
853 const Unknown = 0;
854 const Alloc = 1;
855 const Realloc = 1 << 1;
856 const Free = 1 << 2;
857 const Uninitialized = 1 << 3;
858 const Zeroed = 1 << 4;
859 const Aligned = 1 << 5;
860 }
861}
862
863#[repr(transparent)]
pub struct GEPNoWrapFlags(<GEPNoWrapFlags as
::bitflags::__private::PublicFlags>::Internal);
#[automatically_derived]
impl ::core::default::Default for GEPNoWrapFlags {
#[inline]
fn default() -> GEPNoWrapFlags {
GEPNoWrapFlags(::core::default::Default::default())
}
}
impl GEPNoWrapFlags {
#[allow(deprecated, non_upper_case_globals,)]
pub const InBounds: Self = Self::from_bits_retain(1 << 0);
#[allow(deprecated, non_upper_case_globals,)]
pub const NUSW: Self = Self::from_bits_retain(1 << 1);
#[allow(deprecated, non_upper_case_globals,)]
pub const NUW: Self = Self::from_bits_retain(1 << 2);
}
impl ::bitflags::Flags for GEPNoWrapFlags {
const FLAGS: &'static [::bitflags::Flag<GEPNoWrapFlags>] =
&[{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("InBounds", GEPNoWrapFlags::InBounds)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("NUSW", GEPNoWrapFlags::NUSW)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("NUW", GEPNoWrapFlags::NUW)
}];
type Bits = c_uint;
fn bits(&self) -> c_uint { GEPNoWrapFlags::bits(self) }
fn from_bits_retain(bits: c_uint) -> GEPNoWrapFlags {
GEPNoWrapFlags::from_bits_retain(bits)
}
}
#[allow(dead_code, deprecated, unused_doc_comments, unused_attributes,
unused_mut, unused_imports, non_upper_case_globals, clippy ::
assign_op_pattern, clippy :: indexing_slicing, clippy :: same_name_method,
clippy :: iter_without_into_iter,)]
const _: () =
{
#[repr(transparent)]
pub struct InternalBitFlags(c_uint);
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for InternalBitFlags { }
#[automatically_derived]
impl ::core::clone::Clone for InternalBitFlags {
#[inline]
fn clone(&self) -> InternalBitFlags {
let _: ::core::clone::AssertParamIsClone<c_uint>;
*self
}
}
#[automatically_derived]
impl ::core::marker::Copy for InternalBitFlags { }
#[automatically_derived]
impl ::core::marker::StructuralPartialEq for InternalBitFlags { }
#[automatically_derived]
impl ::core::cmp::PartialEq for InternalBitFlags {
#[inline]
fn eq(&self, other: &InternalBitFlags) -> bool {
self.0 == other.0
}
}
#[automatically_derived]
impl ::core::cmp::Eq for InternalBitFlags {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<c_uint>;
}
}
#[automatically_derived]
impl ::core::cmp::PartialOrd for InternalBitFlags {
#[inline]
fn partial_cmp(&self, other: &InternalBitFlags)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self,
other))
}
}
#[automatically_derived]
impl ::core::cmp::Ord for InternalBitFlags {
#[inline]
fn cmp(&self, other: &InternalBitFlags) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.0, &other.0)
}
}
#[automatically_derived]
impl ::core::hash::Hash for InternalBitFlags {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}
impl ::bitflags::__private::PublicFlags for GEPNoWrapFlags {
type Primitive = c_uint;
type Internal = InternalBitFlags;
}
impl ::bitflags::__private::core::default::Default for
InternalBitFlags {
#[inline]
fn default() -> Self { InternalBitFlags::empty() }
}
impl ::bitflags::__private::core::fmt::Debug for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
if self.is_empty() {
f.write_fmt(format_args!("{0:#x}",
<c_uint as ::bitflags::Bits>::EMPTY))
} else {
::bitflags::__private::core::fmt::Display::fmt(self, f)
}
}
}
impl ::bitflags::__private::core::fmt::Display for InternalBitFlags {
fn fmt(&self,
f: &mut ::bitflags::__private::core::fmt::Formatter<'_>)
-> ::bitflags::__private::core::fmt::Result {
::bitflags::parser::to_writer(&GEPNoWrapFlags(*self), f)
}
}
impl ::bitflags::__private::core::str::FromStr for InternalBitFlags {
type Err = ::bitflags::parser::ParseError;
fn from_str(s: &str)
->
::bitflags::__private::core::result::Result<Self,
Self::Err> {
::bitflags::parser::from_str::<GEPNoWrapFlags>(s).map(|flags|
flags.0)
}
}
impl ::bitflags::__private::core::convert::AsRef<c_uint> for
InternalBitFlags {
fn as_ref(&self) -> &c_uint { &self.0 }
}
impl ::bitflags::__private::core::convert::From<c_uint> for
InternalBitFlags {
fn from(bits: c_uint) -> Self { Self::from_bits_retain(bits) }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl InternalBitFlags {
#[inline]
pub const fn empty() -> Self {
Self(<c_uint as ::bitflags::Bits>::EMPTY)
}
#[inline]
pub const fn all() -> Self {
let mut truncated = <c_uint as ::bitflags::Bits>::EMPTY;
let mut i = 0;
{
{
let flag =
<GEPNoWrapFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<GEPNoWrapFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<GEPNoWrapFlags as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
let _ = i;
Self(truncated)
}
#[inline]
pub const fn bits(&self) -> c_uint { self.0 }
#[inline]
pub const fn from_bits(bits: c_uint)
-> ::bitflags::__private::core::option::Option<Self> {
let truncated = Self::from_bits_truncate(bits).0;
if truncated == bits {
::bitflags::__private::core::option::Option::Some(Self(bits))
} else { ::bitflags::__private::core::option::Option::None }
}
#[inline]
pub const fn from_bits_truncate(bits: c_uint) -> Self {
Self(bits & Self::all().0)
}
#[inline]
pub const fn from_bits_retain(bits: c_uint) -> Self { Self(bits) }
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
{
if name == "InBounds" {
return ::bitflags::__private::core::option::Option::Some(Self(GEPNoWrapFlags::InBounds.bits()));
}
};
;
{
if name == "NUSW" {
return ::bitflags::__private::core::option::Option::Some(Self(GEPNoWrapFlags::NUSW.bits()));
}
};
;
{
if name == "NUW" {
return ::bitflags::__private::core::option::Option::Some(Self(GEPNoWrapFlags::NUW.bits()));
}
};
;
let _ = name;
::bitflags::__private::core::option::Option::None
}
#[inline]
pub const fn is_empty(&self) -> bool {
self.0 == <c_uint as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn is_all(&self) -> bool {
Self::all().0 | self.0 == self.0
}
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0 & other.0 != <c_uint as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
#[inline]
pub fn insert(&mut self, other: Self) {
*self = Self(self.0).union(other);
}
#[inline]
pub fn remove(&mut self, other: Self) {
*self = Self(self.0).difference(other);
}
#[inline]
pub fn toggle(&mut self, other: Self) {
*self = Self(self.0).symmetric_difference(other);
}
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
if value { self.insert(other); } else { self.remove(other); }
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0 & other.0)
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0 | other.0)
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0 & !other.0)
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0 ^ other.0)
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self::from_bits_truncate(!self.0)
}
}
impl ::bitflags::__private::core::fmt::Binary for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for InternalBitFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for InternalBitFlags {
type Output = Self;
#[inline]
fn bitor(self, other: InternalBitFlags) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for
InternalBitFlags {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for InternalBitFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for
InternalBitFlags {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for InternalBitFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for
InternalBitFlags {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for InternalBitFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for InternalBitFlags
{
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for InternalBitFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<InternalBitFlags> for
InternalBitFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<InternalBitFlags>
for InternalBitFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl InternalBitFlags {
#[inline]
pub const fn iter(&self)
-> ::bitflags::iter::Iter<GEPNoWrapFlags> {
::bitflags::iter::Iter::__private_const_new(<GEPNoWrapFlags as
::bitflags::Flags>::FLAGS,
GEPNoWrapFlags::from_bits_retain(self.bits()),
GEPNoWrapFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<GEPNoWrapFlags> {
::bitflags::iter::IterNames::__private_const_new(<GEPNoWrapFlags
as ::bitflags::Flags>::FLAGS,
GEPNoWrapFlags::from_bits_retain(self.bits()),
GEPNoWrapFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
InternalBitFlags {
type Item = GEPNoWrapFlags;
type IntoIter = ::bitflags::iter::Iter<GEPNoWrapFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
impl InternalBitFlags {
#[inline]
pub fn bits_mut(&mut self) -> &mut c_uint { &mut self.0 }
}
#[allow(dead_code, deprecated, unused_attributes)]
impl GEPNoWrapFlags {
#[inline]
pub const fn empty() -> Self { Self(InternalBitFlags::empty()) }
#[inline]
pub const fn all() -> Self { Self(InternalBitFlags::all()) }
#[inline]
pub const fn bits(&self) -> c_uint { self.0.bits() }
#[inline]
pub const fn from_bits(bits: c_uint)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_bits(bits) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn from_bits_truncate(bits: c_uint) -> Self {
Self(InternalBitFlags::from_bits_truncate(bits))
}
#[inline]
pub const fn from_bits_retain(bits: c_uint) -> Self {
Self(InternalBitFlags::from_bits_retain(bits))
}
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
match InternalBitFlags::from_name(name) {
::bitflags::__private::core::option::Option::Some(bits) =>
::bitflags::__private::core::option::Option::Some(Self(bits)),
::bitflags::__private::core::option::Option::None =>
::bitflags::__private::core::option::Option::None,
}
}
#[inline]
pub const fn is_empty(&self) -> bool { self.0.is_empty() }
#[inline]
pub const fn is_all(&self) -> bool { self.0.is_all() }
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0.intersects(other.0)
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0.contains(other.0)
}
#[inline]
pub fn insert(&mut self, other: Self) { self.0.insert(other.0) }
#[inline]
pub fn remove(&mut self, other: Self) { self.0.remove(other.0) }
#[inline]
pub fn toggle(&mut self, other: Self) { self.0.toggle(other.0) }
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
self.0.set(other.0, value)
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0.intersection(other.0))
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0.union(other.0))
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0.difference(other.0))
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0.symmetric_difference(other.0))
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self(self.0.complement())
}
}
impl ::bitflags::__private::core::fmt::Binary for GEPNoWrapFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for GEPNoWrapFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for GEPNoWrapFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for GEPNoWrapFlags {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for GEPNoWrapFlags {
type Output = Self;
#[inline]
fn bitor(self, other: GEPNoWrapFlags) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for GEPNoWrapFlags
{
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for GEPNoWrapFlags {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for GEPNoWrapFlags
{
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for GEPNoWrapFlags {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for GEPNoWrapFlags
{
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for GEPNoWrapFlags {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for GEPNoWrapFlags {
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for GEPNoWrapFlags {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<GEPNoWrapFlags> for
GEPNoWrapFlags {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<GEPNoWrapFlags>
for GEPNoWrapFlags {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl GEPNoWrapFlags {
#[inline]
pub const fn iter(&self)
-> ::bitflags::iter::Iter<GEPNoWrapFlags> {
::bitflags::iter::Iter::__private_const_new(<GEPNoWrapFlags as
::bitflags::Flags>::FLAGS,
GEPNoWrapFlags::from_bits_retain(self.bits()),
GEPNoWrapFlags::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<GEPNoWrapFlags> {
::bitflags::iter::IterNames::__private_const_new(<GEPNoWrapFlags
as ::bitflags::Flags>::FLAGS,
GEPNoWrapFlags::from_bits_retain(self.bits()),
GEPNoWrapFlags::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
GEPNoWrapFlags {
type Item = GEPNoWrapFlags;
type IntoIter = ::bitflags::iter::Iter<GEPNoWrapFlags>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
};bitflags! {
865 #[repr(transparent)]
866 #[derive(Default)]
867 pub struct GEPNoWrapFlags : c_uint {
868 const InBounds = 1 << 0;
869 const NUSW = 1 << 1;
870 const NUW = 1 << 2;
871 }
872}
873
874unsafe extern "C" {
875 pub(crate) type Buffer;
876}
877
878pub(crate) type SelfProfileBeforePassCallback =
879 unsafe extern "C" fn(*mut c_void, *const c_char, *const c_char);
880pub(crate) type SelfProfileAfterPassCallback = unsafe extern "C" fn(*mut c_void);
881
882pub(crate) type GetSymbolsCallback =
883 unsafe extern "C" fn(*mut c_void, *const c_char) -> *mut c_void;
884pub(crate) type GetSymbolsErrorCallback = unsafe extern "C" fn(*const c_char) -> *mut c_void;
885
886unsafe extern "C" {
887 pub(crate) fn LLVMContextCreate() -> &'static mut Context;
889 pub(crate) fn LLVMContextDispose(C: &'static mut Context);
890 pub(crate) fn LLVMContextSetDiscardValueNames(C: &Context, Discard: Bool);
891 pub(crate) fn LLVMGetMDKindIDInContext(
892 C: &Context,
893 Name: *const c_char,
894 SLen: c_uint,
895 ) -> MetadataKindId;
896
897 pub(crate) fn LLVMGetVersion(major: &mut c_uint, minor: &mut c_uint, patch: &mut c_uint);
898
899 pub(crate) fn LLVMDisposeTargetMachine(T: ptr::NonNull<TargetMachine>);
900
901 pub(crate) fn LLVMModuleCreateWithNameInContext(
903 ModuleID: *const c_char,
904 C: &Context,
905 ) -> &Module;
906 pub(crate) safe fn LLVMCloneModule(M: &Module) -> &Module;
907
908 pub(crate) fn LLVMGetDataLayoutStr(M: &Module) -> *const c_char;
910 pub(crate) fn LLVMSetDataLayout(M: &Module, Triple: *const c_char);
911
912 pub(crate) fn LLVMGetInlineAsm<'ll>(
914 Ty: &'ll Type,
915 AsmString: *const c_uchar, AsmStringSize: size_t,
917 Constraints: *const c_uchar, ConstraintsSize: size_t,
919 HasSideEffects: llvm::Bool,
920 IsAlignStack: llvm::Bool,
921 Dialect: AsmDialect,
922 CanThrow: llvm::Bool,
923 ) -> &'ll Value;
924
925 pub(crate) safe fn LLVMGetTypeKind(Ty: &Type) -> RawEnum<TypeKind>;
926
927 pub(crate) fn LLVMInt1TypeInContext(C: &Context) -> &Type;
929 pub(crate) fn LLVMInt8TypeInContext(C: &Context) -> &Type;
930 pub(crate) fn LLVMInt16TypeInContext(C: &Context) -> &Type;
931 pub(crate) fn LLVMInt32TypeInContext(C: &Context) -> &Type;
932 pub(crate) fn LLVMInt64TypeInContext(C: &Context) -> &Type;
933 pub(crate) safe fn LLVMIntTypeInContext(C: &Context, NumBits: c_uint) -> &Type;
934
935 pub(crate) fn LLVMGetIntTypeWidth(IntegerTy: &Type) -> c_uint;
936
937 pub(crate) fn LLVMHalfTypeInContext(C: &Context) -> &Type;
939 pub(crate) fn LLVMFloatTypeInContext(C: &Context) -> &Type;
940 pub(crate) fn LLVMDoubleTypeInContext(C: &Context) -> &Type;
941 pub(crate) fn LLVMFP128TypeInContext(C: &Context) -> &Type;
942
943 pub(crate) fn LLVMBFloatTypeInContext(C: &Context) -> &Type;
945
946 pub(crate) fn LLVMFunctionType<'a>(
948 ReturnType: &'a Type,
949 ParamTypes: *const &'a Type,
950 ParamCount: c_uint,
951 IsVarArg: Bool,
952 ) -> &'a Type;
953 pub(crate) fn LLVMCountParamTypes(FunctionTy: &Type) -> c_uint;
954 pub(crate) fn LLVMGetParamTypes<'a>(FunctionTy: &'a Type, Dest: *mut &'a Type);
955 pub(crate) fn LLVMGetReturnType(FunctionTy: &Type) -> &Type;
956 pub(crate) fn LLVMIsFunctionVarArg(FunctionTy: &Type) -> Bool;
957
958 pub(crate) fn LLVMStructTypeInContext<'a>(
960 C: &'a Context,
961 ElementTypes: *const &'a Type,
962 ElementCount: c_uint,
963 Packed: Bool,
964 ) -> &'a Type;
965
966 pub(crate) safe fn LLVMPointerTypeInContext(C: &Context, AddressSpace: c_uint) -> &Type;
968 pub(crate) fn LLVMVectorType(ElementType: &Type, ElementCount: c_uint) -> &Type;
969 pub(crate) fn LLVMScalableVectorType(ElementType: &Type, ElementCount: c_uint) -> &Type;
970
971 pub(crate) fn LLVMGetElementType(Ty: &Type) -> &Type;
972 pub(crate) fn LLVMGetVectorSize(VectorTy: &Type) -> c_uint;
973
974 pub(crate) fn LLVMVoidTypeInContext(C: &Context) -> &Type;
976
977 pub(crate) fn LLVMTypeOf(Val: &Value) -> &Type;
979 pub(crate) fn LLVMGetValueName2(Val: &Value, Length: *mut size_t) -> *const c_char;
980 pub(crate) fn LLVMSetValueName2(Val: &Value, Name: *const c_char, NameLen: size_t);
981 pub(crate) fn LLVMReplaceAllUsesWith<'a>(OldVal: &'a Value, NewVal: &'a Value);
982 pub(crate) safe fn LLVMGetMetadata<'a>(
983 Val: &'a Value,
984 KindID: MetadataKindId,
985 ) -> Option<&'a Value>;
986 pub(crate) safe fn LLVMSetMetadata<'a>(Val: &'a Value, KindID: MetadataKindId, Node: &'a Value);
987 pub(crate) fn LLVMGlobalSetMetadata<'a>(
988 Val: &'a Value,
989 KindID: MetadataKindId,
990 Metadata: &'a Metadata,
991 );
992 pub(crate) safe fn LLVMValueAsMetadata(Node: &Value) -> &Metadata;
993
994 pub(crate) fn LLVMConstNull(Ty: &Type) -> &Value;
996 pub(crate) fn LLVMGetUndef(Ty: &Type) -> &Value;
997 pub(crate) fn LLVMGetPoison(Ty: &Type) -> &Value;
998
999 pub(crate) fn LLVMMDStringInContext2(
1001 C: &Context,
1002 Str: *const c_char,
1003 SLen: size_t,
1004 ) -> &Metadata;
1005 pub(crate) fn LLVMMDNodeInContext2<'a>(
1006 C: &'a Context,
1007 Vals: *const &'a Metadata,
1008 Count: size_t,
1009 ) -> &'a Metadata;
1010 pub(crate) fn LLVMAddNamedMetadataOperand<'a>(
1011 M: &'a Module,
1012 Name: *const c_char,
1013 Val: &'a Value,
1014 );
1015 pub(crate) fn LLVMReplaceMDNodeOperandWith(Val: &Value, index: u32, replacement: &Metadata);
1016
1017 pub(crate) fn LLVMConstInt(IntTy: &Type, N: c_ulonglong, SignExtend: Bool) -> &Value;
1019 pub(crate) fn LLVMConstIntOfArbitraryPrecision(
1020 IntTy: &Type,
1021 Wn: c_uint,
1022 Ws: *const u64,
1023 ) -> &Value;
1024 pub(crate) fn LLVMConstReal(RealTy: &Type, N: f64) -> &Value;
1025
1026 pub(crate) fn LLVMConstArray2<'a>(
1028 ElementTy: &'a Type,
1029 ConstantVals: *const &'a Value,
1030 Length: u64,
1031 ) -> &'a Value;
1032 pub(crate) fn LLVMArrayType2(ElementType: &Type, ElementCount: u64) -> &Type;
1033 pub(crate) fn LLVMConstStringInContext2(
1034 C: &Context,
1035 Str: *const c_char,
1036 Length: size_t,
1037 DontNullTerminate: Bool,
1038 ) -> &Value;
1039 pub(crate) fn LLVMConstStructInContext<'a>(
1040 C: &'a Context,
1041 ConstantVals: *const &'a Value,
1042 Count: c_uint,
1043 Packed: Bool,
1044 ) -> &'a Value;
1045 pub(crate) fn LLVMConstNamedStruct<'a>(
1046 StructTy: &'a Type,
1047 ConstantVals: *const &'a Value,
1048 Count: c_uint,
1049 ) -> &'a Value;
1050 pub(crate) fn LLVMConstVector(ScalarConstantVals: *const &Value, Size: c_uint) -> &Value;
1051
1052 pub(crate) fn LLVMConstInBoundsGEP2<'a>(
1054 ty: &'a Type,
1055 ConstantVal: &'a Value,
1056 ConstantIndices: *const &'a Value,
1057 NumIndices: c_uint,
1058 ) -> &'a Value;
1059 pub(crate) fn LLVMConstPtrToInt<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1060 pub(crate) fn LLVMConstIntToPtr<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1061 pub(crate) fn LLVMConstBitCast<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1062 pub(crate) fn LLVMConstPointerCast<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1063 pub(crate) fn LLVMGetAggregateElement(ConstantVal: &Value, Idx: c_uint) -> Option<&Value>;
1064 pub(crate) fn LLVMGetConstOpcode(ConstantVal: &Value) -> Opcode;
1065 pub(crate) fn LLVMIsAConstantExpr(Val: &Value) -> Option<&Value>;
1066
1067 pub(crate) fn LLVMIsDeclaration(Global: &Value) -> Bool;
1069 pub(crate) fn LLVMGetLinkage(Global: &Value) -> RawEnum<Linkage>;
1070 pub(crate) fn LLVMSetLinkage(Global: &Value, RustLinkage: Linkage);
1071 pub(crate) fn LLVMSetSection(Global: &Value, Section: *const c_char);
1072 pub(crate) fn LLVMGetVisibility(Global: &Value) -> RawEnum<Visibility>;
1073 pub(crate) fn LLVMSetVisibility(Global: &Value, Viz: Visibility);
1074 pub(crate) fn LLVMGetAlignment(Global: &Value) -> c_uint;
1075 pub(crate) fn LLVMSetAlignment(Global: &Value, Bytes: c_uint);
1076 pub(crate) fn LLVMSetDLLStorageClass(V: &Value, C: DLLStorageClass);
1077 pub(crate) fn LLVMGlobalGetValueType(Global: &Value) -> &Type;
1078
1079 pub(crate) safe fn LLVMIsAGlobalVariable(GlobalVar: &Value) -> Option<&Value>;
1081 pub(crate) fn LLVMAddGlobal<'a>(M: &'a Module, Ty: &'a Type, Name: *const c_char) -> &'a Value;
1082 pub(crate) fn LLVMGetNamedGlobal(M: &Module, Name: *const c_char) -> Option<&Value>;
1083 pub(crate) fn LLVMGetFirstGlobal(M: &Module) -> Option<&Value>;
1084 pub(crate) fn LLVMGetNextGlobal(GlobalVar: &Value) -> Option<&Value>;
1085 pub(crate) fn LLVMDeleteGlobal(GlobalVar: &Value);
1086 pub(crate) safe fn LLVMGetInitializer(GlobalVar: &Value) -> Option<&Value>;
1087 pub(crate) fn LLVMSetInitializer<'a>(GlobalVar: &'a Value, ConstantVal: &'a Value);
1088 pub(crate) safe fn LLVMIsThreadLocal(GlobalVar: &Value) -> Bool;
1089 pub(crate) fn LLVMSetThreadLocalMode(GlobalVar: &Value, Mode: ThreadLocalMode);
1090 pub(crate) safe fn LLVMIsGlobalConstant(GlobalVar: &Value) -> Bool;
1091 pub(crate) safe fn LLVMSetGlobalConstant(GlobalVar: &Value, IsConstant: Bool);
1092 pub(crate) safe fn LLVMSetTailCall(CallInst: &Value, IsTailCall: Bool);
1093 pub(crate) safe fn LLVMSetTailCallKind(CallInst: &Value, kind: TailCallKind);
1094 pub(crate) safe fn LLVMSetExternallyInitialized(GlobalVar: &Value, IsExtInit: Bool);
1095
1096 pub(crate) fn LLVMAddAlias2<'ll>(
1098 M: &'ll Module,
1099 ValueTy: &Type,
1100 AddressSpace: c_uint,
1101 Aliasee: &Value,
1102 Name: *const c_char,
1103 ) -> &'ll Value;
1104 pub(crate) fn LLVMGetFirstGlobalAlias(M: &Module) -> Option<&Value>;
1105 pub(crate) fn LLVMGetNextGlobalAlias(GlobalAlias: &Value) -> Option<&Value>;
1106
1107 pub(crate) fn LLVMCreateStringAttribute(
1109 C: &Context,
1110 Name: *const c_char,
1111 NameLen: c_uint,
1112 Value: *const c_char,
1113 ValueLen: c_uint,
1114 ) -> &Attribute;
1115
1116 pub(crate) fn LLVMSetFunctionCallConv(Fn: &Value, CC: c_uint);
1118 pub(crate) fn LLVMAddFunction<'a>(
1119 Mod: &'a Module,
1120 Name: *const c_char,
1121 FunctionTy: &'a Type,
1122 ) -> &'a Value;
1123 pub(crate) fn LLVMDeleteFunction(Fn: &Value);
1124
1125 pub(crate) fn LLVMLookupIntrinsicID(Name: *const c_char, NameLen: size_t) -> c_uint;
1127 pub(crate) fn LLVMIntrinsicIsOverloaded(ID: NonZero<c_uint>) -> Bool;
1128 pub(crate) fn LLVMGetIntrinsicDeclaration<'a>(
1129 Mod: &'a Module,
1130 ID: NonZero<c_uint>,
1131 ParamTypes: *const &'a Type,
1132 ParamCount: size_t,
1133 ) -> &'a Value;
1134 pub(crate) fn LLVMRustUpgradeIntrinsicFunction<'a>(
1135 Fn: &'a Value,
1136 NewFn: &mut Option<&'a Value>,
1137 ) -> bool;
1138 pub(crate) fn LLVMRustIsTargetIntrinsic(ID: NonZero<c_uint>) -> bool;
1139
1140 pub(crate) fn LLVMIsAArgument(Val: &Value) -> Option<&Value>;
1142 pub(crate) safe fn LLVMCountParams(Fn: &Value) -> c_uint;
1143 pub(crate) fn LLVMGetParam(Fn: &Value, Index: c_uint) -> &Value;
1144
1145 pub(crate) fn LLVMGetBasicBlockParent(BB: &BasicBlock) -> &Value;
1147 pub(crate) fn LLVMAppendBasicBlockInContext<'a>(
1148 C: &'a Context,
1149 Fn: &'a Value,
1150 Name: *const c_char,
1151 ) -> &'a BasicBlock;
1152
1153 pub(crate) fn LLVMIsAInstruction(Val: &Value) -> Option<&Value>;
1155 pub(crate) fn LLVMGetFirstBasicBlock(Fn: &Value) -> &BasicBlock;
1156 pub(crate) fn LLVMGetOperand(Val: &Value, Index: c_uint) -> Option<&Value>;
1157
1158 pub(crate) fn LLVMSetInstructionCallConv(Instr: &Value, CC: c_uint);
1160
1161 pub(crate) fn LLVMSetVolatile(MemoryAccessInst: &Value, volatile: Bool);
1163 pub(crate) fn LLVMSetOrdering(MemoryAccessInst: &Value, Ordering: AtomicOrdering);
1164
1165 pub(crate) fn LLVMAddIncoming<'a>(
1167 PhiNode: &'a Value,
1168 IncomingValues: *const &'a Value,
1169 IncomingBlocks: *const &'a BasicBlock,
1170 Count: c_uint,
1171 );
1172
1173 pub(crate) fn LLVMCreateBuilderInContext(C: &Context) -> &mut Builder<'_>;
1175 pub(crate) fn LLVMPositionBuilderAtEnd<'a>(Builder: &Builder<'a>, Block: &'a BasicBlock);
1176 pub(crate) fn LLVMGetInsertBlock<'a>(Builder: &Builder<'a>) -> &'a BasicBlock;
1177 pub(crate) fn LLVMDisposeBuilder<'a>(Builder: &'a mut Builder<'a>);
1178
1179 pub(crate) fn LLVMSetCurrentDebugLocation2<'a>(Builder: &Builder<'a>, Loc: *const Metadata);
1181 pub(crate) fn LLVMGetCurrentDebugLocation2<'a>(Builder: &Builder<'a>) -> Option<&'a Metadata>;
1182
1183 pub(crate) safe fn LLVMBuildRetVoid<'a>(B: &Builder<'a>) -> &'a Value;
1185 pub(crate) fn LLVMBuildRet<'a>(B: &Builder<'a>, V: &'a Value) -> &'a Value;
1186 pub(crate) fn LLVMBuildBr<'a>(B: &Builder<'a>, Dest: &'a BasicBlock) -> &'a Value;
1187 pub(crate) fn LLVMBuildCondBr<'a>(
1188 B: &Builder<'a>,
1189 If: &'a Value,
1190 Then: &'a BasicBlock,
1191 Else: &'a BasicBlock,
1192 ) -> &'a Value;
1193 pub(crate) fn LLVMBuildSwitch<'a>(
1194 B: &Builder<'a>,
1195 V: &'a Value,
1196 Else: &'a BasicBlock,
1197 NumCases: c_uint,
1198 ) -> &'a Value;
1199 pub(crate) fn LLVMBuildLandingPad<'a>(
1200 B: &Builder<'a>,
1201 Ty: &'a Type,
1202 PersFn: Option<&'a Value>,
1203 NumClauses: c_uint,
1204 Name: *const c_char,
1205 ) -> &'a Value;
1206 pub(crate) fn LLVMBuildResume<'a>(B: &Builder<'a>, Exn: &'a Value) -> &'a Value;
1207 pub(crate) fn LLVMBuildUnreachable<'a>(B: &Builder<'a>) -> &'a Value;
1208
1209 pub(crate) fn LLVMBuildCleanupPad<'a>(
1210 B: &Builder<'a>,
1211 ParentPad: Option<&'a Value>,
1212 Args: *const &'a Value,
1213 NumArgs: c_uint,
1214 Name: *const c_char,
1215 ) -> Option<&'a Value>;
1216 pub(crate) fn LLVMBuildCleanupRet<'a>(
1217 B: &Builder<'a>,
1218 CleanupPad: &'a Value,
1219 BB: Option<&'a BasicBlock>,
1220 ) -> Option<&'a Value>;
1221 pub(crate) fn LLVMBuildCatchPad<'a>(
1222 B: &Builder<'a>,
1223 ParentPad: &'a Value,
1224 Args: *const &'a Value,
1225 NumArgs: c_uint,
1226 Name: *const c_char,
1227 ) -> Option<&'a Value>;
1228 pub(crate) fn LLVMBuildCatchRet<'a>(
1229 B: &Builder<'a>,
1230 CatchPad: &'a Value,
1231 BB: &'a BasicBlock,
1232 ) -> Option<&'a Value>;
1233 pub(crate) fn LLVMBuildCatchSwitch<'a>(
1234 Builder: &Builder<'a>,
1235 ParentPad: Option<&'a Value>,
1236 UnwindBB: Option<&'a BasicBlock>,
1237 NumHandlers: c_uint,
1238 Name: *const c_char,
1239 ) -> Option<&'a Value>;
1240 pub(crate) fn LLVMAddHandler<'a>(CatchSwitch: &'a Value, Dest: &'a BasicBlock);
1241 pub(crate) fn LLVMSetPersonalityFn<'a>(Func: &'a Value, Pers: &'a Value);
1242
1243 pub(crate) fn LLVMAddCase<'a>(Switch: &'a Value, OnVal: &'a Value, Dest: &'a BasicBlock);
1245
1246 pub(crate) fn LLVMAddClause<'a>(LandingPad: &'a Value, ClauseVal: &'a Value);
1248
1249 pub(crate) fn LLVMSetCleanup(LandingPad: &Value, Val: Bool);
1251
1252 pub(crate) fn LLVMBuildAdd<'a>(
1254 B: &Builder<'a>,
1255 LHS: &'a Value,
1256 RHS: &'a Value,
1257 Name: *const c_char,
1258 ) -> &'a Value;
1259 pub(crate) fn LLVMBuildFAdd<'a>(
1260 B: &Builder<'a>,
1261 LHS: &'a Value,
1262 RHS: &'a Value,
1263 Name: *const c_char,
1264 ) -> &'a Value;
1265 pub(crate) fn LLVMBuildSub<'a>(
1266 B: &Builder<'a>,
1267 LHS: &'a Value,
1268 RHS: &'a Value,
1269 Name: *const c_char,
1270 ) -> &'a Value;
1271 pub(crate) fn LLVMBuildFSub<'a>(
1272 B: &Builder<'a>,
1273 LHS: &'a Value,
1274 RHS: &'a Value,
1275 Name: *const c_char,
1276 ) -> &'a Value;
1277 pub(crate) fn LLVMBuildMul<'a>(
1278 B: &Builder<'a>,
1279 LHS: &'a Value,
1280 RHS: &'a Value,
1281 Name: *const c_char,
1282 ) -> &'a Value;
1283 pub(crate) fn LLVMBuildFMul<'a>(
1284 B: &Builder<'a>,
1285 LHS: &'a Value,
1286 RHS: &'a Value,
1287 Name: *const c_char,
1288 ) -> &'a Value;
1289 pub(crate) fn LLVMBuildUDiv<'a>(
1290 B: &Builder<'a>,
1291 LHS: &'a Value,
1292 RHS: &'a Value,
1293 Name: *const c_char,
1294 ) -> &'a Value;
1295 pub(crate) fn LLVMBuildExactUDiv<'a>(
1296 B: &Builder<'a>,
1297 LHS: &'a Value,
1298 RHS: &'a Value,
1299 Name: *const c_char,
1300 ) -> &'a Value;
1301 pub(crate) fn LLVMBuildSDiv<'a>(
1302 B: &Builder<'a>,
1303 LHS: &'a Value,
1304 RHS: &'a Value,
1305 Name: *const c_char,
1306 ) -> &'a Value;
1307 pub(crate) fn LLVMBuildExactSDiv<'a>(
1308 B: &Builder<'a>,
1309 LHS: &'a Value,
1310 RHS: &'a Value,
1311 Name: *const c_char,
1312 ) -> &'a Value;
1313 pub(crate) fn LLVMBuildFDiv<'a>(
1314 B: &Builder<'a>,
1315 LHS: &'a Value,
1316 RHS: &'a Value,
1317 Name: *const c_char,
1318 ) -> &'a Value;
1319 pub(crate) fn LLVMBuildURem<'a>(
1320 B: &Builder<'a>,
1321 LHS: &'a Value,
1322 RHS: &'a Value,
1323 Name: *const c_char,
1324 ) -> &'a Value;
1325 pub(crate) fn LLVMBuildSRem<'a>(
1326 B: &Builder<'a>,
1327 LHS: &'a Value,
1328 RHS: &'a Value,
1329 Name: *const c_char,
1330 ) -> &'a Value;
1331 pub(crate) fn LLVMBuildFRem<'a>(
1332 B: &Builder<'a>,
1333 LHS: &'a Value,
1334 RHS: &'a Value,
1335 Name: *const c_char,
1336 ) -> &'a Value;
1337 pub(crate) fn LLVMBuildShl<'a>(
1338 B: &Builder<'a>,
1339 LHS: &'a Value,
1340 RHS: &'a Value,
1341 Name: *const c_char,
1342 ) -> &'a Value;
1343 pub(crate) fn LLVMBuildLShr<'a>(
1344 B: &Builder<'a>,
1345 LHS: &'a Value,
1346 RHS: &'a Value,
1347 Name: *const c_char,
1348 ) -> &'a Value;
1349 pub(crate) fn LLVMBuildAShr<'a>(
1350 B: &Builder<'a>,
1351 LHS: &'a Value,
1352 RHS: &'a Value,
1353 Name: *const c_char,
1354 ) -> &'a Value;
1355 pub(crate) fn LLVMBuildNSWAdd<'a>(
1356 B: &Builder<'a>,
1357 LHS: &'a Value,
1358 RHS: &'a Value,
1359 Name: *const c_char,
1360 ) -> &'a Value;
1361 pub(crate) fn LLVMBuildNUWAdd<'a>(
1362 B: &Builder<'a>,
1363 LHS: &'a Value,
1364 RHS: &'a Value,
1365 Name: *const c_char,
1366 ) -> &'a Value;
1367 pub(crate) fn LLVMBuildNSWSub<'a>(
1368 B: &Builder<'a>,
1369 LHS: &'a Value,
1370 RHS: &'a Value,
1371 Name: *const c_char,
1372 ) -> &'a Value;
1373 pub(crate) fn LLVMBuildNUWSub<'a>(
1374 B: &Builder<'a>,
1375 LHS: &'a Value,
1376 RHS: &'a Value,
1377 Name: *const c_char,
1378 ) -> &'a Value;
1379 pub(crate) fn LLVMBuildNSWMul<'a>(
1380 B: &Builder<'a>,
1381 LHS: &'a Value,
1382 RHS: &'a Value,
1383 Name: *const c_char,
1384 ) -> &'a Value;
1385 pub(crate) fn LLVMBuildNUWMul<'a>(
1386 B: &Builder<'a>,
1387 LHS: &'a Value,
1388 RHS: &'a Value,
1389 Name: *const c_char,
1390 ) -> &'a Value;
1391 pub(crate) fn LLVMBuildAnd<'a>(
1392 B: &Builder<'a>,
1393 LHS: &'a Value,
1394 RHS: &'a Value,
1395 Name: *const c_char,
1396 ) -> &'a Value;
1397 pub(crate) fn LLVMBuildOr<'a>(
1398 B: &Builder<'a>,
1399 LHS: &'a Value,
1400 RHS: &'a Value,
1401 Name: *const c_char,
1402 ) -> &'a Value;
1403 pub(crate) fn LLVMBuildXor<'a>(
1404 B: &Builder<'a>,
1405 LHS: &'a Value,
1406 RHS: &'a Value,
1407 Name: *const c_char,
1408 ) -> &'a Value;
1409 pub(crate) fn LLVMBuildNeg<'a>(B: &Builder<'a>, V: &'a Value, Name: *const c_char)
1410 -> &'a Value;
1411 pub(crate) fn LLVMBuildFNeg<'a>(
1412 B: &Builder<'a>,
1413 V: &'a Value,
1414 Name: *const c_char,
1415 ) -> &'a Value;
1416 pub(crate) fn LLVMBuildNot<'a>(B: &Builder<'a>, V: &'a Value, Name: *const c_char)
1417 -> &'a Value;
1418
1419 pub(crate) fn LLVMSetIsDisjoint(Instr: &Value, IsDisjoint: Bool);
1421 pub(crate) fn LLVMSetNUW(ArithInst: &Value, HasNUW: Bool);
1422 pub(crate) fn LLVMSetNSW(ArithInst: &Value, HasNSW: Bool);
1423
1424 pub(crate) fn LLVMBuildAlloca<'a>(
1426 B: &Builder<'a>,
1427 Ty: &'a Type,
1428 Name: *const c_char,
1429 ) -> &'a Value;
1430 pub(crate) fn LLVMBuildLoad2<'a>(
1431 B: &Builder<'a>,
1432 Ty: &'a Type,
1433 PointerVal: &'a Value,
1434 Name: *const c_char,
1435 ) -> &'a Value;
1436
1437 pub(crate) fn LLVMBuildStore<'a>(B: &Builder<'a>, Val: &'a Value, Ptr: &'a Value) -> &'a Value;
1438
1439 pub(crate) fn LLVMBuildGEPWithNoWrapFlags<'a>(
1440 B: &Builder<'a>,
1441 Ty: &'a Type,
1442 Pointer: &'a Value,
1443 Indices: *const &'a Value,
1444 NumIndices: c_uint,
1445 Name: *const c_char,
1446 Flags: GEPNoWrapFlags,
1447 ) -> &'a Value;
1448
1449 pub(crate) fn LLVMBuildTrunc<'a>(
1451 B: &Builder<'a>,
1452 Val: &'a Value,
1453 DestTy: &'a Type,
1454 Name: *const c_char,
1455 ) -> &'a Value;
1456 pub(crate) fn LLVMBuildZExt<'a>(
1457 B: &Builder<'a>,
1458 Val: &'a Value,
1459 DestTy: &'a Type,
1460 Name: *const c_char,
1461 ) -> &'a Value;
1462 pub(crate) fn LLVMBuildSExt<'a>(
1463 B: &Builder<'a>,
1464 Val: &'a Value,
1465 DestTy: &'a Type,
1466 Name: *const c_char,
1467 ) -> &'a Value;
1468 pub(crate) fn LLVMBuildFPToUI<'a>(
1469 B: &Builder<'a>,
1470 Val: &'a Value,
1471 DestTy: &'a Type,
1472 Name: *const c_char,
1473 ) -> &'a Value;
1474 pub(crate) fn LLVMBuildFPToSI<'a>(
1475 B: &Builder<'a>,
1476 Val: &'a Value,
1477 DestTy: &'a Type,
1478 Name: *const c_char,
1479 ) -> &'a Value;
1480 pub(crate) fn LLVMBuildUIToFP<'a>(
1481 B: &Builder<'a>,
1482 Val: &'a Value,
1483 DestTy: &'a Type,
1484 Name: *const c_char,
1485 ) -> &'a Value;
1486 pub(crate) fn LLVMBuildSIToFP<'a>(
1487 B: &Builder<'a>,
1488 Val: &'a Value,
1489 DestTy: &'a Type,
1490 Name: *const c_char,
1491 ) -> &'a Value;
1492 pub(crate) fn LLVMBuildFPTrunc<'a>(
1493 B: &Builder<'a>,
1494 Val: &'a Value,
1495 DestTy: &'a Type,
1496 Name: *const c_char,
1497 ) -> &'a Value;
1498 pub(crate) fn LLVMBuildFPExt<'a>(
1499 B: &Builder<'a>,
1500 Val: &'a Value,
1501 DestTy: &'a Type,
1502 Name: *const c_char,
1503 ) -> &'a Value;
1504 pub(crate) fn LLVMBuildPtrToInt<'a>(
1505 B: &Builder<'a>,
1506 Val: &'a Value,
1507 DestTy: &'a Type,
1508 Name: *const c_char,
1509 ) -> &'a Value;
1510 pub(crate) fn LLVMBuildIntToPtr<'a>(
1511 B: &Builder<'a>,
1512 Val: &'a Value,
1513 DestTy: &'a Type,
1514 Name: *const c_char,
1515 ) -> &'a Value;
1516 pub(crate) fn LLVMBuildBitCast<'a>(
1517 B: &Builder<'a>,
1518 Val: &'a Value,
1519 DestTy: &'a Type,
1520 Name: *const c_char,
1521 ) -> &'a Value;
1522 pub(crate) fn LLVMBuildPointerCast<'a>(
1523 B: &Builder<'a>,
1524 Val: &'a Value,
1525 DestTy: &'a Type,
1526 Name: *const c_char,
1527 ) -> &'a Value;
1528 pub(crate) fn LLVMBuildIntCast2<'a>(
1529 B: &Builder<'a>,
1530 Val: &'a Value,
1531 DestTy: &'a Type,
1532 IsSigned: Bool,
1533 Name: *const c_char,
1534 ) -> &'a Value;
1535
1536 pub(crate) fn LLVMBuildICmp<'a>(
1538 B: &Builder<'a>,
1539 Op: c_uint,
1540 LHS: &'a Value,
1541 RHS: &'a Value,
1542 Name: *const c_char,
1543 ) -> &'a Value;
1544 pub(crate) fn LLVMBuildFCmp<'a>(
1545 B: &Builder<'a>,
1546 Op: c_uint,
1547 LHS: &'a Value,
1548 RHS: &'a Value,
1549 Name: *const c_char,
1550 ) -> &'a Value;
1551
1552 pub(crate) fn LLVMBuildPhi<'a>(B: &Builder<'a>, Ty: &'a Type, Name: *const c_char)
1554 -> &'a Value;
1555 pub(crate) fn LLVMBuildSelect<'a>(
1556 B: &Builder<'a>,
1557 If: &'a Value,
1558 Then: &'a Value,
1559 Else: &'a Value,
1560 Name: *const c_char,
1561 ) -> &'a Value;
1562 pub(crate) fn LLVMBuildVAArg<'a>(
1563 B: &Builder<'a>,
1564 list: &'a Value,
1565 Ty: &'a Type,
1566 Name: *const c_char,
1567 ) -> &'a Value;
1568 pub(crate) fn LLVMBuildExtractElement<'a>(
1569 B: &Builder<'a>,
1570 VecVal: &'a Value,
1571 Index: &'a Value,
1572 Name: *const c_char,
1573 ) -> &'a Value;
1574 pub(crate) fn LLVMBuildInsertElement<'a>(
1575 B: &Builder<'a>,
1576 VecVal: &'a Value,
1577 EltVal: &'a Value,
1578 Index: &'a Value,
1579 Name: *const c_char,
1580 ) -> &'a Value;
1581 pub(crate) fn LLVMBuildShuffleVector<'a>(
1582 B: &Builder<'a>,
1583 V1: &'a Value,
1584 V2: &'a Value,
1585 Mask: &'a Value,
1586 Name: *const c_char,
1587 ) -> &'a Value;
1588 pub(crate) fn LLVMBuildExtractValue<'a>(
1589 B: &Builder<'a>,
1590 AggVal: &'a Value,
1591 Index: c_uint,
1592 Name: *const c_char,
1593 ) -> &'a Value;
1594 pub(crate) fn LLVMBuildInsertValue<'a>(
1595 B: &Builder<'a>,
1596 AggVal: &'a Value,
1597 EltVal: &'a Value,
1598 Index: c_uint,
1599 Name: *const c_char,
1600 ) -> &'a Value;
1601
1602 pub(crate) fn LLVMBuildAtomicCmpXchg<'a>(
1604 B: &Builder<'a>,
1605 LHS: &'a Value,
1606 CMP: &'a Value,
1607 RHS: &'a Value,
1608 Order: AtomicOrdering,
1609 FailureOrder: AtomicOrdering,
1610 SingleThreaded: Bool,
1611 ) -> &'a Value;
1612
1613 pub(crate) fn LLVMSetWeak(CmpXchgInst: &Value, IsWeak: Bool);
1614
1615 pub(crate) fn LLVMBuildAtomicRMW<'a>(
1616 B: &Builder<'a>,
1617 Op: AtomicRmwBinOp,
1618 LHS: &'a Value,
1619 RHS: &'a Value,
1620 Order: AtomicOrdering,
1621 SingleThreaded: Bool,
1622 ) -> &'a Value;
1623
1624 pub(crate) fn LLVMBuildFence<'a>(
1625 B: &Builder<'a>,
1626 Order: AtomicOrdering,
1627 SingleThreaded: Bool,
1628 Name: *const c_char,
1629 ) -> &'a Value;
1630
1631 pub(crate) fn LLVMWriteBitcodeToFile(M: &Module, Path: *const c_char) -> c_int;
1633
1634 pub(crate) fn LLVMCreatePassManager<'a>() -> &'a mut PassManager<'a>;
1636
1637 pub(crate) fn LLVMAddAnalysisPasses<'a>(T: &'a TargetMachine, PM: &PassManager<'a>);
1638
1639 pub(crate) fn LLVMGetHostCPUFeatures() -> *mut c_char;
1640
1641 pub(crate) fn LLVMDisposeMessage(message: *mut c_char);
1642
1643 pub(crate) fn LLVMIsMultithreaded() -> Bool;
1644
1645 pub(crate) fn LLVMStructCreateNamed(C: &Context, Name: *const c_char) -> &Type;
1646
1647 pub(crate) fn LLVMStructSetBody<'a>(
1648 StructTy: &'a Type,
1649 ElementTypes: *const &'a Type,
1650 ElementCount: c_uint,
1651 Packed: Bool,
1652 );
1653
1654 pub(crate) fn LLVMCountStructElementTypes(StructTy: &Type) -> c_uint;
1655 pub(crate) fn LLVMGetStructElementTypes<'a>(StructTy: &'a Type, Dest: *mut &'a Type);
1656
1657 pub(crate) safe fn LLVMMetadataAsValue<'a>(C: &'a Context, MD: &'a Metadata) -> &'a Value;
1658
1659 pub(crate) safe fn LLVMSetUnnamedAddress(Global: &Value, UnnamedAddr: UnnamedAddr);
1660
1661 pub(crate) fn LLVMIsAConstantInt(value_ref: &Value) -> Option<&ConstantInt>;
1662
1663 pub(crate) fn LLVMGetOrInsertComdat(M: &Module, Name: *const c_char) -> &Comdat;
1664 pub(crate) fn LLVMSetComdat(V: &Value, C: &Comdat);
1665
1666 pub(crate) fn LLVMCreateOperandBundle(
1667 Tag: *const c_char,
1668 TagLen: size_t,
1669 Args: *const &'_ Value,
1670 NumArgs: c_uint,
1671 ) -> *mut OperandBundle<'_>;
1672 pub(crate) fn LLVMDisposeOperandBundle(Bundle: ptr::NonNull<OperandBundle<'_>>);
1673
1674 pub(crate) fn LLVMBuildCallWithOperandBundles<'a>(
1675 B: &Builder<'a>,
1676 Ty: &'a Type,
1677 Fn: &'a Value,
1678 Args: *const &'a Value,
1679 NumArgs: c_uint,
1680 Bundles: *const &OperandBundle<'a>,
1681 NumBundles: c_uint,
1682 Name: *const c_char,
1683 ) -> &'a Value;
1684 pub(crate) fn LLVMBuildInvokeWithOperandBundles<'a>(
1685 B: &Builder<'a>,
1686 Ty: &'a Type,
1687 Fn: &'a Value,
1688 Args: *const &'a Value,
1689 NumArgs: c_uint,
1690 Then: &'a BasicBlock,
1691 Catch: &'a BasicBlock,
1692 Bundles: *const &OperandBundle<'a>,
1693 NumBundles: c_uint,
1694 Name: *const c_char,
1695 ) -> &'a Value;
1696 pub(crate) fn LLVMBuildCallBr<'a>(
1697 B: &Builder<'a>,
1698 Ty: &'a Type,
1699 Fn: &'a Value,
1700 DefaultDest: &'a BasicBlock,
1701 IndirectDests: *const &'a BasicBlock,
1702 NumIndirectDests: c_uint,
1703 Args: *const &'a Value,
1704 NumArgs: c_uint,
1705 Bundles: *const &OperandBundle<'a>,
1706 NumBundles: c_uint,
1707 Name: *const c_char,
1708 ) -> &'a Value;
1709}
1710
1711unsafe extern "C" {
1718 pub(crate) fn LLVMCreateDIBuilder<'ll>(M: &'ll Module) -> *mut DIBuilder<'ll>;
1719 pub(crate) fn LLVMDisposeDIBuilder<'ll>(Builder: ptr::NonNull<DIBuilder<'ll>>);
1720
1721 pub(crate) fn LLVMDIBuilderFinalize<'ll>(Builder: &DIBuilder<'ll>);
1722
1723 pub(crate) fn LLVMDIBuilderCreateNameSpace<'ll>(
1724 Builder: &DIBuilder<'ll>,
1725 ParentScope: Option<&'ll Metadata>,
1726 Name: *const c_uchar, NameLen: size_t,
1728 ExportSymbols: llvm::Bool,
1729 ) -> &'ll Metadata;
1730
1731 pub(crate) fn LLVMDIBuilderCreateLexicalBlock<'ll>(
1732 Builder: &DIBuilder<'ll>,
1733 Scope: &'ll Metadata,
1734 File: &'ll Metadata,
1735 Line: c_uint,
1736 Column: c_uint,
1737 ) -> &'ll Metadata;
1738
1739 pub(crate) fn LLVMDIBuilderCreateLexicalBlockFile<'ll>(
1740 Builder: &DIBuilder<'ll>,
1741 Scope: &'ll Metadata,
1742 File: &'ll Metadata,
1743 Discriminator: c_uint, ) -> &'ll Metadata;
1745
1746 pub(crate) fn LLVMDIBuilderCreateDebugLocation<'ll>(
1747 Ctx: &'ll Context,
1748 Line: c_uint,
1749 Column: c_uint,
1750 Scope: &'ll Metadata,
1751 InlinedAt: Option<&'ll Metadata>,
1752 ) -> &'ll Metadata;
1753
1754 pub(crate) fn LLVMDIBuilderCreateSubroutineType<'ll>(
1755 Builder: &DIBuilder<'ll>,
1756 File: Option<&'ll Metadata>, ParameterTypes: *const Option<&'ll Metadata>,
1758 NumParameterTypes: c_uint,
1759 Flags: DIFlags, ) -> &'ll Metadata;
1761
1762 pub(crate) fn LLVMDIBuilderCreateEnumeratorOfArbitraryPrecision<'ll>(
1763 Builder: &DIBuilder<'ll>,
1764 Name: *const c_uchar, NameLen: size_t,
1766 SizeInBits: u64,
1767 Words: *const u64, IsUnsigned: llvm::Bool,
1769 ) -> &'ll Metadata;
1770
1771 pub(crate) fn LLVMDIBuilderCreateUnionType<'ll>(
1772 Builder: &DIBuilder<'ll>,
1773 Scope: Option<&'ll Metadata>,
1774 Name: *const c_uchar, NameLen: size_t,
1776 File: &'ll Metadata,
1777 LineNumber: c_uint,
1778 SizeInBits: u64,
1779 AlignInBits: u32,
1780 Flags: DIFlags,
1781 Elements: *const Option<&'ll Metadata>,
1782 NumElements: c_uint,
1783 RunTimeLang: c_uint, UniqueId: *const c_uchar, UniqueIdLen: size_t,
1786 ) -> &'ll Metadata;
1787
1788 pub(crate) fn LLVMDIBuilderCreateArrayType<'ll>(
1789 Builder: &DIBuilder<'ll>,
1790 Size: u64,
1791 Align: u32,
1792 Ty: &'ll Metadata,
1793 Subscripts: *const &'ll Metadata,
1794 NumSubscripts: c_uint,
1795 ) -> &'ll Metadata;
1796
1797 pub(crate) fn LLVMDIBuilderCreateBasicType<'ll>(
1798 Builder: &DIBuilder<'ll>,
1799 Name: *const c_uchar, NameLen: size_t,
1801 SizeInBits: u64,
1802 Encoding: c_uint, Flags: DIFlags, ) -> &'ll Metadata;
1805
1806 pub(crate) fn LLVMDIBuilderCreatePointerType<'ll>(
1807 Builder: &DIBuilder<'ll>,
1808 PointeeTy: &'ll Metadata,
1809 SizeInBits: u64,
1810 AlignInBits: u32,
1811 AddressSpace: c_uint, Name: *const c_uchar, NameLen: size_t,
1814 ) -> &'ll Metadata;
1815
1816 pub(crate) fn LLVMDIBuilderCreateStructType<'ll>(
1817 Builder: &DIBuilder<'ll>,
1818 Scope: Option<&'ll Metadata>,
1819 Name: *const c_uchar, NameLen: size_t,
1821 File: &'ll Metadata,
1822 LineNumber: c_uint,
1823 SizeInBits: u64,
1824 AlignInBits: u32,
1825 Flags: DIFlags,
1826 DerivedFrom: Option<&'ll Metadata>,
1827 Elements: *const Option<&'ll Metadata>,
1828 NumElements: c_uint,
1829 RunTimeLang: c_uint, VTableHolder: Option<&'ll Metadata>,
1831 UniqueId: *const c_uchar, UniqueIdLen: size_t,
1833 ) -> &'ll Metadata;
1834
1835 pub(crate) fn LLVMDIBuilderCreateMemberType<'ll>(
1836 Builder: &DIBuilder<'ll>,
1837 Scope: &'ll Metadata,
1838 Name: *const c_uchar, NameLen: size_t,
1840 File: &'ll Metadata,
1841 LineNo: c_uint,
1842 SizeInBits: u64,
1843 AlignInBits: u32,
1844 OffsetInBits: u64,
1845 Flags: DIFlags,
1846 Ty: &'ll Metadata,
1847 ) -> &'ll Metadata;
1848
1849 pub(crate) fn LLVMDIBuilderCreateStaticMemberType<'ll>(
1850 Builder: &DIBuilder<'ll>,
1851 Scope: &'ll Metadata,
1852 Name: *const c_uchar, NameLen: size_t,
1854 File: &'ll Metadata,
1855 LineNumber: c_uint,
1856 Type: &'ll Metadata,
1857 Flags: DIFlags,
1858 ConstantVal: Option<&'ll Value>,
1859 AlignInBits: u32,
1860 ) -> &'ll Metadata;
1861
1862 pub(crate) fn LLVMDIBuilderCreateQualifiedType<'ll>(
1865 Builder: &DIBuilder<'ll>,
1866 Tag: c_uint, Type: &'ll Metadata,
1868 ) -> &'ll Metadata;
1869
1870 pub(crate) fn LLVMDIBuilderCreateTypedef<'ll>(
1871 Builder: &DIBuilder<'ll>,
1872 Type: &'ll Metadata,
1873 Name: *const c_uchar, NameLen: size_t,
1875 File: &'ll Metadata,
1876 LineNo: c_uint,
1877 Scope: Option<&'ll Metadata>,
1878 AlignInBits: u32, ) -> &'ll Metadata;
1880
1881 pub(crate) fn LLVMDIBuilderGetOrCreateSubrange<'ll>(
1882 Builder: &DIBuilder<'ll>,
1883 LowerBound: i64,
1884 Count: i64,
1885 ) -> &'ll Metadata;
1886
1887 pub(crate) fn LLVMDIBuilderGetOrCreateArray<'ll>(
1888 Builder: &DIBuilder<'ll>,
1889 Data: *const Option<&'ll Metadata>,
1890 NumElements: size_t,
1891 ) -> &'ll Metadata;
1892
1893 pub(crate) fn LLVMDIBuilderCreateExpression<'ll>(
1894 Builder: &DIBuilder<'ll>,
1895 Addr: *const u64,
1896 Length: size_t,
1897 ) -> &'ll Metadata;
1898
1899 pub(crate) fn LLVMDIBuilderCreateGlobalVariableExpression<'ll>(
1900 Builder: &DIBuilder<'ll>,
1901 Scope: Option<&'ll Metadata>,
1902 Name: *const c_uchar, NameLen: size_t,
1904 Linkage: *const c_uchar, LinkLen: size_t,
1906 File: &'ll Metadata,
1907 LineNo: c_uint,
1908 Ty: &'ll Metadata,
1909 LocalToUnit: llvm::Bool,
1910 Expr: &'ll Metadata,
1911 Decl: Option<&'ll Metadata>,
1912 AlignInBits: u32,
1913 ) -> &'ll Metadata;
1914
1915 pub(crate) fn LLVMDIBuilderInsertDeclareRecordAtEnd<'ll>(
1916 Builder: &DIBuilder<'ll>,
1917 Storage: &'ll Value,
1918 VarInfo: &'ll Metadata,
1919 Expr: &'ll Metadata,
1920 DebugLoc: &'ll Metadata,
1921 Block: &'ll BasicBlock,
1922 ) -> &'ll DbgRecord;
1923
1924 pub(crate) fn LLVMDIBuilderInsertDbgValueRecordAtEnd<'ll>(
1925 Builder: &DIBuilder<'ll>,
1926 Val: &'ll Value,
1927 VarInfo: &'ll Metadata,
1928 Expr: &'ll Metadata,
1929 DebugLoc: &'ll Metadata,
1930 Block: &'ll BasicBlock,
1931 ) -> &'ll DbgRecord;
1932
1933 pub(crate) fn LLVMDIBuilderCreateAutoVariable<'ll>(
1934 Builder: &DIBuilder<'ll>,
1935 Scope: &'ll Metadata,
1936 Name: *const c_uchar, NameLen: size_t,
1938 File: &'ll Metadata,
1939 LineNo: c_uint,
1940 Ty: &'ll Metadata,
1941 AlwaysPreserve: llvm::Bool, Flags: DIFlags,
1943 AlignInBits: u32,
1944 ) -> &'ll Metadata;
1945
1946 pub(crate) fn LLVMDIBuilderCreateParameterVariable<'ll>(
1947 Builder: &DIBuilder<'ll>,
1948 Scope: &'ll Metadata,
1949 Name: *const c_uchar, NameLen: size_t,
1951 ArgNo: c_uint,
1952 File: &'ll Metadata,
1953 LineNo: c_uint,
1954 Ty: &'ll Metadata,
1955 AlwaysPreserve: llvm::Bool, Flags: DIFlags,
1957 ) -> &'ll Metadata;
1958}
1959
1960#[link(name = "llvm-wrapper", kind = "static")]
1961unsafe extern "C" {
1962 pub(crate) fn LLVMRustInstallErrorHandlers();
1963 pub(crate) fn LLVMRustDisableSystemDialogsOnCrash();
1964
1965 pub(crate) fn LLVMRustGlobalAddMetadata<'a>(
1968 Val: &'a Value,
1969 KindID: MetadataKindId,
1970 Metadata: &'a Metadata,
1971 );
1972 pub(crate) fn LLVMRustIsNonGVFunctionPointerTy(Val: &Value) -> bool;
1973 pub(crate) fn LLVMRustStripPointerCasts<'a>(Val: &'a Value) -> &'a Value;
1974
1975 pub(crate) fn LLVMRustConstIntGetZExtValue(ConstantVal: &ConstantInt, Value: &mut u64) -> bool;
1977 pub(crate) fn LLVMRustConstInt128Get(
1978 ConstantVal: &ConstantInt,
1979 SExt: bool,
1980 high: &mut u64,
1981 low: &mut u64,
1982 ) -> bool;
1983
1984 pub(crate) fn LLVMRustSetDSOLocal(Global: &Value, is_dso_local: bool);
1986
1987 pub(crate) fn LLVMRustGetOrInsertGlobal<'a>(
1989 M: &'a Module,
1990 Name: *const c_char,
1991 NameLen: size_t,
1992 T: &'a Type,
1993 ) -> &'a Value;
1994 pub(crate) fn LLVMRustGetOrInsertGlobalInAddrspace<'a>(
1995 M: &'a Module,
1996 Name: *const c_char,
1997 NameLen: size_t,
1998 T: &'a Type,
1999 AddressSpace: c_uint,
2000 ) -> &'a Value;
2001 pub(crate) fn LLVMRustGetNamedValue(
2002 M: &Module,
2003 Name: *const c_char,
2004 NameLen: size_t,
2005 ) -> Option<&Value>;
2006
2007 pub(crate) fn LLVMRustCreateAttrNoValue(C: &Context, attr: AttributeKind) -> &Attribute;
2009 pub(crate) fn LLVMRustCreateAlignmentAttr(C: &Context, bytes: u64) -> &Attribute;
2010 pub(crate) fn LLVMRustCreateDereferenceableAttr(C: &Context, bytes: u64) -> &Attribute;
2011 pub(crate) fn LLVMRustCreateDereferenceableOrNullAttr(C: &Context, bytes: u64) -> &Attribute;
2012 pub(crate) fn LLVMRustCreateByValAttr<'a>(C: &'a Context, ty: &'a Type) -> &'a Attribute;
2013 pub(crate) fn LLVMRustCreateStructRetAttr<'a>(C: &'a Context, ty: &'a Type) -> &'a Attribute;
2014 pub(crate) fn LLVMRustCreateElementTypeAttr<'a>(C: &'a Context, ty: &'a Type) -> &'a Attribute;
2015 pub(crate) fn LLVMRustCreateUWTableAttr(C: &Context, async_: bool) -> &Attribute;
2016 pub(crate) fn LLVMRustCreateAllocSizeAttr(C: &Context, size_arg: u32) -> &Attribute;
2017 pub(crate) fn LLVMRustCreateAllocKindAttr(C: &Context, size_arg: u64) -> &Attribute;
2018 pub(crate) fn LLVMRustCreateMemoryEffectsAttr(
2019 C: &Context,
2020 effects: MemoryEffects,
2021 ) -> &Attribute;
2022 pub(crate) fn LLVMRustCreateRangeAttribute(
2029 C: &Context,
2030 NumBits: c_uint,
2031 LowerWords: *const u64,
2032 UpperWords: *const u64,
2033 ) -> &Attribute;
2034
2035 pub(crate) fn LLVMRustGetOrInsertFunction<'a>(
2038 M: &'a Module,
2039 Name: *const c_char,
2040 NameLen: size_t,
2041 FunctionTy: &'a Type,
2042 ) -> &'a Value;
2043 pub(crate) fn LLVMRustAddFunctionAttributes<'a>(
2044 Fn: &'a Value,
2045 index: c_uint,
2046 Attrs: *const &'a Attribute,
2047 AttrsLen: size_t,
2048 );
2049
2050 pub(crate) fn LLVMRustAddCallSiteAttributes<'a>(
2052 Instr: &'a Value,
2053 index: c_uint,
2054 Attrs: *const &'a Attribute,
2055 AttrsLen: size_t,
2056 );
2057
2058 pub(crate) fn LLVMRustSetFastMath(Instr: &Value);
2059 pub(crate) fn LLVMRustSetAlgebraicMath(Instr: &Value);
2060 pub(crate) fn LLVMRustSetAllowReassoc(Instr: &Value);
2061 pub(crate) fn LLVMRustSetNoSignedZeros(Instr: &Value);
2062
2063 pub(crate) fn LLVMRustBuildMemCpy<'a>(
2065 B: &Builder<'a>,
2066 Dst: &'a Value,
2067 DstAlign: c_uint,
2068 Src: &'a Value,
2069 SrcAlign: c_uint,
2070 Size: &'a Value,
2071 IsVolatile: bool,
2072 ) -> &'a Value;
2073 pub(crate) fn LLVMRustBuildMemMove<'a>(
2074 B: &Builder<'a>,
2075 Dst: &'a Value,
2076 DstAlign: c_uint,
2077 Src: &'a Value,
2078 SrcAlign: c_uint,
2079 Size: &'a Value,
2080 IsVolatile: bool,
2081 ) -> &'a Value;
2082 pub(crate) fn LLVMRustBuildMemSet<'a>(
2083 B: &Builder<'a>,
2084 Dst: &'a Value,
2085 DstAlign: c_uint,
2086 Val: &'a Value,
2087 Size: &'a Value,
2088 IsVolatile: bool,
2089 ) -> &'a Value;
2090
2091 pub(crate) fn LLVMRustBuildVScale<'a>(B: &Builder<'a>, Ty: &'a Type) -> &'a Value;
2092
2093 pub(crate) fn LLVMRustTimeTraceProfilerInitialize();
2094
2095 pub(crate) fn LLVMRustTimeTraceProfilerFinishThread();
2096
2097 pub(crate) fn LLVMRustTimeTraceProfilerFinish(FileName: *const c_char);
2098
2099 pub(crate) fn LLVMRustGetLastError() -> *const c_char;
2101
2102 pub(crate) fn LLVMRustPrintPassTimings(OutStr: &RustString);
2104
2105 pub(crate) fn LLVMRustPrintStatistics(OutStr: &RustString);
2107
2108 pub(crate) fn LLVMRustPrintStatisticsJSON(OutStr: &RustString);
2110
2111 pub(crate) fn LLVMRustInlineAsmVerify(
2112 Ty: &Type,
2113 Constraints: *const c_uchar, ConstraintsLen: size_t,
2115 ) -> bool;
2116
2117 pub(crate) fn LLVMRustAppendModuleInlineAsm(
2119 M: &Module,
2120 Asm: *const c_uchar, AsmLen: size_t,
2122 TargetFeatures: *const c_uchar, TargetFeaturesLen: size_t,
2124 TargetCpu: *const c_uchar, TargetCpuLen: size_t,
2126 );
2127
2128 pub(crate) fn LLVMRustCoverageWriteFilenamesToBuffer(
2132 Filenames: *const *const c_uchar, FilenamesLen: size_t,
2134 Lengths: *const size_t,
2135 LengthsLen: size_t,
2136 BufferOut: &RustString,
2137 );
2138
2139 pub(crate) fn LLVMRustCoverageWriteFunctionMappingsToBuffer(
2140 VirtualFileMappingIDs: *const c_uint,
2141 NumVirtualFileMappingIDs: size_t,
2142 Expressions: *const crate::coverageinfo::ffi::CounterExpression,
2143 NumExpressions: size_t,
2144 CodeRegions: *const crate::coverageinfo::ffi::CodeRegion,
2145 NumCodeRegions: size_t,
2146 ExpansionRegions: *const crate::coverageinfo::ffi::ExpansionRegion,
2147 NumExpansionRegions: size_t,
2148 BranchRegions: *const crate::coverageinfo::ffi::BranchRegion,
2149 NumBranchRegions: size_t,
2150 BufferOut: &RustString,
2151 );
2152
2153 pub(crate) fn LLVMRustCoverageCreatePGOFuncNameVar(
2154 F: &Value,
2155 FuncName: *const c_uchar, FuncNameLen: size_t,
2157 ) -> &Value;
2158 pub(crate) fn LLVMRustCoverageHashBytes(
2159 Bytes: *const c_uchar, NumBytes: size_t,
2161 ) -> u64;
2162
2163 pub(crate) safe fn LLVMRustCoverageWriteCovmapSectionNameToString(
2164 M: &Module,
2165 OutStr: &RustString,
2166 );
2167 pub(crate) safe fn LLVMRustCoverageWriteCovfunSectionNameToString(
2168 M: &Module,
2169 OutStr: &RustString,
2170 );
2171 pub(crate) safe fn LLVMRustCoverageWriteCovmapVarNameToString(OutStr: &RustString);
2172
2173 pub(crate) safe fn LLVMRustCoverageMappingVersion() -> u32;
2174 pub(crate) fn LLVMRustDebugMetadataVersion() -> u32;
2175
2176 pub(crate) fn LLVMRustVersionMajor() -> u32;
2182
2183 pub(crate) fn LLVMRustAddModuleFlagU32(
2188 M: &Module,
2189 MergeBehavior: ModuleFlagMergeBehavior,
2190 Name: *const c_char,
2191 NameLen: size_t,
2192 Value: u32,
2193 );
2194
2195 pub(crate) fn LLVMRustAddModuleFlagString(
2196 M: &Module,
2197 MergeBehavior: ModuleFlagMergeBehavior,
2198 Name: *const c_char,
2199 NameLen: size_t,
2200 Value: *const c_char,
2201 ValueLen: size_t,
2202 );
2203
2204 pub(crate) fn LLVMRustDIBuilderCreateCompileUnit<'a>(
2208 Builder: &DIBuilder<'a>,
2209 Lang: c_uint,
2210 File: &'a DIFile,
2211 Producer: *const c_char,
2212 ProducerLen: size_t,
2213 isOptimized: bool,
2214 Flags: *const c_char,
2215 RuntimeVer: c_uint,
2216 SplitName: *const c_char,
2217 SplitNameLen: size_t,
2218 kind: DebugEmissionKind,
2219 DWOId: u64,
2220 SplitDebugInlining: bool,
2221 DebugNameTableKind: DebugNameTableKind,
2222 ) -> &'a DIDescriptor;
2223
2224 pub(crate) fn LLVMRustDIBuilderCreateFile<'a>(
2227 Builder: &DIBuilder<'a>,
2228 Filename: *const c_char,
2229 FilenameLen: size_t,
2230 Directory: *const c_char,
2231 DirectoryLen: size_t,
2232 CSKind: ChecksumKind,
2233 Checksum: *const c_char,
2234 ChecksumLen: size_t,
2235 Source: *const c_char,
2236 SourceLen: size_t,
2237 ) -> &'a DIFile;
2238
2239 pub(crate) fn LLVMRustDIBuilderCreateFunction<'a>(
2242 Builder: &DIBuilder<'a>,
2243 Scope: &'a DIDescriptor,
2244 Name: *const c_char,
2245 NameLen: size_t,
2246 LinkageName: *const c_char,
2247 LinkageNameLen: size_t,
2248 File: &'a DIFile,
2249 LineNo: c_uint,
2250 Ty: &'a DIType,
2251 ScopeLine: c_uint,
2252 Flags: DIFlags,
2253 SPFlags: DISPFlags,
2254 MaybeFn: Option<&'a Value>,
2255 TParam: &'a DIArray,
2256 Decl: Option<&'a DIDescriptor>,
2257 ) -> &'a DISubprogram;
2258
2259 pub(crate) fn LLVMRustDIBuilderCreateMethod<'a>(
2261 Builder: &DIBuilder<'a>,
2262 Scope: &'a DIDescriptor,
2263 Name: *const c_char,
2264 NameLen: size_t,
2265 LinkageName: *const c_char,
2266 LinkageNameLen: size_t,
2267 File: &'a DIFile,
2268 LineNo: c_uint,
2269 Ty: &'a DIType,
2270 Flags: DIFlags,
2271 SPFlags: DISPFlags,
2272 TParam: &'a DIArray,
2273 ) -> &'a DISubprogram;
2274
2275 pub(crate) fn LLVMRustDIBuilderCreateVariantMemberType<'a>(
2277 Builder: &DIBuilder<'a>,
2278 Scope: &'a DIScope,
2279 Name: *const c_char,
2280 NameLen: size_t,
2281 File: &'a DIFile,
2282 LineNumber: c_uint,
2283 SizeInBits: u64,
2284 AlignInBits: u32,
2285 OffsetInBits: u64,
2286 Discriminant: Option<&'a Value>,
2287 Flags: DIFlags,
2288 Ty: &'a DIType,
2289 ) -> &'a DIType;
2290
2291 pub(crate) fn LLVMRustDIBuilderCreateEnumerationType<'a>(
2293 Builder: &DIBuilder<'a>,
2294 Scope: &'a DIScope,
2295 Name: *const c_char,
2296 NameLen: size_t,
2297 File: &'a DIFile,
2298 LineNumber: c_uint,
2299 SizeInBits: u64,
2300 AlignInBits: u32,
2301 Elements: &'a DIArray,
2302 ClassType: &'a DIType,
2303 IsScoped: bool,
2304 ) -> &'a DIType;
2305
2306 pub(crate) fn LLVMRustDIBuilderCreateVariantPart<'a>(
2308 Builder: &DIBuilder<'a>,
2309 Scope: &'a DIScope,
2310 Name: *const c_char,
2311 NameLen: size_t,
2312 File: &'a DIFile,
2313 LineNo: c_uint,
2314 SizeInBits: u64,
2315 AlignInBits: u32,
2316 Flags: DIFlags,
2317 Discriminator: Option<&'a DIDerivedType>,
2318 Elements: &'a DIArray,
2319 UniqueId: *const c_char,
2320 UniqueIdLen: size_t,
2321 ) -> &'a DIDerivedType;
2322
2323 pub(crate) fn LLVMRustDIBuilderCreateTemplateTypeParameter<'a>(
2325 Builder: &DIBuilder<'a>,
2326 Scope: Option<&'a DIScope>,
2327 Name: *const c_char,
2328 NameLen: size_t,
2329 Ty: &'a DIType,
2330 ) -> &'a DITemplateTypeParameter;
2331
2332 pub(crate) fn LLVMRustDICompositeTypeReplaceArrays<'a>(
2335 Builder: &DIBuilder<'a>,
2336 CompositeType: &'a DIType,
2337 Elements: Option<&'a DIArray>,
2338 Params: Option<&'a DIArray>,
2339 );
2340
2341 pub(crate) fn LLVMRustDIGetOrCreateSubrange<'a>(
2344 Builder: &DIBuilder<'a>,
2345 CountNode: Option<&'a Metadata>,
2346 LB: &'a Metadata,
2347 UB: &'a Metadata,
2348 Stride: Option<&'a Metadata>,
2349 ) -> &'a Metadata;
2350
2351 pub(crate) fn LLVMRustDICreateVectorType<'a>(
2354 Builder: &DIBuilder<'a>,
2355 Size: u64,
2356 AlignInBits: u32,
2357 Type: &'a DIType,
2358 Subscripts: &'a DIArray,
2359 BitStride: Option<&'a Metadata>,
2360 ) -> &'a Metadata;
2361
2362 pub(crate) fn LLVMRustDILocationCloneWithBaseDiscriminator<'a>(
2364 Location: &'a DILocation,
2365 BD: c_uint,
2366 ) -> Option<&'a DILocation>;
2367
2368 pub(crate) fn LLVMRustWriteTypeToString(Type: &Type, s: &RustString);
2369 pub(crate) fn LLVMRustWriteValueToString(value_ref: &Value, s: &RustString);
2370
2371 pub(crate) fn LLVMRustHasFeature(T: &TargetMachine, s: *const c_char) -> bool;
2372 pub(crate) fn LLVMRustTargetHasMnemonic(T: &TargetMachine, s: *const c_char) -> bool;
2373
2374 pub(crate) fn LLVMRustPrintTargetCPUs(TM: &TargetMachine, OutStr: &RustString);
2375 pub(crate) fn LLVMRustGetTargetFeaturesCount(T: &TargetMachine) -> size_t;
2376 pub(crate) fn LLVMRustGetTargetFeature(
2377 T: &TargetMachine,
2378 Index: size_t,
2379 Feature: &mut *const c_char,
2380 Desc: &mut *const c_char,
2381 );
2382
2383 pub(crate) fn LLVMRustGetHostCPUName(LenOut: &mut size_t) -> *const u8;
2384
2385 pub(crate) fn LLVMRustCreateTargetMachine(
2388 Triple: *const c_char,
2389 CPU: *const c_char,
2390 Features: *const c_char,
2391 Abi: *const c_char,
2392 Model: CodeModel,
2393 Reloc: RelocModel,
2394 Level: CodeGenOptLevel,
2395 FloatABIType: FloatAbi,
2396 FunctionSections: bool,
2397 DataSections: bool,
2398 UniqueSectionNames: bool,
2399 TrapUnreachable: bool,
2400 Singlethread: bool,
2401 VerboseAsm: bool,
2402 EmitStackSizeSection: bool,
2403 RelaxELFRelocations: bool,
2404 UseInitArray: bool,
2405 SplitDwarfFile: *const c_char,
2406 OutputObjFile: *const c_char,
2407 DebugInfoCompression: CompressionKind,
2408 UseEmulatedTls: bool,
2409 UseWasmEH: bool,
2410 LargeDataThreshold: u64,
2411 ) -> *mut TargetMachine;
2412
2413 pub(crate) fn LLVMRustAddLibraryInfo<'a>(
2414 T: &TargetMachine,
2415 PM: &PassManager<'a>,
2416 M: &'a Module,
2417 DisableSimplifyLibCalls: bool,
2418 );
2419 pub(crate) fn LLVMRustWriteOutputFile<'a>(
2420 T: &'a TargetMachine,
2421 PM: *mut PassManager<'a>,
2422 M: &'a Module,
2423 Output: *const c_char,
2424 DwoOutput: *const c_char,
2425 FileType: FileType,
2426 VerifyIR: bool,
2427 ) -> LLVMRustResult;
2428 pub(crate) fn LLVMRustOptimize<'a>(
2429 M: &'a Module,
2430 TM: &'a TargetMachine,
2431 OptLevel: PassBuilderOptLevel,
2432 OptStage: OptStage,
2433 IsLinkerPluginLTO: bool,
2434 NoPrepopulatePasses: bool,
2435 VerifyIR: bool,
2436 LintIR: bool,
2437 ThinLTOBuffer: Option<&mut Option<crate::back::lto::Buffer>>,
2438 ThinLTOSummaryBuffer: Option<&mut Option<crate::back::lto::Buffer>>,
2439 MergeFunctions: bool,
2440 UnrollLoops: bool,
2441 SLPVectorize: bool,
2442 LoopVectorize: bool,
2443 DisableSimplifyLibCalls: bool,
2444 EmitLifetimeMarkers: bool,
2445 RunEnzyme: *const c_void,
2446 PrintBeforeEnzyme: bool,
2447 PrintAfterEnzyme: bool,
2448 PrintPasses: bool,
2449 SanitizerOptions: Option<&SanitizerOptions>,
2450 PGOGenPath: *const c_char,
2451 PGOUsePath: *const c_char,
2452 InstrumentCoverage: bool,
2453 InstrProfileOutput: *const c_char,
2454 PGOSampleUsePath: *const c_char,
2455 DebugInfoForProfiling: bool,
2456 llvm_selfprofiler: *mut c_void,
2457 begin_callback: SelfProfileBeforePassCallback,
2458 end_callback: SelfProfileAfterPassCallback,
2459 PostEnzymePasses: *const c_char,
2460 PostEnzymePassesLen: size_t,
2461 ExtraPasses: *const c_char,
2462 ExtraPassesLen: size_t,
2463 LLVMPlugins: *const c_char,
2464 LLVMPluginsLen: size_t,
2465 ) -> LLVMRustResult;
2466 pub(crate) fn LLVMRustPrintModule(
2467 M: &Module,
2468 Output: *const c_char,
2469 Demangle: extern "C" fn(*const c_char, size_t, *mut c_char, size_t) -> size_t,
2470 ) -> LLVMRustResult;
2471 pub(crate) fn LLVMRustSetLLVMOptions(Argc: c_int, Argv: *const *const c_char);
2472 pub(crate) fn LLVMRustPrintPasses();
2473 pub(crate) fn LLVMRustSetNormalizedTarget(M: &Module, triple: *const c_char);
2474 pub(crate) fn LLVMRustRunRestrictionPass(M: &Module, syms: *const *const c_char, len: size_t);
2475
2476 pub(crate) fn LLVMRustWriteTwineToString(T: &Twine, s: &RustString);
2477
2478 pub(crate) fn LLVMRustUnpackOptimizationDiagnostic<'a>(
2479 DI: &'a DiagnosticInfo,
2480 pass_name_out: &RustString,
2481 function_out: &mut Option<&'a Value>,
2482 loc_line_out: &mut c_uint,
2483 loc_column_out: &mut c_uint,
2484 loc_filename_out: &RustString,
2485 message_out: &RustString,
2486 );
2487
2488 pub(crate) fn LLVMRustUnpackInlineAsmDiagnostic<'a>(
2489 DI: &'a DiagnosticInfo,
2490 level_out: &mut DiagnosticLevel,
2491 cookie_out: &mut u64,
2492 message_out: &mut Option<&'a Twine>,
2493 );
2494
2495 pub(crate) fn LLVMRustWriteDiagnosticInfoToString(DI: &DiagnosticInfo, s: &RustString);
2496 pub(crate) fn LLVMRustGetDiagInfoKind(DI: &DiagnosticInfo) -> DiagnosticKind;
2497
2498 pub(crate) fn LLVMRustGetSMDiagnostic<'a>(
2499 DI: &'a DiagnosticInfo,
2500 cookie_out: &mut u64,
2501 ) -> &'a SMDiagnostic;
2502
2503 pub(crate) fn LLVMRustUnpackSMDiagnostic(
2504 d: &SMDiagnostic,
2505 message_out: &RustString,
2506 buffer_out: &RustString,
2507 level_out: &mut DiagnosticLevel,
2508 loc_out: &mut c_uint,
2509 ranges_out: *mut c_uint,
2510 num_ranges: &mut usize,
2511 ) -> bool;
2512
2513 pub(crate) fn LLVMRustSetDataLayoutFromTargetMachine<'a>(M: &'a Module, TM: &'a TargetMachine);
2514
2515 pub(crate) fn LLVMRustPositionBuilderPastAllocas<'a>(B: &Builder<'a>, Fn: &'a Value);
2516 pub(crate) fn LLVMRustPositionBuilderAtStart<'a>(B: &Builder<'a>, BB: &'a BasicBlock);
2517
2518 pub(crate) fn LLVMRustSetModulePICLevel(M: &Module);
2519 pub(crate) fn LLVMRustSetModulePIELevel(M: &Module);
2520 pub(crate) fn LLVMRustSetModuleCodeModel(M: &Module, Model: CodeModel);
2521 pub(crate) fn LLVMRustSetModuleLargeDataThreshold(M: &Module, Threshold: u64);
2522 pub(crate) fn LLVMRustBufferPtr(p: &Buffer) -> *const u8;
2523 pub(crate) fn LLVMRustBufferLen(p: &Buffer) -> usize;
2524 pub(crate) fn LLVMRustBufferFree(p: &'static mut Buffer);
2525 pub(crate) fn LLVMRustModuleCost(M: &Module) -> u64;
2526 pub(crate) fn LLVMRustModuleInstructionStats(M: &Module) -> u64;
2527
2528 pub(crate) fn LLVMRustModuleSerialize(M: &Module, is_thin: bool) -> &'static mut Buffer;
2529 pub(crate) fn LLVMRustCreateThinLTOData(
2530 Modules: *const ThinLTOModule,
2531 NumModules: size_t,
2532 PreservedSymbols: *const *const c_char,
2533 PreservedSymbolsLen: size_t,
2534 ) -> Option<&'static mut ThinLTOData>;
2535 pub(crate) fn LLVMRustPrepareThinLTORename(
2536 Data: &ThinLTOData,
2537 Module: &Module,
2538 Target: &TargetMachine,
2539 );
2540 pub(crate) fn LLVMRustPrepareThinLTOResolveWeak(Data: &ThinLTOData, Module: &Module) -> bool;
2541 pub(crate) fn LLVMRustPrepareThinLTOInternalize(Data: &ThinLTOData, Module: &Module) -> bool;
2542 pub(crate) fn LLVMRustPrepareThinLTOImport(
2543 Data: &ThinLTOData,
2544 Module: &Module,
2545 Target: &TargetMachine,
2546 ) -> bool;
2547 pub(crate) fn LLVMRustFreeThinLTOData(Data: &'static mut ThinLTOData);
2548 pub(crate) fn LLVMRustParseBitcodeForLTO(
2549 Context: &Context,
2550 Data: *const u8,
2551 len: usize,
2552 Identifier: *const c_char,
2553 ) -> Option<&Module>;
2554
2555 pub(crate) fn LLVMRustLinkerNew(M: &Module) -> &mut Linker<'_>;
2556 pub(crate) fn LLVMRustLinkerAdd(
2557 linker: &Linker<'_>,
2558 bytecode: *const c_char,
2559 bytecode_len: usize,
2560 ) -> bool;
2561 pub(crate) fn LLVMRustLinkerFree<'a>(linker: &'a mut Linker<'a>);
2562 pub(crate) fn LLVMRustComputeLTOCacheKey(
2563 key_out: &RustString,
2564 mod_id: *const c_char,
2565 data: &ThinLTOData,
2566 );
2567
2568 pub(crate) fn LLVMRustContextGetDiagnosticHandler(
2569 Context: &Context,
2570 ) -> Option<&DiagnosticHandler>;
2571 pub(crate) fn LLVMRustContextSetDiagnosticHandler(
2572 context: &Context,
2573 diagnostic_handler: Option<&DiagnosticHandler>,
2574 );
2575 pub(crate) fn LLVMRustContextConfigureDiagnosticHandler(
2576 context: &Context,
2577 diagnostic_handler_callback: DiagnosticHandlerTy,
2578 diagnostic_handler_context: *mut c_void,
2579 remark_all_passes: bool,
2580 remark_passes: *const *const c_char,
2581 remark_passes_len: usize,
2582 remark_file: *const c_char,
2583 pgo_available: bool,
2584 );
2585
2586 pub(crate) fn LLVMRustGetMangledName(V: &Value, out: &RustString);
2587
2588 pub(crate) fn LLVMRustGetElementTypeArgIndex(CallSite: &Value) -> i32;
2589
2590 pub(crate) safe fn LLVMRustLLVMHasZlibCompression() -> bool;
2591 pub(crate) safe fn LLVMRustLLVMHasZstdCompression() -> bool;
2592
2593 pub(crate) fn LLVMRustGetSymbols(
2594 buf_ptr: *const u8,
2595 buf_len: usize,
2596 state: *mut c_void,
2597 callback: GetSymbolsCallback,
2598 error_callback: GetSymbolsErrorCallback,
2599 ) -> *mut c_void;
2600
2601 pub(crate) fn LLVMRustIs64BitSymbolicFile(buf_ptr: *const u8, buf_len: usize) -> bool;
2602
2603 pub(crate) fn LLVMRustIsECObject(buf_ptr: *const u8, buf_len: usize) -> bool;
2604
2605 pub(crate) fn LLVMRustIsAnyArm64Coff(buf_ptr: *const u8, buf_len: usize) -> bool;
2606
2607 pub(crate) fn LLVMRustSetNoSanitizeAddress(Global: &Value);
2608 pub(crate) fn LLVMRustSetNoSanitizeHWAddress(Global: &Value);
2609
2610 pub(crate) fn LLVMRustConstPtrAuth(
2611 ptr: *const Value,
2612 key: u32,
2613 disc: u64,
2614 addr_diversity: *const Value,
2615 deactivation_symbol: *const Value,
2616 ) -> *const Value;
2617}