Lines Matching refs:MDNode
204 SmallVector<MDNode *, 16> POT; // Post-order traversal.
213 Metadata &getFwdReference(MDNode &Op);
217 SmallVector<MDNode *, 16> DistinctWorklist;
221 SmallVector<MDNode *, 16> POTStorage;
244 Metadata *map(const MDNode &N);
266 Metadata *mapTopLevelUniquedNode(const MDNode &FirstN);
285 MDNode *mapDistinctNode(const MDNode &N);
304 bool createPOT(UniquedGraph &G, const MDNode &FirstN);
313 MDNode *visitOperands(UniquedGraph &G, MDNode::op_iterator &I,
314 MDNode::op_iterator E, bool &HasChanged);
335 void remapOperands(MDNode &N, OperandMapper mapOperand);
534 const MDNode &N = *cast<MDNode>(Op); in tryToMapOperand()
540 static Metadata *cloneOrBuildODR(const MDNode &N) { in cloneOrBuildODR()
547 return MDNode::replaceWithDistinct(N.clone()); in cloneOrBuildODR()
550 MDNode *MDNodeMapper::mapDistinctNode(const MDNode &N) { in mapDistinctNode()
554 cast<MDNode>((M.Flags & RF_MoveDistinctMDs) in mapDistinctNode()
583 Metadata &MDNodeMapper::UniquedGraph::getFwdReference(MDNode &Op) { in getFwdReference()
599 void MDNodeMapper::remapOperands(MDNode &N, OperandMapper mapOperand) { in remapOperands()
614 MDNode *N; ///< Current node.
615 MDNode::op_iterator Op; ///< Current operand of \c N.
621 POTWorklistEntry(MDNode &N) : N(&N), Op(N.op_begin()) {} in POTWorklistEntry()
626 bool MDNodeMapper::createPOT(UniquedGraph &G, const MDNode &FirstN) { in createPOT()
633 Worklist.push_back(POTWorklistEntry(const_cast<MDNode &>(FirstN))); in createPOT()
638 if (MDNode *N = visitOperands(G, WE.Op, WE.N->op_end(), WE.HasChanged)) { in createPOT()
658 MDNode *MDNodeMapper::visitOperands(UniquedGraph &G, MDNode::op_iterator &I, in visitOperands()
659 MDNode::op_iterator E, bool &HasChanged) { in visitOperands()
669 MDNode &OpN = *cast<MDNode>(Op); in visitOperands()
682 for (MDNode *N : POT) { in propagateChanges()
700 SmallVector<MDNode *, 16> CyclicNodes; in mapNodesInPOT()
719 return &G.getFwdReference(*cast<MDNode>(Old)); in mapNodesInPOT()
722 auto *NewN = MDNode::replaceWithUniqued(std::move(ClonedN)); in mapNodesInPOT()
737 Metadata *MDNodeMapper::map(const MDNode &N) { in map()
751 return mapTopLevelUniquedNode(*cast<MDNode>(Old)); in map()
756 Metadata *MDNodeMapper::mapTopLevelUniquedNode(const MDNode &FirstN) { in mapTopLevelUniquedNode()
763 for (const MDNode *N : G.POT) in mapTopLevelUniquedNode()
765 return &const_cast<MDNode &>(FirstN); in mapTopLevelUniquedNode()
816 assert(isa<MDNode>(MD) && "Expected a metadata node"); in mapSimpleMetadata()
828 return MDNodeMapper(*this).map(*cast<MDNode>(MD)); in mapMetadata()
896 SmallVector<std::pair<unsigned, MDNode *>, 4> MDs; in remapInstruction()
899 MDNode *Old = MI.second; in remapInstruction()
900 MDNode *New = cast_or_null<MDNode>(mapMetadata(Old)); in remapInstruction()
931 SmallVector<std::pair<unsigned, MDNode *>, 8> MDs; in remapGlobalObjectMetadata()
935 GO.addMetadata(I.first, *cast<MDNode>(mapMetadata(I.second))); in remapGlobalObjectMetadata()
1109 MDNode *ValueMapper::mapMDNode(const MDNode &N) { in mapMDNode()
1110 return cast_or_null<MDNode>(mapMetadata(N)); in mapMDNode()