Lines Matching full:metadata
39 #include "llvm/IR/Metadata.h"
73 STATISTIC(NumMDRecordLoaded, "Number of Metadata records loaded");
83 cl::desc("Force disable the lazy-loading on-demand of metadata when "
91 /// Array of metadata references.
101 /// The set of indices in MetadataPtrs above of Metadata that need to be
128 void push_back(Metadata *MD) { MetadataPtrs.emplace_back(MD); } in push_back()
130 Metadata *back() const { return MetadataPtrs.back(); } in back()
134 Metadata *operator[](unsigned i) const { in operator []()
139 Metadata *lookup(unsigned I) const { in lookup()
152 /// Return the given metadata, creating a replaceable forward reference if
154 Metadata *getMetadataFwdRef(unsigned Idx);
156 /// Return the given metadata only if it is fully resolved.
160 Metadata *getMetadataIfResolved(unsigned Idx);
163 void assignValue(Metadata *MD, unsigned Idx);
175 Metadata *upgradeTypeRef(Metadata *MaybeUUID);
178 Metadata *upgradeTypeRefArray(Metadata *MaybeTuple);
181 Metadata *resolveTypeRefArray(Metadata *MaybeTuple);
184 void BitcodeReaderMetadataList::assignValue(Metadata *MD, unsigned Idx) { in assignValue()
209 Metadata *BitcodeReaderMetadataList::getMetadataFwdRef(unsigned Idx) { in getMetadataFwdRef()
217 if (Metadata *MD = MetadataPtrs[Idx]) in getMetadataFwdRef()
225 Metadata *MD = MDNode::getTemporary(Context, std::nullopt).release(); in getMetadataFwdRef()
230 Metadata *BitcodeReaderMetadataList::getMetadataIfResolved(unsigned Idx) { in getMetadataIfResolved()
231 Metadata *MD = lookup(Idx); in getMetadataIfResolved()
297 Metadata *BitcodeReaderMetadataList::upgradeTypeRef(Metadata *MaybeUUID) { in upgradeTypeRef()
311 Metadata *BitcodeReaderMetadataList::upgradeTypeRefArray(Metadata *MaybeTuple) { in upgradeTypeRefArray()
328 Metadata *BitcodeReaderMetadataList::resolveTypeRefArray(Metadata *MaybeTuple) { in resolveTypeRefArray()
334 SmallVector<Metadata *, 32> Ops; in resolveTypeRefArray()
336 for (Metadata *MD : Tuple->operands()) in resolveTypeRefArray()
412 /// Cursor associated with the lazy-loading of Metadata. This is the easy way
414 /// the middle of the metadata block and load any record.
424 /// Index that keeps track of where to find a metadata record in the stream.
442 /// Populate the index above to enable lazily loading of metadata, and load
443 /// the named metadata as well as the transitively referenced global
444 /// Metadata.
447 /// On-demand loading of a single metadata. Requires the index above to be
453 std::vector<std::pair<DICompileUnit *, Metadata *>> CUSubprograms;
456 /// metadata.
470 /// True if metadata is being parsed for a module being ThinLTO imported.
559 SetVector<Metadata *> EntitiesToRemove; in upgradeCULocals()
560 for (Metadata *Op : CU->getImportedEntities()->operands()) { in upgradeCULocals()
569 SmallVector<Metadata *> NewImports; in upgradeCULocals()
570 for (Metadata *Op : CU->getImportedEntities()->operands()) { in upgradeCULocals()
577 std::map<DISubprogram *, SmallVector<Metadata *>> SPToEntities; in upgradeCULocals()
590 SmallVector<Metadata *> MDs(RetainedNodes.begin(), in upgradeCULocals()
722 void callMDTypeCallback(Metadata **Val, unsigned TypeID);
737 Metadata *getMetadataFwdRefOrLoad(unsigned ID) { in getMetadataFwdRefOrLoad()
847 "Metadata index"); in lazyLoadModuleMetadataBlock()
853 "find the Metadata index"); in lazyLoadModuleMetadataBlock()
868 return error("Corrupted Metadata block"); in lazyLoadModuleMetadataBlock()
870 // Named metadata need to be materialized now and aren't deferred. in lazyLoadModuleMetadataBlock()
883 // Read name of the named metadata. in lazyLoadModuleMetadataBlock()
890 // Named Metadata comes in two parts, we expect the name to be followed in lazyLoadModuleMetadataBlock()
899 // Read named metadata elements. in lazyLoadModuleMetadataBlock()
904 // taking MDNode as operand and not using the Metadata infrastructure. in lazyLoadModuleMetadataBlock()
905 // It is acknowledged by 'TODO: Inherit from Metadata' in the in lazyLoadModuleMetadataBlock()
908 assert(MD && "Invalid metadata: expect fwd ref to MDNode"); in lazyLoadModuleMetadataBlock()
976 // Nothing to do if we didn't find any of these metadata records. in loadGlobalDeclAttachments()
1048 void MetadataLoader::MetadataLoaderImpl::callMDTypeCallback(Metadata **Val, in callMDTypeCallback()
1057 /// module level metadata.
1060 return error("Invalid metadata: fwd refs into function blocks"); in parseMetadata()
1072 // We lazy-load module-level metadata: we build an index for each record, and in parseMetadata()
1073 // then load individual record as needed, starting with the named metadata. in parseMetadata()
1080 // An index was successfully created and we will be able to load metadata in parseMetadata()
1093 // Reading the named metadata created forward references and/or in parseMetadata()
1150 if (Metadata *MD = MetadataList.lookup(ID)) in lazyLoadOneMDString()
1161 // Lookup first if the metadata hasn't already been loaded. in lazyLoadOneMetadata()
1191 /// Iteratively lazy-loading metadata on-demand if needed.
1232 // Pretend that the constant was deleted, which will replace metadata in getValueFwdRef()
1249 auto getMD = [&](unsigned ID) -> Metadata * { in parseOneMetadata()
1272 auto getMDOrNull = [&](unsigned ID) -> Metadata * { in parseOneMetadata()
1277 auto getMDOrNullWithoutPlaceholders = [&](unsigned ID) -> Metadata * { in parseOneMetadata()
1301 // Read name of the named metadata. in parseOneMetadata()
1314 // Read named metadata elements. in parseOneMetadata()
1320 return error("Invalid named metadata: expect fwd ref to MDNode"); in parseOneMetadata()
1328 // metadata. in parseOneMetadata()
1354 return error("Invalid value reference from old fn metadata"); in parseOneMetadata()
1366 SmallVector<Metadata *, 8> Elts; in parseOneMetadata()
1377 return error("Invalid value reference from old metadata"); in parseOneMetadata()
1378 Metadata *MD = ValueAsMetadata::get(V); in parseOneMetadata()
1380 "Expected non-function-local metadata"); in parseOneMetadata()
1401 return error("Invalid value reference from metadata"); in parseOneMetadata()
1403 Metadata *MD = ValueAsMetadata::get(V); in parseOneMetadata()
1413 SmallVector<Metadata *, 8> Elts; in parseOneMetadata()
1430 Metadata *Scope = getMD(Record[3]); in parseOneMetadata()
1431 Metadata *InlinedAt = getMDOrNull(Record[4]); in parseOneMetadata()
1452 SmallVector<Metadata *, 8> DwarfOps; in parseOneMetadata()
1462 Metadata *Val = nullptr; in parseOneMetadata()
1465 // - Metadata node (version 1) in parseOneMetadata()
1468 // - Metadata node (version 2) in parseOneMetadata()
1470 // - Metadata node (version 2) in parseOneMetadata()
1495 Metadata *Val = nullptr; in parseOneMetadata()
1554 Metadata *StringLocationExp = SizeIs8 ? nullptr : getMDOrNull(Record[5]); in parseOneMetadata()
1576 Metadata *Annotations = nullptr; in parseOneMetadata()
1613 Metadata *File = getMDOrNull(Record[3]); in parseOneMetadata()
1615 Metadata *Scope = getDITypeRefOrNull(Record[5]); in parseOneMetadata()
1616 Metadata *BaseType = nullptr; in parseOneMetadata()
1623 Metadata *Elements = nullptr; in parseOneMetadata()
1625 Metadata *VTableHolder = nullptr; in parseOneMetadata()
1626 Metadata *TemplateParams = nullptr; in parseOneMetadata()
1627 Metadata *Discriminator = nullptr; in parseOneMetadata()
1628 Metadata *DataLocation = nullptr; in parseOneMetadata()
1629 Metadata *Associated = nullptr; in parseOneMetadata()
1630 Metadata *Allocated = nullptr; in parseOneMetadata()
1631 Metadata *Rank = nullptr; in parseOneMetadata()
1632 Metadata *Annotations = nullptr; in parseOneMetadata()
1713 Metadata *Types = getMDOrNull(Record[2]); in parseOneMetadata()
1792 if (Metadata *SPs = getMDOrNullWithoutPlaceholders(Record[11])) in parseOneMetadata()
1811 // Support for old metadata when in parseOneMetadata()
1862 Metadata *CUorFn = getMDOrNull(Record[12 + OffsetB]); in parseOneMetadata()
1898 // metadata. in parseOneMetadata()
2029 Metadata *Annotations = nullptr; in parseOneMetadata()
2058 // Upgrade old metadata, which stored a global variable reference or a in parseOneMetadata()
2061 Metadata *Expr = getMDOrNull(Record[9]); in parseOneMetadata()
2095 auto *MDNode = Expr ? cast<Metadata>(DGVE) : cast<Metadata>(DGV); in parseOneMetadata()
2128 Metadata *Annotations = nullptr; in parseOneMetadata()
2183 Metadata *Expr = getMDOrNull(Record[2]); in parseOneMetadata()
2232 Metadata *MD = MDString::get(Context, String); in parseOneMetadata()
2270 Metadata *MD = getMD(Elt); in parseOneMetadata()
2295 return error("Invalid record: metadata strings layout"); in parseMetadataStrings()
2300 return error("Invalid record: metadata strings with no strings"); in parseMetadataStrings()
2302 return error("Invalid record: metadata strings corrupt offset"); in parseMetadataStrings()
2310 return error("Invalid record: metadata strings bad length"); in parseMetadataStrings()
2316 return error("Invalid record: metadata strings truncated chars"); in parseMetadataStrings()
2335 return error("Invalid metadata attachment: expect fwd ref to MDNode"); in parseGlobalObjectAttachment()
2341 /// Parse metadata attachments.
2367 // Read a metadata attachment record. in parseMetadataAttachment()
2406 Metadata *Node = MetadataList.getMetadataFwdRef(Idx); in parseMetadataAttachment()
2413 return error("Invalid metadata attachment"); in parseMetadataAttachment()
2445 /// Parse the metadata kinds out of the METADATA_KIND_BLOCK.
2508 /// Return the given metadata, creating a replaceable forward reference if
2510 Metadata *MetadataLoader::getMetadataFwdRefOrLoad(unsigned Idx) { in getMetadataFwdRefOrLoad()