| llvm-profdata - Profile data tool |
| ================================= |
| |
| SYNOPSIS |
| -------- |
| |
| :program:`llvm-profdata` *command* [*args...*] |
| |
| DESCRIPTION |
| ----------- |
| |
| The :program:`llvm-profdata` tool is a small utility for working with profile |
| data files. |
| |
| COMMANDS |
| -------- |
| |
| * :ref:`merge <profdata-merge>` |
| * :ref:`show <profdata-show>` |
| |
| .. program:: llvm-profdata merge |
| |
| .. _profdata-merge: |
| |
| MERGE |
| ----- |
| |
| SYNOPSIS |
| ^^^^^^^^ |
| |
| :program:`llvm-profdata merge` [*options*] [*filename...*] |
| |
| DESCRIPTION |
| ^^^^^^^^^^^ |
| |
| :program:`llvm-profdata merge` takes several profile data files |
| generated by PGO instrumentation and merges them together into a single |
| indexed profile data file. |
| |
| By default profile data is merged without modification. This means that the |
| relative importance of each input file is proportional to the number of samples |
| or counts it contains. In general, the input from a longer training run will be |
| 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 |
| 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 |
| ^^^^^^^ |
| |
| .. option:: -help |
| |
| Print a summary of command line options. |
| |
| .. option:: -output=output, -o=output |
| |
| Specify the output file name. *Output* cannot be ``-`` as the resulting |
| indexed profile data can't be written to standard output. |
| |
| .. option:: -weighted-input=weight,filename |
| |
| Specify an input file name along with a weight. The profile counts of the |
| supplied ``filename`` will be scaled (multiplied) by the supplied |
| ``weight``, where where ``weight`` is a decimal integer >= 1. |
| Input files specified without using this option are assigned a default |
| 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) |
| |
| Specify that the input profile is an instrumentation-based profile. |
| |
| .. option:: -sample |
| |
| Specify that the input profile is a sample-based profile. |
| |
| The format of the generated file can be generated in one of three ways: |
| |
| .. option:: -binary (default) |
| |
| Emit the profile using a binary encoding. For instrumentation-based profile |
| the output format is the indexed binary format. |
| |
| .. option:: -text |
| |
| Emit the profile in text mode. This option can also be used with both |
| sample-based and instrumentation-based profile. When this option is used |
| the profile will be dumped in the text format that is parsable by the profile |
| reader. |
| |
| .. option:: -gcc |
| |
| Emit the profile using GCC's gcov format (Not yet supported). |
| |
| .. option:: -sparse[=true|false] |
| |
| Do not emit function records with 0 execution count. Can only be used in |
| conjunction with -instr. Defaults to false, since it can inhibit compiler |
| optimization during PGO. |
| |
| .. option:: -num-threads=N, -j=N |
| |
| Use N threads to perform profile merging. When N=0, llvm-profdata auto-detects |
| an appropriate number of threads to use. This is the default. |
| |
| EXAMPLES |
| ^^^^^^^^ |
| Basic Usage |
| +++++++++++ |
| Merge three profiles: |
| |
| :: |
| |
| llvm-profdata merge foo.profdata bar.profdata baz.profdata -output merged.profdata |
| |
| Weighted Input |
| ++++++++++++++ |
| The input file `foo.profdata` is especially important, multiply its counts by 10: |
| |
| :: |
| |
| llvm-profdata merge -weighted-input=10,foo.profdata bar.profdata baz.profdata -output merged.profdata |
| |
| Exactly equivalent to the previous invocation (explicit form; useful for programmatic invocation): |
| |
| :: |
| |
| llvm-profdata merge -weighted-input=10,foo.profdata -weighted-input=1,bar.profdata -weighted-input=1,baz.profdata -output merged.profdata |
| |
| .. program:: llvm-profdata show |
| |
| .. _profdata-show: |
| |
| SHOW |
| ---- |
| |
| SYNOPSIS |
| ^^^^^^^^ |
| |
| :program:`llvm-profdata show` [*options*] [*filename*] |
| |
| DESCRIPTION |
| ^^^^^^^^^^^ |
| |
| :program:`llvm-profdata show` takes a profile data file and displays the |
| information about the profile counters for this file and |
| for any of the specified function(s). |
| |
| If *filename* is omitted or is ``-``, then **llvm-profdata show** reads its |
| input from standard input. |
| |
| OPTIONS |
| ^^^^^^^ |
| |
| .. option:: -all-functions |
| |
| Print details for every function. |
| |
| .. option:: -counts |
| |
| Print the counter values for the displayed functions. |
| |
| .. option:: -function=string |
| |
| Print details for a function if the function's name contains the given string. |
| |
| .. option:: -help |
| |
| Print a summary of command line options. |
| |
| .. option:: -output=output, -o=output |
| |
| Specify the output file name. If *output* is ``-`` or it isn't specified, |
| then the output is sent to standard output. |
| |
| .. option:: -instr (default) |
| |
| Specify that the input profile is an instrumentation-based profile. |
| |
| .. option:: -text |
| |
| Instruct the profile dumper to show profile counts in the text format of the |
| instrumentation-based profile data representation. By default, the profile |
| information is dumped in a more human readable form (also in text) with |
| annotations. |
| |
| .. option:: -topn=n |
| |
| Instruct the profile dumper to show the top ``n`` functions with the |
| hottest basic blocks in the summary section. By default, the topn functions |
| are not dumped. |
| |
| .. option:: -sample |
| |
| Specify that the input profile is a sample-based profile. |
| |
| .. option:: -memop-sizes |
| |
| Show the profiled sizes of the memory intrinsic calls for shown functions. |
| |
| EXIT STATUS |
| ----------- |
| |
| :program:`llvm-profdata` returns 1 if the command is omitted or is invalid, |
| if it cannot read input files, or if there is a mismatch between their data. |