blob: 4bf67a49c2547561364e85dd435699bc0a79190e [file] [log] [blame]
John Criswellecf32e52003-09-11 19:58:03 +00001<html>
Chris Lattner26814d02003-10-07 20:17:24 +00002<title>LLVM: opt tool</title>
John Criswellecf32e52003-09-11 19:58:03 +00003
Chris Lattner08a04fd2003-10-07 20:12:05 +00004<body bgcolor=white>
John Criswellecf32e52003-09-11 19:58:03 +00005
Chris Lattner26814d02003-10-07 20:17:24 +00006<center><h1>LLVM: <tt>opt</tt> tool</h1></center>
John Criswellecf32e52003-09-11 19:58:03 +00007<HR>
8
Chris Lattner26814d02003-10-07 20:17:24 +00009<h3>NAME</h3>
10<tt>opt</tt>
John Criswellecf32e52003-09-11 19:58:03 +000011
Chris Lattner26814d02003-10-07 20:17:24 +000012<h3>SYNOPSIS</h3>
13<tt>opt [options] [filename]</tt>
John Criswellecf32e52003-09-11 19:58:03 +000014
Chris Lattner26814d02003-10-07 20:17:24 +000015<h3>DESCRIPTION</h3>
John Criswellecf32e52003-09-11 19:58:03 +000016
Chris Lattner26814d02003-10-07 20:17:24 +000017The <tt>opt</tt> command is the modular LLVM optimizer. It takes LLVM bytecode
18as input, runs the specified optimizations on it, and then outputs the optimized
19LLVM bytecode.
John Criswell62435342003-09-26 16:32:00 +000020<p>
John Criswellecf32e52003-09-11 19:58:03 +000021
Chris Lattner26814d02003-10-07 20:17:24 +000022The optimizations available via <tt>opt</tt> depend upon what libraries were
23linked into it as well as any additional libraries that have been loaded with
24the <tt>-load</tt> option. Use the <tt>-help</tt> option to determine what
25optimizations you can use.
John Criswell62435342003-09-26 16:32:00 +000026<p>
John Criswellecf32e52003-09-11 19:58:03 +000027
Chris Lattner26814d02003-10-07 20:17:24 +000028If no filename is specified on the command line, <tt>opt</tt> reads its input
29from standard input.
John Criswell62435342003-09-26 16:32:00 +000030<p>
31
Chris Lattner26814d02003-10-07 20:17:24 +000032If an output filename is not specified with the <tt>-o</tt> option, <tt>opt</tt>
33writes its output to the standard output.
34
35
36<h3>OPTIONS</h3>
John Criswellecf32e52003-09-11 19:58:03 +000037
38<ul>
39 <li> -f
40 <br>
Chris Lattner26814d02003-10-07 20:17:24 +000041 Force overwrite. Normally, <tt>opt</tt> will refuse to overwrite an
42 output file that already exists. With this option, <tt>opt</tt> will
43 overwrite the output file and replace it with new bytecode.
John Criswellecf32e52003-09-11 19:58:03 +000044 <p>
45
46 <li> -help
47 <br>
48 Print a summary of command line options.
49 <p>
50
51 <li> -o &lt;filename&gt;
52 <br>
53 Specify the output filename.
54 <p>
55
John Criswell84171422004-03-12 22:45:35 +000056 <li> -dsa-track-integers
57 <br>
58 Track integers as potential pointers.
59 <p>
60
61 <li> -profile-info-file &lt;filename&gt;
62 <br>
63 Specify the name of the file loaded by the -profile-loader option.
64 <p>
65
John Criswellecf32e52003-09-11 19:58:03 +000066 <li> -stats
67 <br>
68 Print statistics.
69 <p>
70
71 <li> -time-passes
72 <br>
73 Record the amount of time needed for each pass and print it to standard
74 error.
75 <p>
76
Chris Lattnera2a628f2003-10-07 16:33:42 +000077 <li> -debug
78 <br>
79 If this is a debug build, this option will enable debug printouts from
80 passes which use the <tt>DEBUG</tt> macro. See the <a
81 href="../ProgrammersManual.html#DEBUG">Programmer's Manual</a> for more
82 information.
83 <p>
84<!--
John Criswellecf32e52003-09-11 19:58:03 +000085 <li> -internalize-public-api-file &lt;filename&gt;
86 <br>
87 Preserve the symbol names listed in the file filename.
88 <p>
89
90 <li> -internalize-public-api-list=&lt;list&gt;
91 <br>
92 Perserve the symbol names specified.
93 <p>
Chris Lattnera2a628f2003-10-07 16:33:42 +000094-->
John Criswellecf32e52003-09-11 19:58:03 +000095
96 <li> -q
97 <br>
98 Quiet mode. Do not print messages on whether the program was modified.
99 <p>
100
John Criswellf9c78652004-01-26 21:26:54 +0000101 <li> -load &lt;plugin&gt;
John Criswellecf32e52003-09-11 19:58:03 +0000102 <br>
John Criswellf9c78652004-01-26 21:26:54 +0000103 Load the dynamic object &lt;plugin&gt;. This object should register new
John Criswellecf32e52003-09-11 19:58:03 +0000104 optimization passes. Once loaded, the object will add new command line
105 options to enable various optimizations. To see the new complete list
106 of optimizations, use the -help and -load options together:
107 <p>
John Criswellf9c78652004-01-26 21:26:54 +0000108 <tt>opt -load &lt;plugin&gt; -help</tt>
John Criswellecf32e52003-09-11 19:58:03 +0000109 <p>
110
111 <li> -p
112 <br>
113 Print module after each transformation.
114 <p>
115</ul>
116
Chris Lattner26814d02003-10-07 20:17:24 +0000117<h3>EXIT STATUS</h3>
John Criswellecf32e52003-09-11 19:58:03 +0000118
Chris Lattner26814d02003-10-07 20:17:24 +0000119If <tt>opt</tt> succeeds, it will exit with 0. Otherwise, if an error occurs,
120it will exit with a non-zero value.
John Criswellecf32e52003-09-11 19:58:03 +0000121
Chris Lattner26814d02003-10-07 20:17:24 +0000122<h3>SEE ALSO</h3>
123
124<a href="analyze.html"><tt>analyze</tt></a>
John Criswellecf32e52003-09-11 19:58:03 +0000125
126<HR>
Chris Lattner08a04fd2003-10-07 20:12:05 +0000127Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
John Criswellecf32e52003-09-11 19:58:03 +0000128</body>
129</html>
130