mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-03 17:02:03 +00:00
Make llvm-profdata show -text work as advertised in the documentation.
Per LLVM's CommandGuide, llvm-profdata show -text is supposed to produce textual output that can be passed as input to further llvm-profdata invocations. This previously didn't work for two reasons: 1) -text was not sufficient to enable the machine-readable text format output; instead, -text was effectively ignored if -counts was not also specified. (With this patch, -counts is instead ignored if -text is specified, because the machine-readable text format always includes counts.) 2) When the input data was an IR-level profile, the :ir marker was missing from the output, resulting in a text format output that would not be usable as profiling data due to function hash mismatches. Differential Revision: https://reviews.llvm.org/D51188 llvm-svn: 340592
This commit is contained in:
parent
3e2ce947ba
commit
523811b4d4
6
test/tools/llvm-profdata/roundtrip.test
Normal file
6
test/tools/llvm-profdata/roundtrip.test
Normal file
@ -0,0 +1,6 @@
|
||||
RUN: llvm-profdata merge -o %t.0.profdata %S/Inputs/IR_profile.proftext
|
||||
RUN: llvm-profdata show -o %t.0.proftext -all-functions -text %t.0.profdata
|
||||
RUN: diff %t.0.proftext %S/Inputs/IR_profile.proftext
|
||||
RUN: llvm-profdata merge -o %t.1.profdata %t.0.proftext
|
||||
RUN: llvm-profdata show -o %t.1.proftext -all-functions -text %t.1.profdata
|
||||
RUN: diff %t.1.proftext %S/Inputs/IR_profile.proftext
|
@ -600,12 +600,16 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts,
|
||||
decltype(MinCmp)>
|
||||
HottestFuncs(MinCmp);
|
||||
|
||||
// Add marker so that IR-level instrumentation round-trips properly.
|
||||
if (TextFormat && IsIRInstr)
|
||||
OS << ":ir\n";
|
||||
|
||||
for (const auto &Func : *Reader) {
|
||||
bool Show =
|
||||
ShowAllFunctions || (!ShowFunction.empty() &&
|
||||
Func.Name.find(ShowFunction) != Func.Name.npos);
|
||||
|
||||
bool doTextFormatDump = (Show && ShowCounts && TextFormat);
|
||||
bool doTextFormatDump = (Show && TextFormat);
|
||||
|
||||
if (doTextFormatDump) {
|
||||
InstrProfSymtab &Symtab = Reader->getSymtab();
|
||||
@ -679,7 +683,7 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts,
|
||||
if (Reader->hasError())
|
||||
exitWithError(Reader->getError(), Filename);
|
||||
|
||||
if (ShowCounts && TextFormat)
|
||||
if (TextFormat)
|
||||
return 0;
|
||||
std::unique_ptr<ProfileSummary> PS(Builder.getSummary());
|
||||
OS << "Instrumentation level: "
|
||||
|
Loading…
Reference in New Issue
Block a user