1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

Revert "Retry "[llvm-profdata] Add option to ingest filepaths from a file"

This reverts commit r271949. It breaks the Windows build:

http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/12796

llvm-svn: 271952
This commit is contained in:
Vedant Kumar 2016-06-06 23:01:42 +00:00
parent 6357ddf5ed
commit 196f3e9316
3 changed files with 13 additions and 83 deletions

View File

@ -44,9 +44,6 @@ interpreted as relatively more important than a shorter run. Depending on the
nature of the training runs it may be useful to adjust the weight given to each nature of the training runs it may be useful to adjust the weight given to each
input file by using the ``-weighted-input`` option. input file by using the ``-weighted-input`` option.
Profiles passed in via ``-weighted-input``, ``-input-files``, or via positional
arguments are processed once for each time they are seen.
OPTIONS OPTIONS
^^^^^^^ ^^^^^^^
@ -68,12 +65,6 @@ OPTIONS
Input files specified without using this option are assigned a default Input files specified without using this option are assigned a default
weight of 1. Examples are shown below. weight of 1. Examples are shown below.
.. option:: -input-files=path, -f=path
Specify a file which contains a list of files to merge. The entries in this
file are newline-separated. Lines starting with '#' are skipped. Entries may
be of the form <filename> or <weight>,<filename>.
.. option:: -instr (default) .. option:: -instr (default)
Specify that the input profile is an instrumentation-based profile. Specify that the input profile is an instrumentation-based profile.

View File

@ -1,16 +0,0 @@
RUN: printf '# comment 1\n' > %t
RUN: printf ' # comment 2\n' >> %t
RUN: printf 'bar\n' >> %t
RUN: printf ' baz\n' >> %t
RUN: printf '2,%t.weighted\n' >> %t
RUN: printf ' ' > %t.weighted
RUN: llvm-profdata merge -input-files %t -dump-input-file-list foo -o /dev/null | FileCheck %s
RUN: llvm-profdata merge -f %t -dump-input-file-list foo -o /dev/null | FileCheck %s
CHECK: 1,foo
CHECK-NEXT: 1,bar
CHECK-NEXT: 1,baz
CHECK-NEXT: 2,{{.*}}.weighted

View File

@ -108,12 +108,12 @@ static void handleMergeWriterError(Error E, StringRef WhenceFile = "",
} }
struct WeightedFile { struct WeightedFile {
std::string Filename; StringRef Filename;
uint64_t Weight; uint64_t Weight;
WeightedFile() {} WeightedFile() {}
WeightedFile(std::string F, uint64_t W) : Filename{F}, Weight{W} {} WeightedFile(StringRef F, uint64_t W) : Filename{F}, Weight{W} {}
}; };
typedef SmallVector<WeightedFile, 5> WeightedFileVector; typedef SmallVector<WeightedFile, 5> WeightedFileVector;
@ -209,47 +209,18 @@ static void mergeSampleProfile(const WeightedFileVector &Inputs,
} }
static WeightedFile parseWeightedFile(const StringRef &WeightedFilename) { static WeightedFile parseWeightedFile(const StringRef &WeightedFilename) {
StringRef WeightStr, FilenameStr; StringRef WeightStr, FileName;
std::tie(WeightStr, FilenameStr) = WeightedFilename.split(','); std::tie(WeightStr, FileName) = WeightedFilename.split(',');
uint64_t Weight; uint64_t Weight;
if (WeightStr.getAsInteger(10, Weight) || Weight < 1) if (WeightStr.getAsInteger(10, Weight) || Weight < 1)
exitWithError("Input weight must be a positive integer."); exitWithError("Input weight must be a positive integer.");
SmallString<256> CanonicalFilename; if (!sys::fs::exists(FileName))
sys::path::native(FilenameStr, CanonicalFilename);
if (!sys::fs::exists(CanonicalFilename))
exitWithErrorCode(make_error_code(errc::no_such_file_or_directory), exitWithErrorCode(make_error_code(errc::no_such_file_or_directory),
CanonicalFilename); FileName);
return WeightedFile(StringRef(CanonicalFilename).str(), Weight); return WeightedFile(FileName, Weight);
}
static void parseInputFilenamesFile(const StringRef &InputFilenamesFile,
WeightedFileVector &WFV) {
if (InputFilenamesFile == "")
return;
auto BufOrError = MemoryBuffer::getFileOrSTDIN(InputFilenamesFile);
if (!BufOrError)
exitWithErrorCode(BufOrError.getError(), InputFilenamesFile);
auto Buffer = std::move(*BufOrError);
StringRef Data = Buffer->getBuffer();
SmallVector<StringRef, 8> Entries;
Data.split(Entries, '\n', /*MaxSplit=*/-1, /*KeepEmpty=*/false);
for (const StringRef &FileWeightEntry : Entries) {
StringRef SanitizedEntry = FileWeightEntry.trim(" \t\v\f\r");
// Skip comments.
if (SanitizedEntry.startswith("#"))
continue;
// If there's no comma, it's an unweighted profile.
else if (SanitizedEntry.rfind(',') == StringRef::npos)
WFV.emplace_back(SanitizedEntry, 1);
else
WFV.emplace_back(parseWeightedFile(SanitizedEntry));
}
} }
static int merge_main(int argc, const char *argv[]) { static int merge_main(int argc, const char *argv[]) {
@ -257,15 +228,6 @@ static int merge_main(int argc, const char *argv[]) {
cl::desc("<filename...>")); cl::desc("<filename...>"));
cl::list<std::string> WeightedInputFilenames("weighted-input", cl::list<std::string> WeightedInputFilenames("weighted-input",
cl::desc("<weight>,<filename>")); cl::desc("<weight>,<filename>"));
cl::opt<std::string> InputFilenamesFile(
"input-files", cl::init(""),
cl::desc("Path to file containing newline-separated "
"[<weight>,]<filename> entries"));
cl::alias InputFilenamesFileA("f", cl::desc("Alias for --input-files"),
cl::aliasopt(InputFilenamesFile));
cl::opt<bool> DumpInputFileList(
"dump-input-file-list", cl::init(false), cl::Hidden,
cl::desc("Dump the list of input files and their weights, then exit"));
cl::opt<std::string> OutputFilename("output", cl::value_desc("output"), cl::opt<std::string> OutputFilename("output", cl::value_desc("output"),
cl::init("-"), cl::Required, cl::init("-"), cl::Required,
cl::desc("Output file")); cl::desc("Output file"));
@ -287,22 +249,15 @@ static int merge_main(int argc, const char *argv[]) {
cl::ParseCommandLineOptions(argc, argv, "LLVM profile data merger\n"); cl::ParseCommandLineOptions(argc, argv, "LLVM profile data merger\n");
WeightedFileVector WeightedInputs; if (InputFilenames.empty() && WeightedInputFilenames.empty())
for (StringRef Filename : InputFilenames)
WeightedInputs.emplace_back(Filename, 1);
for (StringRef WeightedFilename : WeightedInputFilenames)
WeightedInputs.emplace_back(parseWeightedFile(WeightedFilename));
parseInputFilenamesFile(InputFilenamesFile, WeightedInputs);
if (WeightedInputs.empty())
exitWithError("No input files specified. See " + exitWithError("No input files specified. See " +
sys::path::filename(argv[0]) + " -help"); sys::path::filename(argv[0]) + " -help");
if (DumpInputFileList) { WeightedFileVector WeightedInputs;
for (auto &WF : WeightedInputs) for (StringRef Filename : InputFilenames)
outs() << WF.Weight << "," << WF.Filename << "\n"; WeightedInputs.push_back(WeightedFile(Filename, 1));
return 0; for (StringRef WeightedFilename : WeightedInputFilenames)
} WeightedInputs.push_back(parseWeightedFile(WeightedFilename));
if (ProfileKind == instr) if (ProfileKind == instr)
mergeInstrProfile(WeightedInputs, OutputFilename, OutputFormat, mergeInstrProfile(WeightedInputs, OutputFilename, OutputFormat,