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 🔒
GEPNoWrapFlags
InvariantOpaque 🔒
Linker 🔒
MetadataKindId 🔒
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 🔒
LLVMBuildGEPWithNoWrapFlags 🔒
LLVMBuildICmp 🔒
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 🔒