LLVM 20.0.0git
|
Context for (re-)mapping values (and metadata). More...
#include "llvm/Transforms/Utils/ValueMapper.h"
Context for (re-)mapping values (and metadata).
A shared context used for mapping and remapping of Value and Metadata instances using ValueToValueMapTy, RemapFlags, ValueMapTypeRemapper, ValueMaterializer, and IdentityMD.
There are a number of top-level entry points:
The 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 ValueMapper instance:
Sometimes a callback needs a different mapping context. Such a context can be registered using registerAlternateMappingContext(), which takes an alternate ValueToValueMapTy and ValueMaterializer and returns a ID to pass into the schedule*() functions.
If an IdentityMD set is optionally provided, Metadata inside this set will be mapped onto itself in VM on first use.
TODO: lib/Linker really doesn't need the ValueHandle in the ValueToValueMapTy. We should template ValueMapper (and its implementation classes), and explicitly instantiate on two concrete instances of ValueMap (one as ValueToValueMap, and one with raw Value pointers). It may be viable to do away with TrackingMDRef in the Metadata side map for the lib/Linker case as well, in which case we'll need a new template parameter on ValueMap.
TODO: Update callers of RemapInstruction() and MapValue() (etc.) to use ValueMapper directly.
Definition at line 154 of file ValueMapper.h.
ValueMapper::ValueMapper | ( | ValueToValueMapTy & | VM, |
RemapFlags | Flags = RF_None , |
||
ValueMapTypeRemapper * | TypeMapper = nullptr , |
||
ValueMaterializer * | Materializer = nullptr , |
||
const MetadataSetTy * | IdentityMD = nullptr |
||
) |
Definition at line 1208 of file ValueMapper.cpp.
|
delete |
|
delete |
ValueMapper::~ValueMapper | ( | ) |
Definition at line 1214 of file ValueMapper.cpp.
References getAsMapper().
void ValueMapper::addFlags | ( | RemapFlags | Flags | ) |
Add to the current RemapFlags.
Definition at line 1222 of file ValueMapper.cpp.
Definition at line 1230 of file ValueMapper.cpp.
References llvm::CallingConv::C, and mapValue().
Referenced by llvm::MapValue().
Definition at line 1238 of file ValueMapper.cpp.
References mapMetadata(), and N.
Referenced by llvm::MapMetadata().
Definition at line 1234 of file ValueMapper.cpp.
Referenced by mapMDNode(), and llvm::MapMetadata().
Definition at line 1226 of file ValueMapper.cpp.
Referenced by mapConstant(), and llvm::MapValue().
|
delete |
|
delete |
unsigned ValueMapper::registerAlternateMappingContext | ( | ValueToValueMapTy & | VM, |
ValueMaterializer * | Materializer = nullptr |
||
) |
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.
Definition at line 1217 of file ValueMapper.cpp.
References getAsMapper().
Definition at line 1246 of file ValueMapper.cpp.
Referenced by llvm::RemapDbgRecord(), and remapDbgRecordRange().
void ValueMapper::remapDbgRecordRange | ( | Module * | M, |
iterator_range< DbgRecordIterator > | Range | ||
) |
Definition at line 1250 of file ValueMapper.cpp.
References Range, and remapDbgRecord().
Referenced by llvm::RemapDbgRecordRange().
void ValueMapper::remapFunction | ( | Function & | F | ) |
void ValueMapper::remapGlobalObjectMetadata | ( | GlobalObject & | GO | ) |
Definition at line 1261 of file ValueMapper.cpp.
void ValueMapper::remapInstruction | ( | Instruction & | I | ) |
Definition at line 1242 of file ValueMapper.cpp.
References I.
Referenced by llvm::RemapInstruction().
void ValueMapper::scheduleMapAppendingVariable | ( | GlobalVariable & | GV, |
Constant * | InitPrefix, | ||
bool | IsOldCtorDtor, | ||
ArrayRef< Constant * > | NewMembers, | ||
unsigned | MappingContextID = 0 |
||
) |
Definition at line 1271 of file ValueMapper.cpp.
References getAsMapper().
void ValueMapper::scheduleMapGlobalAlias | ( | GlobalAlias & | GA, |
Constant & | Aliasee, | ||
unsigned | MappingContextID = 0 |
||
) |
Definition at line 1280 of file ValueMapper.cpp.
References getAsMapper().
void ValueMapper::scheduleMapGlobalIFunc | ( | GlobalIFunc & | GI, |
Constant & | Resolver, | ||
unsigned | MappingContextID = 0 |
||
) |
Definition at line 1285 of file ValueMapper.cpp.
References getAsMapper().
void ValueMapper::scheduleMapGlobalInitializer | ( | GlobalVariable & | GV, |
Constant & | Init, | ||
unsigned | MappingContextID = 0 |
||
) |
Definition at line 1265 of file ValueMapper.cpp.
References getAsMapper().
Definition at line 1290 of file ValueMapper.cpp.
References F, and getAsMapper().