LLVM-OPT-REPORT(1)

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.

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

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