ΒΆinline llvm::Metadata* MapMetadata(
    const llvm::Metadata* MD,
    llvm::ValueToValueMapTy& VM,
    llvm::RemapFlags Flags = RF_None,
    llvm::ValueMapTypeRemapper* TypeMapper =
        nullptr,
    llvm::ValueMaterializer* Materializer =
        nullptr)

Description

Lookup or compute a mapping for a piece of metadata. Compute and memoize a mapping for \c MD. 1. If \c MD is mapped, return it. 2. Else if \a RF_NoModuleLevelChanges or \c MD is an \a MDString, return\c MD. 3. Else if \c MD is a \a ConstantAsMetadata, call \a MapValue() and re-wrap its return (returning nullptr on nullptr). 4. Else, \c MD is an \a MDNode. These are remapped, along with their transitive operands. Distinct nodes are duplicated or moved depending on \a RF_MoveDistinctNodes. Uniqued nodes are remapped like constants.

Declared at: llvm/include/llvm/Transforms/Utils/ValueMapper.h:228

Parameters

const llvm::Metadata* MD
llvm::ValueToValueMapTy& VM
llvm::RemapFlags Flags = RF_None
llvm::ValueMapTypeRemapper* TypeMapper = nullptr
llvm::ValueMaterializer* Materializer = nullptr