From: Xinliang David Li Date: Mon, 4 Jan 2016 21:31:09 +0000 (+0000) Subject: [PGO]: Use efficient 'join' API for uncompressed string X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=8abd63fcbb8c48255d44070e7d5378a12a9cb1c3 [PGO]: Use efficient 'join' API for uncompressed string git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256781 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ProfileData/InstrProf.cpp b/lib/ProfileData/InstrProf.cpp index dd5f04bee32..58f70af39f6 100644 --- a/lib/ProfileData/InstrProf.cpp +++ b/lib/ProfileData/InstrProf.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "llvm/ProfileData/InstrProf.h" +#include "llvm/ADT/StringExtras.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Function.h" #include "llvm/IR/GlobalVariable.h" @@ -167,18 +168,9 @@ GlobalVariable *createPGOFuncNameVar(Function &F, StringRef FuncName) { int collectPGOFuncNameStrings(const std::vector &NameStrs, bool doCompression, std::string &Result) { uint8_t Header[16], *P = Header; - std::string UncompressedNameStrings; - size_t UncompressedStringLen = 0; + std::string UncompressedNameStrings = + join(NameStrs.begin(), NameStrs.end(), StringRef(" ")); - for (auto NameStr : NameStrs) - UncompressedStringLen += (NameStr.length() + 1); - - UncompressedNameStrings.reserve(UncompressedStringLen + 1); - - for (auto NameStr : NameStrs) { - UncompressedNameStrings += NameStr; - UncompressedNameStrings.append(" "); - } unsigned EncLen = encodeULEB128(UncompressedNameStrings.length(), P); P += EncLen; if (!doCompression) { @@ -252,8 +244,8 @@ int readPGOFuncNameStrings(StringRef NameStrings, InstrProfSymtab &Symtab) { do { size_t NameStop = NameStrings.find(' ', NameStart); if (NameStop == StringRef::npos) - return 1; - if (NameStop == NameStrings.size() - 1) + NameStop = NameStrings.size(); + if (NameStop >= NameStrings.size() - 1) isLast = true; StringRef Name = NameStrings.substr(NameStart, NameStop - NameStart); Symtab.addFuncName(Name);