From 41d89c2572375a47a109f030c038ba666bfedbe7 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Mon, 27 Jul 2009 17:17:04 +0000 Subject: [PATCH] Do not seed mstadata into the value map. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77208 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/ValueMapper.cpp | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 0dc012e4d91..a8f0f86ddf5 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/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; } -- 2.11.0