2014-07-31 04:30:11 +08:00
|
|
|
llvm-profdata - Profile data tool
|
|
|
|
=================================
|
2014-02-18 07:22:49 +08:00
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
:program:`llvm-profdata` *command* [*args...*]
|
2014-02-18 07:22:49 +08:00
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
The :program:`llvm-profdata` tool is a small utility for working with profile
|
|
|
|
data files.
|
2014-02-18 07:22:49 +08:00
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
COMMANDS
|
|
|
|
--------
|
|
|
|
|
2015-03-12 09:38:50 +08:00
|
|
|
* :ref:`merge <profdata-merge>`
|
|
|
|
* :ref:`show <profdata-show>`
|
2014-07-31 04:30:11 +08:00
|
|
|
|
|
|
|
.. program:: llvm-profdata merge
|
|
|
|
|
2015-03-12 09:38:50 +08:00
|
|
|
.. _profdata-merge:
|
2014-07-31 04:30:11 +08:00
|
|
|
|
|
|
|
MERGE
|
|
|
|
-----
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
^^^^^^^^
|
|
|
|
|
2015-12-16 01:37:09 +08:00
|
|
|
:program:`llvm-profdata merge` [*options*] [*filename...*]
|
2014-07-31 04:30:11 +08:00
|
|
|
|
|
|
|
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.
|
2014-02-18 07:22:49 +08:00
|
|
|
|
2015-12-16 01:37:09 +08:00
|
|
|
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.
|
|
|
|
|
2016-06-08 06:47:31 +08:00
|
|
|
Profiles passed in via ``-weighted-input``, ``-input-files``, or via positional
|
|
|
|
arguments are processed once for each time they are seen.
|
|
|
|
|
2015-12-16 01:37:09 +08:00
|
|
|
|
2014-02-18 07:22:49 +08:00
|
|
|
OPTIONS
|
2014-07-31 04:30:11 +08:00
|
|
|
^^^^^^^
|
|
|
|
|
|
|
|
.. 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.
|
|
|
|
|
2015-12-16 01:37:09 +08:00
|
|
|
.. option:: -weighted-input=weight,filename
|
|
|
|
|
2016-05-28 09:03:36 +08:00
|
|
|
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.
|
2015-12-16 01:37:09 +08:00
|
|
|
|
2016-06-08 06:47:31 +08:00
|
|
|
.. 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>.
|
|
|
|
|
2015-05-29 05:57:17 +08:00
|
|
|
.. option:: -instr (default)
|
|
|
|
|
2015-11-25 04:48:25 +08:00
|
|
|
Specify that the input profile is an instrumentation-based profile.
|
2015-05-29 05:57:17 +08:00
|
|
|
|
|
|
|
.. option:: -sample
|
|
|
|
|
2015-11-25 04:48:25 +08:00
|
|
|
Specify that the input profile is a sample-based profile.
|
|
|
|
|
|
|
|
The format of the generated file can be generated in one of three ways:
|
2015-05-29 05:57:17 +08:00
|
|
|
|
|
|
|
.. option:: -binary (default)
|
|
|
|
|
2015-11-25 04:48:25 +08:00
|
|
|
Emit the profile using a binary encoding. For instrumentation-based profile
|
|
|
|
the output format is the indexed binary format.
|
2015-05-29 05:57:17 +08:00
|
|
|
|
|
|
|
.. option:: -text
|
|
|
|
|
2015-11-25 04:48:25 +08:00
|
|
|
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.
|
2015-05-29 05:57:17 +08:00
|
|
|
|
|
|
|
.. option:: -gcc
|
|
|
|
|
|
|
|
Emit the profile using GCC's gcov format (Not yet supported).
|
|
|
|
|
2016-01-30 06:54:45 +08:00
|
|
|
.. 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.
|
|
|
|
|
2015-12-16 01:37:09 +08:00
|
|
|
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
|
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
.. program:: llvm-profdata show
|
|
|
|
|
2015-03-12 09:38:50 +08:00
|
|
|
.. _profdata-show:
|
2014-07-31 04:30:11 +08:00
|
|
|
|
|
|
|
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.
|
2014-02-18 07:22:49 +08:00
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
.. option:: -output=output, -o=output
|
2014-02-18 07:22:49 +08:00
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
Specify the output file name. If *output* is ``-`` or it isn't specified,
|
|
|
|
then the output is sent to standard output.
|
2014-02-18 07:22:49 +08:00
|
|
|
|
2015-05-29 05:57:17 +08:00
|
|
|
.. option:: -instr (default)
|
|
|
|
|
|
|
|
Specify that the input profile is an instrumentation-based profile.
|
|
|
|
|
2015-11-24 04:47:38 +08:00
|
|
|
.. 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.
|
|
|
|
|
2015-05-29 05:57:17 +08:00
|
|
|
.. option:: -sample
|
|
|
|
|
|
|
|
Specify that the input profile is a sample-based profile.
|
|
|
|
|
2014-02-18 07:22:49 +08:00
|
|
|
EXIT STATUS
|
|
|
|
-----------
|
|
|
|
|
2014-07-31 04:30:11 +08:00
|
|
|
: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.
|