forked from OSchip/llvm-project
[BOLT] Add `-o` option to merge-fdata
Differential Revision: https://reviews.llvm.org/D126788
This commit is contained in:
parent
241e645036
commit
716d428ab5
|
@ -0,0 +1,16 @@
|
|||
# Check merge-fdata tool correctly handles `-o` option.
|
||||
RUN: merge-fdata %S/Inputs/bat_profile_1.fdata \
|
||||
RUN: %S/Inputs/bat_profile_2.fdata \
|
||||
RUN: | FileCheck %s
|
||||
|
||||
RUN: merge-fdata %S/Inputs/bat_profile_1.fdata \
|
||||
RUN: %S/Inputs/bat_profile_2.fdata \
|
||||
RUN: -o - \
|
||||
RUN: | FileCheck %s
|
||||
|
||||
RUN: merge-fdata %S/Inputs/bat_profile_1.fdata \
|
||||
RUN: %S/Inputs/bat_profile_2.fdata \
|
||||
RUN: -o %t
|
||||
RUN: FileCheck %s < %t
|
||||
|
||||
CHECK: 1 main 451 1 SolveCubic 0 0 302
|
|
@ -64,6 +64,12 @@ SuppressMergedDataOutput("q",
|
|||
cl::Optional,
|
||||
cl::cat(MergeFdataCategory));
|
||||
|
||||
static cl::opt<std::string>
|
||||
OutputFilePath("o",
|
||||
cl::value_desc("file"),
|
||||
cl::desc("Write output to <file>"),
|
||||
cl::cat(MergeFdataCategory));
|
||||
|
||||
} // namespace opts
|
||||
|
||||
namespace {
|
||||
|
@ -81,6 +87,18 @@ static void report_error(Twine Message, StringRef CustomError) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
static raw_fd_ostream &output() {
|
||||
if (opts::OutputFilePath.empty() || opts::OutputFilePath == "-")
|
||||
return outs();
|
||||
else {
|
||||
std::error_code EC;
|
||||
static raw_fd_ostream Output(opts::OutputFilePath, EC);
|
||||
if (EC)
|
||||
report_error(opts::OutputFilePath, EC);
|
||||
return Output;
|
||||
}
|
||||
}
|
||||
|
||||
void mergeProfileHeaders(BinaryProfileHeader &MergedHeader,
|
||||
const BinaryProfileHeader &Header) {
|
||||
if (MergedHeader.FileName.empty())
|
||||
|
@ -283,9 +301,9 @@ void mergeLegacyProfiles(const SmallVectorImpl<std::string> &Filenames) {
|
|||
}
|
||||
|
||||
if (BoltedCollection)
|
||||
outs() << "boltedcollection\n";
|
||||
output() << "boltedcollection\n";
|
||||
for (const auto &Entry : Entries)
|
||||
outs() << Entry.getKey() << " " << Entry.getValue() << "\n";
|
||||
output() << Entry.getKey() << " " << Entry.getValue() << "\n";
|
||||
|
||||
errs() << "Profile from " << Filenames.size() << " files merged.\n";
|
||||
}
|
||||
|
@ -375,7 +393,7 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
|
||||
if (!opts::SuppressMergedDataOutput) {
|
||||
yaml::Output YamlOut(outs());
|
||||
yaml::Output YamlOut(output());
|
||||
|
||||
BinaryProfile MergedProfile;
|
||||
MergedProfile.Header = MergedHeader;
|
||||
|
|
Loading…
Reference in New Issue