---
name: "llvm-opt-report-16"
section: "1"
platform: "linux"
package: "llvm-16"
version: "1:16.0.6-15~deb12u1"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/llvm-opt-report-16"
---

# llvm-opt-report-16(1)

generate optimization report from YAML

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