- // If metadata element is mapped to a new value then seed metadata
- // in the map.
- for (unsigned i = 0, e = MD->getNumOperands(); i != e; ++i) {
- if (!MD->getOperand(i))
- Elts.push_back(0);
- else {
- Value *MappedOp = MapValue(MD->getOperand(i), VM);
- if (MappedOp != MD->getOperand(i))
- ReuseMD = false;
- Elts.push_back(MappedOp);
- }
- }
- if (ReuseMD) {
- VM.insert(std::make_pair(V, const_cast<Value*>(V)));
- return const_cast<Value*>(V);
- }
- MDNode *NewMD = MDNode::get(V->getContext(), Elts.data(), Elts.size());
- VM.insert(std::make_pair(V, NewMD));
- return NewMD;
+ for (unsigned i = 0, e = MD->getNumOperands(); i != e; ++i)
+ Elts.push_back(MD->getOperand(i) ? MapValue(MD->getOperand(i), VM) : 0);
+ return VM[V] = MDNode::get(V->getContext(), Elts.data(), Elts.size());