Expand description
Bindings to the LLVM-C API (LLVM*
), and to our own extern "C"
wrapper
functions around the unstable LLVM C++ API (LLVMRust*
).
Β§Passing pointer/length strings as *const c_uchar
Normally itβs a good idea for Rust-side bindings to match the corresponding
C-side function declarations as closely as possible. But when passing &str
or &[u8]
data as a pointer/length pair, itβs more convenient to declare
the Rust-side pointer as *const c_uchar
instead of *const c_char
.
Both pointer types have the same ABI, and using *const c_uchar
avoids
the need for an extra cast from *const u8
on the Rust side.
ModulesΒ§
- debuginfo π
StructsΒ§
- Alloc
Kind πFlags - Archive
Child π - Archive
Iterator π - Builder π
- GEPNo
Wrap Flags - Invariant
Opaque π - Linker π
- Metadata
Kind πId - Operand
Bundle π - Opaque pointee of
LLVMOperandBundleRef
. - Pass
Manager π - RawEnum π
- Wrapper for a raw enum value returned from LLVMβs C APIs.
- Rust
Archive πMember - Sanitizer
Options π - LLVMRustSanitizerOptions
- ThinLTO
Module π - LLVMRustThinLTOModule
EnumsΒ§
- Archive
Kind π - LLVMRustArchiveKind
- AsmDialect π
- LLVMRustAsmDialect
- Atomic
Ordering π - LLVMAtomicOrdering
- Atomic
RmwBin πOp - LLVMAtomicRmwBinOp
- Attribute
Kind π - Must match the layout of
LLVMRustAttributeKind
. Semantically a subset of the C++ enum llvm::Attribute::AttrKind, though it is not ABI compatible (since itβs a C++ enum) - Call
Conv π - LLVM CallingConv::ID. Should we wrap this?
- Checksum
Kind π - LLVMRustChecksumKind
- Code
GenOpt πLevel - LLVMRustCodeGenOptLevel
- Code
Model π - LLVMRustCodeModel
- DLLStorage
Class π - LLVMDLLStorageClass
- Diagnostic
Kind π - LLVMRustDiagnosticKind
- Diagnostic
Level π - LLVMRustDiagnosticLevel
- File
Type π - LLVMRustFileType
- Float
Abi π - LLVMRustFloatABI
- IntPredicate π
- LLVMIntPredicate
- LLVM
Rust πResult - Linkage π
- Must match the layout of
LLVMLinkage
. - Memory
Effects π - LLVMRustMemoryEffects
- Metadata
Type π - LLVMMetadataType
- Module
Flag πMerge Behavior - Must match the layout of
LLVMRustModuleFlagMergeBehavior
. - Opcode π
- LLVMOpcode
- OptStage π
- LLVMRustOptStage
- Pass
Builder πOptLevel - LLVMRustPassBuilderOptLevel
- Real
Predicate π - LLVMRealPredicate
- Reloc
Model π - LLVMRustRelocModel
- Thread
Local πMode - LLVMThreadLocalMode
- Type
Kind π - LLVMTypeKind
- Unnamed
Addr π - LLVMUnnamedAddr
- Visibility π
- Must match the layout of
LLVMVisibility
.
ConstantsΒ§
FunctionsΒ§
- LLVM
AddAnalysis π βPasses - LLVM
AddCase π β - LLVM
AddClause π β - LLVM
AddGlobal π β - LLVM
AddHandler π β - LLVM
AddIncoming π β - LLVM
AddNamed π βMetadata Operand - LLVM
Append π βBasic Block InContext - LLVM
Append π βModule Inline Asm - See Module::setModuleInlineAsm.
- LLVM
Array π βType2 - LLVM
BuildA π βShr - LLVM
Build π βAdd - LLVM
Build π βAlloca - LLVM
Build π βAnd - LLVM
Build π βArray Alloca - LLVM
Build π βAtomic CmpXchg - LLVM
Build π βAtomicRMW - LLVM
Build π βBitCast - LLVM
Build π βBr - LLVM
Build π βCall Br - LLVM
Build π βCall With Operand Bundles - LLVM
Build π βCatch Pad - LLVM
Build π βCatch Ret - LLVM
Build π βCatch Switch - LLVM
Build π βCleanup Pad - LLVM
Build π βCleanup Ret - LLVM
Build π βCond Br - LLVM
Build π βExactS Div - LLVM
Build π βExactU Div - LLVM
Build π βExtract Element - LLVM
Build π βExtract Value - LLVM
BuildF π βAdd - LLVM
BuildF π βCmp - LLVM
BuildF π βDiv - LLVM
BuildF π βMul - LLVM
BuildF π βNeg - LLVM
BuildFP π βExt - LLVM
BuildFP π βToSI - LLVM
BuildFP π βToUI - LLVM
BuildFP π βTrunc - LLVM
BuildF π βRem - LLVM
BuildF π βSub - LLVM
Build π βFence - LLVM
BuildGEP π βWith NoWrap Flags - LLVM
BuildI π βCmp - LLVM
Build π βInsert Element - LLVM
Build π βInsert Value - LLVM
Build π βIntCast2 - LLVM
Build π βIntTo Ptr - LLVM
Build π βInvoke With Operand Bundles - LLVM
BuildL π βShr - LLVM
Build π βLanding Pad - LLVM
Build π βLoad2 - LLVM
Build π βMul - LLVM
BuildNSW π βAdd - LLVM
BuildNSW π βMul - LLVM
BuildNSW π βSub - LLVM
BuildNUW π βAdd - LLVM
BuildNUW π βMul - LLVM
BuildNUW π βSub - LLVM
Build π βNeg - LLVM
Build π βNot - LLVM
Build π βOr - LLVM
Build π βPhi - LLVM
Build π βPointer Cast - LLVM
Build π βPtrTo Int - LLVM
Build π βResume - LLVM
Build π βRet - LLVM
Build πRetVoid - LLVM
BuildS π βDiv - LLVM
BuildS π βExt - LLVM
BuildSI π βToFP - LLVM
BuildS π βRem - LLVM
Build π βSelect - LLVM
Build π βShl - LLVM
Build π βShuffle Vector - LLVM
Build π βStore - LLVM
Build π βSub - LLVM
Build π βSwitch - LLVM
Build π βTrunc - LLVM
BuildU π βDiv - LLVM
BuildUI π βToFP - LLVM
BuildU π βRem - LLVM
Build π βUnreachable - LLVM
BuildVA π βArg - LLVM
Build π βXor - LLVM
BuildZ π βExt - LLVM
Clone π βModule - LLVM
Const π βArray2 - LLVM
Const π βBitCast - LLVM
Const π βInBoundsGE P2 - LLVM
Const π βInt - LLVM
Const π βIntOf Arbitrary Precision - LLVM
Const π βIntTo Ptr - LLVM
Const π βNull - LLVM
Const π βPointer Cast - LLVM
Const π βPtrTo Int - LLVM
Const π βReal - LLVM
Const π βString InContext2 - LLVM
Const π βStruct InContext - LLVM
Const π βVector - LLVM
Context π βDispose - LLVM
Count π βParam Types - LLVM
Count π βParams - LLVM
Create π βBuilder InContext - LLVM
CreateDI π βBuilder - LLVM
Create π βOperand Bundle - LLVM
Create π βPass Manager - Creates a legacy pass manager β only used for final codegen.
- LLVM
Create π βString Attribute - LLVMDI
Builder π βCreate Debug Location - LLVMDI
Builder π βCreate Lexical Block - LLVMDI
Builder π βCreate Lexical Block File - LLVMDI
Builder π βCreate Name Space - LLVMDI
Builder π βFinalize - LLVM
Delete π βGlobal - LLVM
Dispose π βBuilder - LLVM
DisposeDI π βBuilder - LLVM
Dispose π βMessage - LLVM
Dispose π βOperand Bundle - LLVM
Double π βType InContext - LLVMF
P128 π βType InContext - LLVM
Float π βType InContext - LLVM
Function π βType - LLVM
GetAggregate π βElement - LLVM
GetAlignment π β - LLVM
GetBasic π βBlock Parent - LLVM
GetConst π βOpcode - LLVM
GetCurrent π βDebug Location2 - LLVM
GetData π βLayout Str - Data layout. See Module::getDataLayout.
- LLVM
GetElement π βType - LLVM
GetFirst π βBasic Block - LLVM
GetFirst π βGlobal - LLVM
GetHostCPU π βFeatures - LLVM
GetInitializer π β - LLVM
GetInsert π βBlock - LLVM
GetInt π βType Width - LLVM
GetLinkage π β - LLVM
GetMD π βKindID InContext - LLVM
GetNamed π βGlobal - LLVM
GetNext π βGlobal - LLVM
GetOperand π β - LLVM
GetOr π βInsert Comdat - LLVM
GetParam π β - LLVM
GetParam π βTypes - LLVM
GetPoison π β - LLVM
GetUndef π β - LLVM
GetValue π βName2 - LLVM
GetVector π βSize - LLVM
GetVisibility π β - LLVM
Global π βGetValue Type - LLVM
Global π βSetMetadata - LLVM
Half π βType InContext - LLVM
Int1 π βType InContext - LLVM
Int8 π βType InContext - LLVM
Int16 π βType InContext - LLVM
Int32 π βType InContext - LLVM
Int64 π βType InContext - LLVM
IntType π βInContext - LLVM
IsAArgument π β - LLVM
IsAConstant π βExpr - LLVM
IsAConstant π βInt - LLVM
IsAGlobal π βVariable - LLVM
IsAInstruction π β - LLVM
IsDeclaration π β - LLVM
IsGlobal π βConstant - LLVM
IsMultithreaded π β - LLVM
IsThread π βLocal - LLVMMD
Node π βInContext2 - LLVMMD
String π βInContext2 - LLVM
Metadata πAsValue - LLVM
Metadata π βType InContext - LLVM
Module π βCreate With Name InContext - LLVM
Pointer π βType InContext - LLVM
Position π βBuilder AtEnd - LLVM
Replace π βAllUses With - LLVM
Rust π βAddCall Site Attributes - LLVM
Rust π βAddFunction Attributes - LLVM
Rust π βAddLibrary Info - LLVM
Rust π βAddModule Flag String - LLVM
Rust π βAddModule Flag U32 - Add LLVM module flags.
- LLVM
Rust π βArchive Child Free - LLVM
Rust π βArchive Child Name - LLVM
Rust π βArchive Iterator Free - LLVM
Rust π βArchive Iterator New - LLVM
Rust π βArchive Iterator Next - LLVM
Rust π βArchive Member Free - LLVM
Rust π βArchive Member New - LLVM
Rust π βBuild Atomic Load - LLVM
Rust π βBuild Atomic Store - LLVM
Rust π βBuild MaxNum - LLVM
Rust π βBuild MemCpy - LLVM
Rust π βBuild MemMove - LLVM
Rust π βBuild MemSet - LLVM
Rust π βBuild MinNum - LLVM
Rust π βBuild Vector Reduce Add - LLVM
Rust π βBuild Vector Reduce And - LLVM
Rust π βBuild Vector ReduceF Add - LLVM
Rust π βBuild Vector ReduceF Max - LLVM
Rust π βBuild Vector ReduceF Min - LLVM
Rust π βBuild Vector ReduceF Mul - LLVM
Rust π βBuild Vector Reduce Max - LLVM
Rust π βBuild Vector Reduce Min - LLVM
Rust π βBuild Vector Reduce Mul - LLVM
Rust π βBuild Vector Reduce Or - LLVM
Rust π βBuild Vector Reduce Xor - LLVM
Rust π βComputeLTO Cache Key - LLVM
Rust π βConst Int128 Get - LLVM
Rust π βConst IntGetZ ExtValue - LLVM
Rust π βContext Configure Diagnostic Handler - LLVM
Rust π βContext Create - LLVM
Rust π βContext GetDiagnostic Handler - LLVM
Rust π βContext SetDiagnostic Handler - LLVM
Rust π βCoverage CreatePGO Func Name Var - LLVM
Rust π βCoverage Hash Bytes - LLVM
Rust π βCoverage Mapping Version - LLVM
Rust π βCoverage Write Covfun Section Name ToString - LLVM
Rust π βCoverage Write Covmap Section Name ToString - LLVM
Rust π βCoverage Write Covmap VarName ToString - LLVM
Rust π βCoverage Write Filenames ToBuffer - LLVM
Rust π βCoverage Write Function Mappings ToBuffer - LLVM
Rust π βCreate Alignment Attr - LLVM
Rust π βCreate Alloc Kind Attr - LLVM
Rust π βCreate Alloc Size Attr - LLVM
Rust π βCreate Attr NoValue - LLVM
Rust π βCreate ByVal Attr - LLVM
Rust π βCreate Dereferenceable Attr - LLVM
Rust π βCreate Dereferenceable OrNull Attr - LLVM
Rust π βCreate Element Type Attr - LLVM
Rust π βCreate Memory Effects Attr - LLVM
Rust π βCreate Range Attribute - LLVM
Rust π βCreate Struct RetAttr - LLVM
Rust π βCreate Target Machine - LLVM
Rust π βCreate ThinLTO Data - LLVM
Rust π βCreateUW Table Attr - LLVM
RustDI π βBuilder Create Array Type - LLVM
RustDI π βBuilder Create Basic Type - LLVM
RustDI π βBuilder Create Compile Unit - LLVM
RustDI π βBuilder Create Enumeration Type - LLVM
RustDI π βBuilder Create Enumerator - LLVM
RustDI π βBuilder Create File - LLVM
RustDI π βBuilder Create Function - LLVM
RustDI π βBuilder Create Member Type - LLVM
RustDI π βBuilder Create Method - LLVM
RustDI π βBuilder Create Pointer Type - LLVM
RustDI π βBuilder Create Qualified Type - LLVM
RustDI π βBuilder Create Static Member Type - LLVM
RustDI π βBuilder Create Static Variable - LLVM
RustDI π βBuilder Create Struct Type - LLVM
RustDI π βBuilder Create Subroutine Type - LLVM
RustDI π βBuilder Create Template Type Parameter - LLVM
RustDI π βBuilder Create Typedef - LLVM
RustDI π βBuilder Create Union Type - LLVM
RustDI π βBuilder Create Variable - LLVM
RustDI π βBuilder Create Variant Member Type - LLVM
RustDI π βBuilder Create Variant Part - LLVM
RustDI π βBuilder GetOr Create Array - LLVM
RustDI π βBuilder GetOr Create Subrange - LLVM
RustDI π βBuilder Insert Declare AtEnd - LLVM
RustDI π βComposite Type Replace Arrays - LLVM
RustDI π βLocation Clone With Base Discriminator - LLVM
Rust π βDebug Metadata Version - LLVM
Rust π βDestroy Archive - LLVM
Rust π βDisable System Dialogs OnCrash - LLVM
Rust π βDispose Target Machine - LLVM
Rust π βFree ThinLTO Data - LLVM
Rust π βGetDiag Info Kind - LLVM
Rust π βGetElement Type ArgIndex - LLVM
Rust π βGetHostCPU Name - LLVM
Rust π βGetLast Error - Returns a string describing the last error caused by an LLVMRust* call.
- LLVM
Rust π βGetMangled Name - LLVM
Rust π βGetNamed Value - LLVM
Rust π βGetOr Insert Function - LLVM
Rust π βGetOr Insert Global - LLVM
Rust π βGetSM Diagnostic - LLVM
Rust π βGetSlice From Object Data ByName - LLVM
Rust π βGetSymbols - LLVM
Rust π βGetTarget Feature - LLVM
Rust π βGetTarget Features Count - LLVM
Rust π βGetType Kind - See llvm::LLVMTypeKind::getTypeID.
- LLVM
Rust π βGlobal AddMetadata - LLVM
Rust π βHasFeature - LLVM
Rust π βInline Asm - Prepares inline assembly.
- LLVM
Rust π βInline AsmVerify - LLVM
Rust π βInsert Private Global - LLVM
Rust π βInstall Error Handlers - LLVM
Rust π βIs64 BitSymbolic File - LLVM
Rust π βIsEC Object - LLVM
Rust π βIsNonGV Function Pointer Ty - LLVM
RustLLVM π βHasZlib Compression ForDebug Symbols - LLVM
RustLLVM π βHasZstd Compression ForDebug Symbols - LLVM
Rust π βLinker Add - LLVM
Rust π βLinker Free - LLVM
Rust π βLinker New - LLVM
Rust π βModule Buffer Create - LLVM
Rust π βModule Buffer Free - LLVM
Rust π βModule Buffer Len - LLVM
Rust π βModule Buffer Ptr - LLVM
Rust π βModule Cost - LLVM
Rust π βModule Instruction Stats - LLVM
Rust π βOpen Archive - LLVM
Rust π βOptimize - LLVM
Rust π βParse Bitcode ForLTO - LLVM
Rust π βPosition Builder AtStart - LLVM
Rust π βPrepare ThinLTO Import - LLVM
Rust π βPrepare ThinLTO Internalize - LLVM
Rust π βPrepare ThinLTO Rename - LLVM
Rust π βPrepare ThinLTO Resolve Weak - LLVM
Rust π βPrint Module - LLVM
Rust π βPrint Pass Timings - Prints the timing information collected by
-Ztime-llvm-passes
. - LLVM
Rust π βPrint Passes - LLVM
Rust π βPrint Statistics - Prints the statistics collected by
-Zprint-codegen-stats
. - LLVM
Rust π βPrint TargetCP Us - LLVM
Rust π βRunRestriction Pass - LLVM
Rust π βSetAlgebraic Math - LLVM
Rust π βSetAllow Reassoc - LLVM
Rust π βSetDSO Local - LLVM
Rust π βSetData Layout From Target Machine - LLVM
Rust π βSetFast Math - LLVM
Rust π βSetLLVM Options - LLVM
Rust π βSetModule Code Model - LLVM
Rust π βSetModulePIC Level - LLVM
Rust π βSetModulePIE Level - LLVM
Rust π βSetNo Sanitize Address - LLVM
Rust π βSetNo SanitizeHW Address - LLVM
Rust π βSetNormalized Target - LLVM
Rust π βThinLTO Buffer Create - LLVM
Rust π βThinLTO Buffer Free - LLVM
Rust π βThinLTO Buffer Len - LLVM
Rust π βThinLTO Buffer Ptr - LLVM
Rust π βThinLTO Buffer Thin Link Data Len - LLVM
Rust π βThinLTO Buffer Thin Link Data Ptr - LLVM
Rust π βTime Trace Profiler Finish - LLVM
Rust π βTime Trace Profiler Finish Thread - LLVM
Rust π βTime Trace Profiler Initialize - LLVM
Rust π βUnpack Inline AsmDiagnostic - LLVM
Rust π βUnpack Optimization Diagnostic - LLVM
Rust π βUnpackSM Diagnostic - LLVM
Rust π βVersion Major - LLVM
Rust π βVersion Minor - LLVM
Rust π βVersion Patch - LLVM
Rust π βWrite Archive - LLVM
Rust π βWrite Diagnostic Info ToString - LLVM
Rust π βWrite Output File - LLVM
Rust π βWrite Twine ToString - LLVM
Rust π βWrite Type ToString - LLVM
Rust π βWrite Value ToString - LLVM
SetAlignment π β - LLVM
SetCleanup π β - LLVM
SetComdat π β - LLVM
SetCurrent π βDebug Location2 - LLVM
SetDLL π βStorage Class - LLVM
SetData π βLayout - LLVM
SetFunction π βCall Conv - LLVM
SetGlobal π βConstant - LLVM
SetInitializer π β - LLVM
SetInstruction π βCall Conv - LLVM
SetIs π βDisjoint - LLVM
SetLinkage π β - LLVM
SetMetadata π - LLVM
SetNSW π β - LLVM
SetNUW π β - LLVM
SetPersonality π βFn - LLVM
SetSection π β - LLVM
SetTail πCall - LLVM
SetThread π βLocal Mode - LLVM
SetUnnamed π βAddress - LLVM
SetValue π βName2 - LLVM
SetVisibility π β - LLVM
SetVolatile π β - LLVM
SetWeak π β - LLVM
Struct π βCreate Named - LLVM
Struct π βSetBody - LLVM
Struct π βType InContext - LLVM
Token π βType InContext - LLVM
Type π βOf - LLVM
Value πAsMetadata - LLVM
Vector π βType - LLVM
Void π βType InContext - LLVM
Write π βBitcode ToFile - Writes a module to the specified path. Returns 0 on success.
Type AliasesΒ§
- Bool π
- In the LLVM-C API, boolean values are passed as
typedef int LLVMBool
, which has a different ABI from Rust or C++bool
. - Diagnostic
Handler πTy - GetSymbols
Callback π - GetSymbols
Error πCallback - Self
Profile πAfter Pass Callback - Self
Profile πBefore Pass Callback
Foreign TypesΒ§
- Archive π
- Attribute π
- Basic
Block π - Comdat π
- Constant
Int π - Context π
- Diagnostic
Handler π - Diagnostic
Info π - Metadata π
- Module π
- Module
Buffer π - Opaque π
- SMDiagnostic π
- Target
Machine - ThinLTO
Buffer π - ThinLTO
Data π - Twine π
- Type π
- Value π