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]
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]
#[allow(dead_code)]
impl ::core::clone::Clone for LLVMRustResult {
#[inline]
fn clone(&self) -> LLVMRustResult { *self }
}Clone, #[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]
impl ::core::clone::Clone for ModuleFlagMergeBehavior {
#[inline]
fn clone(&self) -> ModuleFlagMergeBehavior { *self }
}Clone, #[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]
#[allow(dead_code)]
impl ::core::clone::Clone for TailCallKind {
#[inline]
fn clone(&self) -> TailCallKind { *self }
}Clone, #[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]
impl ::core::clone::Clone for CallConv {
#[inline]
fn clone(&self) -> CallConv { *self }
}Clone, #[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]
impl ::core::clone::Clone for Linkage {
#[inline]
fn clone(&self) -> Linkage { *self }
}Clone, #[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]
impl ::core::clone::Clone for Visibility {
#[inline]
fn clone(&self) -> Visibility { *self }
}Clone, #[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]
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]
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]
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]
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]
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]
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]
impl ::core::clone::Clone for TypeKind {
#[inline]
fn clone(&self) -> TypeKind { *self }
}Clone, #[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]
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]
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]
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]
impl ::core::clone::Clone for AsmDialect {
#[inline]
fn clone(&self) -> AsmDialect { *self }
}Clone, #[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]
impl ::core::clone::Clone for CodeGenOptLevel {
#[inline]
fn clone(&self) -> CodeGenOptLevel { *self }
}Clone, #[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::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]
impl ::core::clone::Clone for RelocModel {
#[inline]
fn clone(&self) -> RelocModel { *self }
}Clone, #[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]
impl ::core::clone::Clone for FloatAbi {
#[inline]
fn clone(&self) -> FloatAbi { *self }
}Clone, #[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]
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]
#[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]
#[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]
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]
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]
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]
impl ::core::clone::Clone for Opcode {
#[inline]
fn clone(&self) -> Opcode { *self }
}Clone, #[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]
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 bitflags! {
770 #[repr(transparent)]
775 #[derive(#[automatically_derived]
impl ::core::clone::Clone for DIFlags {
#[inline]
fn clone(&self) -> DIFlags {
let _:
::core::clone::AssertParamIsClone<<DIFlags as
::bitflags::__private::PublicFlags>::Internal>;
*self
}
}
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() }
}
};Clone, #[automatically_derived]
impl ::core::marker::Copy for DIFlags { }Copy, #[automatically_derived]
impl ::core::default::Default for DIFlags {
#[inline]
fn default() -> DIFlags { DIFlags(::core::default::Default::default()) }
}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 bitflags! {
814 #[repr(transparent)]
815 #[derive(#[automatically_derived]
impl ::core::clone::Clone for DISPFlags {
#[inline]
fn clone(&self) -> DISPFlags {
let _:
::core::clone::AssertParamIsClone<<DISPFlags as
::bitflags::__private::PublicFlags>::Internal>;
*self
}
}
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() }
}
};Clone, #[automatically_derived]
impl ::core::marker::Copy for DISPFlags { }Copy, #[automatically_derived]
impl ::core::default::Default for DISPFlags {
#[inline]
fn default() -> DISPFlags {
DISPFlags(::core::default::Default::default())
}
}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]
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]
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 LLVMDisposeTargetMachine(T: ptr::NonNull<TargetMachine>);
898
899 pub(crate) fn LLVMModuleCreateWithNameInContext(
901 ModuleID: *const c_char,
902 C: &Context,
903 ) -> &Module;
904 pub(crate) safe fn LLVMCloneModule(M: &Module) -> &Module;
905
906 pub(crate) fn LLVMGetDataLayoutStr(M: &Module) -> *const c_char;
908 pub(crate) fn LLVMSetDataLayout(M: &Module, Triple: *const c_char);
909
910 pub(crate) fn LLVMAppendModuleInlineAsm(
912 M: &Module,
913 Asm: *const c_uchar, Len: size_t,
915 );
916
917 pub(crate) fn LLVMGetInlineAsm<'ll>(
919 Ty: &'ll Type,
920 AsmString: *const c_uchar, AsmStringSize: size_t,
922 Constraints: *const c_uchar, ConstraintsSize: size_t,
924 HasSideEffects: llvm::Bool,
925 IsAlignStack: llvm::Bool,
926 Dialect: AsmDialect,
927 CanThrow: llvm::Bool,
928 ) -> &'ll Value;
929
930 pub(crate) safe fn LLVMGetTypeKind(Ty: &Type) -> RawEnum<TypeKind>;
931
932 pub(crate) fn LLVMInt1TypeInContext(C: &Context) -> &Type;
934 pub(crate) fn LLVMInt8TypeInContext(C: &Context) -> &Type;
935 pub(crate) fn LLVMInt16TypeInContext(C: &Context) -> &Type;
936 pub(crate) fn LLVMInt32TypeInContext(C: &Context) -> &Type;
937 pub(crate) fn LLVMInt64TypeInContext(C: &Context) -> &Type;
938 pub(crate) safe fn LLVMIntTypeInContext(C: &Context, NumBits: c_uint) -> &Type;
939
940 pub(crate) fn LLVMGetIntTypeWidth(IntegerTy: &Type) -> c_uint;
941
942 pub(crate) fn LLVMHalfTypeInContext(C: &Context) -> &Type;
944 pub(crate) fn LLVMFloatTypeInContext(C: &Context) -> &Type;
945 pub(crate) fn LLVMDoubleTypeInContext(C: &Context) -> &Type;
946 pub(crate) fn LLVMFP128TypeInContext(C: &Context) -> &Type;
947
948 pub(crate) fn LLVMBFloatTypeInContext(C: &Context) -> &Type;
950
951 pub(crate) fn LLVMFunctionType<'a>(
953 ReturnType: &'a Type,
954 ParamTypes: *const &'a Type,
955 ParamCount: c_uint,
956 IsVarArg: Bool,
957 ) -> &'a Type;
958 pub(crate) fn LLVMCountParamTypes(FunctionTy: &Type) -> c_uint;
959 pub(crate) fn LLVMGetParamTypes<'a>(FunctionTy: &'a Type, Dest: *mut &'a Type);
960 pub(crate) fn LLVMGetReturnType(FunctionTy: &Type) -> &Type;
961 pub(crate) fn LLVMIsFunctionVarArg(FunctionTy: &Type) -> Bool;
962
963 pub(crate) fn LLVMStructTypeInContext<'a>(
965 C: &'a Context,
966 ElementTypes: *const &'a Type,
967 ElementCount: c_uint,
968 Packed: Bool,
969 ) -> &'a Type;
970
971 pub(crate) safe fn LLVMPointerTypeInContext(C: &Context, AddressSpace: c_uint) -> &Type;
973 pub(crate) fn LLVMVectorType(ElementType: &Type, ElementCount: c_uint) -> &Type;
974 pub(crate) fn LLVMScalableVectorType(ElementType: &Type, ElementCount: c_uint) -> &Type;
975
976 pub(crate) fn LLVMGetElementType(Ty: &Type) -> &Type;
977 pub(crate) fn LLVMGetVectorSize(VectorTy: &Type) -> c_uint;
978
979 pub(crate) fn LLVMVoidTypeInContext(C: &Context) -> &Type;
981
982 pub(crate) fn LLVMTypeOf(Val: &Value) -> &Type;
984 pub(crate) fn LLVMGetValueName2(Val: &Value, Length: *mut size_t) -> *const c_char;
985 pub(crate) fn LLVMSetValueName2(Val: &Value, Name: *const c_char, NameLen: size_t);
986 pub(crate) fn LLVMReplaceAllUsesWith<'a>(OldVal: &'a Value, NewVal: &'a Value);
987 pub(crate) safe fn LLVMGetMetadata<'a>(
988 Val: &'a Value,
989 KindID: MetadataKindId,
990 ) -> Option<&'a Value>;
991 pub(crate) safe fn LLVMSetMetadata<'a>(Val: &'a Value, KindID: MetadataKindId, Node: &'a Value);
992 pub(crate) fn LLVMGlobalSetMetadata<'a>(
993 Val: &'a Value,
994 KindID: MetadataKindId,
995 Metadata: &'a Metadata,
996 );
997 pub(crate) safe fn LLVMValueAsMetadata(Node: &Value) -> &Metadata;
998
999 pub(crate) fn LLVMConstNull(Ty: &Type) -> &Value;
1001 pub(crate) fn LLVMGetUndef(Ty: &Type) -> &Value;
1002 pub(crate) fn LLVMGetPoison(Ty: &Type) -> &Value;
1003
1004 pub(crate) fn LLVMMDStringInContext2(
1006 C: &Context,
1007 Str: *const c_char,
1008 SLen: size_t,
1009 ) -> &Metadata;
1010 pub(crate) fn LLVMMDNodeInContext2<'a>(
1011 C: &'a Context,
1012 Vals: *const &'a Metadata,
1013 Count: size_t,
1014 ) -> &'a Metadata;
1015 pub(crate) fn LLVMAddNamedMetadataOperand<'a>(
1016 M: &'a Module,
1017 Name: *const c_char,
1018 Val: &'a Value,
1019 );
1020 pub(crate) fn LLVMReplaceMDNodeOperandWith(Val: &Value, index: u32, replacement: &Metadata);
1021
1022 pub(crate) fn LLVMConstInt(IntTy: &Type, N: c_ulonglong, SignExtend: Bool) -> &Value;
1024 pub(crate) fn LLVMConstIntOfArbitraryPrecision(
1025 IntTy: &Type,
1026 Wn: c_uint,
1027 Ws: *const u64,
1028 ) -> &Value;
1029 pub(crate) fn LLVMConstReal(RealTy: &Type, N: f64) -> &Value;
1030
1031 pub(crate) fn LLVMConstArray2<'a>(
1033 ElementTy: &'a Type,
1034 ConstantVals: *const &'a Value,
1035 Length: u64,
1036 ) -> &'a Value;
1037 pub(crate) fn LLVMArrayType2(ElementType: &Type, ElementCount: u64) -> &Type;
1038 pub(crate) fn LLVMConstStringInContext2(
1039 C: &Context,
1040 Str: *const c_char,
1041 Length: size_t,
1042 DontNullTerminate: Bool,
1043 ) -> &Value;
1044 pub(crate) fn LLVMConstStructInContext<'a>(
1045 C: &'a Context,
1046 ConstantVals: *const &'a Value,
1047 Count: c_uint,
1048 Packed: Bool,
1049 ) -> &'a Value;
1050 pub(crate) fn LLVMConstNamedStruct<'a>(
1051 StructTy: &'a Type,
1052 ConstantVals: *const &'a Value,
1053 Count: c_uint,
1054 ) -> &'a Value;
1055 pub(crate) fn LLVMConstVector(ScalarConstantVals: *const &Value, Size: c_uint) -> &Value;
1056
1057 pub(crate) fn LLVMConstInBoundsGEP2<'a>(
1059 ty: &'a Type,
1060 ConstantVal: &'a Value,
1061 ConstantIndices: *const &'a Value,
1062 NumIndices: c_uint,
1063 ) -> &'a Value;
1064 pub(crate) fn LLVMConstPtrToInt<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1065 pub(crate) fn LLVMConstIntToPtr<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1066 pub(crate) fn LLVMConstBitCast<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1067 pub(crate) fn LLVMConstPointerCast<'a>(ConstantVal: &'a Value, ToType: &'a Type) -> &'a Value;
1068 pub(crate) fn LLVMGetAggregateElement(ConstantVal: &Value, Idx: c_uint) -> Option<&Value>;
1069 pub(crate) fn LLVMGetConstOpcode(ConstantVal: &Value) -> Opcode;
1070 pub(crate) fn LLVMIsAConstantExpr(Val: &Value) -> Option<&Value>;
1071
1072 pub(crate) fn LLVMIsDeclaration(Global: &Value) -> Bool;
1074 pub(crate) fn LLVMGetLinkage(Global: &Value) -> RawEnum<Linkage>;
1075 pub(crate) fn LLVMSetLinkage(Global: &Value, RustLinkage: Linkage);
1076 pub(crate) fn LLVMSetSection(Global: &Value, Section: *const c_char);
1077 pub(crate) fn LLVMGetVisibility(Global: &Value) -> RawEnum<Visibility>;
1078 pub(crate) fn LLVMSetVisibility(Global: &Value, Viz: Visibility);
1079 pub(crate) fn LLVMGetAlignment(Global: &Value) -> c_uint;
1080 pub(crate) fn LLVMSetAlignment(Global: &Value, Bytes: c_uint);
1081 pub(crate) fn LLVMSetDLLStorageClass(V: &Value, C: DLLStorageClass);
1082 pub(crate) fn LLVMGlobalGetValueType(Global: &Value) -> &Type;
1083
1084 pub(crate) safe fn LLVMIsAGlobalVariable(GlobalVar: &Value) -> Option<&Value>;
1086 pub(crate) fn LLVMAddGlobal<'a>(M: &'a Module, Ty: &'a Type, Name: *const c_char) -> &'a Value;
1087 pub(crate) fn LLVMGetNamedGlobal(M: &Module, Name: *const c_char) -> Option<&Value>;
1088 pub(crate) fn LLVMGetFirstGlobal(M: &Module) -> Option<&Value>;
1089 pub(crate) fn LLVMGetNextGlobal(GlobalVar: &Value) -> Option<&Value>;
1090 pub(crate) fn LLVMDeleteGlobal(GlobalVar: &Value);
1091 pub(crate) safe fn LLVMGetInitializer(GlobalVar: &Value) -> Option<&Value>;
1092 pub(crate) fn LLVMSetInitializer<'a>(GlobalVar: &'a Value, ConstantVal: &'a Value);
1093 pub(crate) safe fn LLVMIsThreadLocal(GlobalVar: &Value) -> Bool;
1094 pub(crate) fn LLVMSetThreadLocalMode(GlobalVar: &Value, Mode: ThreadLocalMode);
1095 pub(crate) safe fn LLVMIsGlobalConstant(GlobalVar: &Value) -> Bool;
1096 pub(crate) safe fn LLVMSetGlobalConstant(GlobalVar: &Value, IsConstant: Bool);
1097 pub(crate) safe fn LLVMSetTailCall(CallInst: &Value, IsTailCall: Bool);
1098 pub(crate) safe fn LLVMSetTailCallKind(CallInst: &Value, kind: TailCallKind);
1099 pub(crate) safe fn LLVMSetExternallyInitialized(GlobalVar: &Value, IsExtInit: Bool);
1100
1101 pub(crate) fn LLVMAddAlias2<'ll>(
1103 M: &'ll Module,
1104 ValueTy: &Type,
1105 AddressSpace: c_uint,
1106 Aliasee: &Value,
1107 Name: *const c_char,
1108 ) -> &'ll Value;
1109 pub(crate) fn LLVMGetFirstGlobalAlias(M: &Module) -> Option<&Value>;
1110 pub(crate) fn LLVMGetNextGlobalAlias(GlobalAlias: &Value) -> Option<&Value>;
1111
1112 pub(crate) fn LLVMCreateStringAttribute(
1114 C: &Context,
1115 Name: *const c_char,
1116 NameLen: c_uint,
1117 Value: *const c_char,
1118 ValueLen: c_uint,
1119 ) -> &Attribute;
1120
1121 pub(crate) fn LLVMSetFunctionCallConv(Fn: &Value, CC: c_uint);
1123 pub(crate) fn LLVMAddFunction<'a>(
1124 Mod: &'a Module,
1125 Name: *const c_char,
1126 FunctionTy: &'a Type,
1127 ) -> &'a Value;
1128 pub(crate) fn LLVMDeleteFunction(Fn: &Value);
1129
1130 pub(crate) fn LLVMLookupIntrinsicID(Name: *const c_char, NameLen: size_t) -> c_uint;
1132 pub(crate) fn LLVMIntrinsicIsOverloaded(ID: NonZero<c_uint>) -> Bool;
1133 pub(crate) fn LLVMGetIntrinsicDeclaration<'a>(
1134 Mod: &'a Module,
1135 ID: NonZero<c_uint>,
1136 ParamTypes: *const &'a Type,
1137 ParamCount: size_t,
1138 ) -> &'a Value;
1139 pub(crate) fn LLVMRustUpgradeIntrinsicFunction<'a>(
1140 Fn: &'a Value,
1141 NewFn: &mut Option<&'a Value>,
1142 ) -> bool;
1143 pub(crate) fn LLVMRustIsTargetIntrinsic(ID: NonZero<c_uint>) -> bool;
1144
1145 pub(crate) fn LLVMIsAArgument(Val: &Value) -> Option<&Value>;
1147 pub(crate) safe fn LLVMCountParams(Fn: &Value) -> c_uint;
1148 pub(crate) fn LLVMGetParam(Fn: &Value, Index: c_uint) -> &Value;
1149
1150 pub(crate) fn LLVMGetBasicBlockParent(BB: &BasicBlock) -> &Value;
1152 pub(crate) fn LLVMAppendBasicBlockInContext<'a>(
1153 C: &'a Context,
1154 Fn: &'a Value,
1155 Name: *const c_char,
1156 ) -> &'a BasicBlock;
1157
1158 pub(crate) fn LLVMIsAInstruction(Val: &Value) -> Option<&Value>;
1160 pub(crate) fn LLVMGetFirstBasicBlock(Fn: &Value) -> &BasicBlock;
1161 pub(crate) fn LLVMGetOperand(Val: &Value, Index: c_uint) -> Option<&Value>;
1162
1163 pub(crate) fn LLVMSetInstructionCallConv(Instr: &Value, CC: c_uint);
1165
1166 pub(crate) fn LLVMSetVolatile(MemoryAccessInst: &Value, volatile: Bool);
1168 pub(crate) fn LLVMSetOrdering(MemoryAccessInst: &Value, Ordering: AtomicOrdering);
1169
1170 pub(crate) fn LLVMAddIncoming<'a>(
1172 PhiNode: &'a Value,
1173 IncomingValues: *const &'a Value,
1174 IncomingBlocks: *const &'a BasicBlock,
1175 Count: c_uint,
1176 );
1177
1178 pub(crate) fn LLVMCreateBuilderInContext(C: &Context) -> &mut Builder<'_>;
1180 pub(crate) fn LLVMPositionBuilderAtEnd<'a>(Builder: &Builder<'a>, Block: &'a BasicBlock);
1181 pub(crate) fn LLVMGetInsertBlock<'a>(Builder: &Builder<'a>) -> &'a BasicBlock;
1182 pub(crate) fn LLVMDisposeBuilder<'a>(Builder: &'a mut Builder<'a>);
1183
1184 pub(crate) fn LLVMSetCurrentDebugLocation2<'a>(Builder: &Builder<'a>, Loc: *const Metadata);
1186 pub(crate) fn LLVMGetCurrentDebugLocation2<'a>(Builder: &Builder<'a>) -> Option<&'a Metadata>;
1187
1188 pub(crate) safe fn LLVMBuildRetVoid<'a>(B: &Builder<'a>) -> &'a Value;
1190 pub(crate) fn LLVMBuildRet<'a>(B: &Builder<'a>, V: &'a Value) -> &'a Value;
1191 pub(crate) fn LLVMBuildBr<'a>(B: &Builder<'a>, Dest: &'a BasicBlock) -> &'a Value;
1192 pub(crate) fn LLVMBuildCondBr<'a>(
1193 B: &Builder<'a>,
1194 If: &'a Value,
1195 Then: &'a BasicBlock,
1196 Else: &'a BasicBlock,
1197 ) -> &'a Value;
1198 pub(crate) fn LLVMBuildSwitch<'a>(
1199 B: &Builder<'a>,
1200 V: &'a Value,
1201 Else: &'a BasicBlock,
1202 NumCases: c_uint,
1203 ) -> &'a Value;
1204 pub(crate) fn LLVMBuildLandingPad<'a>(
1205 B: &Builder<'a>,
1206 Ty: &'a Type,
1207 PersFn: Option<&'a Value>,
1208 NumClauses: c_uint,
1209 Name: *const c_char,
1210 ) -> &'a Value;
1211 pub(crate) fn LLVMBuildResume<'a>(B: &Builder<'a>, Exn: &'a Value) -> &'a Value;
1212 pub(crate) fn LLVMBuildUnreachable<'a>(B: &Builder<'a>) -> &'a Value;
1213
1214 pub(crate) fn LLVMBuildCleanupPad<'a>(
1215 B: &Builder<'a>,
1216 ParentPad: Option<&'a Value>,
1217 Args: *const &'a Value,
1218 NumArgs: c_uint,
1219 Name: *const c_char,
1220 ) -> Option<&'a Value>;
1221 pub(crate) fn LLVMBuildCleanupRet<'a>(
1222 B: &Builder<'a>,
1223 CleanupPad: &'a Value,
1224 BB: Option<&'a BasicBlock>,
1225 ) -> Option<&'a Value>;
1226 pub(crate) fn LLVMBuildCatchPad<'a>(
1227 B: &Builder<'a>,
1228 ParentPad: &'a Value,
1229 Args: *const &'a Value,
1230 NumArgs: c_uint,
1231 Name: *const c_char,
1232 ) -> Option<&'a Value>;
1233 pub(crate) fn LLVMBuildCatchRet<'a>(
1234 B: &Builder<'a>,
1235 CatchPad: &'a Value,
1236 BB: &'a BasicBlock,
1237 ) -> Option<&'a Value>;
1238 pub(crate) fn LLVMBuildCatchSwitch<'a>(
1239 Builder: &Builder<'a>,
1240 ParentPad: Option<&'a Value>,
1241 UnwindBB: Option<&'a BasicBlock>,
1242 NumHandlers: c_uint,
1243 Name: *const c_char,
1244 ) -> Option<&'a Value>;
1245 pub(crate) fn LLVMAddHandler<'a>(CatchSwitch: &'a Value, Dest: &'a BasicBlock);
1246 pub(crate) fn LLVMSetPersonalityFn<'a>(Func: &'a Value, Pers: &'a Value);
1247
1248 pub(crate) fn LLVMAddCase<'a>(Switch: &'a Value, OnVal: &'a Value, Dest: &'a BasicBlock);
1250
1251 pub(crate) fn LLVMAddClause<'a>(LandingPad: &'a Value, ClauseVal: &'a Value);
1253
1254 pub(crate) fn LLVMSetCleanup(LandingPad: &Value, Val: Bool);
1256
1257 pub(crate) fn LLVMBuildAdd<'a>(
1259 B: &Builder<'a>,
1260 LHS: &'a Value,
1261 RHS: &'a Value,
1262 Name: *const c_char,
1263 ) -> &'a Value;
1264 pub(crate) fn LLVMBuildFAdd<'a>(
1265 B: &Builder<'a>,
1266 LHS: &'a Value,
1267 RHS: &'a Value,
1268 Name: *const c_char,
1269 ) -> &'a Value;
1270 pub(crate) fn LLVMBuildSub<'a>(
1271 B: &Builder<'a>,
1272 LHS: &'a Value,
1273 RHS: &'a Value,
1274 Name: *const c_char,
1275 ) -> &'a Value;
1276 pub(crate) fn LLVMBuildFSub<'a>(
1277 B: &Builder<'a>,
1278 LHS: &'a Value,
1279 RHS: &'a Value,
1280 Name: *const c_char,
1281 ) -> &'a Value;
1282 pub(crate) fn LLVMBuildMul<'a>(
1283 B: &Builder<'a>,
1284 LHS: &'a Value,
1285 RHS: &'a Value,
1286 Name: *const c_char,
1287 ) -> &'a Value;
1288 pub(crate) fn LLVMBuildFMul<'a>(
1289 B: &Builder<'a>,
1290 LHS: &'a Value,
1291 RHS: &'a Value,
1292 Name: *const c_char,
1293 ) -> &'a Value;
1294 pub(crate) fn LLVMBuildUDiv<'a>(
1295 B: &Builder<'a>,
1296 LHS: &'a Value,
1297 RHS: &'a Value,
1298 Name: *const c_char,
1299 ) -> &'a Value;
1300 pub(crate) fn LLVMBuildExactUDiv<'a>(
1301 B: &Builder<'a>,
1302 LHS: &'a Value,
1303 RHS: &'a Value,
1304 Name: *const c_char,
1305 ) -> &'a Value;
1306 pub(crate) fn LLVMBuildSDiv<'a>(
1307 B: &Builder<'a>,
1308 LHS: &'a Value,
1309 RHS: &'a Value,
1310 Name: *const c_char,
1311 ) -> &'a Value;
1312 pub(crate) fn LLVMBuildExactSDiv<'a>(
1313 B: &Builder<'a>,
1314 LHS: &'a Value,
1315 RHS: &'a Value,
1316 Name: *const c_char,
1317 ) -> &'a Value;
1318 pub(crate) fn LLVMBuildFDiv<'a>(
1319 B: &Builder<'a>,
1320 LHS: &'a Value,
1321 RHS: &'a Value,
1322 Name: *const c_char,
1323 ) -> &'a Value;
1324 pub(crate) fn LLVMBuildURem<'a>(
1325 B: &Builder<'a>,
1326 LHS: &'a Value,
1327 RHS: &'a Value,
1328 Name: *const c_char,
1329 ) -> &'a Value;
1330 pub(crate) fn LLVMBuildSRem<'a>(
1331 B: &Builder<'a>,
1332 LHS: &'a Value,
1333 RHS: &'a Value,
1334 Name: *const c_char,
1335 ) -> &'a Value;
1336 pub(crate) fn LLVMBuildFRem<'a>(
1337 B: &Builder<'a>,
1338 LHS: &'a Value,
1339 RHS: &'a Value,
1340 Name: *const c_char,
1341 ) -> &'a Value;
1342 pub(crate) fn LLVMBuildShl<'a>(
1343 B: &Builder<'a>,
1344 LHS: &'a Value,
1345 RHS: &'a Value,
1346 Name: *const c_char,
1347 ) -> &'a Value;
1348 pub(crate) fn LLVMBuildLShr<'a>(
1349 B: &Builder<'a>,
1350 LHS: &'a Value,
1351 RHS: &'a Value,
1352 Name: *const c_char,
1353 ) -> &'a Value;
1354 pub(crate) fn LLVMBuildAShr<'a>(
1355 B: &Builder<'a>,
1356 LHS: &'a Value,
1357 RHS: &'a Value,
1358 Name: *const c_char,
1359 ) -> &'a Value;
1360 pub(crate) fn LLVMBuildNSWAdd<'a>(
1361 B: &Builder<'a>,
1362 LHS: &'a Value,
1363 RHS: &'a Value,
1364 Name: *const c_char,
1365 ) -> &'a Value;
1366 pub(crate) fn LLVMBuildNUWAdd<'a>(
1367 B: &Builder<'a>,
1368 LHS: &'a Value,
1369 RHS: &'a Value,
1370 Name: *const c_char,
1371 ) -> &'a Value;
1372 pub(crate) fn LLVMBuildNSWSub<'a>(
1373 B: &Builder<'a>,
1374 LHS: &'a Value,
1375 RHS: &'a Value,
1376 Name: *const c_char,
1377 ) -> &'a Value;
1378 pub(crate) fn LLVMBuildNUWSub<'a>(
1379 B: &Builder<'a>,
1380 LHS: &'a Value,
1381 RHS: &'a Value,
1382 Name: *const c_char,
1383 ) -> &'a Value;
1384 pub(crate) fn LLVMBuildNSWMul<'a>(
1385 B: &Builder<'a>,
1386 LHS: &'a Value,
1387 RHS: &'a Value,
1388 Name: *const c_char,
1389 ) -> &'a Value;
1390 pub(crate) fn LLVMBuildNUWMul<'a>(
1391 B: &Builder<'a>,
1392 LHS: &'a Value,
1393 RHS: &'a Value,
1394 Name: *const c_char,
1395 ) -> &'a Value;
1396 pub(crate) fn LLVMBuildAnd<'a>(
1397 B: &Builder<'a>,
1398 LHS: &'a Value,
1399 RHS: &'a Value,
1400 Name: *const c_char,
1401 ) -> &'a Value;
1402 pub(crate) fn LLVMBuildOr<'a>(
1403 B: &Builder<'a>,
1404 LHS: &'a Value,
1405 RHS: &'a Value,
1406 Name: *const c_char,
1407 ) -> &'a Value;
1408 pub(crate) fn LLVMBuildXor<'a>(
1409 B: &Builder<'a>,
1410 LHS: &'a Value,
1411 RHS: &'a Value,
1412 Name: *const c_char,
1413 ) -> &'a Value;
1414 pub(crate) fn LLVMBuildNeg<'a>(B: &Builder<'a>, V: &'a Value, Name: *const c_char)
1415 -> &'a Value;
1416 pub(crate) fn LLVMBuildFNeg<'a>(
1417 B: &Builder<'a>,
1418 V: &'a Value,
1419 Name: *const c_char,
1420 ) -> &'a Value;
1421 pub(crate) fn LLVMBuildNot<'a>(B: &Builder<'a>, V: &'a Value, Name: *const c_char)
1422 -> &'a Value;
1423
1424 pub(crate) fn LLVMSetIsDisjoint(Instr: &Value, IsDisjoint: Bool);
1426 pub(crate) fn LLVMSetNUW(ArithInst: &Value, HasNUW: Bool);
1427 pub(crate) fn LLVMSetNSW(ArithInst: &Value, HasNSW: Bool);
1428
1429 pub(crate) fn LLVMBuildAlloca<'a>(
1431 B: &Builder<'a>,
1432 Ty: &'a Type,
1433 Name: *const c_char,
1434 ) -> &'a Value;
1435 pub(crate) fn LLVMBuildLoad2<'a>(
1436 B: &Builder<'a>,
1437 Ty: &'a Type,
1438 PointerVal: &'a Value,
1439 Name: *const c_char,
1440 ) -> &'a Value;
1441
1442 pub(crate) fn LLVMBuildStore<'a>(B: &Builder<'a>, Val: &'a Value, Ptr: &'a Value) -> &'a Value;
1443
1444 pub(crate) fn LLVMBuildGEPWithNoWrapFlags<'a>(
1445 B: &Builder<'a>,
1446 Ty: &'a Type,
1447 Pointer: &'a Value,
1448 Indices: *const &'a Value,
1449 NumIndices: c_uint,
1450 Name: *const c_char,
1451 Flags: GEPNoWrapFlags,
1452 ) -> &'a Value;
1453
1454 pub(crate) fn LLVMBuildTrunc<'a>(
1456 B: &Builder<'a>,
1457 Val: &'a Value,
1458 DestTy: &'a Type,
1459 Name: *const c_char,
1460 ) -> &'a Value;
1461 pub(crate) fn LLVMBuildZExt<'a>(
1462 B: &Builder<'a>,
1463 Val: &'a Value,
1464 DestTy: &'a Type,
1465 Name: *const c_char,
1466 ) -> &'a Value;
1467 pub(crate) fn LLVMBuildSExt<'a>(
1468 B: &Builder<'a>,
1469 Val: &'a Value,
1470 DestTy: &'a Type,
1471 Name: *const c_char,
1472 ) -> &'a Value;
1473 pub(crate) fn LLVMBuildFPToUI<'a>(
1474 B: &Builder<'a>,
1475 Val: &'a Value,
1476 DestTy: &'a Type,
1477 Name: *const c_char,
1478 ) -> &'a Value;
1479 pub(crate) fn LLVMBuildFPToSI<'a>(
1480 B: &Builder<'a>,
1481 Val: &'a Value,
1482 DestTy: &'a Type,
1483 Name: *const c_char,
1484 ) -> &'a Value;
1485 pub(crate) fn LLVMBuildUIToFP<'a>(
1486 B: &Builder<'a>,
1487 Val: &'a Value,
1488 DestTy: &'a Type,
1489 Name: *const c_char,
1490 ) -> &'a Value;
1491 pub(crate) fn LLVMBuildSIToFP<'a>(
1492 B: &Builder<'a>,
1493 Val: &'a Value,
1494 DestTy: &'a Type,
1495 Name: *const c_char,
1496 ) -> &'a Value;
1497 pub(crate) fn LLVMBuildFPTrunc<'a>(
1498 B: &Builder<'a>,
1499 Val: &'a Value,
1500 DestTy: &'a Type,
1501 Name: *const c_char,
1502 ) -> &'a Value;
1503 pub(crate) fn LLVMBuildFPExt<'a>(
1504 B: &Builder<'a>,
1505 Val: &'a Value,
1506 DestTy: &'a Type,
1507 Name: *const c_char,
1508 ) -> &'a Value;
1509 pub(crate) fn LLVMBuildPtrToInt<'a>(
1510 B: &Builder<'a>,
1511 Val: &'a Value,
1512 DestTy: &'a Type,
1513 Name: *const c_char,
1514 ) -> &'a Value;
1515 pub(crate) fn LLVMBuildIntToPtr<'a>(
1516 B: &Builder<'a>,
1517 Val: &'a Value,
1518 DestTy: &'a Type,
1519 Name: *const c_char,
1520 ) -> &'a Value;
1521 pub(crate) fn LLVMBuildBitCast<'a>(
1522 B: &Builder<'a>,
1523 Val: &'a Value,
1524 DestTy: &'a Type,
1525 Name: *const c_char,
1526 ) -> &'a Value;
1527 pub(crate) fn LLVMBuildPointerCast<'a>(
1528 B: &Builder<'a>,
1529 Val: &'a Value,
1530 DestTy: &'a Type,
1531 Name: *const c_char,
1532 ) -> &'a Value;
1533 pub(crate) fn LLVMBuildIntCast2<'a>(
1534 B: &Builder<'a>,
1535 Val: &'a Value,
1536 DestTy: &'a Type,
1537 IsSigned: Bool,
1538 Name: *const c_char,
1539 ) -> &'a Value;
1540
1541 pub(crate) fn LLVMBuildICmp<'a>(
1543 B: &Builder<'a>,
1544 Op: c_uint,
1545 LHS: &'a Value,
1546 RHS: &'a Value,
1547 Name: *const c_char,
1548 ) -> &'a Value;
1549 pub(crate) fn LLVMBuildFCmp<'a>(
1550 B: &Builder<'a>,
1551 Op: c_uint,
1552 LHS: &'a Value,
1553 RHS: &'a Value,
1554 Name: *const c_char,
1555 ) -> &'a Value;
1556
1557 pub(crate) fn LLVMBuildPhi<'a>(B: &Builder<'a>, Ty: &'a Type, Name: *const c_char)
1559 -> &'a Value;
1560 pub(crate) fn LLVMBuildSelect<'a>(
1561 B: &Builder<'a>,
1562 If: &'a Value,
1563 Then: &'a Value,
1564 Else: &'a Value,
1565 Name: *const c_char,
1566 ) -> &'a Value;
1567 pub(crate) fn LLVMBuildVAArg<'a>(
1568 B: &Builder<'a>,
1569 list: &'a Value,
1570 Ty: &'a Type,
1571 Name: *const c_char,
1572 ) -> &'a Value;
1573 pub(crate) fn LLVMBuildExtractElement<'a>(
1574 B: &Builder<'a>,
1575 VecVal: &'a Value,
1576 Index: &'a Value,
1577 Name: *const c_char,
1578 ) -> &'a Value;
1579 pub(crate) fn LLVMBuildInsertElement<'a>(
1580 B: &Builder<'a>,
1581 VecVal: &'a Value,
1582 EltVal: &'a Value,
1583 Index: &'a Value,
1584 Name: *const c_char,
1585 ) -> &'a Value;
1586 pub(crate) fn LLVMBuildShuffleVector<'a>(
1587 B: &Builder<'a>,
1588 V1: &'a Value,
1589 V2: &'a Value,
1590 Mask: &'a Value,
1591 Name: *const c_char,
1592 ) -> &'a Value;
1593 pub(crate) fn LLVMBuildExtractValue<'a>(
1594 B: &Builder<'a>,
1595 AggVal: &'a Value,
1596 Index: c_uint,
1597 Name: *const c_char,
1598 ) -> &'a Value;
1599 pub(crate) fn LLVMBuildInsertValue<'a>(
1600 B: &Builder<'a>,
1601 AggVal: &'a Value,
1602 EltVal: &'a Value,
1603 Index: c_uint,
1604 Name: *const c_char,
1605 ) -> &'a Value;
1606
1607 pub(crate) fn LLVMBuildAtomicCmpXchg<'a>(
1609 B: &Builder<'a>,
1610 LHS: &'a Value,
1611 CMP: &'a Value,
1612 RHS: &'a Value,
1613 Order: AtomicOrdering,
1614 FailureOrder: AtomicOrdering,
1615 SingleThreaded: Bool,
1616 ) -> &'a Value;
1617
1618 pub(crate) fn LLVMSetWeak(CmpXchgInst: &Value, IsWeak: Bool);
1619
1620 pub(crate) fn LLVMBuildAtomicRMW<'a>(
1621 B: &Builder<'a>,
1622 Op: AtomicRmwBinOp,
1623 LHS: &'a Value,
1624 RHS: &'a Value,
1625 Order: AtomicOrdering,
1626 SingleThreaded: Bool,
1627 ) -> &'a Value;
1628
1629 pub(crate) fn LLVMBuildFence<'a>(
1630 B: &Builder<'a>,
1631 Order: AtomicOrdering,
1632 SingleThreaded: Bool,
1633 Name: *const c_char,
1634 ) -> &'a Value;
1635
1636 pub(crate) fn LLVMWriteBitcodeToFile(M: &Module, Path: *const c_char) -> c_int;
1638
1639 pub(crate) fn LLVMCreatePassManager<'a>() -> &'a mut PassManager<'a>;
1641
1642 pub(crate) fn LLVMAddAnalysisPasses<'a>(T: &'a TargetMachine, PM: &PassManager<'a>);
1643
1644 pub(crate) fn LLVMGetHostCPUFeatures() -> *mut c_char;
1645
1646 pub(crate) fn LLVMDisposeMessage(message: *mut c_char);
1647
1648 pub(crate) fn LLVMIsMultithreaded() -> Bool;
1649
1650 pub(crate) fn LLVMStructCreateNamed(C: &Context, Name: *const c_char) -> &Type;
1651
1652 pub(crate) fn LLVMStructSetBody<'a>(
1653 StructTy: &'a Type,
1654 ElementTypes: *const &'a Type,
1655 ElementCount: c_uint,
1656 Packed: Bool,
1657 );
1658
1659 pub(crate) fn LLVMCountStructElementTypes(StructTy: &Type) -> c_uint;
1660 pub(crate) fn LLVMGetStructElementTypes<'a>(StructTy: &'a Type, Dest: *mut &'a Type);
1661
1662 pub(crate) safe fn LLVMMetadataAsValue<'a>(C: &'a Context, MD: &'a Metadata) -> &'a Value;
1663
1664 pub(crate) safe fn LLVMSetUnnamedAddress(Global: &Value, UnnamedAddr: UnnamedAddr);
1665
1666 pub(crate) fn LLVMIsAConstantInt(value_ref: &Value) -> Option<&ConstantInt>;
1667
1668 pub(crate) fn LLVMGetOrInsertComdat(M: &Module, Name: *const c_char) -> &Comdat;
1669 pub(crate) fn LLVMSetComdat(V: &Value, C: &Comdat);
1670
1671 pub(crate) fn LLVMCreateOperandBundle(
1672 Tag: *const c_char,
1673 TagLen: size_t,
1674 Args: *const &'_ Value,
1675 NumArgs: c_uint,
1676 ) -> *mut OperandBundle<'_>;
1677 pub(crate) fn LLVMDisposeOperandBundle(Bundle: ptr::NonNull<OperandBundle<'_>>);
1678
1679 pub(crate) fn LLVMBuildCallWithOperandBundles<'a>(
1680 B: &Builder<'a>,
1681 Ty: &'a Type,
1682 Fn: &'a Value,
1683 Args: *const &'a Value,
1684 NumArgs: c_uint,
1685 Bundles: *const &OperandBundle<'a>,
1686 NumBundles: c_uint,
1687 Name: *const c_char,
1688 ) -> &'a Value;
1689 pub(crate) fn LLVMBuildInvokeWithOperandBundles<'a>(
1690 B: &Builder<'a>,
1691 Ty: &'a Type,
1692 Fn: &'a Value,
1693 Args: *const &'a Value,
1694 NumArgs: c_uint,
1695 Then: &'a BasicBlock,
1696 Catch: &'a BasicBlock,
1697 Bundles: *const &OperandBundle<'a>,
1698 NumBundles: c_uint,
1699 Name: *const c_char,
1700 ) -> &'a Value;
1701 pub(crate) fn LLVMBuildCallBr<'a>(
1702 B: &Builder<'a>,
1703 Ty: &'a Type,
1704 Fn: &'a Value,
1705 DefaultDest: &'a BasicBlock,
1706 IndirectDests: *const &'a BasicBlock,
1707 NumIndirectDests: c_uint,
1708 Args: *const &'a Value,
1709 NumArgs: c_uint,
1710 Bundles: *const &OperandBundle<'a>,
1711 NumBundles: c_uint,
1712 Name: *const c_char,
1713 ) -> &'a Value;
1714}
1715
1716#[cfg(feature = "llvm_offload")]
1717pub(crate) use self::Offload::*;
1718
1719#[cfg(feature = "llvm_offload")]
1720mod Offload {
1721 use super::*;
1722 unsafe extern "C" {
1723 pub(crate) fn LLVMRustBundleImages<'a>(
1725 M: &'a Module,
1726 TM: &'a TargetMachine,
1727 device_bin: *const c_char,
1728 ) -> bool;
1729 pub(crate) unsafe fn LLVMRustOffloadEmbedBufferInModule<'a>(
1730 _M: &'a Module,
1731 _device_bin: *const c_char,
1732 ) -> bool;
1733 pub(crate) fn LLVMRustOffloadMapper<'a>(
1734 OldFn: &'a Value,
1735 NewFn: &'a Value,
1736 RebuiltArgs: *const &Value,
1737 );
1738 }
1739}
1740
1741#[cfg(not(feature = "llvm_offload"))]
1742pub(crate) use self::Offload_fallback::*;
1743
1744#[cfg(not(feature = "llvm_offload"))]
1745mod Offload_fallback {
1746 use super::*;
1747 #[allow(unused_unsafe)]
1750 pub(crate) unsafe fn LLVMRustBundleImages<'a>(
1751 _M: &'a Module,
1752 _TM: &'a TargetMachine,
1753 _device_bin: *const c_char,
1754 ) -> bool {
1755 {
::core::panicking::panic_fmt(format_args!("not implemented: {0}",
format_args!("This rustc version was not built with LLVM Offload support!")));
};unimplemented!("This rustc version was not built with LLVM Offload support!");
1756 }
1757 pub(crate) unsafe fn LLVMRustOffloadEmbedBufferInModule<'a>(
1758 _M: &'a Module,
1759 _device_bin: *const c_char,
1760 ) -> bool {
1761 {
::core::panicking::panic_fmt(format_args!("not implemented: {0}",
format_args!("This rustc version was not built with LLVM Offload support!")));
};unimplemented!("This rustc version was not built with LLVM Offload support!");
1762 }
1763 #[allow(unused_unsafe)]
1764 pub(crate) unsafe fn LLVMRustOffloadMapper<'a>(
1765 _OldFn: &'a Value,
1766 _NewFn: &'a Value,
1767 _RebuiltArgs: *const &Value,
1768 ) {
1769 {
::core::panicking::panic_fmt(format_args!("not implemented: {0}",
format_args!("This rustc version was not built with LLVM Offload support!")));
};unimplemented!("This rustc version was not built with LLVM Offload support!");
1770 }
1771}
1772
1773unsafe extern "C" {
1780 pub(crate) fn LLVMCreateDIBuilder<'ll>(M: &'ll Module) -> *mut DIBuilder<'ll>;
1781 pub(crate) fn LLVMDisposeDIBuilder<'ll>(Builder: ptr::NonNull<DIBuilder<'ll>>);
1782
1783 pub(crate) fn LLVMDIBuilderFinalize<'ll>(Builder: &DIBuilder<'ll>);
1784
1785 pub(crate) fn LLVMDIBuilderCreateNameSpace<'ll>(
1786 Builder: &DIBuilder<'ll>,
1787 ParentScope: Option<&'ll Metadata>,
1788 Name: *const c_uchar, NameLen: size_t,
1790 ExportSymbols: llvm::Bool,
1791 ) -> &'ll Metadata;
1792
1793 pub(crate) fn LLVMDIBuilderCreateLexicalBlock<'ll>(
1794 Builder: &DIBuilder<'ll>,
1795 Scope: &'ll Metadata,
1796 File: &'ll Metadata,
1797 Line: c_uint,
1798 Column: c_uint,
1799 ) -> &'ll Metadata;
1800
1801 pub(crate) fn LLVMDIBuilderCreateLexicalBlockFile<'ll>(
1802 Builder: &DIBuilder<'ll>,
1803 Scope: &'ll Metadata,
1804 File: &'ll Metadata,
1805 Discriminator: c_uint, ) -> &'ll Metadata;
1807
1808 pub(crate) fn LLVMDIBuilderCreateDebugLocation<'ll>(
1809 Ctx: &'ll Context,
1810 Line: c_uint,
1811 Column: c_uint,
1812 Scope: &'ll Metadata,
1813 InlinedAt: Option<&'ll Metadata>,
1814 ) -> &'ll Metadata;
1815
1816 pub(crate) fn LLVMDIBuilderCreateSubroutineType<'ll>(
1817 Builder: &DIBuilder<'ll>,
1818 File: Option<&'ll Metadata>, ParameterTypes: *const Option<&'ll Metadata>,
1820 NumParameterTypes: c_uint,
1821 Flags: DIFlags, ) -> &'ll Metadata;
1823
1824 pub(crate) fn LLVMDIBuilderCreateEnumeratorOfArbitraryPrecision<'ll>(
1825 Builder: &DIBuilder<'ll>,
1826 Name: *const c_uchar, NameLen: size_t,
1828 SizeInBits: u64,
1829 Words: *const u64, IsUnsigned: llvm::Bool,
1831 ) -> &'ll Metadata;
1832
1833 pub(crate) fn LLVMDIBuilderCreateUnionType<'ll>(
1834 Builder: &DIBuilder<'ll>,
1835 Scope: Option<&'ll Metadata>,
1836 Name: *const c_uchar, NameLen: size_t,
1838 File: &'ll Metadata,
1839 LineNumber: c_uint,
1840 SizeInBits: u64,
1841 AlignInBits: u32,
1842 Flags: DIFlags,
1843 Elements: *const Option<&'ll Metadata>,
1844 NumElements: c_uint,
1845 RunTimeLang: c_uint, UniqueId: *const c_uchar, UniqueIdLen: size_t,
1848 ) -> &'ll Metadata;
1849
1850 pub(crate) fn LLVMDIBuilderCreateArrayType<'ll>(
1851 Builder: &DIBuilder<'ll>,
1852 Size: u64,
1853 Align: u32,
1854 Ty: &'ll Metadata,
1855 Subscripts: *const &'ll Metadata,
1856 NumSubscripts: c_uint,
1857 ) -> &'ll Metadata;
1858
1859 pub(crate) fn LLVMDIBuilderCreateBasicType<'ll>(
1860 Builder: &DIBuilder<'ll>,
1861 Name: *const c_uchar, NameLen: size_t,
1863 SizeInBits: u64,
1864 Encoding: c_uint, Flags: DIFlags, ) -> &'ll Metadata;
1867
1868 pub(crate) fn LLVMDIBuilderCreatePointerType<'ll>(
1869 Builder: &DIBuilder<'ll>,
1870 PointeeTy: &'ll Metadata,
1871 SizeInBits: u64,
1872 AlignInBits: u32,
1873 AddressSpace: c_uint, Name: *const c_uchar, NameLen: size_t,
1876 ) -> &'ll Metadata;
1877
1878 pub(crate) fn LLVMDIBuilderCreateStructType<'ll>(
1879 Builder: &DIBuilder<'ll>,
1880 Scope: Option<&'ll Metadata>,
1881 Name: *const c_uchar, NameLen: size_t,
1883 File: &'ll Metadata,
1884 LineNumber: c_uint,
1885 SizeInBits: u64,
1886 AlignInBits: u32,
1887 Flags: DIFlags,
1888 DerivedFrom: Option<&'ll Metadata>,
1889 Elements: *const Option<&'ll Metadata>,
1890 NumElements: c_uint,
1891 RunTimeLang: c_uint, VTableHolder: Option<&'ll Metadata>,
1893 UniqueId: *const c_uchar, UniqueIdLen: size_t,
1895 ) -> &'ll Metadata;
1896
1897 pub(crate) fn LLVMDIBuilderCreateMemberType<'ll>(
1898 Builder: &DIBuilder<'ll>,
1899 Scope: &'ll Metadata,
1900 Name: *const c_uchar, NameLen: size_t,
1902 File: &'ll Metadata,
1903 LineNo: c_uint,
1904 SizeInBits: u64,
1905 AlignInBits: u32,
1906 OffsetInBits: u64,
1907 Flags: DIFlags,
1908 Ty: &'ll Metadata,
1909 ) -> &'ll Metadata;
1910
1911 pub(crate) fn LLVMDIBuilderCreateStaticMemberType<'ll>(
1912 Builder: &DIBuilder<'ll>,
1913 Scope: &'ll Metadata,
1914 Name: *const c_uchar, NameLen: size_t,
1916 File: &'ll Metadata,
1917 LineNumber: c_uint,
1918 Type: &'ll Metadata,
1919 Flags: DIFlags,
1920 ConstantVal: Option<&'ll Value>,
1921 AlignInBits: u32,
1922 ) -> &'ll Metadata;
1923
1924 pub(crate) fn LLVMDIBuilderCreateQualifiedType<'ll>(
1927 Builder: &DIBuilder<'ll>,
1928 Tag: c_uint, Type: &'ll Metadata,
1930 ) -> &'ll Metadata;
1931
1932 pub(crate) fn LLVMDIBuilderCreateTypedef<'ll>(
1933 Builder: &DIBuilder<'ll>,
1934 Type: &'ll Metadata,
1935 Name: *const c_uchar, NameLen: size_t,
1937 File: &'ll Metadata,
1938 LineNo: c_uint,
1939 Scope: Option<&'ll Metadata>,
1940 AlignInBits: u32, ) -> &'ll Metadata;
1942
1943 pub(crate) fn LLVMDIBuilderGetOrCreateSubrange<'ll>(
1944 Builder: &DIBuilder<'ll>,
1945 LowerBound: i64,
1946 Count: i64,
1947 ) -> &'ll Metadata;
1948
1949 pub(crate) fn LLVMDIBuilderGetOrCreateArray<'ll>(
1950 Builder: &DIBuilder<'ll>,
1951 Data: *const Option<&'ll Metadata>,
1952 NumElements: size_t,
1953 ) -> &'ll Metadata;
1954
1955 pub(crate) fn LLVMDIBuilderCreateExpression<'ll>(
1956 Builder: &DIBuilder<'ll>,
1957 Addr: *const u64,
1958 Length: size_t,
1959 ) -> &'ll Metadata;
1960
1961 pub(crate) fn LLVMDIBuilderCreateGlobalVariableExpression<'ll>(
1962 Builder: &DIBuilder<'ll>,
1963 Scope: Option<&'ll Metadata>,
1964 Name: *const c_uchar, NameLen: size_t,
1966 Linkage: *const c_uchar, LinkLen: size_t,
1968 File: &'ll Metadata,
1969 LineNo: c_uint,
1970 Ty: &'ll Metadata,
1971 LocalToUnit: llvm::Bool,
1972 Expr: &'ll Metadata,
1973 Decl: Option<&'ll Metadata>,
1974 AlignInBits: u32,
1975 ) -> &'ll Metadata;
1976
1977 pub(crate) fn LLVMDIBuilderInsertDeclareRecordAtEnd<'ll>(
1978 Builder: &DIBuilder<'ll>,
1979 Storage: &'ll Value,
1980 VarInfo: &'ll Metadata,
1981 Expr: &'ll Metadata,
1982 DebugLoc: &'ll Metadata,
1983 Block: &'ll BasicBlock,
1984 ) -> &'ll DbgRecord;
1985
1986 pub(crate) fn LLVMDIBuilderInsertDbgValueRecordAtEnd<'ll>(
1987 Builder: &DIBuilder<'ll>,
1988 Val: &'ll Value,
1989 VarInfo: &'ll Metadata,
1990 Expr: &'ll Metadata,
1991 DebugLoc: &'ll Metadata,
1992 Block: &'ll BasicBlock,
1993 ) -> &'ll DbgRecord;
1994
1995 pub(crate) fn LLVMDIBuilderCreateAutoVariable<'ll>(
1996 Builder: &DIBuilder<'ll>,
1997 Scope: &'ll Metadata,
1998 Name: *const c_uchar, NameLen: size_t,
2000 File: &'ll Metadata,
2001 LineNo: c_uint,
2002 Ty: &'ll Metadata,
2003 AlwaysPreserve: llvm::Bool, Flags: DIFlags,
2005 AlignInBits: u32,
2006 ) -> &'ll Metadata;
2007
2008 pub(crate) fn LLVMDIBuilderCreateParameterVariable<'ll>(
2009 Builder: &DIBuilder<'ll>,
2010 Scope: &'ll Metadata,
2011 Name: *const c_uchar, NameLen: size_t,
2013 ArgNo: c_uint,
2014 File: &'ll Metadata,
2015 LineNo: c_uint,
2016 Ty: &'ll Metadata,
2017 AlwaysPreserve: llvm::Bool, Flags: DIFlags,
2019 ) -> &'ll Metadata;
2020}
2021
2022#[link(name = "llvm-wrapper", kind = "static")]
2023unsafe extern "C" {
2024 pub(crate) fn LLVMRustInstallErrorHandlers();
2025 pub(crate) fn LLVMRustDisableSystemDialogsOnCrash();
2026
2027 pub(crate) fn LLVMRustGlobalAddMetadata<'a>(
2030 Val: &'a Value,
2031 KindID: MetadataKindId,
2032 Metadata: &'a Metadata,
2033 );
2034 pub(crate) fn LLVMRustIsNonGVFunctionPointerTy(Val: &Value) -> bool;
2035 pub(crate) fn LLVMRustStripPointerCasts<'a>(Val: &'a Value) -> &'a Value;
2036
2037 pub(crate) fn LLVMRustConstIntGetZExtValue(ConstantVal: &ConstantInt, Value: &mut u64) -> bool;
2039 pub(crate) fn LLVMRustConstInt128Get(
2040 ConstantVal: &ConstantInt,
2041 SExt: bool,
2042 high: &mut u64,
2043 low: &mut u64,
2044 ) -> bool;
2045
2046 pub(crate) fn LLVMRustSetDSOLocal(Global: &Value, is_dso_local: bool);
2048
2049 pub(crate) fn LLVMRustGetOrInsertGlobal<'a>(
2051 M: &'a Module,
2052 Name: *const c_char,
2053 NameLen: size_t,
2054 T: &'a Type,
2055 ) -> &'a Value;
2056 pub(crate) fn LLVMRustGetOrInsertGlobalInAddrspace<'a>(
2057 M: &'a Module,
2058 Name: *const c_char,
2059 NameLen: size_t,
2060 T: &'a Type,
2061 AddressSpace: c_uint,
2062 ) -> &'a Value;
2063 pub(crate) fn LLVMRustGetNamedValue(
2064 M: &Module,
2065 Name: *const c_char,
2066 NameLen: size_t,
2067 ) -> Option<&Value>;
2068
2069 pub(crate) fn LLVMRustCreateAttrNoValue(C: &Context, attr: AttributeKind) -> &Attribute;
2071 pub(crate) fn LLVMRustCreateAlignmentAttr(C: &Context, bytes: u64) -> &Attribute;
2072 pub(crate) fn LLVMRustCreateDereferenceableAttr(C: &Context, bytes: u64) -> &Attribute;
2073 pub(crate) fn LLVMRustCreateDereferenceableOrNullAttr(C: &Context, bytes: u64) -> &Attribute;
2074 pub(crate) fn LLVMRustCreateByValAttr<'a>(C: &'a Context, ty: &'a Type) -> &'a Attribute;
2075 pub(crate) fn LLVMRustCreateStructRetAttr<'a>(C: &'a Context, ty: &'a Type) -> &'a Attribute;
2076 pub(crate) fn LLVMRustCreateElementTypeAttr<'a>(C: &'a Context, ty: &'a Type) -> &'a Attribute;
2077 pub(crate) fn LLVMRustCreateUWTableAttr(C: &Context, async_: bool) -> &Attribute;
2078 pub(crate) fn LLVMRustCreateAllocSizeAttr(C: &Context, size_arg: u32) -> &Attribute;
2079 pub(crate) fn LLVMRustCreateAllocKindAttr(C: &Context, size_arg: u64) -> &Attribute;
2080 pub(crate) fn LLVMRustCreateMemoryEffectsAttr(
2081 C: &Context,
2082 effects: MemoryEffects,
2083 ) -> &Attribute;
2084 pub(crate) fn LLVMRustCreateRangeAttribute(
2091 C: &Context,
2092 NumBits: c_uint,
2093 LowerWords: *const u64,
2094 UpperWords: *const u64,
2095 ) -> &Attribute;
2096
2097 pub(crate) fn LLVMRustGetOrInsertFunction<'a>(
2100 M: &'a Module,
2101 Name: *const c_char,
2102 NameLen: size_t,
2103 FunctionTy: &'a Type,
2104 ) -> &'a Value;
2105 pub(crate) fn LLVMRustAddFunctionAttributes<'a>(
2106 Fn: &'a Value,
2107 index: c_uint,
2108 Attrs: *const &'a Attribute,
2109 AttrsLen: size_t,
2110 );
2111
2112 pub(crate) fn LLVMRustAddCallSiteAttributes<'a>(
2114 Instr: &'a Value,
2115 index: c_uint,
2116 Attrs: *const &'a Attribute,
2117 AttrsLen: size_t,
2118 );
2119
2120 pub(crate) fn LLVMRustSetFastMath(Instr: &Value);
2121 pub(crate) fn LLVMRustSetAlgebraicMath(Instr: &Value);
2122 pub(crate) fn LLVMRustSetAllowReassoc(Instr: &Value);
2123 pub(crate) fn LLVMRustSetNoSignedZeros(Instr: &Value);
2124
2125 pub(crate) fn LLVMRustBuildMemCpy<'a>(
2127 B: &Builder<'a>,
2128 Dst: &'a Value,
2129 DstAlign: c_uint,
2130 Src: &'a Value,
2131 SrcAlign: c_uint,
2132 Size: &'a Value,
2133 IsVolatile: bool,
2134 ) -> &'a Value;
2135 pub(crate) fn LLVMRustBuildMemMove<'a>(
2136 B: &Builder<'a>,
2137 Dst: &'a Value,
2138 DstAlign: c_uint,
2139 Src: &'a Value,
2140 SrcAlign: c_uint,
2141 Size: &'a Value,
2142 IsVolatile: bool,
2143 ) -> &'a Value;
2144 pub(crate) fn LLVMRustBuildMemSet<'a>(
2145 B: &Builder<'a>,
2146 Dst: &'a Value,
2147 DstAlign: c_uint,
2148 Val: &'a Value,
2149 Size: &'a Value,
2150 IsVolatile: bool,
2151 ) -> &'a Value;
2152
2153 pub(crate) fn LLVMRustBuildVScale<'a>(B: &Builder<'a>, Ty: &'a Type) -> &'a Value;
2154
2155 pub(crate) fn LLVMRustTimeTraceProfilerInitialize();
2156
2157 pub(crate) fn LLVMRustTimeTraceProfilerFinishThread();
2158
2159 pub(crate) fn LLVMRustTimeTraceProfilerFinish(FileName: *const c_char);
2160
2161 pub(crate) fn LLVMRustGetLastError() -> *const c_char;
2163
2164 pub(crate) fn LLVMRustPrintPassTimings(OutStr: &RustString);
2166
2167 pub(crate) fn LLVMRustPrintStatistics(OutStr: &RustString);
2169
2170 pub(crate) fn LLVMRustPrintStatisticsJSON(OutStr: &RustString);
2172
2173 pub(crate) fn LLVMRustInlineAsmVerify(
2174 Ty: &Type,
2175 Constraints: *const c_uchar, ConstraintsLen: size_t,
2177 ) -> bool;
2178
2179 pub(crate) fn LLVMRustCoverageWriteFilenamesToBuffer(
2183 Filenames: *const *const c_uchar, FilenamesLen: size_t,
2185 Lengths: *const size_t,
2186 LengthsLen: size_t,
2187 BufferOut: &RustString,
2188 );
2189
2190 pub(crate) fn LLVMRustCoverageWriteFunctionMappingsToBuffer(
2191 VirtualFileMappingIDs: *const c_uint,
2192 NumVirtualFileMappingIDs: size_t,
2193 Expressions: *const crate::coverageinfo::ffi::CounterExpression,
2194 NumExpressions: size_t,
2195 CodeRegions: *const crate::coverageinfo::ffi::CodeRegion,
2196 NumCodeRegions: size_t,
2197 ExpansionRegions: *const crate::coverageinfo::ffi::ExpansionRegion,
2198 NumExpansionRegions: size_t,
2199 BranchRegions: *const crate::coverageinfo::ffi::BranchRegion,
2200 NumBranchRegions: size_t,
2201 BufferOut: &RustString,
2202 );
2203
2204 pub(crate) fn LLVMRustCoverageCreatePGOFuncNameVar(
2205 F: &Value,
2206 FuncName: *const c_uchar, FuncNameLen: size_t,
2208 ) -> &Value;
2209 pub(crate) fn LLVMRustCoverageHashBytes(
2210 Bytes: *const c_uchar, NumBytes: size_t,
2212 ) -> u64;
2213
2214 pub(crate) safe fn LLVMRustCoverageWriteCovmapSectionNameToString(
2215 M: &Module,
2216 OutStr: &RustString,
2217 );
2218 pub(crate) safe fn LLVMRustCoverageWriteCovfunSectionNameToString(
2219 M: &Module,
2220 OutStr: &RustString,
2221 );
2222 pub(crate) safe fn LLVMRustCoverageWriteCovmapVarNameToString(OutStr: &RustString);
2223
2224 pub(crate) safe fn LLVMRustCoverageMappingVersion() -> u32;
2225 pub(crate) fn LLVMRustDebugMetadataVersion() -> u32;
2226 pub(crate) fn LLVMRustVersionMajor() -> u32;
2227 pub(crate) fn LLVMRustVersionMinor() -> u32;
2228 pub(crate) fn LLVMRustVersionPatch() -> u32;
2229
2230 pub(crate) fn LLVMRustAddModuleFlagU32(
2235 M: &Module,
2236 MergeBehavior: ModuleFlagMergeBehavior,
2237 Name: *const c_char,
2238 NameLen: size_t,
2239 Value: u32,
2240 );
2241
2242 pub(crate) fn LLVMRustAddModuleFlagString(
2243 M: &Module,
2244 MergeBehavior: ModuleFlagMergeBehavior,
2245 Name: *const c_char,
2246 NameLen: size_t,
2247 Value: *const c_char,
2248 ValueLen: size_t,
2249 );
2250
2251 pub(crate) fn LLVMRustDIBuilderCreateCompileUnit<'a>(
2255 Builder: &DIBuilder<'a>,
2256 Lang: c_uint,
2257 File: &'a DIFile,
2258 Producer: *const c_char,
2259 ProducerLen: size_t,
2260 isOptimized: bool,
2261 Flags: *const c_char,
2262 RuntimeVer: c_uint,
2263 SplitName: *const c_char,
2264 SplitNameLen: size_t,
2265 kind: DebugEmissionKind,
2266 DWOId: u64,
2267 SplitDebugInlining: bool,
2268 DebugNameTableKind: DebugNameTableKind,
2269 ) -> &'a DIDescriptor;
2270
2271 pub(crate) fn LLVMRustDIBuilderCreateFile<'a>(
2274 Builder: &DIBuilder<'a>,
2275 Filename: *const c_char,
2276 FilenameLen: size_t,
2277 Directory: *const c_char,
2278 DirectoryLen: size_t,
2279 CSKind: ChecksumKind,
2280 Checksum: *const c_char,
2281 ChecksumLen: size_t,
2282 Source: *const c_char,
2283 SourceLen: size_t,
2284 ) -> &'a DIFile;
2285
2286 pub(crate) fn LLVMRustDIBuilderCreateFunction<'a>(
2289 Builder: &DIBuilder<'a>,
2290 Scope: &'a DIDescriptor,
2291 Name: *const c_char,
2292 NameLen: size_t,
2293 LinkageName: *const c_char,
2294 LinkageNameLen: size_t,
2295 File: &'a DIFile,
2296 LineNo: c_uint,
2297 Ty: &'a DIType,
2298 ScopeLine: c_uint,
2299 Flags: DIFlags,
2300 SPFlags: DISPFlags,
2301 MaybeFn: Option<&'a Value>,
2302 TParam: &'a DIArray,
2303 Decl: Option<&'a DIDescriptor>,
2304 ) -> &'a DISubprogram;
2305
2306 pub(crate) fn LLVMRustDIBuilderCreateMethod<'a>(
2308 Builder: &DIBuilder<'a>,
2309 Scope: &'a DIDescriptor,
2310 Name: *const c_char,
2311 NameLen: size_t,
2312 LinkageName: *const c_char,
2313 LinkageNameLen: size_t,
2314 File: &'a DIFile,
2315 LineNo: c_uint,
2316 Ty: &'a DIType,
2317 Flags: DIFlags,
2318 SPFlags: DISPFlags,
2319 TParam: &'a DIArray,
2320 ) -> &'a DISubprogram;
2321
2322 pub(crate) fn LLVMRustDIBuilderCreateVariantMemberType<'a>(
2324 Builder: &DIBuilder<'a>,
2325 Scope: &'a DIScope,
2326 Name: *const c_char,
2327 NameLen: size_t,
2328 File: &'a DIFile,
2329 LineNumber: c_uint,
2330 SizeInBits: u64,
2331 AlignInBits: u32,
2332 OffsetInBits: u64,
2333 Discriminant: Option<&'a Value>,
2334 Flags: DIFlags,
2335 Ty: &'a DIType,
2336 ) -> &'a DIType;
2337
2338 pub(crate) fn LLVMRustDIBuilderCreateEnumerationType<'a>(
2340 Builder: &DIBuilder<'a>,
2341 Scope: &'a DIScope,
2342 Name: *const c_char,
2343 NameLen: size_t,
2344 File: &'a DIFile,
2345 LineNumber: c_uint,
2346 SizeInBits: u64,
2347 AlignInBits: u32,
2348 Elements: &'a DIArray,
2349 ClassType: &'a DIType,
2350 IsScoped: bool,
2351 ) -> &'a DIType;
2352
2353 pub(crate) fn LLVMRustDIBuilderCreateVariantPart<'a>(
2355 Builder: &DIBuilder<'a>,
2356 Scope: &'a DIScope,
2357 Name: *const c_char,
2358 NameLen: size_t,
2359 File: &'a DIFile,
2360 LineNo: c_uint,
2361 SizeInBits: u64,
2362 AlignInBits: u32,
2363 Flags: DIFlags,
2364 Discriminator: Option<&'a DIDerivedType>,
2365 Elements: &'a DIArray,
2366 UniqueId: *const c_char,
2367 UniqueIdLen: size_t,
2368 ) -> &'a DIDerivedType;
2369
2370 pub(crate) fn LLVMRustDIBuilderCreateTemplateTypeParameter<'a>(
2372 Builder: &DIBuilder<'a>,
2373 Scope: Option<&'a DIScope>,
2374 Name: *const c_char,
2375 NameLen: size_t,
2376 Ty: &'a DIType,
2377 ) -> &'a DITemplateTypeParameter;
2378
2379 pub(crate) fn LLVMRustDICompositeTypeReplaceArrays<'a>(
2382 Builder: &DIBuilder<'a>,
2383 CompositeType: &'a DIType,
2384 Elements: Option<&'a DIArray>,
2385 Params: Option<&'a DIArray>,
2386 );
2387
2388 pub(crate) fn LLVMRustDIGetOrCreateSubrange<'a>(
2391 Builder: &DIBuilder<'a>,
2392 CountNode: Option<&'a Metadata>,
2393 LB: &'a Metadata,
2394 UB: &'a Metadata,
2395 Stride: Option<&'a Metadata>,
2396 ) -> &'a Metadata;
2397
2398 pub(crate) fn LLVMRustDICreateVectorType<'a>(
2401 Builder: &DIBuilder<'a>,
2402 Size: u64,
2403 AlignInBits: u32,
2404 Type: &'a DIType,
2405 Subscripts: &'a DIArray,
2406 BitStride: Option<&'a Metadata>,
2407 ) -> &'a Metadata;
2408
2409 pub(crate) fn LLVMRustDILocationCloneWithBaseDiscriminator<'a>(
2411 Location: &'a DILocation,
2412 BD: c_uint,
2413 ) -> Option<&'a DILocation>;
2414
2415 pub(crate) fn LLVMRustWriteTypeToString(Type: &Type, s: &RustString);
2416 pub(crate) fn LLVMRustWriteValueToString(value_ref: &Value, s: &RustString);
2417
2418 pub(crate) fn LLVMRustHasFeature(T: &TargetMachine, s: *const c_char) -> bool;
2419 pub(crate) fn LLVMRustTargetHasMnemonic(T: &TargetMachine, s: *const c_char) -> bool;
2420
2421 pub(crate) fn LLVMRustPrintTargetCPUs(TM: &TargetMachine, OutStr: &RustString);
2422 pub(crate) fn LLVMRustGetTargetFeaturesCount(T: &TargetMachine) -> size_t;
2423 pub(crate) fn LLVMRustGetTargetFeature(
2424 T: &TargetMachine,
2425 Index: size_t,
2426 Feature: &mut *const c_char,
2427 Desc: &mut *const c_char,
2428 );
2429
2430 pub(crate) fn LLVMRustGetHostCPUName(LenOut: &mut size_t) -> *const u8;
2431
2432 pub(crate) fn LLVMRustCreateTargetMachine(
2435 Triple: *const c_char,
2436 CPU: *const c_char,
2437 Features: *const c_char,
2438 Abi: *const c_char,
2439 Model: CodeModel,
2440 Reloc: RelocModel,
2441 Level: CodeGenOptLevel,
2442 FloatABIType: FloatAbi,
2443 FunctionSections: bool,
2444 DataSections: bool,
2445 UniqueSectionNames: bool,
2446 TrapUnreachable: bool,
2447 Singlethread: bool,
2448 VerboseAsm: bool,
2449 EmitStackSizeSection: bool,
2450 RelaxELFRelocations: bool,
2451 UseInitArray: bool,
2452 SplitDwarfFile: *const c_char,
2453 OutputObjFile: *const c_char,
2454 DebugInfoCompression: CompressionKind,
2455 UseEmulatedTls: bool,
2456 UseWasmEH: bool,
2457 LargeDataThreshold: u64,
2458 ) -> *mut TargetMachine;
2459
2460 pub(crate) fn LLVMRustAddLibraryInfo<'a>(
2461 T: &TargetMachine,
2462 PM: &PassManager<'a>,
2463 M: &'a Module,
2464 DisableSimplifyLibCalls: bool,
2465 );
2466 pub(crate) fn LLVMRustWriteOutputFile<'a>(
2467 T: &'a TargetMachine,
2468 PM: *mut PassManager<'a>,
2469 M: &'a Module,
2470 Output: *const c_char,
2471 DwoOutput: *const c_char,
2472 FileType: FileType,
2473 VerifyIR: bool,
2474 ) -> LLVMRustResult;
2475 pub(crate) fn LLVMRustOptimize<'a>(
2476 M: &'a Module,
2477 TM: &'a TargetMachine,
2478 OptLevel: PassBuilderOptLevel,
2479 OptStage: OptStage,
2480 IsLinkerPluginLTO: bool,
2481 NoPrepopulatePasses: bool,
2482 VerifyIR: bool,
2483 LintIR: bool,
2484 ThinLTOBuffer: Option<&mut Option<crate::back::lto::Buffer>>,
2485 ThinLTOSummaryBuffer: Option<&mut Option<crate::back::lto::Buffer>>,
2486 MergeFunctions: bool,
2487 UnrollLoops: bool,
2488 SLPVectorize: bool,
2489 LoopVectorize: bool,
2490 DisableSimplifyLibCalls: bool,
2491 EmitLifetimeMarkers: bool,
2492 RunEnzyme: *const c_void,
2493 PrintBeforeEnzyme: bool,
2494 PrintAfterEnzyme: bool,
2495 PrintPasses: bool,
2496 SanitizerOptions: Option<&SanitizerOptions>,
2497 PGOGenPath: *const c_char,
2498 PGOUsePath: *const c_char,
2499 InstrumentCoverage: bool,
2500 InstrProfileOutput: *const c_char,
2501 PGOSampleUsePath: *const c_char,
2502 DebugInfoForProfiling: bool,
2503 llvm_selfprofiler: *mut c_void,
2504 begin_callback: SelfProfileBeforePassCallback,
2505 end_callback: SelfProfileAfterPassCallback,
2506 PostEnzymePasses: *const c_char,
2507 PostEnzymePassesLen: size_t,
2508 ExtraPasses: *const c_char,
2509 ExtraPassesLen: size_t,
2510 LLVMPlugins: *const c_char,
2511 LLVMPluginsLen: size_t,
2512 ) -> LLVMRustResult;
2513 pub(crate) fn LLVMRustPrintModule(
2514 M: &Module,
2515 Output: *const c_char,
2516 Demangle: extern "C" fn(*const c_char, size_t, *mut c_char, size_t) -> size_t,
2517 ) -> LLVMRustResult;
2518 pub(crate) fn LLVMRustSetLLVMOptions(Argc: c_int, Argv: *const *const c_char);
2519 pub(crate) fn LLVMRustPrintPasses();
2520 pub(crate) fn LLVMRustSetNormalizedTarget(M: &Module, triple: *const c_char);
2521 pub(crate) fn LLVMRustRunRestrictionPass(M: &Module, syms: *const *const c_char, len: size_t);
2522
2523 pub(crate) fn LLVMRustWriteTwineToString(T: &Twine, s: &RustString);
2524
2525 pub(crate) fn LLVMRustUnpackOptimizationDiagnostic<'a>(
2526 DI: &'a DiagnosticInfo,
2527 pass_name_out: &RustString,
2528 function_out: &mut Option<&'a Value>,
2529 loc_line_out: &mut c_uint,
2530 loc_column_out: &mut c_uint,
2531 loc_filename_out: &RustString,
2532 message_out: &RustString,
2533 );
2534
2535 pub(crate) fn LLVMRustUnpackInlineAsmDiagnostic<'a>(
2536 DI: &'a DiagnosticInfo,
2537 level_out: &mut DiagnosticLevel,
2538 cookie_out: &mut u64,
2539 message_out: &mut Option<&'a Twine>,
2540 );
2541
2542 pub(crate) fn LLVMRustWriteDiagnosticInfoToString(DI: &DiagnosticInfo, s: &RustString);
2543 pub(crate) fn LLVMRustGetDiagInfoKind(DI: &DiagnosticInfo) -> DiagnosticKind;
2544
2545 pub(crate) fn LLVMRustGetSMDiagnostic<'a>(
2546 DI: &'a DiagnosticInfo,
2547 cookie_out: &mut u64,
2548 ) -> &'a SMDiagnostic;
2549
2550 pub(crate) fn LLVMRustUnpackSMDiagnostic(
2551 d: &SMDiagnostic,
2552 message_out: &RustString,
2553 buffer_out: &RustString,
2554 level_out: &mut DiagnosticLevel,
2555 loc_out: &mut c_uint,
2556 ranges_out: *mut c_uint,
2557 num_ranges: &mut usize,
2558 ) -> bool;
2559
2560 pub(crate) fn LLVMRustSetDataLayoutFromTargetMachine<'a>(M: &'a Module, TM: &'a TargetMachine);
2561
2562 pub(crate) fn LLVMRustPositionBuilderPastAllocas<'a>(B: &Builder<'a>, Fn: &'a Value);
2563 pub(crate) fn LLVMRustPositionBuilderAtStart<'a>(B: &Builder<'a>, BB: &'a BasicBlock);
2564
2565 pub(crate) fn LLVMRustSetModulePICLevel(M: &Module);
2566 pub(crate) fn LLVMRustSetModulePIELevel(M: &Module);
2567 pub(crate) fn LLVMRustSetModuleCodeModel(M: &Module, Model: CodeModel);
2568 pub(crate) fn LLVMRustBufferPtr(p: &Buffer) -> *const u8;
2569 pub(crate) fn LLVMRustBufferLen(p: &Buffer) -> usize;
2570 pub(crate) fn LLVMRustBufferFree(p: &'static mut Buffer);
2571 pub(crate) fn LLVMRustModuleCost(M: &Module) -> u64;
2572 pub(crate) fn LLVMRustModuleInstructionStats(M: &Module) -> u64;
2573
2574 pub(crate) fn LLVMRustModuleSerialize(M: &Module, is_thin: bool) -> &'static mut Buffer;
2575 pub(crate) fn LLVMRustCreateThinLTOData(
2576 Modules: *const ThinLTOModule,
2577 NumModules: size_t,
2578 PreservedSymbols: *const *const c_char,
2579 PreservedSymbolsLen: size_t,
2580 ) -> Option<&'static mut ThinLTOData>;
2581 pub(crate) fn LLVMRustPrepareThinLTORename(
2582 Data: &ThinLTOData,
2583 Module: &Module,
2584 Target: &TargetMachine,
2585 );
2586 pub(crate) fn LLVMRustPrepareThinLTOResolveWeak(Data: &ThinLTOData, Module: &Module) -> bool;
2587 pub(crate) fn LLVMRustPrepareThinLTOInternalize(Data: &ThinLTOData, Module: &Module) -> bool;
2588 pub(crate) fn LLVMRustPrepareThinLTOImport(
2589 Data: &ThinLTOData,
2590 Module: &Module,
2591 Target: &TargetMachine,
2592 ) -> bool;
2593 pub(crate) fn LLVMRustFreeThinLTOData(Data: &'static mut ThinLTOData);
2594 pub(crate) fn LLVMRustParseBitcodeForLTO(
2595 Context: &Context,
2596 Data: *const u8,
2597 len: usize,
2598 Identifier: *const c_char,
2599 ) -> Option<&Module>;
2600
2601 pub(crate) fn LLVMRustLinkerNew(M: &Module) -> &mut Linker<'_>;
2602 pub(crate) fn LLVMRustLinkerAdd(
2603 linker: &Linker<'_>,
2604 bytecode: *const c_char,
2605 bytecode_len: usize,
2606 ) -> bool;
2607 pub(crate) fn LLVMRustLinkerFree<'a>(linker: &'a mut Linker<'a>);
2608 pub(crate) fn LLVMRustComputeLTOCacheKey(
2609 key_out: &RustString,
2610 mod_id: *const c_char,
2611 data: &ThinLTOData,
2612 );
2613
2614 pub(crate) fn LLVMRustContextGetDiagnosticHandler(
2615 Context: &Context,
2616 ) -> Option<&DiagnosticHandler>;
2617 pub(crate) fn LLVMRustContextSetDiagnosticHandler(
2618 context: &Context,
2619 diagnostic_handler: Option<&DiagnosticHandler>,
2620 );
2621 pub(crate) fn LLVMRustContextConfigureDiagnosticHandler(
2622 context: &Context,
2623 diagnostic_handler_callback: DiagnosticHandlerTy,
2624 diagnostic_handler_context: *mut c_void,
2625 remark_all_passes: bool,
2626 remark_passes: *const *const c_char,
2627 remark_passes_len: usize,
2628 remark_file: *const c_char,
2629 pgo_available: bool,
2630 );
2631
2632 pub(crate) fn LLVMRustGetMangledName(V: &Value, out: &RustString);
2633
2634 pub(crate) fn LLVMRustGetElementTypeArgIndex(CallSite: &Value) -> i32;
2635
2636 pub(crate) safe fn LLVMRustLLVMHasZlibCompression() -> bool;
2637 pub(crate) safe fn LLVMRustLLVMHasZstdCompression() -> bool;
2638
2639 pub(crate) fn LLVMRustGetSymbols(
2640 buf_ptr: *const u8,
2641 buf_len: usize,
2642 state: *mut c_void,
2643 callback: GetSymbolsCallback,
2644 error_callback: GetSymbolsErrorCallback,
2645 ) -> *mut c_void;
2646
2647 pub(crate) fn LLVMRustIs64BitSymbolicFile(buf_ptr: *const u8, buf_len: usize) -> bool;
2648
2649 pub(crate) fn LLVMRustIsECObject(buf_ptr: *const u8, buf_len: usize) -> bool;
2650
2651 pub(crate) fn LLVMRustIsAnyArm64Coff(buf_ptr: *const u8, buf_len: usize) -> bool;
2652
2653 pub(crate) fn LLVMRustSetNoSanitizeAddress(Global: &Value);
2654 pub(crate) fn LLVMRustSetNoSanitizeHWAddress(Global: &Value);
2655
2656 pub(crate) fn LLVMRustConstPtrAuth(
2657 ptr: *const Value,
2658 key: u32,
2659 disc: u64,
2660 addr_diversity: *const Value,
2661 deactivation_symbol: *const Value,
2662 ) -> *const Value;
2663}