home | help
LLVM-OPT-REPORT(1)		      LLVM		      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 op-
     timization 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 de-
     tails 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 opti-
     mization 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 fac-
       tor.

     * 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 opti-
	mization  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. Oth-
     erwise, 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

	    * 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-2026, LLVM Project

21				   2026-08-27		      LLVM-OPT-REPORT(1)

home | help