Module ffi

Source
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§

AllocKindFlags
ArchiveChild
ArchiveIterator
Builder
InvariantOpaque 🔒
Linker
OperandBundle 🔒
Opaque pointee of LLVMOperandBundleRef.
PassManager
RawEnum
Wrapper for a raw enum value returned from LLVM’s C APIs.
RustArchiveMember
SanitizerOptions
LLVMRustSanitizerOptions
ThinLTOModule
LLVMRustThinLTOModule

Enums§

ArchiveKind
LLVMRustArchiveKind
AsmDialect
LLVMRustAsmDialect
AtomicOrdering
LLVMAtomicOrdering
AtomicRmwBinOp
LLVMAtomicRmwBinOp
AttributeKind
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)
CallConv
LLVM CallingConv::ID. Should we wrap this?
ChecksumKind
LLVMRustChecksumKind
CodeGenOptLevel
LLVMRustCodeGenOptLevel
CodeModel
LLVMRustCodeModel
DLLStorageClass
LLVMDLLStorageClass
DiagnosticKind
LLVMRustDiagnosticKind
DiagnosticLevel
LLVMRustDiagnosticLevel
FileType
LLVMRustFileType
FloatAbi
LLVMRustFloatABI
IntPredicate
LLVMIntPredicate
LLVMRustResult
Linkage
Must match the layout of LLVMLinkage.
MemoryEffects
LLVMRustMemoryEffects
MetadataType
LLVMMetadataType
ModuleFlagMergeBehavior
Must match the layout of LLVMRustModuleFlagMergeBehavior.
Opcode
LLVMOpcode
OptStage
LLVMRustOptStage
PassBuilderOptLevel
LLVMRustPassBuilderOptLevel
RealPredicate
LLVMRealPredicate
RelocModel
LLVMRustRelocModel
ThreadLocalMode
LLVMThreadLocalMode
TypeKind
LLVMTypeKind
UnnamedAddr
LLVMUnnamedAddr
Visibility
Must match the layout of LLVMVisibility.

Constants§

False
True

Functions§

LLVMAddAnalysisPasses 🔒
LLVMAddCase 🔒
LLVMAddClause 🔒
LLVMAddGlobal 🔒
LLVMAddHandler 🔒
LLVMAddIncoming 🔒
LLVMAddNamedMetadataOperand 🔒
LLVMAppendBasicBlockInContext 🔒
LLVMAppendModuleInlineAsm 🔒
See Module::setModuleInlineAsm.
LLVMArrayType2 🔒
LLVMBuildAShr 🔒
LLVMBuildAdd 🔒
LLVMBuildAlloca 🔒
LLVMBuildAnd 🔒
LLVMBuildArrayAlloca 🔒
LLVMBuildAtomicCmpXchg 🔒
LLVMBuildAtomicRMW 🔒
LLVMBuildBitCast 🔒
LLVMBuildBr 🔒
LLVMBuildCallBr 🔒
LLVMBuildCallWithOperandBundles 🔒
LLVMBuildCatchPad 🔒
LLVMBuildCatchRet 🔒
LLVMBuildCatchSwitch 🔒
LLVMBuildCleanupPad 🔒
LLVMBuildCleanupRet 🔒
LLVMBuildCondBr 🔒
LLVMBuildExactSDiv 🔒
LLVMBuildExactUDiv 🔒
LLVMBuildExtractElement 🔒
LLVMBuildExtractValue 🔒
LLVMBuildFAdd 🔒
LLVMBuildFCmp 🔒
LLVMBuildFDiv 🔒
LLVMBuildFMul 🔒
LLVMBuildFNeg 🔒
LLVMBuildFPExt 🔒
LLVMBuildFPToSI 🔒
LLVMBuildFPToUI 🔒
LLVMBuildFPTrunc 🔒
LLVMBuildFRem 🔒
LLVMBuildFSub 🔒
LLVMBuildFence 🔒
LLVMBuildGEP2 🔒
LLVMBuildICmp 🔒
LLVMBuildInBoundsGEP2 🔒
LLVMBuildInsertElement 🔒
LLVMBuildInsertValue 🔒
LLVMBuildIntCast2 🔒
LLVMBuildIntToPtr 🔒
LLVMBuildInvokeWithOperandBundles 🔒
LLVMBuildLShr 🔒
LLVMBuildLandingPad 🔒
LLVMBuildLoad2 🔒
LLVMBuildMul 🔒
LLVMBuildNSWAdd 🔒
LLVMBuildNSWMul 🔒
LLVMBuildNSWSub 🔒
LLVMBuildNUWAdd 🔒
LLVMBuildNUWMul 🔒
LLVMBuildNUWSub 🔒
LLVMBuildNeg 🔒
LLVMBuildNot 🔒
LLVMBuildOr 🔒
LLVMBuildPhi 🔒
LLVMBuildPointerCast 🔒
LLVMBuildPtrToInt 🔒
LLVMBuildResume 🔒
LLVMBuildRet 🔒
LLVMBuildRetVoid 🔒
LLVMBuildSDiv 🔒
LLVMBuildSExt 🔒
LLVMBuildSIToFP 🔒
LLVMBuildSRem 🔒
LLVMBuildSelect 🔒
LLVMBuildShl 🔒
LLVMBuildShuffleVector 🔒
LLVMBuildStore 🔒
LLVMBuildSub 🔒
LLVMBuildSwitch 🔒
LLVMBuildTrunc 🔒
LLVMBuildUDiv 🔒
LLVMBuildUIToFP 🔒
LLVMBuildURem 🔒
LLVMBuildUnreachable 🔒
LLVMBuildVAArg 🔒
LLVMBuildXor 🔒
LLVMBuildZExt 🔒
LLVMCloneModule 🔒
LLVMConstArray2 🔒
LLVMConstBitCast 🔒
LLVMConstInBoundsGEP2 🔒
LLVMConstInt 🔒
LLVMConstIntOfArbitraryPrecision 🔒
LLVMConstIntToPtr 🔒
LLVMConstNull 🔒
LLVMConstPointerCast 🔒
LLVMConstPtrToInt 🔒
LLVMConstReal 🔒
LLVMConstStringInContext2 🔒
LLVMConstStructInContext 🔒
LLVMConstVector 🔒
LLVMContextDispose 🔒
LLVMCountParamTypes 🔒
LLVMCountParams 🔒
LLVMCreateBuilderInContext 🔒
LLVMCreateDIBuilder 🔒
LLVMCreateOperandBundle 🔒
LLVMCreatePassManager 🔒
Creates a legacy pass manager – only used for final codegen.
LLVMCreateStringAttribute 🔒
LLVMDIBuilderCreateDebugLocation 🔒
LLVMDIBuilderCreateLexicalBlock 🔒
LLVMDIBuilderCreateLexicalBlockFile 🔒
LLVMDIBuilderCreateNameSpace 🔒
LLVMDIBuilderFinalize 🔒
LLVMDeleteGlobal 🔒
LLVMDisposeBuilder 🔒
LLVMDisposeDIBuilder 🔒
LLVMDisposeMessage 🔒
LLVMDisposeOperandBundle 🔒
LLVMDoubleTypeInContext 🔒
LLVMFP128TypeInContext 🔒
LLVMFloatTypeInContext 🔒
LLVMFunctionType 🔒
LLVMGetAggregateElement 🔒
LLVMGetAlignment 🔒
LLVMGetBasicBlockParent 🔒
LLVMGetConstOpcode 🔒
LLVMGetCurrentDebugLocation2 🔒
LLVMGetDataLayoutStr 🔒
Data layout. See Module::getDataLayout.
LLVMGetElementType 🔒
LLVMGetFirstBasicBlock 🔒
LLVMGetFirstGlobal 🔒
LLVMGetHostCPUFeatures 🔒
LLVMGetInitializer 🔒
LLVMGetInsertBlock 🔒
LLVMGetIntTypeWidth 🔒
LLVMGetLinkage 🔒
LLVMGetMDKindIDInContext 🔒
LLVMGetNamedGlobal 🔒
LLVMGetNextGlobal 🔒
LLVMGetOperand 🔒
LLVMGetOrInsertComdat 🔒
LLVMGetParam 🔒
LLVMGetParamTypes 🔒
LLVMGetPoison 🔒
LLVMGetUndef 🔒
LLVMGetValueName2 🔒
LLVMGetVectorSize 🔒
LLVMGetVisibility 🔒
LLVMGlobalGetValueType 🔒
LLVMGlobalSetMetadata 🔒
LLVMHalfTypeInContext 🔒
LLVMInt1TypeInContext 🔒
LLVMInt8TypeInContext 🔒
LLVMInt16TypeInContext 🔒
LLVMInt32TypeInContext 🔒
LLVMInt64TypeInContext 🔒
LLVMIntTypeInContext 🔒
LLVMIsAArgument 🔒
LLVMIsAConstantExpr 🔒
LLVMIsAConstantInt 🔒
LLVMIsAGlobalVariable 🔒
LLVMIsAInstruction 🔒
LLVMIsDeclaration 🔒
LLVMIsGlobalConstant 🔒
LLVMIsMultithreaded 🔒
LLVMIsThreadLocal 🔒
LLVMMDNodeInContext2 🔒
LLVMMDStringInContext2 🔒
LLVMMetadataAsValue 🔒
LLVMMetadataTypeInContext 🔒
LLVMModuleCreateWithNameInContext 🔒
LLVMPointerTypeInContext 🔒
LLVMPositionBuilderAtEnd 🔒
LLVMReplaceAllUsesWith 🔒
LLVMRustAddCallSiteAttributes 🔒
LLVMRustAddFunctionAttributes 🔒
LLVMRustAddLibraryInfo 🔒
LLVMRustAddModuleFlagString 🔒
LLVMRustAddModuleFlagU32 🔒
Add LLVM module flags.
LLVMRustArchiveChildFree 🔒
LLVMRustArchiveChildName 🔒
LLVMRustArchiveIteratorFree 🔒
LLVMRustArchiveIteratorNew 🔒
LLVMRustArchiveIteratorNext 🔒
LLVMRustArchiveMemberFree 🔒
LLVMRustArchiveMemberNew 🔒
LLVMRustBuildAtomicLoad 🔒
LLVMRustBuildAtomicStore 🔒
LLVMRustBuildMaxNum 🔒
LLVMRustBuildMemCpy 🔒
LLVMRustBuildMemMove 🔒
LLVMRustBuildMemSet 🔒
LLVMRustBuildMinNum 🔒
LLVMRustBuildVectorReduceAdd 🔒
LLVMRustBuildVectorReduceAnd 🔒
LLVMRustBuildVectorReduceFAdd 🔒
LLVMRustBuildVectorReduceFMax 🔒
LLVMRustBuildVectorReduceFMin 🔒
LLVMRustBuildVectorReduceFMul 🔒
LLVMRustBuildVectorReduceMax 🔒
LLVMRustBuildVectorReduceMin 🔒
LLVMRustBuildVectorReduceMul 🔒
LLVMRustBuildVectorReduceOr 🔒
LLVMRustBuildVectorReduceXor 🔒
LLVMRustComputeLTOCacheKey 🔒
LLVMRustConstInt128Get 🔒
LLVMRustConstIntGetZExtValue 🔒
LLVMRustContextConfigureDiagnosticHandler 🔒
LLVMRustContextCreate 🔒
LLVMRustContextGetDiagnosticHandler 🔒
LLVMRustContextSetDiagnosticHandler 🔒
LLVMRustCoverageCreatePGOFuncNameVar 🔒
LLVMRustCoverageHashBytes 🔒
LLVMRustCoverageMappingVersion 🔒
LLVMRustCoverageWriteCovfunSectionNameToString 🔒
LLVMRustCoverageWriteCovmapSectionNameToString 🔒
LLVMRustCoverageWriteCovmapVarNameToString 🔒
LLVMRustCoverageWriteFilenamesToBuffer 🔒
LLVMRustCoverageWriteFunctionMappingsToBuffer 🔒
LLVMRustCreateAlignmentAttr 🔒
LLVMRustCreateAllocKindAttr 🔒
LLVMRustCreateAllocSizeAttr 🔒
LLVMRustCreateAttrNoValue 🔒
LLVMRustCreateByValAttr 🔒
LLVMRustCreateDereferenceableAttr 🔒
LLVMRustCreateDereferenceableOrNullAttr 🔒
LLVMRustCreateElementTypeAttr 🔒
LLVMRustCreateMemoryEffectsAttr 🔒
LLVMRustCreateRangeAttribute 🔒
LLVMRustCreateStructRetAttr 🔒
LLVMRustCreateTargetMachine 🔒
LLVMRustCreateThinLTOData 🔒
LLVMRustCreateUWTableAttr 🔒
LLVMRustDIBuilderCreateArrayType 🔒
LLVMRustDIBuilderCreateBasicType 🔒
LLVMRustDIBuilderCreateCompileUnit 🔒
LLVMRustDIBuilderCreateEnumerationType 🔒
LLVMRustDIBuilderCreateEnumerator 🔒
LLVMRustDIBuilderCreateFile 🔒
LLVMRustDIBuilderCreateFunction 🔒
LLVMRustDIBuilderCreateMemberType 🔒
LLVMRustDIBuilderCreateMethod 🔒
LLVMRustDIBuilderCreatePointerType 🔒
LLVMRustDIBuilderCreateQualifiedType 🔒
LLVMRustDIBuilderCreateStaticMemberType 🔒
LLVMRustDIBuilderCreateStaticVariable 🔒
LLVMRustDIBuilderCreateStructType 🔒
LLVMRustDIBuilderCreateSubroutineType 🔒
LLVMRustDIBuilderCreateTemplateTypeParameter 🔒
LLVMRustDIBuilderCreateTypedef 🔒
LLVMRustDIBuilderCreateUnionType 🔒
LLVMRustDIBuilderCreateVariable 🔒
LLVMRustDIBuilderCreateVariantMemberType 🔒
LLVMRustDIBuilderCreateVariantPart 🔒
LLVMRustDIBuilderGetOrCreateArray 🔒
LLVMRustDIBuilderGetOrCreateSubrange 🔒
LLVMRustDIBuilderInsertDeclareAtEnd 🔒
LLVMRustDICompositeTypeReplaceArrays 🔒
LLVMRustDILocationCloneWithBaseDiscriminator 🔒
LLVMRustDebugMetadataVersion 🔒
LLVMRustDestroyArchive 🔒
LLVMRustDisableSystemDialogsOnCrash 🔒
LLVMRustDisposeTargetMachine 🔒
LLVMRustFreeThinLTOData 🔒
LLVMRustGetDiagInfoKind 🔒
LLVMRustGetElementTypeArgIndex 🔒
LLVMRustGetHostCPUName 🔒
LLVMRustGetLastError 🔒
Returns a string describing the last error caused by an LLVMRust* call.
LLVMRustGetMangledName 🔒
LLVMRustGetNamedValue 🔒
LLVMRustGetOrInsertFunction 🔒
LLVMRustGetOrInsertGlobal 🔒
LLVMRustGetSMDiagnostic 🔒
LLVMRustGetSliceFromObjectDataByName 🔒
LLVMRustGetSymbols 🔒
LLVMRustGetTargetFeature 🔒
LLVMRustGetTargetFeaturesCount 🔒
LLVMRustGetTypeKind 🔒
See llvm::LLVMTypeKind::getTypeID.
LLVMRustGlobalAddMetadata 🔒
LLVMRustHasFeature 🔒
LLVMRustInlineAsm 🔒
Prepares inline assembly.
LLVMRustInlineAsmVerify 🔒
LLVMRustInsertPrivateGlobal 🔒
LLVMRustInstallErrorHandlers 🔒
LLVMRustIs64BitSymbolicFile 🔒
LLVMRustIsECObject 🔒
LLVMRustIsNonGVFunctionPointerTy 🔒
LLVMRustLLVMHasZlibCompressionForDebugSymbols 🔒
LLVMRustLLVMHasZstdCompressionForDebugSymbols 🔒
LLVMRustLinkerAdd 🔒
LLVMRustLinkerFree 🔒
LLVMRustLinkerNew 🔒
LLVMRustModuleBufferCreate 🔒
LLVMRustModuleBufferFree 🔒
LLVMRustModuleBufferLen 🔒
LLVMRustModuleBufferPtr 🔒
LLVMRustModuleCost 🔒
LLVMRustModuleInstructionStats 🔒
LLVMRustOpenArchive 🔒
LLVMRustOptimize 🔒
LLVMRustParseBitcodeForLTO 🔒
LLVMRustPositionBuilderAtStart 🔒
LLVMRustPrepareThinLTOImport 🔒
LLVMRustPrepareThinLTOInternalize 🔒
LLVMRustPrepareThinLTORename 🔒
LLVMRustPrepareThinLTOResolveWeak 🔒
LLVMRustPrintModule 🔒
LLVMRustPrintPassTimings 🔒
Prints the timing information collected by -Ztime-llvm-passes.
LLVMRustPrintPasses 🔒
LLVMRustPrintStatistics 🔒
Prints the statistics collected by -Zprint-codegen-stats.
LLVMRustPrintTargetCPUs 🔒
LLVMRustRunRestrictionPass 🔒
LLVMRustSetAlgebraicMath 🔒
LLVMRustSetAllowReassoc 🔒
LLVMRustSetDSOLocal 🔒
LLVMRustSetDataLayoutFromTargetMachine 🔒
LLVMRustSetFastMath 🔒
LLVMRustSetLLVMOptions 🔒
LLVMRustSetModuleCodeModel 🔒
LLVMRustSetModulePICLevel 🔒
LLVMRustSetModulePIELevel 🔒
LLVMRustSetNoSanitizeAddress 🔒
LLVMRustSetNoSanitizeHWAddress 🔒
LLVMRustSetNormalizedTarget 🔒
LLVMRustThinLTOBufferCreate 🔒
LLVMRustThinLTOBufferFree 🔒
LLVMRustThinLTOBufferLen 🔒
LLVMRustThinLTOBufferPtr 🔒
LLVMRustThinLTOBufferThinLinkDataLen 🔒
LLVMRustThinLTOBufferThinLinkDataPtr 🔒
LLVMRustTimeTraceProfilerFinish 🔒
LLVMRustTimeTraceProfilerFinishThread 🔒
LLVMRustTimeTraceProfilerInitialize 🔒
LLVMRustUnpackInlineAsmDiagnostic 🔒
LLVMRustUnpackOptimizationDiagnostic 🔒
LLVMRustUnpackSMDiagnostic 🔒
LLVMRustVersionMajor 🔒
LLVMRustVersionMinor 🔒
LLVMRustVersionPatch 🔒
LLVMRustWriteArchive 🔒
LLVMRustWriteDiagnosticInfoToString 🔒
LLVMRustWriteOutputFile 🔒
LLVMRustWriteTwineToString 🔒
LLVMRustWriteTypeToString 🔒
LLVMRustWriteValueToString 🔒
LLVMSetAlignment 🔒
LLVMSetCleanup 🔒
LLVMSetComdat 🔒
LLVMSetCurrentDebugLocation2 🔒
LLVMSetDLLStorageClass 🔒
LLVMSetDataLayout 🔒
LLVMSetFunctionCallConv 🔒
LLVMSetGlobalConstant 🔒
LLVMSetInitializer 🔒
LLVMSetInstructionCallConv 🔒
LLVMSetIsDisjoint 🔒
LLVMSetLinkage 🔒
LLVMSetMetadata 🔒
LLVMSetNSW 🔒
LLVMSetNUW 🔒
LLVMSetPersonalityFn 🔒
LLVMSetSection 🔒
LLVMSetTailCall 🔒
LLVMSetThreadLocalMode 🔒
LLVMSetUnnamedAddress 🔒
LLVMSetValueName2 🔒
LLVMSetVisibility 🔒
LLVMSetVolatile 🔒
LLVMSetWeak 🔒
LLVMStructCreateNamed 🔒
LLVMStructSetBody 🔒
LLVMStructTypeInContext 🔒
LLVMTokenTypeInContext 🔒
LLVMTypeOf 🔒
LLVMValueAsMetadata 🔒
LLVMVectorType 🔒
LLVMVoidTypeInContext 🔒
LLVMWriteBitcodeToFile 🔒
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.
DiagnosticHandlerTy
GetSymbolsCallback
GetSymbolsErrorCallback
SelfProfileAfterPassCallback
SelfProfileBeforePassCallback

Foreign Types§

Archive
Attribute
BasicBlock
Comdat
ConstantInt
Context
DiagnosticHandler
DiagnosticInfo
Metadata
Module
ModuleBuffer
Opaque 🔒
SMDiagnostic
TargetMachine
ThinLTOBuffer
ThinLTOData
Twine
Type
Value