llvm-opt-report-16(1)

generate optimization report from YAML

Section 1 llvm-16 bookworm source

Description

LLVM-OPT-REPORT

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-2023, LLVM Project