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*] [*filenames...*]

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.

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:: -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).

.. 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:: -sample

 Specify that the input profile is a sample-based profile.

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.
