31 M.getContext(), Lang,
CU->getFile(),
CU->getProducer(),
32 CU->isOptimized(),
CU->getFlags(),
CU->getRuntimeVersion(),
33 CU->getSplitDebugFilename(),
CU->getEmissionKind(),
34 CU->getEnumTypes(),
CU->getRetainedTypes(),
CU->getGlobalVariables(),
35 CU->getImportedEntities(),
CU->getMacros(),
CU->getDWOId(),
36 CU->getSplitDebugInlining(),
CU->getDebugInfoForProfiling(),
37 CU->getNameTableKind(),
CU->getRangesBaseAddress(),
CU->getSysRoot(),
43 std::vector<std::pair<const DICompileUnit *, const Metadata *>> CUSubprograms;
55 static constexpr auto SupportedDIFlags =
57 static constexpr auto SupportedDISPFlags =
59 if (SP->isDistinct() || SP->getFlags() & ~SupportedDIFlags ||
60 SP->getSPFlags() & ~SupportedDISPFlags) {
62 M.getContext(), SP->getScope(), SP->getName(), SP->getLinkageName(),
63 SP->getFile(), SP->getLine(), SP->getType(), SP->getScopeLine(),
64 SP->getContainingType(), SP->getVirtualIndex(),
65 SP->getThisAdjustment(), SP->getFlags() & SupportedDIFlags,
66 SP->getSPFlags() & SupportedDISPFlags, SP->getUnit(),
67 SP->getTemplateParams(), SP->getDeclaration(), SP->getRetainedNodes(),
68 SP->getThrownTypes(), SP->getAnnotations(), SP->getTargetFuncName(),
69 SP->getKeyInstructionsEnabled());
74 const Metadata *FunctionMD = It->second;
81 CUSubprograms.push_back(
82 {SP->getUnit(),
static_cast<const Metadata *
>(SP)});
86 CUSubprograms.begin(), CUSubprograms.end(), [](
auto &&
A,
auto &&
B) {
87 return std::less<const DICompileUnit *>()(A.first, B.first);
89 for (
auto It = CUSubprograms.begin(), End = CUSubprograms.end(); It != End;) {
96 }
while (++It != End && It->first ==
CU);
97 const auto *SubprogramsMD =
MDTuple::get(M.getContext(), Subprograms);
106 SR->getContext(), dwarf::DW_TAG_base_type, SR->getName(),
107 SR->getSizeInBits(), SR->getAlignInBits(), dwarf::DW_ATE_unsigned,
108 SR->getNumExtraInhabitants(), 0, SR->getFlags());