void InstrProfWriter::writeText(raw_fd_ostream &OS) { InstrProfSymtab Symtab; for (const auto &I : FunctionData) Symtab.addFuncName(I.getKey()); Symtab.finalizeSymtab(); for (const auto &I : FunctionData) for (const auto &Func : I.getValue()) writeRecordInText(Func.second, Symtab, OS); }
void RawInstrProfReader<IntPtrT>::createSymtab(InstrProfSymtab &Symtab) { Symtab.create(StringRef(NamesStart, NamesSize)); for (const RawInstrProf::ProfileData<IntPtrT> *I = Data; I != DataEnd; ++I) { const IntPtrT FPtr = swap(I->FunctionPointer); if (!FPtr) continue; Symtab.mapAddress(FPtr, I->NameRef); } Symtab.finalizeSymtab(); }
void RawInstrProfReader<IntPtrT>::createSymtab(InstrProfSymtab &Symtab) { for (const RawInstrProf::ProfileData<IntPtrT> *I = Data; I != DataEnd; ++I) { StringRef FunctionName(getName(I->NamePtr), swap(I->NameSize)); Symtab.addFuncName(FunctionName); const IntPtrT FPtr = swap(I->FunctionPointer); if (!FPtr) continue; Symtab.mapAddress(FPtr, IndexedInstrProf::ComputeHash(FunctionName)); } Symtab.finalizeSymtab(); }
void InstrProfWriter::writeText(raw_fd_ostream &OS) { if (ProfileKind == PF_IRLevel) OS << "# IR level Instrumentation Flag\n:ir\n"; InstrProfSymtab Symtab; for (const auto &I : FunctionData) if (shouldEncodeData(I.getValue())) Symtab.addFuncName(I.getKey()); Symtab.finalizeSymtab(); for (const auto &I : FunctionData) if (shouldEncodeData(I.getValue())) for (const auto &Func : I.getValue()) writeRecordInText(Func.second, Symtab, OS); }