• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/IR/

Lines Matching refs:MD

62 MetadataAsValue::MetadataAsValue(Type *Ty, Metadata *MD)
63 : Value(Ty, MetadataAsValueVal), MD(MD) {
68 getType()->getContext().pImpl->MetadataAsValues.erase(MD);
84 Metadata *MD) {
85 if (!MD)
90 auto *N = dyn_cast<MDNode>(MD);
92 return MD;
102 return MD;
105 MetadataAsValue *MetadataAsValue::get(LLVMContext &Context, Metadata *MD) {
106 MD = canonicalizeMetadataForValue(Context, MD);
107 auto *&Entry = Context.pImpl->MetadataAsValues[MD];
109 Entry = new MetadataAsValue(Type::getMetadataTy(Context), MD);
114 Metadata *MD) {
115 MD = canonicalizeMetadataForValue(Context, MD);
117 return Store.lookup(MD);
120 void MetadataAsValue::handleChangedMetadata(Metadata *MD) {
122 MD = canonicalizeMetadataForValue(Context, MD);
126 Store.erase(this->MD);
128 this->MD = nullptr;
130 // Start tracking MD, or RAUW if necessary.
131 auto *&Entry = Store[MD];
138 this->MD = MD;
144 if (MD)
145 MetadataTracking::track(&MD, *MD, *this);
149 if (MD)
150 MetadataTracking::untrack(MD);
153 bool MetadataTracking::track(void *Ref, Metadata &MD, OwnerTy Owner) {
155 assert((Owner || *static_cast<Metadata **>(Ref) == &MD) &&
157 if (auto *R = ReplaceableMetadataImpl::getOrCreate(MD)) {
161 if (auto *PH = dyn_cast<DistinctMDOperandPlaceholder>(&MD)) {
170 void MetadataTracking::untrack(void *Ref, Metadata &MD) {
172 if (auto *R = ReplaceableMetadataImpl::getIfExists(MD))
174 else if (auto *PH = dyn_cast<DistinctMDOperandPlaceholder>(&MD))
178 bool MetadataTracking::retrack(void *Ref, Metadata &MD, void *New) {
182 if (auto *R = ReplaceableMetadataImpl::getIfExists(MD)) {
183 R->moveRef(Ref, New, MD);
186 assert(!isa<DistinctMDOperandPlaceholder>(MD) &&
188 assert(!isReplaceable(MD) &&
193 bool MetadataTracking::isReplaceable(const Metadata &MD) {
194 return ReplaceableMetadataImpl::isReplaceable(MD);
215 const Metadata &MD) {
225 (void)MD;
226 assert((OwnerAndIndex.first || *static_cast<Metadata **>(Ref) == &MD) &&
228 assert((OwnerAndIndex.first || *static_cast<Metadata **>(New) == &MD) &&
232 void ReplaceableMetadataImpl::replaceAllUsesWith(Metadata *MD) {
252 Ref = MD;
253 if (MD)
261 Owner.get<MetadataAsValue *>()->handleChangedMetadata(MD);
270 cast<CLASS>(OwnerMD)->handleChangedOperand(Pair.first, MD); \
313 ReplaceableMetadataImpl *ReplaceableMetadataImpl::getOrCreate(Metadata &MD) {
314 if (auto *N = dyn_cast<MDNode>(&MD))
316 return dyn_cast<ValueAsMetadata>(&MD);
319 ReplaceableMetadataImpl *ReplaceableMetadataImpl::getIfExists(Metadata &MD) {
320 if (auto *N = dyn_cast<MDNode>(&MD))
322 return dyn_cast<ValueAsMetadata>(&MD);
325 bool ReplaceableMetadataImpl::isReplaceable(const Metadata &MD) {
326 if (auto *N = dyn_cast<MDNode>(&MD))
328 return dyn_cast<ValueAsMetadata>(&MD);
381 ValueAsMetadata *MD = I->second;
382 assert(MD && "Expected valid metadata");
383 assert(MD->getValue() == V && "Expected valid mapping");
387 MD->replaceAllUsesWith(nullptr);
388 delete MD;
408 ValueAsMetadata *MD = I->second;
409 assert(MD && "Expected valid metadata");
410 assert(MD->getValue() == From && "Expected valid mapping");
413 if (isa<LocalAsMetadata>(MD)) {
416 MD->replaceAllUsesWith(ConstantAsMetadata::get(C));
417 delete MD;
423 MD->replaceAllUsesWith(nullptr);
424 delete MD;
429 MD->replaceAllUsesWith(nullptr);
430 delete MD;
437 MD->replaceAllUsesWith(Entry);
438 delete MD;
442 // Update MD in place (and update the map entry).
445 MD->V = To;
446 Entry = MD;
510 for (Metadata *MD : Ops1)
511 setOperand(Op++, MD);
512 for (Metadata *MD : Ops2)
513 setOperand(Op++, MD);
643 for (Metadata *MD : N->operands())
644 if (MD == N)
917 MDs.remove_if([&](Metadata *MD) { return !is_contained(BSet, MD); });
1104 void MDAttachmentMap::set(unsigned ID, MDNode &MD) {
1107 I.second.reset(&MD);
1111 std::make_tuple(&MD));
1151 void MDGlobalAttachmentMap::insert(unsigned ID, MDNode &MD) {
1152 Attachments.push_back({ID, TrackingMDNodeRef(&MD)});
1393 void GlobalObject::addMetadata(unsigned KindID, MDNode &MD) {
1397 getContext().pImpl->GlobalObjectMetadata[this].insert(KindID, MD);
1400 void GlobalObject::addMetadata(StringRef Kind, MDNode &MD) {
1401 addMetadata(getContext().getMDKindID(Kind), MD);
1456 for (auto &MD : MDs) {
1458 if (Offset != 0 && MD.first == LLVMContext::MD_type) {
1460 cast<ConstantAsMetadata>(MD.second->getOperand(0))->getValue());
1461 Metadata *TypeId = MD.second->getOperand(1);
1471 auto *Attachment = MD.second;
1472 if (Offset != 0 && MD.first == LLVMContext::MD_dbg) {
1490 addMetadata(MD.first, *Attachment);
1511 if (MDNode *MD = getMetadata(LLVMContext::MD_vcall_visibility)) {
1513 cast<ConstantAsMetadata>(MD->getOperand(0))->getValue())
1546 for (MDNode *MD : MDs)
1547 GVs.push_back(cast<DIGlobalVariableExpression>(MD));