blob: 675108a11f4294fbaf8361833cb5016d139614d6 [file] [log] [blame]
llvm-opt-report - generate optimization report from YAML
========================================================
.. program:: llvm-opt-report
SYNOPSIS
--------
:program:`llvm-opt-report` [*options*] [input]
DESCRIPTION
-----------
:program:`llvm-opt-report` is a tool to generate an optimization report from YAML optimization record files.
You need to create an input YAML optimization record file before running :program:`llvm-opt-report`.
.. code-block:: console
$ clang -c foo.c -o foo.o -O3 -fsave-optimization-record
Then, you create a report using the :program:`llvm-opt-report` command with the YAML optimization record file :file:`foo.opt.yaml` as input.
.. code-block:: console
$ llvm-opt-report foo.opt.yaml -o foo.lst
foo.lst is the generated optimization report.
.. code-block::
< foo.c
1 | void bar();
2 | void foo() { bar(); }
3 |
4 | void Test(int *res, int *c, int *d, int *p, int n) {
5 | int i;
6 |
7 | #pragma clang loop vectorize(assume_safety)
8 V4,1 | for (i = 0; i < 1600; i++) {
9 | res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
10 | }
11 |
12 U16 | for (i = 0; i < 16; i++) {
13 | res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
14 | }
15 |
16 I | foo();
17 |
18 | foo(); bar(); foo();
I | ^
I | ^
19 | }
20 |
Symbols printed on the left side of the program indicate what kind of optimization was performed.
The meanings of the symbols are as follows:
- I: The function is inlined.
- U: The loop is unrolled. The following number indicates the unroll factor.
- V: The loop is vectorized. The following numbers indicate the vector length and the interleave factor.
OPTIONS
-------
If ``input`` is "``-``" or omitted, :program:`llvm-opt-report` reads from standard
input. Otherwise, it will read from the specified filename.
If the :option:`-o` option is omitted, then :program:`llvm-opt-report` will send its output
to standard output. If the :option:`-o` option specifies "``-``", then the output will also
be sent to standard output.
.. option:: --help
Display available options.
.. option:: --version
Display the version of this program.
.. option:: --format=<string>
The format of the optimization record file.
The Argument is one of the following:
- yaml
- yaml-strtab
- bitstream
.. option:: --no-demangle
Do not demangle function names.
.. option:: -o=<string>
Output file.
.. option:: -r=<string>
Root for relative input paths.
.. option:: -s
Do not include vectorization factors, etc.
EXIT STATUS
-----------
:program:`llvm-opt-report` returns 0 on success. Otherwise, an error message is printed
to standard error, and the tool returns 1.