reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Bitcode/Reader/MetadataLoader.cpp
 1109     SmallString<8> Name(Record.begin(), Record.end());
 1109     SmallString<8> Name(Record.begin(), Record.end());
 1110     Record.clear();
 1117     if (Expected<unsigned> MaybeNextBitCode = Stream.readRecord(Code, Record)) {
 1124     unsigned Size = Record.size();
 1127       MDNode *MD = MetadataList.getMDNodeFwdRefOrNull(Record[i]);
 1138     if (Record.size() % 2 == 1)
 1147     if (Record.size() != 2) {
 1152     Type *Ty = getTypeByID(Record[0]);
 1159         LocalAsMetadata::get(ValueList.getValueFwdRef(Record[1], Ty)),
 1166     if (Record.size() % 2 == 1)
 1169     unsigned Size = Record.size();
 1172       Type *Ty = getTypeByID(Record[i]);
 1176         Elts.push_back(getMD(Record[i + 1]));
 1179             ValueAsMetadata::get(ValueList.getValueFwdRef(Record[i + 1], Ty));
 1191     if (Record.size() != 2)
 1194     Type *Ty = getTypeByID(Record[0]);
 1199         ValueAsMetadata::get(ValueList.getValueFwdRef(Record[1], Ty)),
 1209     Elts.reserve(Record.size());
 1210     for (unsigned ID : Record)
 1219     if (Record.size() != 5 && Record.size() != 6)
 1219     if (Record.size() != 5 && Record.size() != 6)
 1222     IsDistinct = Record[0];
 1223     unsigned Line = Record[1];
 1224     unsigned Column = Record[2];
 1225     Metadata *Scope = getMD(Record[3]);
 1226     Metadata *InlinedAt = getMDOrNull(Record[4]);
 1227     bool ImplicitCode = Record.size() == 6 && Record[5];
 1227     bool ImplicitCode = Record.size() == 6 && Record[5];
 1236     if (Record.size() < 4)
 1239     IsDistinct = Record[0];
 1240     unsigned Tag = Record[1];
 1241     unsigned Version = Record[2];
 1246     auto *Header = getMDString(Record[3]);
 1248     for (unsigned I = 4, E = Record.size(); I != E; ++I)
 1249       DwarfOps.push_back(getMDOrNull(Record[I]));
 1261     switch (Record[0] >> 1) {
 1264                             (Context, Record[1], unrotateSign(Record.back())));
 1264                             (Context, Record[1], unrotateSign(Record.back())));
 1267       Val = GET_OR_DISTINCT(DISubrange, (Context, getMDOrNull(Record[1]),
 1268                                          unrotateSign(Record.back())));
 1275     IsDistinct = Record[0] & 1;
 1280     if (Record.size() != 3)
 1283     IsDistinct = Record[0] & 1;
 1284     bool IsUnsigned = Record[0] & 2;
 1286         GET_OR_DISTINCT(DIEnumerator, (Context, unrotateSign(Record[1]),
 1287                                        IsUnsigned, getMDString(Record[2]))),
 1293     if (Record.size() < 6 || Record.size() > 7)
 1293     if (Record.size() < 6 || Record.size() > 7)
 1296     IsDistinct = Record[0];
 1297     DINode::DIFlags Flags = (Record.size() > 6) ?
 1298                     static_cast<DINode::DIFlags>(Record[6]) : DINode::FlagZero;
 1302                         (Context, Record[1], getMDString(Record[2]), Record[3],
 1302                         (Context, Record[1], getMDString(Record[2]), Record[3],
 1302                         (Context, Record[1], getMDString(Record[2]), Record[3],
 1303                          Record[4], Record[5], Flags)),
 1303                          Record[4], Record[5], Flags)),
 1309     if (Record.size() < 12 || Record.size() > 13)
 1309     if (Record.size() < 12 || Record.size() > 13)
 1315     if (Record.size() > 12 && Record[12])
 1315     if (Record.size() > 12 && Record[12])
 1316       DWARFAddressSpace = Record[12] - 1;
 1318     IsDistinct = Record[0];
 1319     DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[10]);
 1322                         (Context, Record[1], getMDString(Record[2]),
 1322                         (Context, Record[1], getMDString(Record[2]),
 1323                          getMDOrNull(Record[3]), Record[4],
 1323                          getMDOrNull(Record[3]), Record[4],
 1324                          getDITypeRefOrNull(Record[5]),
 1325                          getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1325                          getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1325                          getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1326                          Record[9], DWARFAddressSpace, Flags,
 1327                          getDITypeRefOrNull(Record[11]))),
 1333     if (Record.size() < 16 || Record.size() > 17)
 1333     if (Record.size() < 16 || Record.size() > 17)
 1338     IsDistinct = Record[0] & 0x1;
 1339     bool IsNotUsedInTypeRef = Record[0] >= 2;
 1340     unsigned Tag = Record[1];
 1341     MDString *Name = getMDString(Record[2]);
 1342     Metadata *File = getMDOrNull(Record[3]);
 1343     unsigned Line = Record[4];
 1344     Metadata *Scope = getDITypeRefOrNull(Record[5]);
 1346     uint64_t SizeInBits = Record[7];
 1347     if (Record[8] > (uint64_t)std::numeric_limits<uint32_t>::max())
 1349     uint32_t AlignInBits = Record[8];
 1351     DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[10]);
 1353     unsigned RuntimeLang = Record[12];
 1357     auto *Identifier = getMDString(Record[15]);
 1372       BaseType = getDITypeRefOrNull(Record[6]);
 1373       OffsetInBits = Record[9];
 1374       Elements = getMDOrNull(Record[11]);
 1375       VTableHolder = getDITypeRefOrNull(Record[13]);
 1376       TemplateParams = getMDOrNull(Record[14]);
 1377       if (Record.size() > 16)
 1378         Discriminator = getMDOrNull(Record[16]);
 1402     if (Record.size() < 3 || Record.size() > 4)
 1402     if (Record.size() < 3 || Record.size() > 4)
 1404     bool IsOldTypeRefArray = Record[0] < 2;
 1405     unsigned CC = (Record.size() > 3) ? Record[3] : 0;
 1405     unsigned CC = (Record.size() > 3) ? Record[3] : 0;
 1407     IsDistinct = Record[0] & 0x1;
 1408     DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[1]);
 1409     Metadata *Types = getMDOrNull(Record[2]);
 1421     if (Record.size() != 6)
 1424     IsDistinct = Record[0];
 1427                         (Context, getMDOrNull(Record[1]),
 1428                          getMDString(Record[2]), getMDString(Record[3]),
 1428                          getMDString(Record[2]), getMDString(Record[3]),
 1429                          getMDString(Record[4]), getMDString(Record[5]))),
 1429                          getMDString(Record[4]), getMDString(Record[5]))),
 1436     if (Record.size() != 3 && Record.size() != 5 && Record.size() != 6)
 1436     if (Record.size() != 3 && Record.size() != 5 && Record.size() != 6)
 1436     if (Record.size() != 3 && Record.size() != 5 && Record.size() != 6)
 1439     IsDistinct = Record[0];
 1446     if (Record.size() > 4 && Record[3] && Record[4])
 1446     if (Record.size() > 4 && Record[3] && Record[4])
 1446     if (Record.size() > 4 && Record[3] && Record[4])
 1447       Checksum.emplace(static_cast<DIFile::ChecksumKind>(Record[3]),
 1448                        getMDString(Record[4]));
 1452             (Context, getMDString(Record[1]), getMDString(Record[2]), Checksum,
 1452             (Context, getMDString(Record[1]), getMDString(Record[2]), Checksum,
 1453              Record.size() > 5 ? Optional<MDString *>(getMDString(Record[5]))
 1453              Record.size() > 5 ? Optional<MDString *>(getMDString(Record[5]))
 1460     if (Record.size() < 14 || Record.size() > 19)
 1460     if (Record.size() < 14 || Record.size() > 19)
 1467         Context, Record[1], getMDOrNull(Record[2]), getMDString(Record[3]),
 1467         Context, Record[1], getMDOrNull(Record[2]), getMDString(Record[3]),
 1467         Context, Record[1], getMDOrNull(Record[2]), getMDString(Record[3]),
 1468         Record[4], getMDString(Record[5]), Record[6], getMDString(Record[7]),
 1468         Record[4], getMDString(Record[5]), Record[6], getMDString(Record[7]),
 1468         Record[4], getMDString(Record[5]), Record[6], getMDString(Record[7]),
 1468         Record[4], getMDString(Record[5]), Record[6], getMDString(Record[7]),
 1469         Record[8], getMDOrNull(Record[9]), getMDOrNull(Record[10]),
 1469         Record[8], getMDOrNull(Record[9]), getMDOrNull(Record[10]),
 1469         Record[8], getMDOrNull(Record[9]), getMDOrNull(Record[10]),
 1470         getMDOrNull(Record[12]), getMDOrNull(Record[13]),
 1470         getMDOrNull(Record[12]), getMDOrNull(Record[13]),
 1471         Record.size() <= 15 ? nullptr : getMDOrNull(Record[15]),
 1471         Record.size() <= 15 ? nullptr : getMDOrNull(Record[15]),
 1472         Record.size() <= 14 ? 0 : Record[14],
 1472         Record.size() <= 14 ? 0 : Record[14],
 1473         Record.size() <= 16 ? true : Record[16],
 1473         Record.size() <= 16 ? true : Record[16],
 1474         Record.size() <= 17 ? false : Record[17],
 1474         Record.size() <= 17 ? false : Record[17],
 1475         Record.size() <= 18 ? 0 : Record[18],
 1475         Record.size() <= 18 ? 0 : Record[18],
 1476         Record.size() <= 19 ? 0 : Record[19]);
 1476         Record.size() <= 19 ? 0 : Record[19]);
 1482     if (Metadata *SPs = getMDOrNullWithoutPlaceholders(Record[11]))
 1487     if (Record.size() < 18 || Record.size() > 21)
 1487     if (Record.size() < 18 || Record.size() > 21)
 1490     bool HasSPFlags = Record[0] & 4;
 1495       Flags = static_cast<DINode::DIFlags>(Record[11 + 2]);
 1497       Flags = static_cast<DINode::DIFlags>(Record[11]);
 1498       SPFlags = static_cast<DISubprogram::DISPFlags>(Record[9]);
 1515                     /*IsLocalToUnit=*/Record[7], /*IsDefinition=*/Record[8],
 1515                     /*IsLocalToUnit=*/Record[7], /*IsDefinition=*/Record[8],
 1516                     /*IsOptimized=*/Record[14], /*Virtuality=*/Record[11],
 1516                     /*IsOptimized=*/Record[14], /*Virtuality=*/Record[11],
 1520     IsDistinct = (Record[0] & 1) || (SPFlags & DISubprogram::SPFlagDefinition);
 1526     bool HasUnit = Record[0] & 2;
 1527     if (!HasSPFlags && HasUnit && Record.size() < 19)
 1540       if (Record.size() >= 19) {
 1544       HasThisAdj = Record.size() >= 20;
 1545       HasThrownTypes = Record.size() >= 21;
 1547     Metadata *CUorFn = getMDOrNull(Record[12 + OffsetB]);
 1551          getDITypeRefOrNull(Record[1]),                     // scope
 1552          getMDString(Record[2]),                            // name
 1553          getMDString(Record[3]),                            // linkageName
 1554          getMDOrNull(Record[4]),                            // file
 1555          Record[5],                                         // line
 1556          getMDOrNull(Record[6]),                            // type
 1557          Record[7 + OffsetA],                               // scopeLine
 1558          getDITypeRefOrNull(Record[8 + OffsetA]),           // containingType
 1559          Record[10 + OffsetA],                              // virtualIndex
 1560          HasThisAdj ? Record[16 + OffsetB] : 0,             // thisAdjustment
 1564          getMDOrNull(Record[13 + OffsetB]),                 // templateParams
 1565          getMDOrNull(Record[14 + OffsetB]),                 // declaration
 1566          getMDOrNull(Record[15 + OffsetB]),                 // retainedNodes
 1567          HasThrownTypes ? getMDOrNull(Record[17 + OffsetB])
 1588     if (Record.size() != 5)
 1591     IsDistinct = Record[0];
 1594                         (Context, getMDOrNull(Record[1]),
 1595                          getMDOrNull(Record[2]), Record[3], Record[4])),
 1595                          getMDOrNull(Record[2]), Record[3], Record[4])),
 1595                          getMDOrNull(Record[2]), Record[3], Record[4])),
 1601     if (Record.size() != 4)
 1604     IsDistinct = Record[0];
 1607                         (Context, getMDOrNull(Record[1]),
 1608                          getMDOrNull(Record[2]), Record[3])),
 1608                          getMDOrNull(Record[2]), Record[3])),
 1614     IsDistinct = Record[0] & 1;
 1617                         (Context, getMDOrNull(Record[1]),
 1618                          getMDOrNull(Record[2]), getMDString(Record[3]),
 1618                          getMDOrNull(Record[2]), getMDString(Record[3]),
 1619                          getMDOrNull(Record[4]), Record[5])),
 1619                          getMDOrNull(Record[4]), Record[5])),
 1627     if (Record.size() == 3)
 1628       Name = getMDString(Record[2]);
 1629     else if (Record.size() == 5)
 1630       Name = getMDString(Record[3]);
 1634     IsDistinct = Record[0] & 1;
 1635     bool ExportSymbols = Record[0] & 2;
 1638                         (Context, getMDOrNull(Record[1]), Name, ExportSymbols)),
 1644     if (Record.size() != 5)
 1647     IsDistinct = Record[0];
 1650                         (Context, Record[1], Record[2], getMDString(Record[3]),
 1650                         (Context, Record[1], Record[2], getMDString(Record[3]),
 1650                         (Context, Record[1], Record[2], getMDString(Record[3]),
 1651                          getMDString(Record[4]))),
 1657     if (Record.size() != 5)
 1660     IsDistinct = Record[0];
 1663                         (Context, Record[1], Record[2], getMDOrNull(Record[3]),
 1663                         (Context, Record[1], Record[2], getMDOrNull(Record[3]),
 1663                         (Context, Record[1], Record[2], getMDOrNull(Record[3]),
 1664                          getMDOrNull(Record[4]))),
 1670     if (Record.size() != 3)
 1673     IsDistinct = Record[0];
 1675                                              (Context, getMDString(Record[1]),
 1676                                               getDITypeRefOrNull(Record[2]))),
 1682     if (Record.size() != 5)
 1685     IsDistinct = Record[0];
 1688                         (Context, Record[1], getMDString(Record[2]),
 1688                         (Context, Record[1], getMDString(Record[2]),
 1689                          getDITypeRefOrNull(Record[3]),
 1690                          getMDOrNull(Record[4]))),
 1696     if (Record.size() < 11 || Record.size() > 13)
 1696     if (Record.size() < 11 || Record.size() > 13)
 1699     IsDistinct = Record[0] & 1;
 1700     unsigned Version = Record[0] >> 1;
 1706               (Context, getMDOrNull(Record[1]), getMDString(Record[2]),
 1706               (Context, getMDOrNull(Record[1]), getMDString(Record[2]),
 1707                getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
 1707                getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
 1707                getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
 1708                getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1708                getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1708                getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1709                getMDOrNull(Record[9]), getMDOrNull(Record[10]), Record[11])),
 1709                getMDOrNull(Record[9]), getMDOrNull(Record[10]), Record[11])),
 1709                getMDOrNull(Record[9]), getMDOrNull(Record[10]), Record[11])),
 1718                           (Context, getMDOrNull(Record[1]),
 1719                            getMDString(Record[2]), getMDString(Record[3]),
 1719                            getMDString(Record[2]), getMDString(Record[3]),
 1720                            getMDOrNull(Record[4]), Record[5],
 1720                            getMDOrNull(Record[4]), Record[5],
 1721                            getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1721                            getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1721                            getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1722                            getMDOrNull(Record[10]), nullptr, Record[11])),
 1722                            getMDOrNull(Record[10]), nullptr, Record[11])),
 1730       Metadata *Expr = getMDOrNull(Record[9]);
 1732       if (Record.size() > 11) {
 1733         if (Record[11] > (uint64_t)std::numeric_limits<uint32_t>::max())
 1735         AlignInBits = Record[11];
 1752           (Context, getMDOrNull(Record[1]), getMDString(Record[2]),
 1752           (Context, getMDOrNull(Record[1]), getMDString(Record[2]),
 1753            getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
 1753            getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
 1753            getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
 1754            getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1754            getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1754            getDITypeRefOrNull(Record[6]), Record[7], Record[8],
 1755            getMDOrNull(Record[10]), nullptr, AlignInBits));
 1774     if (Record.size() < 8 || Record.size() > 10)
 1774     if (Record.size() < 8 || Record.size() > 10)
 1777     IsDistinct = Record[0] & 1;
 1778     bool HasAlignment = Record[0] & 2;
 1782     bool HasTag = !HasAlignment && Record.size() > 8;
 1783     DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[7 + HasTag]);
 1786       if (Record[8 + HasTag] > (uint64_t)std::numeric_limits<uint32_t>::max())
 1788       AlignInBits = Record[8 + HasTag];
 1792                         (Context, getMDOrNull(Record[1 + HasTag]),
 1793                          getMDString(Record[2 + HasTag]),
 1794                          getMDOrNull(Record[3 + HasTag]), Record[4 + HasTag],
 1794                          getMDOrNull(Record[3 + HasTag]), Record[4 + HasTag],
 1795                          getDITypeRefOrNull(Record[5 + HasTag]),
 1796                          Record[6 + HasTag], Flags, AlignInBits)),
 1802     if (Record.size() != 5)
 1805     IsDistinct = Record[0] & 1;
 1808                         (Context, getMDOrNull(Record[1]),
 1809                          getMDString(Record[2]),
 1810                          getMDOrNull(Record[3]), Record[4])),
 1810                          getMDOrNull(Record[3]), Record[4])),
 1816     if (Record.size() < 1)
 1819     IsDistinct = Record[0] & 1;
 1820     uint64_t Version = Record[0] >> 1;
 1821     auto Elts = MutableArrayRef<uint64_t>(Record).slice(1);
 1833     if (Record.size() != 3)
 1836     IsDistinct = Record[0];
 1837     Metadata *Expr = getMDOrNull(Record[2]);
 1842                         (Context, getMDOrNull(Record[1]), Expr)),
 1848     if (Record.size() != 8)
 1851     IsDistinct = Record[0];
 1854                         (Context, getMDString(Record[1]),
 1855                          getMDOrNull(Record[2]), Record[3],
 1855                          getMDOrNull(Record[2]), Record[3],
 1856                          getMDString(Record[4]), getMDString(Record[5]),
 1856                          getMDString(Record[4]), getMDString(Record[5]),
 1857                          Record[6], getDITypeRefOrNull(Record[7]))),
 1857                          Record[6], getDITypeRefOrNull(Record[7]))),
 1863     if (Record.size() != 6 && Record.size() != 7)
 1863     if (Record.size() != 6 && Record.size() != 7)
 1866     IsDistinct = Record[0];
 1867     bool HasFile = (Record.size() == 7);
 1870                         (Context, Record[1], getMDOrNull(Record[2]),
 1870                         (Context, Record[1], getMDOrNull(Record[2]),
 1871                          getDITypeRefOrNull(Record[3]),
 1872                          HasFile ? getMDOrNull(Record[6]) : nullptr,
 1873                          HasFile ? Record[4] : 0, getMDString(Record[5]))),
 1873                          HasFile ? Record[4] : 0, getMDString(Record[5]))),
 1879     std::string String(Record.begin(), Record.end());
 1879     std::string String(Record.begin(), Record.end());
 1895     if (Error Err = parseMetadataStrings(Record, Blob, CreateNextMDString))
 1900     if (Record.size() % 2 == 0)
 1902     unsigned ValueID = Record[0];
 1907               *GO, ArrayRef<uint64_t>(Record).slice(1)))
 1914     if (Error Err = parseMetadataKindRecord(Record))