Use .Sq instead of ''.
[cparser] / cparser.1
1 .\" Please adjust this date whenever revising the manpage.
2 .Dd December 16, 2008
3 .Dt CPARSER 1
4 .Sh NAME
5 .Nm cparser
6 .Nd C compiler
7 .Sh SYNOPSIS
8 .Nm
9 .Op Fl c | S | E | -print-ast
10 .Op Fl -print-implicit-cast
11 .Op Fl -print-parenthesis
12 .Op Fl std= Ns Ar standard
13 .Op Fl - Ns Oo Cm no- Oc Ns Cm gcc
14 .Op Fl - Ns Oo Cm no- Oc Ns Cm ms
15 .Op Fl g
16 .Op Fl O Ns Ar level
17 .Op Fl W Ns Oo Cm no- Oc Ns Ar warn
18 .Op Fl w
19 .Op Fl I Ar dir
20 .Op Fl L Ar dir
21 .Op Fl D Ns Ar macro Ns Op Ar =defn
22 .Op Fl U Ns Ar macro
23 .Op Fl f Ar option
24 .Op Fl finput-charset= Ns Ar encoding
25 .Op Fl b Ar option
26 .Op Fl l Ar library
27 .Op Fl o Ar outfile
28 .Op Fl x Ar language
29 .Op Fl Wl, Ns Ar option
30 .Op Fl Wp, Ns Ar option
31 .Ar
32 .Sh DESCRIPTION
33 .Nm
34 is a C compiler, which can parse C90 and C99 as well as many GCC and some MSC extensions.
35 It also provides many useful analyses for warnings and generates concise messages in case of error.
36 It uses libFIRM for optimization and code generation.
37 The compiler driver is largely compatible with GCC.
38 .Sh OPTIONS
39 .Bl -tag
40 .It Fl c
41 Compile the input files to object files.
42 The default output filename is the input filename with the extension replaced by .o.
43 .It Fl S
44 Compile the input files to assembler.
45 The default output filename is the input filename with the extension replaced by .s.
46 .It Fl E
47 Preprocess the input file only.
48 By default the result is output to stdout.
49 .It Fl -print-ast
50 Output the abstract syntax tree of the parsed input file as C again.
51 .It Fl -print-implicit-cast
52 When using
53 .Fl -print-ast ,
54 show casts, which are inserted by the semantic checks.
55 .It Fl -print-parenthesis
56 When using
57 .Fl -print-ast ,
58 show all expressions fully parenthesized.
59 .It Fl std= Ns Ar standard
60 Select the language standard.
61 Supported values are:
62 .Bl -tag -compact -width "iso9899:1990"
63 .It Cm c89
64 .It Cm iso9899:1990
65 ISO C90
66 .It Cm gnu89
67 ISO C90 with GCC extensions
68 .It Cm c99
69 .It Cm iso9899:1999
70 ISO C99
71 .It Cm gnu99
72 ISO C99 with GCC extensions
73 .It Cm c++98
74 ISO C++ 1998.
75 Not supported yet.
76 .It Cm gnu++98
77 ISO C++ 1998 with GCC extensions.
78 Not supported yet.
79 .El
80 .It Fl - Ns Oo Cm no- Oc Ns Cm gcc
81 Disable/enable GCC extensions.
82 This switch supersedes
83 .Fl std .
84 .It Fl - Ns Oo Cm no- Oc Ns Cm ms
85 Disable/enable MSC extensions.
86 .It Fl g
87 When compiling C files, add debug information in
88 .Tn stabs
89 format.
90 .It Fl O Ns Ar level
91 .\" TODO expand
92 Select the optimization level.
93 Sensible values are between 0 and 4, inclusive.
94 .It Fl W Ns Oo Cm no- Oc Ns Ar warn
95 .\" TODO expand
96 Disable/enable a specific warning.
97 Every warning option has a corresponding
98 .Cm no-
99 switch to deactivate it.
100 .It Fl Waddress
101 Warn about suspicious use of addresses, like using the address of a function or variable as boolean condition or comparing with the address of a string literal.
102 .It Fl Waggregate-return
103 Warn about defining or calling a function, which returns a struct or union by value.
104 .It Fl Wall
105 Activate most warnings.
106 In particular these are
107 .Fl Waddress ,
108 .Fl Wattribute ,
109 .Fl Wchar-subscripts ,
110 .Fl Wcomment ,
111 .Fl Wempty-statement ,
112 .Fl Wformat ,
113 .Fl Wimplicit-function-declaration ,
114 .Fl Wimplicit-int ,
115 .Fl Winit-self ,
116 .Fl Wmain ,
117 .Fl Wnonnull ,
118 .Fl Wparentheses ,
119 .Fl Wpointer-arith ,
120 .Fl Wredundant-decls ,
121 .Fl Wreturn-type ,
122 .Fl Wshadow ,
123 .Fl Wsign-compare ,
124 .Fl Wstrict-prototypes ,
125 .Fl Wswitch-enum ,
126 .Fl Wunknown-pragmas ,
127 .Fl Wunreachable-code ,
128 .Fl Wunused-function ,
129 .Fl Wunused-label ,
130 .Fl Wunused-parameter ,
131 .Fl Wunused-value ,
132 .Fl Wunused-variable .
133 .It Fl Wcast-qual
134 Warn whenever a pointer cast removes qualifiers from the pointed-to type, e.g. casting a const char* to char*.
135 .It Fl Wchar-subscripts
136 Warn about using an expression of type char as array subscript, e.g. char\ c; arr[c].
137 .It Fl Wdeclaration-after-statement
138 Warn about mixing declarations and statements, which is not allowed prior to C99.
139 .It Fl Wdiv-by-zero
140 Warn about compile-time integer division by zero.
141 .It Fl Wempty-statement
142 Warn about empty statements, i.e. statements which only consist of a single
143 .Sq \&; .
144 Use {} as replacement to avoid this warning.
145 .It Fl Werror
146 Treat warnings as errors, i.e. do not continue after parsing when a warning is encountered.
147 .It Fl Werror-implicit-function-declaration
148 Generate an error, when calling a function without a prior declaration.
149 .It Fl Wextra
150 Activate some more warnings.
151 In particular these are
152 .Fl Wempty-statement ,
153 .Fl Wunused-parameter ,
154 .Fl Wunused-value .
155 .It Fl Wfatal-errors
156 Immediately abort compilation when encountering an error.
157 .It Fl Wformat
158 Check format strings of char and wchar_t functions.
159 .It Fl Wimplicit
160 Activate
161 .Fl Wimplicit-function-declaration ,
162 .Fl Wimplicit-int .
163 .It Fl Wimplicit-function-declaration
164 Warn about calling a function without a prior declaration.
165 .It Fl Wimplicit-int
166 Warn about declarations whose declaration specifiers do not include a type specifier.
167 .It Fl Winit-self
168 Warn about uninitialized variables which are initialized with themselves.
169 .It Fl Wlong-long
170 Warn if the type
171 .Sq long long
172 is used.
173 .It Fl Wmain
174 Warn if the type of
175 .Sq main
176 is suspicious, i.e. if it is not a non-static function declared as either int\ main(void), int\ main(int,\ char**) or, as an extension, int\ main(int,\ char**,\ char**).
177 .It Fl Wmissing-declarations
178 Warn if a non-static function or a global variable without a storage class is defined without a prior declaration.
179 This is typically a sign of a missing #include or that the object should be static.
180 .It Fl Wmissing-noreturn
181 Warn about functions, which are candidates for the attribute
182 .Sq noreturn .
183 .It Fl Wmissing-prototypes
184 Warn if a global function is defined without a previous prototype declaration.
185 .It Fl Wmultichar
186 Warn if a multicharacter constant
187 .Pf ( Sq FOOF )
188 is used.
189 .It Fl Wnested-externs
190 Warn if an
191 .Sq extern
192 declaration is encountered within a function.
193 .It Fl Wparentheses
194 Warn if parentheses are omitted in certain contexts.
195 Warn if an assignment is used as condition, e.g. if\ (x\ =\ 23).
196 Warn if && without parentheses is used within ||, e.g. if\ (x\ ||\ y\ &&\ z).
197 Warn if it there may be confusion which
198 .Sq if Ns
199 -statement an
200 .Sq else Ns
201 -branch belongs to, e.g. if\ (x)\ if\ (y)\ {}\ else\ {}.
202 Warn if cascaded comparisons appear which do not have their mathematical meaning, e.g. if\ (23\ <=\ x\ <\ 42).
203 Warn if + or - is used as operand of << or >>, e.g. x\ +\ y\ <<\ z.
204 .It Fl Wredundant-decls
205 Warn about redundant declarations, i.e. multiple declarations of the same object or static forward declarations which have no use before their definition.
206 .It Fl Wunreachable-code
207 Warn when the compiler determines that a statement (or in some cases a part thereof) will never be executed.
208 .It Fl Wunused
209 Activate
210 .Fl Wunused-function ,
211 .Fl Wunused-label ,
212 .Fl Wunused-parameter ,
213 .Fl Wunused-value ,
214 .Fl Wunused-variable .
215 .It Fl Wunused-parameter
216 Warn when a parameter is never used or only ever read to calculate its own new value, e.g. x\ =\ x\ +\ 1.
217 .It Fl Wunused-variable
218 Warn when a variable is never used or only ever read to calculate its own new value, e.g. x\ =\ x\ +\ 1.
219 .It Fl w
220 Suppress all warnings.
221 .It Fl I Ar dir
222 Add the directory
223 .Ar dir
224 to the paths to be searched for include files.
225 .It Fl L Ar dir
226 Add the directory
227 .Ar dir
228 to the paths to be searched for libraries.
229 .It Fl D Ns Ar macro
230 Define the preprocessor macro
231 .Ar macro
232 which will expand to 1.
233 .It Fl D Ns Ar macro=defn
234 Define the preprocessor macro
235 .Ar macro
236 and set its expanded value to
237 .Ar defn .
238 .It Fl U Ns Ar macro
239 Undefine the preprocessor macro
240 .Ar macro .
241 .It Fl f Ar option
242 Set a frontend or optimizer option.
243 Use
244 .Fl fhelp
245 to get a list of supported optimizer options.
246 .It Fl finput-charset= Ns Ar encoding
247 Select the encoding of the input.
248 Supported value are
249 .Cm ISO_8859-1:1987
250 (aliases
251 .Cm CP819 ,
252 .Cm IBM819 ,
253 .Cm ISO-8859-1 ,
254 .Cm ISO8859-1 ,
255 .Cm ISO_8859-1 ,
256 .Cm csISOLatin1 ,
257 .Cm iso-ir-100 ,
258 .Cm l1
259 and
260 .Cm latin1 Ns
261 ),
262 .Cm ISO-8859-15
263 (aliases
264 .Cm ISO8859-15 ,
265 .Cm ISO_8859-15
266 and
267 .Cm Latin-9 Ns
268 ) and
269 .Cm UTF-8
270 (default).
271 Case is ignored.
272 .It Fl fsigned-char
273 Define
274 .Sq char
275 to have the same range, representation and behaviour as
276 .Sq signed char .
277 .It Fl funsigned-char
278 Define
279 .Sq char
280 to have the same range, representation and behaviour as
281 .Sq unsigned char .
282 .It Fl b Ar option
283 Set a backend option.
284 Use
285 .Fl bhelp
286 to get a list of supported options.
287 .It Fl l Ar library
288 Link with the specified library.
289 .It Fl o Ar outfile
290 Specify the output filename.
291 This is only valid when using a single input filename.
292 .Fl
293 as filename uses stdout for output.
294 .It Fl x Ar language
295 Overwrite the language auto-detection for the following filenames by the
296 specified
297 .Ar language .
298 Supported values are:
299 .Bl -tag -compact -width "assembler-with-cpp"
300 .It Cm assembler
301 Assembler file
302 .It Cm assembler-with-cpp
303 Assembler file, which needs to be preprocessed
304 .It Cm c
305 .It Cm c-header
306 C file
307 .It Cm c++
308 .It Cm c++-header
309 C++ file
310 .It Cm none
311 Revert to auto-detection
312 .El
313 .It Fl Wl, Ns Ar option
314 Pass
315 .Ar option
316 to the linker.
317 .It Fl Wp, Ns Ar option
318 Pass
319 .Ar option
320 to the preprocessor.
321 .El
322 .Sh SEE ALSO
323 .Xr gcc 1 ,
324 http://www.libfirm.org/
325 .Sh BUGS
326 Probably many - if you hit one, please report it.
327 .Pp
328 .Nm
329 needs to support more switches for better GCC compatibility.
330 .Pp
331 This manual page is incomplete.
332 .Sh AUTHORS
333 .An -nosplit
334 .Nm
335 was written by
336 .An Matthias Braun
337 .Aq matze@braunis.de ,
338 .An Christoph Mallon
339 .Aq christoph.mallon@gmx.de
340 and
341 .An Michael Beck .