summaryrefslogtreecommitdiff
path: root/tools/llvm-profdata
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-06-04 00:36:28 +0000
committerVedant Kumar <vsk@apple.com>2016-06-04 00:36:28 +0000
commitae73627d2a1c576c5d31ce98abfb010e92083b7b (patch)
tree1c4f428b8973f5df19d23cae09373610a0efcd50 /tools/llvm-profdata
parent909307bfdd9d629f991e41dbc70c3ee214bd1dda (diff)
[llvm-profdata] Clean up the way we create the input filenames buffer (NFC)
Create the buffer before calling parseInputFilenamesFile(), and add a comment explaining why this is done. Thanks to David Li for the suggestion! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271756 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-profdata')
-rw-r--r--tools/llvm-profdata/llvm-profdata.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/tools/llvm-profdata/llvm-profdata.cpp b/tools/llvm-profdata/llvm-profdata.cpp
index 45f348747db..b9efd2ee5cd 100644
--- a/tools/llvm-profdata/llvm-profdata.cpp
+++ b/tools/llvm-profdata/llvm-profdata.cpp
@@ -224,8 +224,7 @@ static WeightedFile parseWeightedFile(const StringRef &WeightedFilename) {
}
static std::unique_ptr<MemoryBuffer>
-parseInputFilenamesFile(const StringRef &InputFilenamesFile,
- WeightedFileVector &WFV) {
+getInputFilenamesFileBuf(const StringRef &InputFilenamesFile) {
if (InputFilenamesFile == "")
return {};
@@ -233,10 +232,16 @@ parseInputFilenamesFile(const StringRef &InputFilenamesFile,
if (!BufOrError)
exitWithErrorCode(BufOrError.getError(), InputFilenamesFile);
- std::unique_ptr<MemoryBuffer> Buffer = std::move(*BufOrError);
- StringRef Data = Buffer->getBuffer();
+ return std::move(*BufOrError);
+}
+
+static void parseInputFilenamesFile(MemoryBuffer *Buffer,
+ WeightedFileVector &WFV) {
+ if (!Buffer)
+ return;
SmallVector<StringRef, 8> Entries;
+ StringRef Data = Buffer->getBuffer();
Data.split(Entries, '\n', /*MaxSplit=*/-1, /*KeepEmpty=*/false);
for (const StringRef &FileWeightEntry : Entries) {
StringRef SanitizedEntry = FileWeightEntry.trim(" \t\v\f\r");
@@ -249,8 +254,6 @@ parseInputFilenamesFile(const StringRef &InputFilenamesFile,
else
WFV.emplace_back(parseWeightedFile(SanitizedEntry));
}
-
- return Buffer;
}
static int merge_main(int argc, const char *argv[]) {
@@ -293,7 +296,11 @@ static int merge_main(int argc, const char *argv[]) {
WeightedInputs.push_back(WeightedFile(Filename, 1));
for (StringRef WeightedFilename : WeightedInputFilenames)
WeightedInputs.push_back(parseWeightedFile(WeightedFilename));
- auto Buf = parseInputFilenamesFile(InputFilenamesFile, WeightedInputs);
+
+ // Make sure that the file buffer stays alive for the duration of the
+ // weighted input vector's lifetime.
+ auto Buffer = getInputFilenamesFileBuf(InputFilenamesFile);
+ parseInputFilenamesFile(Buffer.get(), WeightedInputs);
if (WeightedInputs.empty())
exitWithError("No input files specified. See " +