X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=include%2Fllvm%2FProfileData%2FInstrProfWriter.h;h=e7f53de051c3c71906f3504b08bbefafc2644ddf;hb=6f28d52e9d3f87875732a0f2c1f3b03ef56be2db;hp=da0d956e8a9871896855ebede64b6fe3f1dd8aad;hpb=c96f87a89298932b0f4f3187a4270f558c48898a;p=oota-llvm.git diff --git a/include/llvm/ProfileData/InstrProfWriter.h b/include/llvm/ProfileData/InstrProfWriter.h index da0d956e8a9..e7f53de051c 100644 --- a/include/llvm/ProfileData/InstrProfWriter.h +++ b/include/llvm/ProfileData/InstrProfWriter.h @@ -29,23 +29,29 @@ public: typedef SmallDenseMap ProfilingData; private: - InstrProfStringTable StringTable; StringMap FunctionData; uint64_t MaxFunctionCount; + public: InstrProfWriter() : MaxFunctionCount(0) {} - /// Update string entries in profile data with references to StringTable. - void updateStringTableReferences(InstrProfRecord &I); /// Add function counts for the given function. If there are already counts /// for this function and the hash and number of counts match, each counter is - /// summed. - std::error_code addRecord(InstrProfRecord &&I); + /// summed. Optionally scale counts by \p Weight. + std::error_code addRecord(InstrProfRecord &&I, uint64_t Weight = 1); /// Write the profile to \c OS void write(raw_fd_ostream &OS); + /// Write the profile in text format to \c OS + void writeText(raw_fd_ostream &OS); + /// Write \c Record in text format to \c OS + static void writeRecordInText(const InstrProfRecord &Record, + InstrProfSymtab &Symtab, raw_fd_ostream &OS); /// Write the profile, returning the raw data. For testing. std::unique_ptr writeBuffer(); + // Internal interface for testing purpose only. + void setValueProfDataEndianness(support::endianness Endianness); + private: std::pair writeImpl(raw_ostream &OS); };