1 =pod 2 3 =head1 NAME 4 5 opt - LLVM optimizer 6 7 =head1 SYNOPSIS 8 9 B<opt> [I<options>] [I<filename>] 10 11 =head1 DESCRIPTION 12 13 The B<opt> command is the modular LLVM optimizer and analyzer. It takes LLVM 14 source files as input, runs the specified optimizations or analyses on it, and then 15 outputs the optimized file or the analysis results. The function of 16 B<opt> depends on whether the B<-analyze> option is given. 17 18 When B<-analyze> is specified, B<opt> performs various analyses of the input 19 source. It will usually print the results on standard output, but in a few 20 cases, it will print output to standard error or generate a file with the 21 analysis output, which is usually done when the output is meant for another 22 program. 23 24 While B<-analyze> is I<not> given, B<opt> attempts to produce an optimized 25 output file. The optimizations available via B<opt> depend upon what 26 libraries were linked into it as well as any additional libraries that have 27 been loaded with the B<-load> option. Use the B<-help> option to determine 28 what optimizations you can use. 29 30 If I<filename> is omitted from the command line or is I<->, B<opt> reads its 31 input from standard input. Inputs can be in either the LLVM assembly language 32 format (.ll) or the LLVM bitcode format (.bc). 33 34 If an output filename is not specified with the B<-o> option, B<opt> 35 writes its output to the standard output. 36 37 =head1 OPTIONS 38 39 =over 40 41 =item B<-f> 42 43 Enable binary output on terminals. Normally, B<opt> will refuse to 44 write raw bitcode output if the output stream is a terminal. With this option, 45 B<opt> will write raw bitcode regardless of the output device. 46 47 =item B<-help> 48 49 Print a summary of command line options. 50 51 =item B<-o> I<filename> 52 53 Specify the output filename. 54 55 =item B<-S> 56 57 Write output in LLVM intermediate language (instead of bitcode). 58 59 =item B<-{passname}> 60 61 B<opt> provides the ability to run any of LLVM's optimization or analysis passes 62 in any order. The B<-help> option lists all the passes available. The order in 63 which the options occur on the command line are the order in which they are 64 executed (within pass constraints). 65 66 =item B<-std-compile-opts> 67 68 This is short hand for a standard list of I<compile time optimization> passes. 69 This is typically used to optimize the output from the llvm-gcc front end. It 70 might be useful for other front end compilers as well. To discover the full set 71 of options available, use the following command: 72 73 llvm-as < /dev/null | opt -std-compile-opts -disable-output -debug-pass=Arguments 74 75 =item B<-disable-inlining> 76 77 This option is only meaningful when B<-std-compile-opts> is given. It simply 78 removes the inlining pass from the standard list. 79 80 =item B<-disable-opt> 81 82 This option is only meaningful when B<-std-compile-opts> is given. It disables 83 most, but not all, of the B<-std-compile-opts>. The ones that remain are 84 B<-verify>, B<-lower-setjmp>, and B<-funcresolve>. 85 86 =item B<-strip-debug> 87 88 This option causes opt to strip debug information from the module before 89 applying other optimizations. It is essentially the same as B<-strip> but it 90 ensures that stripping of debug information is done first. 91 92 =item B<-verify-each> 93 94 This option causes opt to add a verify pass after every pass otherwise specified 95 on the command line (including B<-verify>). This is useful for cases where it 96 is suspected that a pass is creating an invalid module but it is not clear which 97 pass is doing it. The combination of B<-std-compile-opts> and B<-verify-each> 98 can quickly track down this kind of problem. 99 100 =item B<-profile-info-file> I<filename> 101 102 Specify the name of the file loaded by the -profile-loader option. 103 104 =item B<-stats> 105 106 Print statistics. 107 108 =item B<-time-passes> 109 110 Record the amount of time needed for each pass and print it to standard 111 error. 112 113 =item B<-debug> 114 115 If this is a debug build, this option will enable debug printouts 116 from passes which use the I<DEBUG()> macro. See the B<LLVM Programmer's 117 Manual>, section I<#DEBUG> for more information. 118 119 =item B<-load>=I<plugin> 120 121 Load the dynamic object I<plugin>. This object should register new optimization 122 or analysis passes. Once loaded, the object will add new command line options to 123 enable various optimizations or analyses. To see the new complete list of 124 optimizations, use the B<-help> and B<-load> options together. For example: 125 126 opt -load=plugin.so -help 127 128 =item B<-p> 129 130 Print module after each transformation. 131 132 =back 133 134 =head1 EXIT STATUS 135 136 If B<opt> succeeds, it will exit with 0. Otherwise, if an error 137 occurs, it will exit with a non-zero value. 138 139 =head1 AUTHORS 140 141 Maintained by the LLVM Team (L<http://llvm.org/>). 142 143 =cut 144