|
LLVM
4.0.0
|
Namespaces | |
| remote | |
| rpc | |
Classes | |
| class | CompileOnDemandLayer |
| Compile-on-demand layer. More... | |
| class | SimpleCompiler |
| Simple compile functor: Takes a single IR module and returns an ObjectFile. More... | |
| class | CtorDtorIterator |
| This iterator provides a convenient way to iterate over the elements of an llvm.global_ctors/llvm.global_dtors instance. More... | |
| class | CtorDtorRunner |
| Convenience class for recording constructor/destructor names for later execution. More... | |
| class | LocalCXXRuntimeOverrides |
| Support class for static dtor execution. More... | |
| class | GlobalMappingLayer |
| Global mapping layer. More... | |
| class | JITCompileCallbackManager |
| Target-independent base class for compile callback management. More... | |
| class | LocalJITCompileCallbackManager |
| Manage compile callbacks for in-process JITs. More... | |
| class | IndirectStubsManager |
| Base class for managing collections of named indirect stubs. More... | |
| class | LocalIndirectStubsManager |
| IndirectStubsManager implementation for the host architecture, e.g. More... | |
| class | IRCompileLayer |
| Eager IR compiling layer. More... | |
| class | IRTransformLayer |
| IR mutating layer. More... | |
| class | LambdaResolver |
| class | LazyEmittingLayer |
| Lazy-emitting IR layer. More... | |
| class | NullResolver |
| SymbolResolver impliementation that rejects all resolution requests. More... | |
| class | ObjectLinkingLayerBase |
| class | DoNothingOnNotifyLoaded |
| Default (no-op) action to perform when loading objects. More... | |
| class | ObjectLinkingLayer |
| Bare bones object linking layer. More... | |
| class | ObjectTransformLayer |
| Object mutating layer. More... | |
| class | OrcGenericABI |
| Generic ORC ABI support. More... | |
| class | GenericIndirectStubsInfo |
| Provide information about stub blocks generated by the makeIndirectStubsBlock function. More... | |
| class | OrcAArch64 |
| class | OrcX86_64_Base |
| X86_64 code that's common to all ABIs. More... | |
| class | OrcX86_64_SysV |
| X86_64 support for SysV ABI (Linux, MacOSX). More... | |
| class | OrcX86_64_Win32 |
| X86_64 support for Win32. More... | |
| class | OrcI386 |
| I386 support. More... | |
| class | GlobalRenamer |
| class | OrcMCJITReplacement |
Functions | |
| iterator_range< CtorDtorIterator > | getConstructors (const Module &M) |
| Create an iterator range over the entries of the llvm.global_ctors array. More... | |
| iterator_range< CtorDtorIterator > | getDestructors (const Module &M) |
| Create an iterator range over the entries of the llvm.global_ctors array. More... | |
| std::unique_ptr < JITCompileCallbackManager > | createLocalCompileCallbackManager (const Triple &T, JITTargetAddress ErrorHandlerAddress) |
| Create a local compile callback manager. More... | |
| std::function< std::unique_ptr < IndirectStubsManager >)> | createLocalIndirectStubsManagerBuilder (const Triple &T) |
| Create a local indriect stubs manager builder. More... | |
| Constant * | createIRTypedAddress (FunctionType &FT, JITTargetAddress Addr) |
| Build a function pointer of FunctionType with the given constant address. More... | |
| GlobalVariable * | createImplPointer (PointerType &PT, Module &M, const Twine &Name, Constant *Initializer) |
| Create a function pointer with the given type, name, and initializer in the given Module. More... | |
| void | makeStub (Function &F, Value &ImplPointer) |
| Turn a function declaration into a stub function that makes an indirect call using the given function pointer. More... | |
| void | makeAllSymbolsExternallyAccessible (Module &M) |
| Raise linkage types and rename as necessary to ensure that all symbols are accessible for other modules. More... | |
| Function * | cloneFunctionDecl (Module &Dst, const Function &F, ValueToValueMapTy *VMap=nullptr) |
| Clone a function declaration into a new module. More... | |
| void | moveFunctionBody (Function &OrigF, ValueToValueMapTy &VMap, ValueMaterializer *Materializer=nullptr, Function *NewF=nullptr) |
| Move the body of function 'F' to a cloned function declaration in a different module (See related cloneFunctionDecl). More... | |
| GlobalVariable * | cloneGlobalVariableDecl (Module &Dst, const GlobalVariable &GV, ValueToValueMapTy *VMap=nullptr) |
| Clone a global variable declaration into a new module. More... | |
| void | moveGlobalVariableInitializer (GlobalVariable &OrigGV, ValueToValueMapTy &VMap, ValueMaterializer *Materializer=nullptr, GlobalVariable *NewGV=nullptr) |
| Move global variable GV from its parent module to cloned global declaration in a different module. More... | |
| GlobalAlias * | cloneGlobalAliasDecl (Module &Dst, const GlobalAlias &OrigA, ValueToValueMapTy &VMap) |
| Clone a global alias declaration into a new module. More... | |
| void | cloneModuleFlagsMetadata (Module &Dst, const Module &Src, ValueToValueMapTy &VMap) |
| Clone module flags metadata into the destination module. More... | |
| template<typename DylibLookupFtorT , typename ExternalLookupFtorT > | |
| std::unique_ptr < LambdaResolver < DylibLookupFtorT, ExternalLookupFtorT > > | createLambdaResolver (DylibLookupFtorT DylibLookupFtor, ExternalLookupFtorT ExternalLookupFtor) |
| Error | orcError (OrcErrorCode ErrCode) |
| static void | raiseVisibilityOnValue (GlobalValue &V, GlobalRenamer &R) |
|
strong |
Definition at line 23 of file OrcError.h.
| Function * llvm::orc::cloneFunctionDecl | ( | Module & | Dst, |
| const Function & | F, | ||
| ValueToValueMapTy * | VMap = nullptr |
||
| ) |
Clone a function declaration into a new module.
This function can be used as the first step towards creating a callback stub (see makeStub), or moving a function body (see moveFunctionBody).
If the VMap argument is non-null, a mapping will be added between F and the new declaration, and between each of F's arguments and the new declaration's arguments. This map can then be passed in to moveFunction to move the function body if required. Note: When moving functions between modules with these utilities, all decls should be cloned (and added to a single VMap) before any bodies are moved. This will ensure that references between functions all refer to the versions in the new module.
Definition at line 164 of file IndirectionUtils.cpp.
References llvm::Function::arg_begin(), llvm::Function::arg_end(), assert(), llvm::Function::copyAttributesFrom(), llvm::Function::Create(), F, llvm::GlobalValue::getLinkage(), llvm::Value::getName(), llvm::GlobalValue::getParent(), and llvm::GlobalValue::getValueType().
| GlobalAlias * llvm::orc::cloneGlobalAliasDecl | ( | Module & | Dst, |
| const GlobalAlias & | OrigA, | ||
| ValueToValueMapTy & | VMap | ||
| ) |
Clone a global alias declaration into a new module.
Definition at line 233 of file IndirectionUtils.cpp.
References assert(), llvm::GlobalValue::copyAttributesFrom(), llvm::GlobalAlias::create(), llvm::GlobalAlias::getAliasee(), llvm::GlobalValue::getLinkage(), llvm::Value::getName(), llvm::Type::getPointerAddressSpace(), llvm::GlobalValue::getType(), and llvm::GlobalValue::getValueType().
| GlobalVariable * llvm::orc::cloneGlobalVariableDecl | ( | Module & | Dst, |
| const GlobalVariable & | GV, | ||
| ValueToValueMapTy * | VMap = nullptr |
||
| ) |
Clone a global variable declaration into a new module.
Definition at line 202 of file IndirectionUtils.cpp.
References assert(), llvm::GlobalVariable::copyAttributesFrom(), llvm::PointerType::getAddressSpace(), llvm::GlobalValue::getLinkage(), llvm::Value::getName(), llvm::GlobalValue::getParent(), llvm::GlobalValue::getThreadLocalMode(), llvm::GlobalValue::getType(), llvm::GlobalValue::getValueType(), and llvm::GlobalVariable::isConstant().
| void llvm::orc::cloneModuleFlagsMetadata | ( | Module & | Dst, |
| const Module & | Src, | ||
| ValueToValueMapTy & | VMap | ||
| ) |
Clone module flags metadata into the destination module.
Definition at line 244 of file IndirectionUtils.cpp.
References llvm::Module::addModuleFlag(), llvm::Module::getModuleFlagsMetadata(), and llvm::MapMetadata().
| GlobalVariable * llvm::orc::createImplPointer | ( | PointerType & | PT, |
| Module & | M, | ||
| const Twine & | Name, | ||
| Constant * | Initializer | ||
| ) |
Create a function pointer with the given type, name, and initializer in the given Module.
Definition at line 83 of file IndirectionUtils.cpp.
References llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::HiddenVisibility, and llvm::GlobalValue::NotThreadLocal.
| Constant * llvm::orc::createIRTypedAddress | ( | FunctionType & | FT, |
| JITTargetAddress | Addr | ||
| ) |
Build a function pointer of FunctionType with the given constant address.
Usage example: Turn a trampoline address into a function pointer constant for use in a stub.
Definition at line 74 of file IndirectionUtils.cpp.
References llvm::ConstantInt::get(), llvm::PointerType::get(), llvm::ConstantExpr::getCast(), llvm::Type::getContext(), and llvm::Type::getInt64Ty().
| std::unique_ptr<LambdaResolver<DylibLookupFtorT, ExternalLookupFtorT> > llvm::orc::createLambdaResolver | ( | DylibLookupFtorT | DylibLookupFtor, |
| ExternalLookupFtorT | ExternalLookupFtor | ||
| ) |
Definition at line 50 of file LambdaResolver.h.
Referenced by llvm::OrcCBindingsStack::createResolver().
| std::unique_ptr< JITCompileCallbackManager > llvm::orc::createLocalCompileCallbackManager | ( | const Triple & | T, |
| JITTargetAddress | ErrorHandlerAddress | ||
| ) |
Create a local compile callback manager.
The given target triple will determine the ABI, and the given ErrorHandlerAddress will be used by the resulting compile callback manager if a compile callback fails.
Definition at line 26 of file IndirectionUtils.cpp.
References llvm::Triple::getArch(), llvm::Triple::getOS(), llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by LLVMOrcCreateInstance().
| std::function< std::unique_ptr< IndirectStubsManager >)> llvm::orc::createLocalIndirectStubsManagerBuilder | ( | const Triple & | T | ) |
Create a local indriect stubs manager builder.
The given target triple will determine the ABI.
Definition at line 49 of file IndirectionUtils.cpp.
References llvm::Triple::getArch(), llvm::Triple::getOS(), llvm::make_unique(), llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by LLVMOrcCreateInstance().
| iterator_range< CtorDtorIterator > llvm::orc::getConstructors | ( | const Module & | M | ) |
Create an iterator range over the entries of the llvm.global_ctors array.
Definition at line 74 of file ExecutionUtils.cpp.
References llvm::Module::getNamedGlobal(), and llvm::make_range().
Referenced by llvm::OrcCBindingsStack::addIRModule().
| iterator_range< CtorDtorIterator > llvm::orc::getDestructors | ( | const Module & | M | ) |
Create an iterator range over the entries of the llvm.global_ctors array.
Definition at line 80 of file ExecutionUtils.cpp.
References llvm::Module::getNamedGlobal(), and llvm::make_range().
Referenced by llvm::OrcCBindingsStack::addIRModule().
| void llvm::orc::makeAllSymbolsExternallyAccessible | ( | Module & | M | ) |
Raise linkage types and rename as necessary to ensure that all symbols are accessible for other modules.
This should be called before partitioning a module to ensure that the partitions retain access to each other's symbols.
Definition at line 151 of file IndirectionUtils.cpp.
References A, F, and raiseVisibilityOnValue().
| void llvm::orc::makeStub | ( | Function & | F, |
| Value & | ImplPointer | ||
| ) |
Turn a function declaration into a stub function that makes an indirect call using the given function pointer.
Definition at line 92 of file IndirectionUtils.cpp.
References A, llvm::Function::args(), assert(), llvm::Call, llvm::BasicBlock::Create(), F, llvm::Function::getAttributes(), llvm::GlobalValue::getParent(), llvm::Function::getReturnType(), llvm::GlobalValue::isDeclaration(), llvm::Type::isVoidTy(), llvm::CallInst::setAttributes(), and llvm::CallInst::setTailCall().
| void llvm::orc::moveFunctionBody | ( | Function & | OrigF, |
| ValueToValueMapTy & | VMap, | ||
| ValueMaterializer * | Materializer = nullptr, |
||
| Function * | NewF = nullptr |
||
| ) |
Move the body of function 'F' to a cloned function declaration in a different module (See related cloneFunctionDecl).
If the target function declaration is not supplied via the NewF parameter then it will be looked up via the VMap.
This will delete the body of function 'F' from its original parent module, but leave its declaration.
Definition at line 183 of file IndirectionUtils.cpp.
References assert(), llvm::CloneFunctionInto(), llvm::Function::deleteBody(), llvm::GlobalValue::getParent(), and llvm::GlobalValue::isDeclaration().
| void llvm::orc::moveGlobalVariableInitializer | ( | GlobalVariable & | OrigGV, |
| ValueToValueMapTy & | VMap, | ||
| ValueMaterializer * | Materializer = nullptr, |
||
| GlobalVariable * | NewGV = nullptr |
||
| ) |
Move global variable GV from its parent module to cloned global declaration in a different module.
If the target global declaration is not supplied via the NewGV parameter then it will be looked up via the VMap.
This will delete the initializer of GV from its original parent module, but leave its declaration.
Definition at line 215 of file IndirectionUtils.cpp.
References assert(), llvm::GlobalVariable::getInitializer(), llvm::GlobalValue::getParent(), llvm::GlobalVariable::hasInitializer(), llvm::MapValue(), llvm::RF_None, and llvm::GlobalVariable::setInitializer().
| Error llvm::orc::orcError | ( | OrcErrorCode | ErrCode | ) |
Definition at line 61 of file OrcError.cpp.
References llvm::errorCodeToError().
Referenced by llvm::orc::rpc::detail::RPCEndpointBase< SingleThreadedRPCEndpoint< ChannelT, FunctionIdT, SequenceNumberT >, ChannelT, FunctionIdT, SequenceNumberT >::appendCallAsync(), llvm::orc::rpc::detail::ResponseHandler< ChannelT >::createAbandonedResponseError(), llvm::orc::rpc::detail::RPCEndpointBase< SingleThreadedRPCEndpoint< ChannelT, FunctionIdT, SequenceNumberT >, ChannelT, FunctionIdT, SequenceNumberT >::getRemoteFunctionId(), llvm::orc::rpc::detail::RPCEndpointBase< SingleThreadedRPCEndpoint< ChannelT, FunctionIdT, SequenceNumberT >, ChannelT, FunctionIdT, SequenceNumberT >::handleOne(), llvm::orc::rpc::detail::RPCEndpointBase< SingleThreadedRPCEndpoint< ChannelT, FunctionIdT, SequenceNumberT >, ChannelT, FunctionIdT, SequenceNumberT >::handleResponse(), llvm::orc::rpc::MultiThreadedRPCEndpoint< ChannelT, FunctionIdT, SequenceNumberT >::negotiateFunction(), and llvm::orc::rpc::SingleThreadedRPCEndpoint< rpc::RawByteChannel >::negotiateFunction().
|
static |
Definition at line 140 of file IndirectionUtils.cpp.
References assert(), llvm::GlobalValue::ExternalLinkage, llvm::orc::GlobalRenamer::getRename(), llvm::GlobalValue::hasLocalLinkage(), llvm::GlobalValue::HiddenVisibility, llvm::orc::GlobalRenamer::needsRenaming(), llvm::GlobalValue::None, llvm::GlobalValue::setLinkage(), llvm::Value::setName(), llvm::GlobalValue::setUnnamedAddr(), and llvm::GlobalValue::setVisibility().
Referenced by makeAllSymbolsExternallyAccessible().
1.8.6