1 | clang - the Clang C, C++, and Objective-C compiler |
2 | ================================================== |
3 | |
4 | SYNOPSIS |
5 | -------- |
6 | |
7 | :program:`clang` [*options*] *filename ...* |
8 | |
9 | DESCRIPTION |
10 | ----------- |
11 | |
12 | :program:`clang` is a C, C++, and Objective-C compiler which encompasses |
13 | preprocessing, parsing, optimization, code generation, assembly, and linking. |
14 | Depending on which high-level mode setting is passed, Clang will stop before |
15 | doing a full link. While Clang is highly integrated, it is important to |
16 | understand the stages of compilation, to understand how to invoke it. These |
17 | stages are: |
18 | |
19 | Driver |
20 | The clang executable is actually a small driver which controls the overall |
21 | execution of other tools such as the compiler, assembler and linker. |
22 | Typically you do not need to interact with the driver, but you |
23 | transparently use it to run the other tools. |
24 | |
25 | Preprocessing |
26 | This stage handles tokenization of the input source file, macro expansion, |
27 | #include expansion and handling of other preprocessor directives. The |
28 | output of this stage is typically called a ".i" (for C), ".ii" (for C++), |
29 | ".mi" (for Objective-C), or ".mii" (for Objective-C++) file. |
30 | |
31 | Parsing and Semantic Analysis |
32 | This stage parses the input file, translating preprocessor tokens into a |
33 | parse tree. Once in the form of a parse tree, it applies semantic |
34 | analysis to compute types for expressions as well and determine whether |
35 | the code is well formed. This stage is responsible for generating most of |
36 | the compiler warnings as well as parse errors. The output of this stage is |
37 | an "Abstract Syntax Tree" (AST). |
38 | |
39 | Code Generation and Optimization |
40 | This stage translates an AST into low-level intermediate code (known as |
41 | "LLVM IR") and ultimately to machine code. This phase is responsible for |
42 | optimizing the generated code and handling target-specific code generation. |
43 | The output of this stage is typically called a ".s" file or "assembly" file. |
44 | |
45 | Clang also supports the use of an integrated assembler, in which the code |
46 | generator produces object files directly. This avoids the overhead of |
47 | generating the ".s" file and of calling the target assembler. |
48 | |
49 | Assembler |
50 | This stage runs the target assembler to translate the output of the |
51 | compiler into a target object file. The output of this stage is typically |
52 | called a ".o" file or "object" file. |
53 | |
54 | Linker |
55 | This stage runs the target linker to merge multiple object files into an |
56 | executable or dynamic library. The output of this stage is typically called |
57 | an "a.out", ".dylib" or ".so" file. |
58 | |
59 | :program:`Clang Static Analyzer` |
60 | |
61 | The Clang Static Analyzer is a tool that scans source code to try to find bugs |
62 | through code analysis. This tool uses many parts of Clang and is built into |
63 | the same driver. Please see <https://clang-analyzer.llvm.org> for more details |
64 | on how to use the static analyzer. |
65 | |
66 | OPTIONS |
67 | ------- |
68 | |
69 | Stage Selection Options |
70 | ~~~~~~~~~~~~~~~~~~~~~~~ |
71 | |
72 | .. option:: -E |
73 | |
74 | Run the preprocessor stage. |
75 | |
76 | .. option:: -fsyntax-only |
77 | |
78 | Run the preprocessor, parser and type checking stages. |
79 | |
80 | .. option:: -S |
81 | |
82 | Run the previous stages as well as LLVM generation and optimization stages |
83 | and target-specific code generation, producing an assembly file. |
84 | |
85 | .. option:: -c |
86 | |
87 | Run all of the above, plus the assembler, generating a target ".o" object file. |
88 | |
89 | .. option:: no stage selection option |
90 | |
91 | If no stage selection option is specified, all stages above are run, and the |
92 | linker is run to combine the results into an executable or shared library. |
93 | |
94 | Language Selection and Mode Options |
95 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
96 | |
97 | .. option:: -x <language> |
98 | |
99 | Treat subsequent input files as having type language. |
100 | |
101 | .. option:: -std=<standard> |
102 | |
103 | Specify the language standard to compile for. |
104 | |
105 | Supported values for the C language are: |
106 | |
107 | | ``c89`` |
108 | | ``c90`` |
109 | | ``iso9899:1990`` |
110 | |
111 | ISO C 1990 |
112 | |
113 | | ``iso9899:199409`` |
114 | |
115 | ISO C 1990 with amendment 1 |
116 | |
117 | | ``gnu89`` |
118 | | ``gnu90`` |
119 | |
120 | ISO C 1990 with GNU extensions |
121 | |
122 | | ``c99`` |
123 | | ``iso9899:1999`` |
124 | |
125 | ISO C 1999 |
126 | |
127 | | ``gnu99`` |
128 | |
129 | ISO C 1999 with GNU extensions |
130 | |
131 | | ``c11`` |
132 | | ``iso9899:2011`` |
133 | |
134 | ISO C 2011 |
135 | |
136 | | ``gnu11`` |
137 | |
138 | ISO C 2011 with GNU extensions |
139 | |
140 | | ``c17`` |
141 | | ``iso9899:2017`` |
142 | |
143 | ISO C 2017 |
144 | |
145 | | ``gnu17`` |
146 | |
147 | ISO C 2017 with GNU extensions |
148 | |
149 | The default C language standard is ``gnu11``, except on PS4, where it is |
150 | ``gnu99``. |
151 | |
152 | Supported values for the C++ language are: |
153 | |
154 | | ``c++98`` |
155 | | ``c++03`` |
156 | |
157 | ISO C++ 1998 with amendments |
158 | |
159 | | ``gnu++98`` |
160 | | ``gnu++03`` |
161 | |
162 | ISO C++ 1998 with amendments and GNU extensions |
163 | |
164 | | ``c++11`` |
165 | |
166 | ISO C++ 2011 with amendments |
167 | |
168 | | ``gnu++11`` |
169 | |
170 | ISO C++ 2011 with amendments and GNU extensions |
171 | |
172 | | ``c++14`` |
173 | |
174 | ISO C++ 2014 with amendments |
175 | |
176 | | ``gnu++14`` |
177 | |
178 | ISO C++ 2014 with amendments and GNU extensions |
179 | |
180 | | ``c++17`` |
181 | |
182 | ISO C++ 2017 with amendments |
183 | |
184 | | ``gnu++17`` |
185 | |
186 | ISO C++ 2017 with amendments and GNU extensions |
187 | |
188 | | ``c++2a`` |
189 | |
190 | Working draft for ISO C++ 2020 |
191 | |
192 | | ``gnu++2a`` |
193 | |
194 | Working draft for ISO C++ 2020 with GNU extensions |
195 | |
196 | The default C++ language standard is ``gnu++14``. |
197 | |
198 | Supported values for the OpenCL language are: |
199 | |
200 | | ``cl1.0`` |
201 | |
202 | OpenCL 1.0 |
203 | |
204 | | ``cl1.1`` |
205 | |
206 | OpenCL 1.1 |
207 | |
208 | | ``cl1.2`` |
209 | |
210 | OpenCL 1.2 |
211 | |
212 | | ``cl2.0`` |
213 | |
214 | OpenCL 2.0 |
215 | |
216 | The default OpenCL language standard is ``cl1.0``. |
217 | |
218 | Supported values for the CUDA language are: |
219 | |
220 | | ``cuda`` |
221 | |
222 | NVIDIA CUDA(tm) |
223 | |
224 | .. option:: -stdlib=<library> |
225 | |
226 | Specify the C++ standard library to use; supported options are libstdc++ and |
227 | libc++. If not specified, platform default will be used. |
228 | |
229 | .. option:: -rtlib=<library> |
230 | |
231 | Specify the compiler runtime library to use; supported options are libgcc and |
232 | compiler-rt. If not specified, platform default will be used. |
233 | |
234 | .. option:: -ansi |
235 | |
236 | Same as -std=c89. |
237 | |
238 | .. option:: -ObjC, -ObjC++ |
239 | |
240 | Treat source input files as Objective-C and Object-C++ inputs respectively. |
241 | |
242 | .. option:: -trigraphs |
243 | |
244 | Enable trigraphs. |
245 | |
246 | .. option:: -ffreestanding |
247 | |
248 | Indicate that the file should be compiled for a freestanding, not a hosted, |
249 | environment. |
250 | |
251 | .. option:: -fno-builtin |
252 | |
253 | Disable special handling and optimizations of builtin functions like |
254 | :c:func:`strlen` and :c:func:`malloc`. |
255 | |
256 | .. option:: -fmath-errno |
257 | |
258 | Indicate that math functions should be treated as updating :c:data:`errno`. |
259 | |
260 | .. option:: -fpascal-strings |
261 | |
262 | Enable support for Pascal-style strings with "\\pfoo". |
263 | |
264 | .. option:: -fms-extensions |
265 | |
266 | Enable support for Microsoft extensions. |
267 | |
268 | .. option:: -fmsc-version= |
269 | |
270 | Set _MSC_VER. Defaults to 1300 on Windows. Not set otherwise. |
271 | |
272 | .. option:: -fborland-extensions |
273 | |
274 | Enable support for Borland extensions. |
275 | |
276 | .. option:: -fwritable-strings |
277 | |
278 | Make all string literals default to writable. This disables uniquing of |
279 | strings and other optimizations. |
280 | |
281 | .. option:: -flax-vector-conversions |
282 | |
283 | Allow loose type checking rules for implicit vector conversions. |
284 | |
285 | .. option:: -fblocks |
286 | |
287 | Enable the "Blocks" language feature. |
288 | |
289 | .. option:: -fobjc-abi-version=version |
290 | |
291 | Select the Objective-C ABI version to use. Available versions are 1 (legacy |
292 | "fragile" ABI), 2 (non-fragile ABI 1), and 3 (non-fragile ABI 2). |
293 | |
294 | .. option:: -fobjc-nonfragile-abi-version=<version> |
295 | |
296 | Select the Objective-C non-fragile ABI version to use by default. This will |
297 | only be used as the Objective-C ABI when the non-fragile ABI is enabled |
298 | (either via :option:`-fobjc-nonfragile-abi`, or because it is the platform |
299 | default). |
300 | |
301 | .. option:: -fobjc-nonfragile-abi, -fno-objc-nonfragile-abi |
302 | |
303 | Enable use of the Objective-C non-fragile ABI. On platforms for which this is |
304 | the default ABI, it can be disabled with :option:`-fno-objc-nonfragile-abi`. |
305 | |
306 | Target Selection Options |
307 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
308 | |
309 | Clang fully supports cross compilation as an inherent part of its design. |
310 | Depending on how your version of Clang is configured, it may have support for a |
311 | number of cross compilers, or may only support a native target. |
312 | |
313 | .. option:: -arch <architecture> |
314 | |
315 | Specify the architecture to build for. |
316 | |
317 | .. option:: -mmacosx-version-min=<version> |
318 | |
319 | When building for Mac OS X, specify the minimum version supported by your |
320 | application. |
321 | |
322 | .. option:: -miphoneos-version-min |
323 | |
324 | When building for iPhone OS, specify the minimum version supported by your |
325 | application. |
326 | |
327 | .. option:: -march=<cpu> |
328 | |
329 | Specify that Clang should generate code for a specific processor family |
330 | member and later. For example, if you specify -march=i486, the compiler is |
331 | allowed to generate instructions that are valid on i486 and later processors, |
332 | but which may not exist on earlier ones. |
333 | |
334 | |
335 | Code Generation Options |
336 | ~~~~~~~~~~~~~~~~~~~~~~~ |
337 | |
338 | .. option:: -O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -Og, -O, -O4 |
339 | |
340 | Specify which optimization level to use: |
341 | |
342 | :option:`-O0` Means "no optimization": this level compiles the fastest and |
343 | generates the most debuggable code. |
344 | |
345 | :option:`-O1` Somewhere between :option:`-O0` and :option:`-O2`. |
346 | |
347 | :option:`-O2` Moderate level of optimization which enables most |
348 | optimizations. |
349 | |
350 | :option:`-O3` Like :option:`-O2`, except that it enables optimizations that |
351 | take longer to perform or that may generate larger code (in an attempt to |
352 | make the program run faster). |
353 | |
354 | :option:`-Ofast` Enables all the optimizations from :option:`-O3` along |
355 | with other aggressive optimizations that may violate strict compliance with |
356 | language standards. |
357 | |
358 | :option:`-Os` Like :option:`-O2` with extra optimizations to reduce code |
359 | size. |
360 | |
361 | :option:`-Oz` Like :option:`-Os` (and thus :option:`-O2`), but reduces code |
362 | size further. |
363 | |
364 | :option:`-Og` Like :option:`-O1`. In future versions, this option might |
365 | disable different optimizations in order to improve debuggability. |
366 | |
367 | :option:`-O` Equivalent to :option:`-O2`. |
368 | |
369 | :option:`-O4` and higher |
370 | |
371 | Currently equivalent to :option:`-O3` |
372 | |
373 | .. option:: -g, -gline-tables-only, -gmodules |
374 | |
375 | Control debug information output. Note that Clang debug information works |
376 | best at :option:`-O0`. When more than one option starting with `-g` is |
377 | specified, the last one wins: |
378 | |
379 | :option:`-g` Generate debug information. |
380 | |
381 | :option:`-gline-tables-only` Generate only line table debug information. This |
382 | allows for symbolicated backtraces with inlining information, but does not |
383 | include any information about variables, their locations or types. |
384 | |
385 | :option:`-gmodules` Generate debug information that contains external |
386 | references to types defined in Clang modules or precompiled headers instead |
387 | of emitting redundant debug type information into every object file. This |
388 | option transparently switches the Clang module format to object file |
389 | containers that hold the Clang module together with the debug information. |
390 | When compiling a program that uses Clang modules or precompiled headers, |
391 | this option produces complete debug information with faster compile |
392 | times and much smaller object files. |
393 | |
394 | This option should not be used when building static libraries for |
395 | distribution to other machines because the debug info will contain |
396 | references to the module cache on the machine the object files in the |
397 | library were built on. |
398 | |
399 | .. option:: -fstandalone-debug -fno-standalone-debug |
400 | |
401 | Clang supports a number of optimizations to reduce the size of debug |
402 | information in the binary. They work based on the assumption that the |
403 | debug type information can be spread out over multiple compilation units. |
404 | For instance, Clang will not emit type definitions for types that are not |
405 | needed by a module and could be replaced with a forward declaration. |
406 | Further, Clang will only emit type info for a dynamic C++ class in the |
407 | module that contains the vtable for the class. |
408 | |
409 | The :option:`-fstandalone-debug` option turns off these optimizations. |
410 | This is useful when working with 3rd-party libraries that don't come with |
411 | debug information. This is the default on Darwin. Note that Clang will |
412 | never emit type information for types that are not referenced at all by the |
413 | program. |
414 | |
415 | .. option:: -fexceptions |
416 | |
417 | Enable generation of unwind information. This allows exceptions to be thrown |
418 | through Clang compiled stack frames. This is on by default in x86-64. |
419 | |
420 | .. option:: -ftrapv |
421 | |
422 | Generate code to catch integer overflow errors. Signed integer overflow is |
423 | undefined in C. With this flag, extra code is generated to detect this and |
424 | abort when it happens. |
425 | |
426 | .. option:: -fvisibility |
427 | |
428 | This flag sets the default visibility level. |
429 | |
430 | .. option:: -fcommon, -fno-common |
431 | |
432 | This flag specifies that variables without initializers get common linkage. |
433 | It can be disabled with :option:`-fno-common`. |
434 | |
435 | .. option:: -ftls-model=<model> |
436 | |
437 | Set the default thread-local storage (TLS) model to use for thread-local |
438 | variables. Valid values are: "global-dynamic", "local-dynamic", |
439 | "initial-exec" and "local-exec". The default is "global-dynamic". The default |
440 | model can be overridden with the tls_model attribute. The compiler will try |
441 | to choose a more efficient model if possible. |
442 | |
443 | .. option:: -flto, -flto=full, -flto=thin, -emit-llvm |
444 | |
445 | Generate output files in LLVM formats, suitable for link time optimization. |
446 | When used with :option:`-S` this generates LLVM intermediate language |
447 | assembly files, otherwise this generates LLVM bitcode format object files |
448 | (which may be passed to the linker depending on the stage selection options). |
449 | |
450 | The default for :option:`-flto` is "full", in which the |
451 | LLVM bitcode is suitable for monolithic Link Time Optimization (LTO), where |
452 | the linker merges all such modules into a single combined module for |
453 | optimization. With "thin", :doc:`ThinLTO <../ThinLTO>` |
454 | compilation is invoked instead. |
455 | |
456 | Driver Options |
457 | ~~~~~~~~~~~~~~ |
458 | |
459 | .. option:: -### |
460 | |
461 | Print (but do not run) the commands to run for this compilation. |
462 | |
463 | .. option:: --help |
464 | |
465 | Display available options. |
466 | |
467 | .. option:: -Qunused-arguments |
468 | |
469 | Do not emit any warnings for unused driver arguments. |
470 | |
471 | .. option:: -Wa,<args> |
472 | |
473 | Pass the comma separated arguments in args to the assembler. |
474 | |
475 | .. option:: -Wl,<args> |
476 | |
477 | Pass the comma separated arguments in args to the linker. |
478 | |
479 | .. option:: -Wp,<args> |
480 | |
481 | Pass the comma separated arguments in args to the preprocessor. |
482 | |
483 | .. option:: -Xanalyzer <arg> |
484 | |
485 | Pass arg to the static analyzer. |
486 | |
487 | .. option:: -Xassembler <arg> |
488 | |
489 | Pass arg to the assembler. |
490 | |
491 | .. option:: -Xlinker <arg> |
492 | |
493 | Pass arg to the linker. |
494 | |
495 | .. option:: -Xpreprocessor <arg> |
496 | |
497 | Pass arg to the preprocessor. |
498 | |
499 | .. option:: -o <file> |
500 | |
501 | Write output to file. |
502 | |
503 | .. option:: -print-file-name=<file> |
504 | |
505 | Print the full library path of file. |
506 | |
507 | .. option:: -print-libgcc-file-name |
508 | |
509 | Print the library path for the currently used compiler runtime library |
510 | ("libgcc.a" or "libclang_rt.builtins.*.a"). |
511 | |
512 | .. option:: -print-prog-name=<name> |
513 | |
514 | Print the full program path of name. |
515 | |
516 | .. option:: -print-search-dirs |
517 | |
518 | Print the paths used for finding libraries and programs. |
519 | |
520 | .. option:: -save-temps |
521 | |
522 | Save intermediate compilation results. |
523 | |
524 | .. option:: -save-stats, -save-stats=cwd, -save-stats=obj |
525 | |
526 | Save internal code generation (LLVM) statistics to a file in the current |
527 | directory (:option:`-save-stats`/"-save-stats=cwd") or the directory |
528 | of the output file ("-save-state=obj"). |
529 | |
530 | .. option:: -integrated-as, -no-integrated-as |
531 | |
532 | Used to enable and disable, respectively, the use of the integrated |
533 | assembler. Whether the integrated assembler is on by default is target |
534 | dependent. |
535 | |
536 | .. option:: -time |
537 | |
538 | Time individual commands. |
539 | |
540 | .. option:: -ftime-report |
541 | |
542 | Print timing summary of each stage of compilation. |
543 | |
544 | .. option:: -v |
545 | |
546 | Show commands to run and use verbose output. |
547 | |
548 | |
549 | Diagnostics Options |
550 | ~~~~~~~~~~~~~~~~~~~ |
551 | |
552 | .. option:: -fshow-column, -fshow-source-location, -fcaret-diagnostics, -fdiagnostics-fixit-info, -fdiagnostics-parseable-fixits, -fdiagnostics-print-source-range-info, -fprint-source-range-info, -fdiagnostics-show-option, -fmessage-length |
553 | |
554 | These options control how Clang prints out information about diagnostics |
555 | (errors and warnings). Please see the Clang User's Manual for more information. |
556 | |
557 | Preprocessor Options |
558 | ~~~~~~~~~~~~~~~~~~~~ |
559 | |
560 | .. option:: -D<macroname>=<value> |
561 | |
562 | Adds an implicit #define into the predefines buffer which is read before the |
563 | source file is preprocessed. |
564 | |
565 | .. option:: -U<macroname> |
566 | |
567 | Adds an implicit #undef into the predefines buffer which is read before the |
568 | source file is preprocessed. |
569 | |
570 | .. option:: -include <filename> |
571 | |
572 | Adds an implicit #include into the predefines buffer which is read before the |
573 | source file is preprocessed. |
574 | |
575 | .. option:: -I<directory> |
576 | |
577 | Add the specified directory to the search path for include files. |
578 | |
579 | .. option:: -F<directory> |
580 | |
581 | Add the specified directory to the search path for framework include files. |
582 | |
583 | .. option:: -nostdinc |
584 | |
585 | Do not search the standard system directories or compiler builtin directories |
586 | for include files. |
587 | |
588 | .. option:: -nostdlibinc |
589 | |
590 | Do not search the standard system directories for include files, but do |
591 | search compiler builtin include directories. |
592 | |
593 | .. option:: -nobuiltininc |
594 | |
595 | Do not search clang's builtin directory for include files. |
596 | |
597 | |
598 | ENVIRONMENT |
599 | ----------- |
600 | |
601 | .. envvar:: TMPDIR, TEMP, TMP |
602 | |
603 | These environment variables are checked, in order, for the location to write |
604 | temporary files used during the compilation process. |
605 | |
606 | .. envvar:: CPATH |
607 | |
608 | If this environment variable is present, it is treated as a delimited list of |
609 | paths to be added to the default system include path list. The delimiter is |
610 | the platform dependent delimiter, as used in the PATH environment variable. |
611 | |
612 | Empty components in the environment variable are ignored. |
613 | |
614 | .. envvar:: C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH |
615 | |
616 | These environment variables specify additional paths, as for :envvar:`CPATH`, which are |
617 | only used when processing the appropriate language. |
618 | |
619 | .. envvar:: MACOSX_DEPLOYMENT_TARGET |
620 | |
621 | If :option:`-mmacosx-version-min` is unspecified, the default deployment |
622 | target is read from this environment variable. This option only affects |
623 | Darwin targets. |
624 | |
625 | BUGS |
626 | ---- |
627 | |
628 | To report bugs, please visit <https://bugs.llvm.org/>. Most bug reports should |
629 | include preprocessed source files (use the :option:`-E` option) and the full |
630 | output of the compiler, along with information to reproduce. |
631 | |
632 | SEE ALSO |
633 | -------- |
634 | |
635 | :manpage:`as(1)`, :manpage:`ld(1)` |
636 | |