LLVM  3.7.0
Functions
ValueMapper.cpp File Reference
#include "llvm/Transforms/Utils/ValueMapper.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Metadata.h"
Include dependency graph for ValueMapper.cpp:

Go to the source code of this file.

Functions

static MetadatamapToMetadata (ValueToValueMapTy &VM, const Metadata *Key, Metadata *Val)
 
static MetadatamapToSelf (ValueToValueMapTy &VM, const Metadata *MD)
 
static MetadataMapMetadataImpl (const Metadata *MD, SmallVectorImpl< MDNode * > &Cycles, ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer)
 
static MetadatamapMetadataOp (Metadata *Op, SmallVectorImpl< MDNode * > &Cycles, ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer)
 
static bool remap (const MDNode *OldNode, MDNode *NewNode, SmallVectorImpl< MDNode * > &Cycles, ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer)
 Remap nodes. More...
 
static MetadatamapDistinctNode (const MDNode *Node, SmallVectorImpl< MDNode * > &Cycles, ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer)
 Map a distinct MDNode. More...
 
static MetadatamapUniquedNode (const MDNode *Node, SmallVectorImpl< MDNode * > &Cycles, ValueToValueMapTy &VM, RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer)
 Map a uniqued MDNode. More...
 

Function Documentation

static Metadata* mapDistinctNode ( const MDNode Node,
SmallVectorImpl< MDNode * > &  Cycles,
ValueToValueMapTy VM,
RemapFlags  Flags,
ValueMapTypeRemapper TypeMapper,
ValueMaterializer Materializer 
)
static

Map a distinct MDNode.

Distinct nodes are not uniqued, so they must always recreated.

Definition at line 222 of file ValueMapper.cpp.

References llvm::MDNode::clone(), llvm::MDNode::isDistinct(), llvm::MDNode::isResolved(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), remap(), and llvm::MDNode::replaceWithDistinct().

Referenced by MapMetadataImpl().

static Metadata * MapMetadataImpl ( const Metadata MD,
SmallVectorImpl< MDNode * > &  Cycles,
ValueToValueMapTy VM,
RemapFlags  Flags,
ValueMapTypeRemapper TypeMapper,
ValueMaterializer Materializer 
)
static
static Metadata* mapMetadataOp ( Metadata Op,
SmallVectorImpl< MDNode * > &  Cycles,
ValueToValueMapTy VM,
RemapFlags  Flags,
ValueMapTypeRemapper TypeMapper,
ValueMaterializer Materializer 
)
static

Definition at line 164 of file ValueMapper.cpp.

References MapMetadataImpl(), and llvm::RF_IgnoreMissingEntries.

Referenced by remap().

static Metadata* mapToMetadata ( ValueToValueMapTy VM,
const Metadata Key,
Metadata Val 
)
static
static Metadata* mapToSelf ( ValueToValueMapTy VM,
const Metadata MD 
)
static

Definition at line 154 of file ValueMapper.cpp.

References mapToMetadata().

Referenced by MapMetadataImpl(), and mapUniquedNode().

static Metadata* mapUniquedNode ( const MDNode Node,
SmallVectorImpl< MDNode * > &  Cycles,
ValueToValueMapTy VM,
RemapFlags  Flags,
ValueMapTypeRemapper TypeMapper,
ValueMaterializer Materializer 
)
static

Map a uniqued MDNode.

Uniqued nodes may not need to be recreated (they may map to themselves).

Definition at line 244 of file ValueMapper.cpp.

References llvm::MDNode::clone(), llvm::MDNode::get(), llvm::MDNode::isUniqued(), mapToMetadata(), mapToSelf(), remap(), and llvm::MDNode::replaceWithUniqued().

Referenced by MapMetadataImpl().

static bool remap ( const MDNode OldNode,
MDNode NewNode,
SmallVectorImpl< MDNode * > &  Cycles,
ValueToValueMapTy VM,
RemapFlags  Flags,
ValueMapTypeRemapper TypeMapper,
ValueMaterializer Materializer 
)
static

Remap nodes.

Insert NewNode in the value map, and then remap OldNode's operands. Assumes that NewNode is already a clone of OldNode.

Precondition
NewNode is a clone of OldNode.

Definition at line 191 of file ValueMapper.cpp.

References llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), I, llvm::MDNode::isResolved(), llvm::MDNode::isUniqued(), mapMetadataOp(), mapToMetadata(), and llvm::MDNode::replaceOperandWith().

Referenced by mapDistinctNode(), and mapUniquedNode().