LLVM 17.0.0git
Classes | Namespaces | Functions
IndirectionUtils.h File Reference
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ExecutionEngine/JITSymbol.h"
#include "llvm/ExecutionEngine/Orc/Core.h"
#include "llvm/ExecutionEngine/Orc/OrcABISupport.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/Memory.h"
#include "llvm/Support/Process.h"
#include "llvm/Transforms/Utils/ValueMapper.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <functional>
#include <future>
#include <map>
#include <memory>
#include <system_error>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

class  llvm::orc::TrampolinePool
 Base class for pools of compiler re-entry trampolines. More...
 
class  llvm::orc::LocalTrampolinePool< ORCABI >
 A trampoline pool for trampolines within the current process. More...
 
class  llvm::orc::JITCompileCallbackManager
 Target-independent base class for compile callback management. More...
 
class  llvm::orc::LocalJITCompileCallbackManager< ORCABI >
 Manage compile callbacks for in-process JITs. More...
 
class  llvm::orc::IndirectStubsManager
 Base class for managing collections of named indirect stubs. More...
 
class  llvm::orc::LocalIndirectStubsInfo< ORCABI >
 
class  llvm::orc::LocalIndirectStubsManager< TargetT >
 IndirectStubsManager implementation for the host architecture, e.g. More...
 
class  llvm::orc::SymbolLinkagePromoter
 Promotes private symbols to global hidden, and renames to prevent clashes with other promoted symbols. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
 
namespace  llvm::orc
 

Functions

Expected< std::unique_ptr< JITCompileCallbackManager > > llvm::orc::createLocalCompileCallbackManager (const Triple &T, ExecutionSession &ES, ExecutorAddr ErrorHandlerAddress)
 Create a local compile callback manager.
 
std::function< std::unique_ptr< IndirectStubsManager >()> llvm::orc::createLocalIndirectStubsManagerBuilder (const Triple &T)
 Create a local indriect stubs manager builder.
 
Constantllvm::orc::createIRTypedAddress (FunctionType &FT, ExecutorAddr Addr)
 Build a function pointer of FunctionType with the given constant address.
 
GlobalVariablellvm::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.
 
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.
 
Functionllvm::orc::cloneFunctionDecl (Module &Dst, const Function &F, ValueToValueMapTy *VMap=nullptr)
 Clone a function declaration into a new module.
 
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).
 
GlobalVariablellvm::orc::cloneGlobalVariableDecl (Module &Dst, const GlobalVariable &GV, ValueToValueMapTy *VMap=nullptr)
 Clone a global variable declaration into a new module.
 
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.
 
GlobalAliasllvm::orc::cloneGlobalAliasDecl (Module &Dst, const GlobalAlias &OrigA, ValueToValueMapTy &VMap)
 Clone a global alias declaration into a new module.
 
void llvm::orc::cloneModuleFlagsMetadata (Module &Dst, const Module &Src, ValueToValueMapTy &VMap)
 Clone module flags metadata into the destination module.
 
Error llvm::orc::addFunctionPointerRelocationsToCurrentSymbol (jitlink::Symbol &Sym, jitlink::LinkGraph &G, MCDisassembler &Disassembler, MCInstrAnalysis &MIA)
 Introduce relocations to Sym in its own definition if there are any pointers formed via PC-relative address that do not already have a relocation.