class ValueMapper
Declaration
class ValueMapper { /* full declaration omitted */ };
Description
Context for (re-)mapping values (and metadata). A shared context used for mapping and remapping of Value and Metadata instances using \a ValueToValueMapTy, \a RemapFlags, \a ValueMapTypeRemapper, and \a ValueMaterializer. There are a number of top-level entry points: - \a mapValue() (and \a mapConstant()); - \a mapMetadata() (and \a mapMDNode()); - \a remapInstruction(); and - \a remapFunction(). The \a ValueMaterializer can be used as a callback, but cannot invoke any of these top-level functions recursively. Instead, callbacks should use one of the following to schedule work lazily in the \a ValueMapper instance: - \a scheduleMapGlobalInitializer() - \a scheduleMapAppendingVariable() - \a scheduleMapGlobalAlias() - \a scheduleMapGlobalIFunc() - \a scheduleRemapFunction() Sometimes a callback needs a different mapping context. Such a context can be registered using \a registerAlternateMappingContext(), which takes an alternate \a ValueToValueMapTy and \a ValueMaterializer and returns a ID to pass into the schedule*() functions. TODO: lib/Linker really doesn't need the \a ValueHandle in the \a ValueToValueMapTy. We should template \a ValueMapper (and its implementation classes), and explicitly instantiate on two concrete instances of \a ValueMap (one as \a ValueToValueMap, and one with raw \a Value pointers). It may be viable to do away with \a TrackingMDRef in the\a Metadata side map for the lib/Linker case as well, in which case we'll need a new template parameter on \a ValueMap. TODO: Update callers of \a RemapInstruction() and \a MapValue() (etc.) to use \a ValueMapper directly.
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:143
Member Variables
- private void* pImpl
Method Overview
- public ValueMapper(llvm::ValueMapper &&)
- public ValueMapper(const llvm::ValueMapper &)
- public ValueMapper(llvm::ValueToValueMapTy & VM, llvm::RemapFlags Flags = RF_None, llvm::ValueMapTypeRemapper * TypeMapper = nullptr, llvm::ValueMaterializer * Materializer = nullptr)
- public void addFlags(llvm::RemapFlags Flags)
- public llvm::Constant * mapConstant(const llvm::Constant & C)
- public llvm::MDNode * mapMDNode(const llvm::MDNode & N)
- public llvm::Metadata * mapMetadata(const llvm::Metadata & MD)
- public llvm::Value * mapValue(const llvm::Value & V)
- public unsigned int registerAlternateMappingContext(llvm::ValueToValueMapTy & VM, llvm::ValueMaterializer * Materializer = nullptr)
- public void remapFunction(llvm::Function & F)
- public void remapInstruction(llvm::Instruction & I)
- public void scheduleMapAppendingVariable(llvm::GlobalVariable & GV, llvm::Constant * InitPrefix, bool IsOldCtorDtor, ArrayRef<llvm::Constant *> NewMembers, unsigned int MappingContextID = 0)
- public void scheduleMapGlobalAlias(llvm::GlobalAlias & GA, llvm::Constant & Aliasee, unsigned int MappingContextID = 0)
- public void scheduleMapGlobalIFunc(llvm::GlobalIFunc & GI, llvm::Constant & Resolver, unsigned int MappingContextID = 0)
- public void scheduleMapGlobalInitializer(llvm::GlobalVariable & GV, llvm::Constant & Init, unsigned int MappingContextID = 0)
- public void scheduleRemapFunction(llvm::Function & F, unsigned int MappingContextID = 0)
- public ~ValueMapper()
Methods
¶ValueMapper(llvm::ValueMapper&&)
ValueMapper(llvm::ValueMapper&&)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:150
Parameters
¶ValueMapper(const llvm::ValueMapper&)
ValueMapper(const llvm::ValueMapper&)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:151
Parameters
- const llvm::ValueMapper&
¶ValueMapper(
llvm::ValueToValueMapTy& VM,
llvm::RemapFlags Flags = RF_None,
llvm::ValueMapTypeRemapper* TypeMapper =
nullptr,
llvm::ValueMaterializer* Materializer =
nullptr)
ValueMapper(
llvm::ValueToValueMapTy& VM,
llvm::RemapFlags Flags = RF_None,
llvm::ValueMapTypeRemapper* TypeMapper =
nullptr,
llvm::ValueMaterializer* Materializer =
nullptr)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:147
Parameters
- llvm::ValueToValueMapTy& VM
- llvm::RemapFlags Flags = RF_None
- llvm::ValueMapTypeRemapper* TypeMapper = nullptr
- llvm::ValueMaterializer* Materializer = nullptr
¶void addFlags(llvm::RemapFlags Flags)
void addFlags(llvm::RemapFlags Flags)
Description
Add to the current \a RemapFlags.
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:168
Parameters
- llvm::RemapFlags Flags
¶llvm::Constant* mapConstant(
const llvm::Constant& C)
llvm::Constant* mapConstant(
const llvm::Constant& C)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:174
Parameters
- const llvm::Constant& C
¶llvm::MDNode* mapMDNode(const llvm::MDNode& N)
llvm::MDNode* mapMDNode(const llvm::MDNode& N)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:171
Parameters
- const llvm::MDNode& N
¶llvm::Metadata* mapMetadata(
const llvm::Metadata& MD)
llvm::Metadata* mapMetadata(
const llvm::Metadata& MD)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:170
Parameters
- const llvm::Metadata& MD
¶llvm::Value* mapValue(const llvm::Value& V)
llvm::Value* mapValue(const llvm::Value& V)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:173
Parameters
- const llvm::Value& V
¶unsigned int registerAlternateMappingContext(
llvm::ValueToValueMapTy& VM,
llvm::ValueMaterializer* Materializer =
nullptr)
unsigned int registerAlternateMappingContext(
llvm::ValueToValueMapTy& VM,
llvm::ValueMaterializer* Materializer =
nullptr)
Description
Register an alternate mapping context. Returns a MappingContextID that can be used with the various schedule*() API to switch in a different value map on-the-fly.
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:161
Parameters
- llvm::ValueToValueMapTy& VM
- llvm::ValueMaterializer* Materializer = nullptr
¶void remapFunction(llvm::Function& F)
void remapFunction(llvm::Function& F)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:177
Parameters
¶void remapInstruction(llvm::Instruction& I)
void remapInstruction(llvm::Instruction& I)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:176
Parameters
¶void scheduleMapAppendingVariable(
llvm::GlobalVariable& GV,
llvm::Constant* InitPrefix,
bool IsOldCtorDtor,
ArrayRef<llvm::Constant*> NewMembers,
unsigned int MappingContextID = 0)
void scheduleMapAppendingVariable(
llvm::GlobalVariable& GV,
llvm::Constant* InitPrefix,
bool IsOldCtorDtor,
ArrayRef<llvm::Constant*> NewMembers,
unsigned int MappingContextID = 0)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:181
Parameters
- llvm::GlobalVariable& GV
- llvm::Constant* InitPrefix
- bool IsOldCtorDtor
- ArrayRef<llvm::Constant*> NewMembers
- unsigned int MappingContextID = 0
¶void scheduleMapGlobalAlias(
llvm::GlobalAlias& GA,
llvm::Constant& Aliasee,
unsigned int MappingContextID = 0)
void scheduleMapGlobalAlias(
llvm::GlobalAlias& GA,
llvm::Constant& Aliasee,
unsigned int MappingContextID = 0)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:185
Parameters
- llvm::GlobalAlias& GA
- llvm::Constant& Aliasee
- unsigned int MappingContextID = 0
¶void scheduleMapGlobalIFunc(
llvm::GlobalIFunc& GI,
llvm::Constant& Resolver,
unsigned int MappingContextID = 0)
void scheduleMapGlobalIFunc(
llvm::GlobalIFunc& GI,
llvm::Constant& Resolver,
unsigned int MappingContextID = 0)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:187
Parameters
- llvm::GlobalIFunc& GI
- llvm::Constant& Resolver
- unsigned int MappingContextID = 0
¶void scheduleMapGlobalInitializer(
llvm::GlobalVariable& GV,
llvm::Constant& Init,
unsigned int MappingContextID = 0)
void scheduleMapGlobalInitializer(
llvm::GlobalVariable& GV,
llvm::Constant& Init,
unsigned int MappingContextID = 0)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:179
Parameters
- llvm::GlobalVariable& GV
- llvm::Constant& Init
- unsigned int MappingContextID = 0
¶void scheduleRemapFunction(
llvm::Function& F,
unsigned int MappingContextID = 0)
void scheduleRemapFunction(
llvm::Function& F,
unsigned int MappingContextID = 0)
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:189
Parameters
- llvm::Function& F
- unsigned int MappingContextID = 0
¶~ValueMapper()
~ValueMapper()
Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:154