diff --git a/llvm/test/tools/llvm-profdata/text-dump.test b/llvm/test/tools/llvm-profdata/text-dump.test --- a/llvm/test/tools/llvm-profdata/text-dump.test +++ b/llvm/test/tools/llvm-profdata/text-dump.test @@ -2,6 +2,7 @@ RUN: llvm-profdata show --all-functions -counts --text %p/Inputs/basic.proftext > %t-basic.proftext1 RUN: llvm-profdata merge -o %t-basic.proftext2 --text %p/Inputs/basic.proftext +RUN: llvm-profdata merge --text %p/Inputs/basic.proftext | diff %t-basic.proftext2 - RUN: llvm-profdata merge -binary -o %t-basic.profdata1 %t-basic.proftext1 RUN: llvm-profdata merge -o %t-basic.profdata2 %t-basic.proftext2 diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp --- a/llvm/tools/llvm-profdata/llvm-profdata.cpp +++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp @@ -316,6 +316,8 @@ if (Error E = Writer.writeText(Output)) warn(std::move(E)); } else { + if (Output.is_displayed()) + exitWithError("cannot write a non-text format profile to the terminal"); if (Error E = Writer.write(Output)) warn(std::move(E)); } @@ -326,9 +328,6 @@ StringRef OutputFilename, ProfileFormat OutputFormat, bool OutputSparse, unsigned NumThreads, FailureMode FailMode) { - if (OutputFilename.compare("-") == 0) - exitWithError("cannot write indexed profdata format to stdout"); - if (OutputFormat != PF_Binary && OutputFormat != PF_Compact_Binary && OutputFormat != PF_Ext_Binary && OutputFormat != PF_Text) exitWithError("unknown format is specified"); @@ -863,8 +862,7 @@ cl::alias RemappingFileA("r", cl::desc("Alias for --remapping-file"), cl::aliasopt(RemappingFile)); cl::opt OutputFilename("output", cl::value_desc("output"), - cl::init("-"), cl::Required, - cl::desc("Output file")); + cl::init("-"), cl::desc("Output file")); cl::alias OutputFilenameA("o", cl::desc("Alias for --output"), cl::aliasopt(OutputFilename)); cl::opt ProfileKind(