llvm.org GIT mirror llvm / a11014c
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340592 91177308-0d34-0410-b5e6-96231b3b80d8 Richard Smith 1 year, 23 days ago
2 changed file(s) with 12 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
0 RUN: llvm-profdata merge -o %t.0.profdata %S/Inputs/IR_profile.proftext
1 RUN: llvm-profdata show -o %t.0.proftext -all-functions -text %t.0.profdata
2 RUN: diff %t.0.proftext %S/Inputs/IR_profile.proftext
3 RUN: llvm-profdata merge -o %t.1.profdata %t.0.proftext
4 RUN: llvm-profdata show -o %t.1.proftext -all-functions -text %t.1.profdata
5 RUN: diff %t.1.proftext %S/Inputs/IR_profile.proftext
599599 decltype(MinCmp)>
600600 HottestFuncs(MinCmp);
601601
602 // Add marker so that IR-level instrumentation round-trips properly.
603 if (TextFormat && IsIRInstr)
604 OS << ":ir\n";
605
602606 for (const auto &Func : *Reader) {
603607 bool Show =
604608 ShowAllFunctions || (!ShowFunction.empty() &&
605609 Func.Name.find(ShowFunction) != Func.Name.npos);
606610
607 bool doTextFormatDump = (Show && ShowCounts && TextFormat);
611 bool doTextFormatDump = (Show && TextFormat);
608612
609613 if (doTextFormatDump) {
610614 InstrProfSymtab &Symtab = Reader->getSymtab();
678682 if (Reader->hasError())
679683 exitWithError(Reader->getError(), Filename);
680684
681 if (ShowCounts && TextFormat)
685 if (TextFormat)
682686 return 0;
683687 std::unique_ptr PS(Builder.getSummary());
684688 OS << "Instrumentation level: "