Lines Matching refs:MD

60 MetadataAsValue::MetadataAsValue(Type *Ty, Metadata *MD)  in MetadataAsValue()  argument
61 : Value(Ty, MetadataAsValueVal), MD(MD) { in MetadataAsValue()
66 getType()->getContext().pImpl->MetadataAsValues.erase(MD); in ~MetadataAsValue()
82 Metadata *MD) { in canonicalizeMetadataForValue() argument
83 if (!MD) in canonicalizeMetadataForValue()
88 auto *N = dyn_cast<MDNode>(MD); in canonicalizeMetadataForValue()
90 return MD; in canonicalizeMetadataForValue()
100 return MD; in canonicalizeMetadataForValue()
103 MetadataAsValue *MetadataAsValue::get(LLVMContext &Context, Metadata *MD) { in get() argument
104 MD = canonicalizeMetadataForValue(Context, MD); in get()
105 auto *&Entry = Context.pImpl->MetadataAsValues[MD]; in get()
107 Entry = new MetadataAsValue(Type::getMetadataTy(Context), MD); in get()
112 Metadata *MD) { in getIfExists() argument
113 MD = canonicalizeMetadataForValue(Context, MD); in getIfExists()
115 return Store.lookup(MD); in getIfExists()
118 void MetadataAsValue::handleChangedMetadata(Metadata *MD) { in handleChangedMetadata() argument
120 MD = canonicalizeMetadataForValue(Context, MD); in handleChangedMetadata()
124 Store.erase(this->MD); in handleChangedMetadata()
126 this->MD = nullptr; in handleChangedMetadata()
129 auto *&Entry = Store[MD]; in handleChangedMetadata()
136 this->MD = MD; in handleChangedMetadata()
142 if (MD) in track()
143 MetadataTracking::track(&MD, *MD, *this); in track()
147 if (MD) in untrack()
148 MetadataTracking::untrack(MD); in untrack()
174 Metadata *&MD = DebugValues[Idx]; in trackDebugValue() local
175 if (MD) in trackDebugValue()
176 MetadataTracking::track(&MD, *MD, *this); in trackDebugValue()
180 for (Metadata *&MD : DebugValues) in trackDebugValues()
181 if (MD) in trackDebugValues()
182 MetadataTracking::track(&MD, *MD, *this); in trackDebugValues()
187 Metadata *&MD = DebugValues[Idx]; in untrackDebugValue() local
188 if (MD) in untrackDebugValue()
189 MetadataTracking::untrack(MD); in untrackDebugValue()
193 for (Metadata *&MD : DebugValues) in untrackDebugValues()
194 if (MD) in untrackDebugValues()
195 MetadataTracking::untrack(MD); in untrackDebugValues()
200 for (const auto &[MD, XMD] : zip(DebugValues, X.DebugValues)) in retrackDebugValues()
202 MetadataTracking::retrack(XMD, MD); in retrackDebugValues()
206 bool MetadataTracking::track(void *Ref, Metadata &MD, OwnerTy Owner) { in track() argument
208 assert((Owner || *static_cast<Metadata **>(Ref) == &MD) && in track()
210 if (auto *R = ReplaceableMetadataImpl::getOrCreate(MD)) { in track()
214 if (auto *PH = dyn_cast<DistinctMDOperandPlaceholder>(&MD)) { in track()
223 void MetadataTracking::untrack(void *Ref, Metadata &MD) { in untrack() argument
225 if (auto *R = ReplaceableMetadataImpl::getIfExists(MD)) in untrack()
227 else if (auto *PH = dyn_cast<DistinctMDOperandPlaceholder>(&MD)) in untrack()
231 bool MetadataTracking::retrack(void *Ref, Metadata &MD, void *New) { in retrack() argument
235 if (auto *R = ReplaceableMetadataImpl::getIfExists(MD)) { in retrack()
236 R->moveRef(Ref, New, MD); in retrack()
239 assert(!isa<DistinctMDOperandPlaceholder>(MD) && in retrack()
241 assert(!isReplaceable(MD) && in retrack()
246 bool MetadataTracking::isReplaceable(const Metadata &MD) { in isReplaceable() argument
247 return ReplaceableMetadataImpl::isReplaceable(MD); in isReplaceable()
314 const Metadata &MD) { in moveRef() argument
324 (void)MD; in moveRef()
325 assert((OwnerAndIndex.first || *static_cast<Metadata **>(Ref) == &MD) && in moveRef()
327 assert((OwnerAndIndex.first || *static_cast<Metadata **>(New) == &MD) && in moveRef()
339 ValueAsMetadata *MD = I->second; in SalvageDebugInfo() local
343 SmallVector<UseTy, 8> Uses(MD->UseMap.begin(), MD->UseMap.end()); in SalvageDebugInfo()
361 void ReplaceableMetadataImpl::replaceAllUsesWith(Metadata *MD) { in replaceAllUsesWith() argument
381 Ref = MD; in replaceAllUsesWith()
382 if (MD) in replaceAllUsesWith()
390 cast<MetadataAsValue *>(Owner)->handleChangedMetadata(MD); in replaceAllUsesWith()
395 Owner.get<DebugValueUser *>()->handleChangedValue(Pair.first, MD); in replaceAllUsesWith()
404 cast<CLASS>(OwnerMD)->handleChangedOperand(Pair.first, MD); \ in replaceAllUsesWith()
450 ReplaceableMetadataImpl *ReplaceableMetadataImpl::getOrCreate(Metadata &MD) { in getOrCreate() argument
451 if (auto *N = dyn_cast<MDNode>(&MD)) { in getOrCreate()
456 if (auto ArgList = dyn_cast<DIArgList>(&MD)) in getOrCreate()
458 return dyn_cast<ValueAsMetadata>(&MD); in getOrCreate()
461 ReplaceableMetadataImpl *ReplaceableMetadataImpl::getIfExists(Metadata &MD) { in getIfExists() argument
462 if (auto *N = dyn_cast<MDNode>(&MD)) { in getIfExists()
467 if (auto ArgList = dyn_cast<DIArgList>(&MD)) in getIfExists()
469 return dyn_cast<ValueAsMetadata>(&MD); in getIfExists()
472 bool ReplaceableMetadataImpl::isReplaceable(const Metadata &MD) { in isReplaceable() argument
473 if (auto *N = dyn_cast<MDNode>(&MD)) in isReplaceable()
475 return isa<ValueAsMetadata>(&MD) || isa<DIArgList>(&MD); in isReplaceable()
528 ValueAsMetadata *MD = I->second; in handleDeletion() local
529 assert(MD && "Expected valid metadata"); in handleDeletion()
530 assert(MD->getValue() == V && "Expected valid mapping"); in handleDeletion()
534 MD->replaceAllUsesWith(nullptr); in handleDeletion()
535 delete MD; in handleDeletion()
555 ValueAsMetadata *MD = I->second; in handleRAUW() local
556 assert(MD && "Expected valid metadata"); in handleRAUW()
557 assert(MD->getValue() == From && "Expected valid mapping"); in handleRAUW()
560 if (isa<LocalAsMetadata>(MD)) { in handleRAUW()
563 MD->replaceAllUsesWith(ConstantAsMetadata::get(C)); in handleRAUW()
564 delete MD; in handleRAUW()
570 MD->replaceAllUsesWith(nullptr); in handleRAUW()
571 delete MD; in handleRAUW()
576 MD->replaceAllUsesWith(nullptr); in handleRAUW()
577 delete MD; in handleRAUW()
584 MD->replaceAllUsesWith(Entry); in handleRAUW()
585 delete MD; in handleRAUW()
592 MD->V = To; in handleRAUW()
593 Entry = MD; in handleRAUW()
648 for (Metadata *MD : Ops1) in MDNode()
649 setOperand(Op++, MD); in MDNode()
650 for (Metadata *MD : Ops2) in MDNode()
651 setOperand(Op++, MD); in MDNode()
1128 MDs.remove_if([&](Metadata *MD) { return !BSet.count(MD); }); in intersect() argument
1429 void MDAttachments::set(unsigned ID, MDNode *MD) { in set() argument
1431 if (MD) in set()
1432 insert(ID, *MD); in set()
1435 void MDAttachments::insert(unsigned ID, MDNode &MD) { in insert() argument
1436 Attachments.push_back({ID, TrackingMDNodeRef(&MD)}); in insert()
1522 void Value::addMetadata(unsigned KindID, MDNode &MD) { in addMetadata() argument
1526 getContext().pImpl->ValueMetadata[this].insert(KindID, MD); in addMetadata()
1529 void Value::addMetadata(StringRef Kind, MDNode &MD) { in addMetadata() argument
1530 addMetadata(getContext().getMDKindID(Kind), MD); in addMetadata()
1685 MDNode *MD = MDTuple::get(getContext(), Names); in addAnnotationMetadata() local
1686 setMetadata(LLVMContext::MD_annotation, MD); in addAnnotationMetadata()
1703 MDNode *MD = MDTuple::get(getContext(), Names); in addAnnotationMetadata() local
1704 setMetadata(LLVMContext::MD_annotation, MD); in addAnnotationMetadata()
1759 for (auto &MD : MDs) { in copyMetadata() local
1761 if (Offset != 0 && MD.first == LLVMContext::MD_type) { in copyMetadata()
1763 cast<ConstantAsMetadata>(MD.second->getOperand(0))->getValue()); in copyMetadata()
1764 Metadata *TypeId = MD.second->getOperand(1); in copyMetadata()
1774 auto *Attachment = MD.second; in copyMetadata()
1775 if (Offset != 0 && MD.first == LLVMContext::MD_dbg) { in copyMetadata()
1793 addMetadata(MD.first, *Attachment); in copyMetadata()
1817 if (MDNode *MD = getMetadata(LLVMContext::MD_vcall_visibility)) { in getVCallVisibility() local
1819 cast<ConstantAsMetadata>(MD->getOperand(0))->getValue()) in getVCallVisibility()
1852 for (MDNode *MD : MDs) in getDebugInfo()
1853 GVs.push_back(cast<DIGlobalVariableExpression>(MD)); in getDebugInfo()