diff options
author | Artem Pianykh <artem.pyanykh@gmail.com> | 2025-03-12 23:33:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-12 23:33:12 +0000 |
commit | 726ffd361cd932ff3b44e6a6b68bf1dbfd7802e1 (patch) | |
tree | ef186e79c4d70e5f5ec37c53194f9480f1bd9c91 /llvm/lib/Transforms/Utils/ValueMapper.cpp | |
parent | 98c279a3ed202aecae79227317e8a243109c66e6 (diff) | |
download | llvm-726ffd361cd932ff3b44e6a6b68bf1dbfd7802e1.zip llvm-726ffd361cd932ff3b44e6a6b68bf1dbfd7802e1.tar.gz llvm-726ffd361cd932ff3b44e6a6b68bf1dbfd7802e1.tar.bz2 |
[NFC][Cloning] Replace IdentityMD set with a predicate in ValueMapper (#129147)
Summary:
We used the set only to check if it contains certain metadata nodes.
Replacing the set with a predicate makes the intention clearer and the
API more general.
Test Plan:
ninja check-all
Diffstat (limited to 'llvm/lib/Transforms/Utils/ValueMapper.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/ValueMapper.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp index 9882f81..5e50536 100644 --- a/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -120,12 +120,12 @@ class Mapper { SmallVector<WorklistEntry, 4> Worklist; SmallVector<DelayedBasicBlock, 1> DelayedBBs; SmallVector<Constant *, 16> AppendingInits; - const MetadataSetTy *IdentityMD; + const MetadataPredicate *IdentityMD; public: Mapper(ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer, - const MetadataSetTy *IdentityMD) + const MetadataPredicate *IdentityMD) : Flags(Flags), TypeMapper(TypeMapper), MCs(1, MappingContext(VM, Materializer)), IdentityMD(IdentityMD) {} @@ -904,11 +904,10 @@ std::optional<Metadata *> Mapper::mapSimpleMetadata(const Metadata *MD) { return wrapConstantAsMetadata(*CMD, mapValue(CMD->getValue())); } - // Map metadata from IdentityMD on first use. We need to add these nodes to - // the mapping as otherwise metadata nodes numbering gets messed up. This is - // still economical because the amount of data in IdentityMD may be a lot - // larger than what will actually get used. - if (IdentityMD && IdentityMD->contains(MD)) + // Map metadata matching IdentityMD predicate on first use. We need to add + // these nodes to the mapping as otherwise metadata nodes numbering gets + // messed up. + if (IdentityMD && (*IdentityMD)(MD)) return getVM().MD()[MD] = TrackingMDRef(const_cast<Metadata *>(MD)); assert(isa<MDNode>(MD) && "Expected a metadata node"); @@ -1211,7 +1210,7 @@ public: ValueMapper::ValueMapper(ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer, - const MetadataSetTy *IdentityMD) + const MetadataPredicate *IdentityMD) : pImpl(new Mapper(VM, Flags, TypeMapper, Materializer, IdentityMD)) {} ValueMapper::~ValueMapper() { delete getAsMapper(pImpl); } |