Provided by: llvm-17_17.0.6-9ubuntu1_amd64 bug

NAME

       llvm-opt-report - generate optimization report from YAML

SYNOPSIS

       llvm-opt-report [options] [input]

DESCRIPTION

       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 llvm-opt-report.

       It provides information on the execution time, memory usage, and other details of each optimization pass.

          $ clang -c foo.c -o foo.o -O3 -fsave-optimization-record

       Then,  you  create  a  report  using  the  llvm-opt-report command with the YAML optimization record file
       foo.opt.yaml as input.

          $ llvm-opt-report foo.opt.yaml -o foo.lst

       foo.lst is the generated optimization report.

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

       NOTE:
          If  a  specific  line of code is output twice, it means that the same optimization pass was applied to
          that line of code twice, and the pass was able to further optimize the code on the second iteration.

OPTIONS

       If input is “-” or omitted, llvm-opt-report reads from standard input. Otherwise, it will read  from  the
       specified filename.

       If  the  -o  option  is omitted, then llvm-opt-report will send its output to standard output.  If the -o
       option specifies “-”, then the output will also be sent to standard output.

       --help Display available options.

       --version
              Display the version of this program.

       --format=<string>
              The format of the optimization record file.  The Argument is one of the following:

              • yaml

              • yaml-strtab

              • bitstream

       --no-demangle
              Do not demangle function names.

       -o=<string>
              Output file.

       -r=<string>
              Root for relative input paths.

       -s     Do not include vectorization factors, etc.

EXIT STATUS

       llvm-opt-report returns 0 on success. Otherwise, an error message is printed to standard error,  and  the
       tool returns 1.

AUTHOR

       Maintained by the LLVM Team (https://llvm.org/).

COPYRIGHT

       2003-2024, LLVM Project

15                                                 2024-04-14                                 LLVM-OPT-REPORT(1)