From: Devang Patel Date: Mon, 27 Jul 2009 17:17:04 +0000 (+0000) Subject: Do not seed mstadata into the value map. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de6f46c32e0a493b28889ea304aec8a6e91cf36d;p=platform%2Fupstream%2Fllvm.git Do not seed mstadata into the value map. llvm-svn: 77208 --- diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp index 0dc012e..a8f0f86 100644 --- a/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -14,6 +14,7 @@ #include "llvm/Transforms/Utils/ValueMapper.h" #include "llvm/BasicBlock.h" +#include "llvm/DerivedTypes.h" // For getNullValue(Type::Int32Ty) #include "llvm/Constants.h" #include "llvm/GlobalValue.h" #include "llvm/Instruction.h" @@ -30,9 +31,9 @@ Value *llvm::MapValue(const Value *V, ValueMapTy &VM, LLVMContext &Context) { // NOTE: VMSlot can be invalidated by any reference to VM, which can grow the // DenseMap. This includes any recursive calls to MapValue. - // Global values do not need to be seeded into the ValueMap if they are using - // the identity mapping. - if (isa(V) || isa(V)) + // Global values and metadata do not need to be seeded into the ValueMap if + // they are using the identity mapping. + if (isa(V) || isa(V) || isa(V)) return VMSlot = const_cast(V); if (Constant *C = const_cast(dyn_cast(V))) { @@ -105,32 +106,10 @@ Value *llvm::MapValue(const Value *V, ValueMapTy &VM, LLVMContext &Context) { } return VM[V] = C; - } else if (MDNode *N = dyn_cast(C)) { - for (MDNode::const_elem_iterator b = N->elem_begin(), i = b, - e = N->elem_end(); i != e; ++i) { - if (!*i) continue; - - Value *MV = MapValue(*i, VM, Context); - if (MV != *i) { - // This MDNode must contain a reference to a global, make a new MDNode - // and return it. - SmallVector Values; - Values.reserve(N->getNumElements()); - for (MDNode::const_elem_iterator j = b; j != i; ++j) - Values.push_back(*j); - Values.push_back(MV); - for (++i; i != e; ++i) - Values.push_back(MapValue(*i, VM, Context)); - return VM[V] = Context.getMDNode(Values.data(), Values.size()); - } - } - return VM[V] = C; - } else { llvm_unreachable("Unknown type of constant!"); } } - return 0; }