blob: 1c6e9673cfc8bb4f67e08a0c8ef7806ededee026 [file] [log] [blame]
Sean Silva93ca0212012-12-13 01:10:46 +00001============================
2Clang Compiler User's Manual
3============================
4
5.. contents::
6 :local:
7
8Introduction
9============
10
11The Clang Compiler is an open-source compiler for the C family of
12programming languages, aiming to be the best in class implementation of
13these languages. Clang builds on the LLVM optimizer and code generator,
14allowing it to provide high-quality optimization and code generation
15support for many targets. For more general information, please see the
16`Clang Web Site <http://clang.llvm.org>`_ or the `LLVM Web
17Site <http://llvm.org>`_.
18
19This document describes important notes about using Clang as a compiler
20for an end-user, documenting the supported features, command line
21options, etc. If you are interested in using Clang to build a tool that
Dmitri Gribenko5cc05802012-12-15 20:41:17 +000022processes code, please see :doc:`InternalsManual`. If you are interested in the
23`Clang Static Analyzer <http://clang-analyzer.llvm.org>`_, please see its web
Sean Silva93ca0212012-12-13 01:10:46 +000024page.
25
26Clang is designed to support the C family of programming languages,
27which includes :ref:`C <c>`, :ref:`Objective-C <objc>`, :ref:`C++ <cxx>`, and
28:ref:`Objective-C++ <objcxx>` as well as many dialects of those. For
29language-specific information, please see the corresponding language
30specific section:
31
32- :ref:`C Language <c>`: K&R C, ANSI C89, ISO C90, ISO C94 (C89+AMD1), ISO
33 C99 (+TC1, TC2, TC3).
34- :ref:`Objective-C Language <objc>`: ObjC 1, ObjC 2, ObjC 2.1, plus
35 variants depending on base language.
36- :ref:`C++ Language <cxx>`
37- :ref:`Objective C++ Language <objcxx>`
38
39In addition to these base languages and their dialects, Clang supports a
40broad variety of language extensions, which are documented in the
41corresponding language section. These extensions are provided to be
42compatible with the GCC, Microsoft, and other popular compilers as well
43as to improve functionality through Clang-specific features. The Clang
44driver and language features are intentionally designed to be as
45compatible with the GNU GCC compiler as reasonably possible, easing
46migration from GCC to Clang. In most cases, code "just works".
47
48In addition to language specific features, Clang has a variety of
49features that depend on what CPU architecture or operating system is
50being compiled for. Please see the :ref:`Target-Specific Features and
51Limitations <target_features>` section for more details.
52
53The rest of the introduction introduces some basic :ref:`compiler
54terminology <terminology>` that is used throughout this manual and
55contains a basic :ref:`introduction to using Clang <basicusage>` as a
56command line compiler.
57
58.. _terminology:
59
60Terminology
61-----------
62
63Front end, parser, backend, preprocessor, undefined behavior,
64diagnostic, optimizer
65
66.. _basicusage:
67
68Basic Usage
69-----------
70
71Intro to how to use a C compiler for newbies.
72
73compile + link compile then link debug info enabling optimizations
74picking a language to use, defaults to C99 by default. Autosenses based
75on extension. using a makefile
76
77Command Line Options
78====================
79
80This section is generally an index into other sections. It does not go
81into depth on the ones that are covered by other sections. However, the
82first part introduces the language selection and other high level
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000083options like :option:`-c`, :option:`-g`, etc.
Sean Silva93ca0212012-12-13 01:10:46 +000084
85Options to Control Error and Warning Messages
86---------------------------------------------
87
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000088.. option:: -Werror
Sean Silva93ca0212012-12-13 01:10:46 +000089
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000090 Turn warnings into errors.
Sean Silva93ca0212012-12-13 01:10:46 +000091
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000092.. This is in plain monospaced font because it generates the same label as
93.. -Werror, and Sphinx complains.
Sean Silva93ca0212012-12-13 01:10:46 +000094
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000095``-Werror=foo``
Sean Silva93ca0212012-12-13 01:10:46 +000096
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000097 Turn warning "foo" into an error.
Sean Silva93ca0212012-12-13 01:10:46 +000098
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +000099.. option:: -Wno-error=foo
Sean Silva93ca0212012-12-13 01:10:46 +0000100
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000101 Turn warning "foo" into an warning even if :option:`-Werror` is specified.
Sean Silva93ca0212012-12-13 01:10:46 +0000102
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000103.. option:: -Wfoo
Sean Silva93ca0212012-12-13 01:10:46 +0000104
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000105 Enable warning "foo".
Sean Silva93ca0212012-12-13 01:10:46 +0000106
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000107.. option:: -Wno-foo
Sean Silva93ca0212012-12-13 01:10:46 +0000108
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000109 Disable warning "foo".
Sean Silva93ca0212012-12-13 01:10:46 +0000110
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000111.. option:: -w
112
113 Disable all warnings.
114
115.. option:: -Weverything
116
117 :ref:`Enable all warnings. <diagnostics_enable_everything>`
118
119.. option:: -pedantic
120
121 Warn on language extensions.
122
123.. option:: -pedantic-errors
124
125 Error on language extensions.
126
127.. option:: -Wsystem-headers
128
129 Enable warnings from system headers.
130
131.. option:: -ferror-limit=123
132
133 Stop emitting diagnostics after 123 errors have been produced. The default is
134 20, and the error limit can be disabled with :option:`-ferror-limit=0`.
135
136.. option:: -ftemplate-backtrace-limit=123
137
138 Only emit up to 123 template instantiation notes within the template
139 instantiation backtrace for a single warning or error. The default is 10, and
140 the limit can be disabled with :option:`-ftemplate-backtrace-limit=0`.
Sean Silva93ca0212012-12-13 01:10:46 +0000141
142.. _cl_diag_formatting:
143
144Formatting of Diagnostics
145^^^^^^^^^^^^^^^^^^^^^^^^^
146
147Clang aims to produce beautiful diagnostics by default, particularly for
148new users that first come to Clang. However, different people have
149different preferences, and sometimes Clang is driven by another program
150that wants to parse simple and consistent output, not a person. For
151these cases, Clang provides a wide range of options to control the exact
152output format of the diagnostics that it generates.
153
154.. _opt_fshow-column:
155
156**-f[no-]show-column**
157 Print column number in diagnostic.
158
159 This option, which defaults to on, controls whether or not Clang
160 prints the column number of a diagnostic. For example, when this is
161 enabled, Clang will print something like:
162
163 ::
164
165 test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
166 #endif bad
167 ^
168 //
169
170 When this is disabled, Clang will print "test.c:28: warning..." with
171 no column number.
172
173 The printed column numbers count bytes from the beginning of the
174 line; take care if your source contains multibyte characters.
175
176.. _opt_fshow-source-location:
177
178**-f[no-]show-source-location**
179 Print source file/line/column information in diagnostic.
180
181 This option, which defaults to on, controls whether or not Clang
182 prints the filename, line number and column number of a diagnostic.
183 For example, when this is enabled, Clang will print something like:
184
185 ::
186
187 test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
188 #endif bad
189 ^
190 //
191
192 When this is disabled, Clang will not print the "test.c:28:8: "
193 part.
194
195.. _opt_fcaret-diagnostics:
196
197**-f[no-]caret-diagnostics**
198 Print source line and ranges from source code in diagnostic.
199 This option, which defaults to on, controls whether or not Clang
200 prints the source line, source ranges, and caret when emitting a
201 diagnostic. For example, when this is enabled, Clang will print
202 something like:
203
204 ::
205
206 test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
207 #endif bad
208 ^
209 //
210
211**-f[no-]color-diagnostics**
212 This option, which defaults to on when a color-capable terminal is
213 detected, controls whether or not Clang prints diagnostics in color.
214
215 When this option is enabled, Clang will use colors to highlight
216 specific parts of the diagnostic, e.g.,
217
218 .. nasty hack to not lose our dignity
219
220 .. raw:: html
221
222 <pre>
223 <b><span style="color:black">test.c:28:8: <span style="color:magenta">warning</span>: extra tokens at end of #endif directive [-Wextra-tokens]</span></b>
224 #endif bad
225 <span style="color:green">^</span>
226 <span style="color:green">//</span>
227 </pre>
228
229 When this is disabled, Clang will just print:
230
231 ::
232
233 test.c:2:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
234 #endif bad
235 ^
236 //
237
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000238.. option:: -fdiagnostics-format=clang/msvc/vi
239
Sean Silva93ca0212012-12-13 01:10:46 +0000240 Changes diagnostic output format to better match IDEs and command line tools.
241
242 This option controls the output format of the filename, line number,
243 and column printed in diagnostic messages. The options, and their
244 affect on formatting a simple conversion diagnostic, follow:
245
246 **clang** (default)
247 ::
248
249 t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
250
251 **msvc**
252 ::
253
254 t.c(3,11) : warning: conversion specifies type 'char *' but the argument has type 'int'
255
256 **vi**
257 ::
258
259 t.c +3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
260
261**-f[no-]diagnostics-show-name**
262 Enable the display of the diagnostic name.
263 This option, which defaults to off, controls whether or not Clang
264 prints the associated name.
265
266.. _opt_fdiagnostics-show-option:
267
268**-f[no-]diagnostics-show-option**
269 Enable ``[-Woption]`` information in diagnostic line.
270
271 This option, which defaults to on, controls whether or not Clang
272 prints the associated :ref:`warning group <cl_diag_warning_groups>`
273 option name when outputting a warning diagnostic. For example, in
274 this output:
275
276 ::
277
278 test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
279 #endif bad
280 ^
281 //
282
283 Passing **-fno-diagnostics-show-option** will prevent Clang from
284 printing the [:ref:`-Wextra-tokens <opt_Wextra-tokens>`] information in
285 the diagnostic. This information tells you the flag needed to enable
286 or disable the diagnostic, either from the command line or through
287 :ref:`#pragma GCC diagnostic <pragma_GCC_diagnostic>`.
288
289.. _opt_fdiagnostics-show-category:
290
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000291.. option:: -fdiagnostics-show-category=none/id/name
292
Sean Silva93ca0212012-12-13 01:10:46 +0000293 Enable printing category information in diagnostic line.
294
295 This option, which defaults to "none", controls whether or not Clang
296 prints the category associated with a diagnostic when emitting it.
297 Each diagnostic may or many not have an associated category, if it
298 has one, it is listed in the diagnostic categorization field of the
299 diagnostic line (in the []'s).
300
301 For example, a format string warning will produce these three
302 renditions based on the setting of this option:
303
304 ::
305
306 t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
307 t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
308 t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]
309
310 This category can be used by clients that want to group diagnostics
311 by category, so it should be a high level category. We want dozens
312 of these, not hundreds or thousands of them.
313
314.. _opt_fdiagnostics-fixit-info:
315
316**-f[no-]diagnostics-fixit-info**
317 Enable "FixIt" information in the diagnostics output.
318
319 This option, which defaults to on, controls whether or not Clang
320 prints the information on how to fix a specific diagnostic
321 underneath it when it knows. For example, in this output:
322
323 ::
324
325 test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
326 #endif bad
327 ^
328 //
329
330 Passing **-fno-diagnostics-fixit-info** will prevent Clang from
331 printing the "//" line at the end of the message. This information
332 is useful for users who may not understand what is wrong, but can be
333 confusing for machine parsing.
334
335.. _opt_fdiagnostics-print-source-range-info:
336
337**-f[no-]diagnostics-print-source-range-info**
338 Print machine parsable information about source ranges.
339 This option, which defaults to off, controls whether or not Clang
340 prints information about source ranges in a machine parsable format
341 after the file/line/column number information. The information is a
342 simple sequence of brace enclosed ranges, where each range lists the
343 start and end line/column locations. For example, in this output:
344
345 ::
346
347 exprs.c:47:15:{47:8-47:14}{47:17-47:24}: error: invalid operands to binary expression ('int *' and '_Complex float')
348 P = (P-42) + Gamma*4;
349 ~~~~~~ ^ ~~~~~~~
350
351 The {}'s are generated by -fdiagnostics-print-source-range-info.
352
353 The printed column numbers count bytes from the beginning of the
354 line; take care if your source contains multibyte characters.
355
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000356.. option:: -fdiagnostics-parseable-fixits
357
Sean Silva93ca0212012-12-13 01:10:46 +0000358 Print Fix-Its in a machine parseable form.
359
360 This option makes Clang print available Fix-Its in a machine
361 parseable format at the end of diagnostics. The following example
362 illustrates the format:
363
364 ::
365
366 fix-it:"t.cpp":{7:25-7:29}:"Gamma"
367
368 The range printed is a half-open range, so in this example the
369 characters at column 25 up to but not including column 29 on line 7
370 in t.cpp should be replaced with the string "Gamma". Either the
371 range or the replacement string may be empty (representing strict
372 insertions and strict erasures, respectively). Both the file name
373 and the insertion string escape backslash (as "\\\\"), tabs (as
374 "\\t"), newlines (as "\\n"), double quotes(as "\\"") and
375 non-printable characters (as octal "\\xxx").
376
377 The printed column numbers count bytes from the beginning of the
378 line; take care if your source contains multibyte characters.
379
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000380.. option:: -fno-elide-type
381
Sean Silva93ca0212012-12-13 01:10:46 +0000382 Turns off elision in template type printing.
383
384 The default for template type printing is to elide as many template
385 arguments as possible, removing those which are the same in both
386 template types, leaving only the differences. Adding this flag will
387 print all the template arguments. If supported by the terminal,
388 highlighting will still appear on differing arguments.
389
390 Default:
391
392 ::
393
394 t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<[...], map<float, [...]>>>' to 'vector<map<[...], map<double, [...]>>>' for 1st argument;
395
396 -fno-elide-type:
397
398 ::
399
400 t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<int, map<float, int>>>' to 'vector<map<int, map<double, int>>>' for 1st argument;
401
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000402.. option:: -fdiagnostics-show-template-tree
403
Sean Silva93ca0212012-12-13 01:10:46 +0000404 Template type diffing prints a text tree.
405
406 For diffing large templated types, this option will cause Clang to
407 display the templates as an indented text tree, one argument per
408 line, with differences marked inline. This is compatible with
409 -fno-elide-type.
410
411 Default:
412
413 ::
414
415 t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<[...], map<float, [...]>>>' to 'vector<map<[...], map<double, [...]>>>' for 1st argument;
416
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000417 With :option:`-fdiagnostics-show-template-tree`:
Sean Silva93ca0212012-12-13 01:10:46 +0000418
419 ::
420
421 t.cc:4:5: note: candidate function not viable: no known conversion for 1st argument;
422 vector<
423 map<
424 [...],
425 map<
426 [float != float],
427 [...]>>>
428
429.. _cl_diag_warning_groups:
430
431Individual Warning Groups
432^^^^^^^^^^^^^^^^^^^^^^^^^
433
434TODO: Generate this from tblgen. Define one anchor per warning group.
435
436.. _opt_wextra-tokens:
437
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000438.. option:: -Wextra-tokens
439
Sean Silva93ca0212012-12-13 01:10:46 +0000440 Warn about excess tokens at the end of a preprocessor directive.
441
442 This option, which defaults to on, enables warnings about extra
443 tokens at the end of preprocessor directives. For example:
444
445 ::
446
447 test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
448 #endif bad
449 ^
450
451 These extra tokens are not strictly conforming, and are usually best
452 handled by commenting them out.
453
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000454.. option:: -Wambiguous-member-template
455
Sean Silva93ca0212012-12-13 01:10:46 +0000456 Warn about unqualified uses of a member template whose name resolves to
457 another template at the location of the use.
458
459 This option, which defaults to on, enables a warning in the
460 following code:
461
462 ::
463
464 template<typename T> struct set{};
465 template<typename T> struct trait { typedef const T& type; };
466 struct Value {
467 template<typename T> void set(typename trait<T>::type value) {}
468 };
469 void foo() {
470 Value v;
471 v.set<double>(3.2);
472 }
473
474 C++ [basic.lookup.classref] requires this to be an error, but,
475 because it's hard to work around, Clang downgrades it to a warning
476 as an extension.
477
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000478.. option:: -Wbind-to-temporary-copy
479
Sean Silva93ca0212012-12-13 01:10:46 +0000480 Warn about an unusable copy constructor when binding a reference to a
481 temporary.
482
483 This option, which defaults to on, enables warnings about binding a
484 reference to a temporary when the temporary doesn't have a usable
485 copy constructor. For example:
486
487 ::
488
489 struct NonCopyable {
490 NonCopyable();
491 private:
492 NonCopyable(const NonCopyable&);
493 };
494 void foo(const NonCopyable&);
495 void bar() {
496 foo(NonCopyable()); // Disallowed in C++98; allowed in C++11.
497 }
498
499 ::
500
501 struct NonCopyable2 {
502 NonCopyable2();
503 NonCopyable2(NonCopyable2&);
504 };
505 void foo(const NonCopyable2&);
506 void bar() {
507 foo(NonCopyable2()); // Disallowed in C++98; allowed in C++11.
508 }
509
510 Note that if ``NonCopyable2::NonCopyable2()`` has a default argument
511 whose instantiation produces a compile error, that error will still
512 be a hard error in C++98 mode even if this warning is turned off.
513
514Options to Control Clang Crash Diagnostics
515------------------------------------------
516
517As unbelievable as it may sound, Clang does crash from time to time.
518Generally, this only occurs to those living on the `bleeding
519edge <http://llvm.org/releases/download.html#svn>`_. Clang goes to great
520lengths to assist you in filing a bug report. Specifically, Clang
521generates preprocessed source file(s) and associated run script(s) upon
522a crash. These files should be attached to a bug report to ease
523reproducibility of the failure. Below are the command line options to
524control the crash diagnostics.
525
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000526.. option:: -fno-crash-diagnostics
527
528 Disable auto-generation of preprocessed source files during a clang crash.
Sean Silva93ca0212012-12-13 01:10:46 +0000529
530The -fno-crash-diagnostics flag can be helpful for speeding the process
531of generating a delta reduced test case.
532
533Language and Target-Independent Features
534========================================
535
536Controlling Errors and Warnings
537-------------------------------
538
539Clang provides a number of ways to control which code constructs cause
540it to emit errors and warning messages, and how they are displayed to
541the console.
542
543Controlling How Clang Displays Diagnostics
544^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
545
546When Clang emits a diagnostic, it includes rich information in the
547output, and gives you fine-grain control over which information is
548printed. Clang has the ability to print this information, and these are
549the options that control it:
550
551#. A file/line/column indicator that shows exactly where the diagnostic
552 occurs in your code [:ref:`-fshow-column <opt_fshow-column>`,
553 :ref:`-fshow-source-location <opt_fshow-source-location>`].
554#. A categorization of the diagnostic as a note, warning, error, or
555 fatal error.
556#. A text string that describes what the problem is.
557#. An option that indicates how to control the diagnostic (for
558 diagnostics that support it)
559 [:ref:`-fdiagnostics-show-option <opt_fdiagnostics-show-option>`].
560#. A :ref:`high-level category <diagnostics_categories>` for the diagnostic
561 for clients that want to group diagnostics by class (for diagnostics
562 that support it)
563 [:ref:`-fdiagnostics-show-category <opt_fdiagnostics-show-category>`].
564#. The line of source code that the issue occurs on, along with a caret
565 and ranges that indicate the important locations
566 [:ref:`-fcaret-diagnostics <opt_fcaret-diagnostics>`].
567#. "FixIt" information, which is a concise explanation of how to fix the
568 problem (when Clang is certain it knows)
569 [:ref:`-fdiagnostics-fixit-info <opt_fdiagnostics-fixit-info>`].
570#. A machine-parsable representation of the ranges involved (off by
571 default)
572 [:ref:`-fdiagnostics-print-source-range-info <opt_fdiagnostics-print-source-range-info>`].
573
574For more information please see :ref:`Formatting of
575Diagnostics <cl_diag_formatting>`.
576
577Diagnostic Mappings
578^^^^^^^^^^^^^^^^^^^
579
580All diagnostics are mapped into one of these 5 classes:
581
582- Ignored
583- Note
584- Warning
585- Error
586- Fatal
587
588.. _diagnostics_categories:
589
590Diagnostic Categories
591^^^^^^^^^^^^^^^^^^^^^
592
593Though not shown by default, diagnostics may each be associated with a
594high-level category. This category is intended to make it possible to
595triage builds that produce a large number of errors or warnings in a
596grouped way.
597
598Categories are not shown by default, but they can be turned on with the
599:ref:`-fdiagnostics-show-category <opt_fdiagnostics-show-category>` option.
600When set to "``name``", the category is printed textually in the
601diagnostic output. When it is set to "``id``", a category number is
602printed. The mapping of category names to category id's can be obtained
603by running '``clang --print-diagnostic-categories``'.
604
605Controlling Diagnostics via Command Line Flags
606^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
607
608TODO: -W flags, -pedantic, etc
609
610.. _pragma_gcc_diagnostic:
611
612Controlling Diagnostics via Pragmas
613^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
614
615Clang can also control what diagnostics are enabled through the use of
616pragmas in the source code. This is useful for turning off specific
617warnings in a section of source code. Clang supports GCC's pragma for
618compatibility with existing source code, as well as several extensions.
619
620The pragma may control any warning that can be used from the command
621line. Warnings may be set to ignored, warning, error, or fatal. The
622following example code will tell Clang or GCC to ignore the -Wall
623warnings:
624
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000625.. code-block:: c
Sean Silva93ca0212012-12-13 01:10:46 +0000626
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000627 #pragma GCC diagnostic ignored "-Wall"
Sean Silva93ca0212012-12-13 01:10:46 +0000628
629In addition to all of the functionality provided by GCC's pragma, Clang
630also allows you to push and pop the current warning state. This is
631particularly useful when writing a header file that will be compiled by
632other people, because you don't know what warning flags they build with.
633
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000634In the below example :option:`-Wmultichar` is ignored for only a single line of
635code, after which the diagnostics return to whatever state had previously
636existed.
Sean Silva93ca0212012-12-13 01:10:46 +0000637
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000638.. code-block:: c
Sean Silva93ca0212012-12-13 01:10:46 +0000639
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000640 #pragma clang diagnostic push
641 #pragma clang diagnostic ignored "-Wmultichar"
Sean Silva93ca0212012-12-13 01:10:46 +0000642
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000643 char b = 'df'; // no warning.
Sean Silva93ca0212012-12-13 01:10:46 +0000644
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000645 #pragma clang diagnostic pop
Sean Silva93ca0212012-12-13 01:10:46 +0000646
647The push and pop pragmas will save and restore the full diagnostic state
648of the compiler, regardless of how it was set. That means that it is
649possible to use push and pop around GCC compatible diagnostics and Clang
650will push and pop them appropriately, while GCC will ignore the pushes
651and pops as unknown pragmas. It should be noted that while Clang
652supports the GCC pragma, Clang and GCC do not support the exact same set
653of warnings, so even when using GCC compatible #pragmas there is no
654guarantee that they will have identical behaviour on both compilers.
655
656Controlling Diagnostics in System Headers
657^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
658
659Warnings are suppressed when they occur in system headers. By default,
660an included file is treated as a system header if it is found in an
661include path specified by ``-isystem``, but this can be overridden in
662several ways.
663
664The ``system_header`` pragma can be used to mark the current file as
665being a system header. No warnings will be produced from the location of
666the pragma onwards within the same file.
667
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000668.. code-block:: c
Sean Silva93ca0212012-12-13 01:10:46 +0000669
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000670 char a = 'xy'; // warning
Sean Silva93ca0212012-12-13 01:10:46 +0000671
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000672 #pragma clang system_header
Sean Silva93ca0212012-12-13 01:10:46 +0000673
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000674 char b = 'ab'; // no warning
Sean Silva93ca0212012-12-13 01:10:46 +0000675
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000676The :option:`-isystem-prefix` and :option:`-ino-system-prefix` command-line
Sean Silva93ca0212012-12-13 01:10:46 +0000677arguments can be used to override whether subsets of an include path are
678treated as system headers. When the name in a ``#include`` directive is
679found within a header search path and starts with a system prefix, the
680header is treated as a system header. The last prefix on the
681command-line which matches the specified header name takes precedence.
682For instance:
683
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000684.. code-block:: console
Sean Silva93ca0212012-12-13 01:10:46 +0000685
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000686 $ clang -Ifoo -isystem bar -isystem-prefix x/ -ino-system-prefix x/y/
Sean Silva93ca0212012-12-13 01:10:46 +0000687
688Here, ``#include "x/a.h"`` is treated as including a system header, even
689if the header is found in ``foo``, and ``#include "x/y/b.h"`` is treated
690as not including a system header, even if the header is found in
691``bar``.
692
693A ``#include`` directive which finds a file relative to the current
694directory is treated as including a system header if the including file
695is treated as a system header.
696
697.. _diagnostics_enable_everything:
698
699Enabling All Warnings
700^^^^^^^^^^^^^^^^^^^^^
701
702In addition to the traditional ``-W`` flags, one can enable **all**
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000703warnings by passing :option:`-Weverything`. This works as expected with
704:option:`-Werror`, and also includes the warnings from :option:`-pedantic`.
Sean Silva93ca0212012-12-13 01:10:46 +0000705
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000706Note that when combined with :option:`-w` (which disables all warnings), that
Sean Silva93ca0212012-12-13 01:10:46 +0000707flag wins.
708
709Controlling Static Analyzer Diagnostics
710^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
711
712While not strictly part of the compiler, the diagnostics from Clang's
713`static analyzer <http://clang-analyzer.llvm.org>`_ can also be
714influenced by the user via changes to the source code. See the available
715`annotations <http://clang-analyzer.llvm.org/annotations.html>`_ and the
716analyzer's `FAQ
717page <http://clang-analyzer.llvm.org/faq.html#exclude_code>`_ for more
718information.
719
Dmitri Gribenko97555a12012-12-15 21:10:51 +0000720.. _usersmanual-precompiled-headers:
721
Sean Silva93ca0212012-12-13 01:10:46 +0000722Precompiled Headers
723-------------------
724
725`Precompiled headers <http://en.wikipedia.org/wiki/Precompiled_header>`__
726are a general approach employed by many compilers to reduce compilation
727time. The underlying motivation of the approach is that it is common for
728the same (and often large) header files to be included by multiple
729source files. Consequently, compile times can often be greatly improved
730by caching some of the (redundant) work done by a compiler to process
731headers. Precompiled header files, which represent one of many ways to
732implement this optimization, are literally files that represent an
733on-disk cache that contains the vital information necessary to reduce
734some of the work needed to process a corresponding header file. While
735details of precompiled headers vary between compilers, precompiled
736headers have been shown to be highly effective at speeding up program
737compilation on systems with very large system headers (e.g., Mac OS/X).
738
739Generating a PCH File
740^^^^^^^^^^^^^^^^^^^^^
741
742To generate a PCH file using Clang, one invokes Clang with the
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000743:option:`-x <language>-header` option. This mirrors the interface in GCC
Sean Silva93ca0212012-12-13 01:10:46 +0000744for generating PCH files:
745
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000746.. code-block:: console
Sean Silva93ca0212012-12-13 01:10:46 +0000747
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000748 $ gcc -x c-header test.h -o test.h.gch
749 $ clang -x c-header test.h -o test.h.pch
Sean Silva93ca0212012-12-13 01:10:46 +0000750
751Using a PCH File
752^^^^^^^^^^^^^^^^
753
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000754A PCH file can then be used as a prefix header when a :option:`-include`
Sean Silva93ca0212012-12-13 01:10:46 +0000755option is passed to ``clang``:
756
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000757.. code-block:: console
Sean Silva93ca0212012-12-13 01:10:46 +0000758
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000759 $ clang -include test.h test.c -o test
Sean Silva93ca0212012-12-13 01:10:46 +0000760
761The ``clang`` driver will first check if a PCH file for ``test.h`` is
762available; if so, the contents of ``test.h`` (and the files it includes)
763will be processed from the PCH file. Otherwise, Clang falls back to
764directly processing the content of ``test.h``. This mirrors the behavior
765of GCC.
766
767.. note::
Sean Silva93ca0212012-12-13 01:10:46 +0000768
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000769 Clang does *not* automatically use PCH files for headers that are directly
770 included within a source file. For example:
Sean Silva93ca0212012-12-13 01:10:46 +0000771
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000772 .. code-block:: console
Sean Silva93ca0212012-12-13 01:10:46 +0000773
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000774 $ clang -x c-header test.h -o test.h.pch
775 $ cat test.c
776 #include "test.h"
777 $ clang test.c -o test
778
779 In this example, ``clang`` will not automatically use the PCH file for
780 ``test.h`` since ``test.h`` was included directly in the source file and not
781 specified on the command line using :option:`-include`.
Sean Silva93ca0212012-12-13 01:10:46 +0000782
783Relocatable PCH Files
784^^^^^^^^^^^^^^^^^^^^^
785
786It is sometimes necessary to build a precompiled header from headers
787that are not yet in their final, installed locations. For example, one
788might build a precompiled header within the build tree that is then
789meant to be installed alongside the headers. Clang permits the creation
790of "relocatable" precompiled headers, which are built with a given path
791(into the build directory) and can later be used from an installed
792location.
793
794To build a relocatable precompiled header, place your headers into a
795subdirectory whose structure mimics the installed location. For example,
796if you want to build a precompiled header for the header ``mylib.h``
797that will be installed into ``/usr/include``, create a subdirectory
798``build/usr/include`` and place the header ``mylib.h`` into that
799subdirectory. If ``mylib.h`` depends on other headers, then they can be
800stored within ``build/usr/include`` in a way that mimics the installed
801location.
802
803Building a relocatable precompiled header requires two additional
804arguments. First, pass the ``--relocatable-pch`` flag to indicate that
805the resulting PCH file should be relocatable. Second, pass
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000806:option:`-isysroot /path/to/build`, which makes all includes for your library
Sean Silva93ca0212012-12-13 01:10:46 +0000807relative to the build directory. For example:
808
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000809.. code-block:: console
Sean Silva93ca0212012-12-13 01:10:46 +0000810
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000811 # clang -x c-header --relocatable-pch -isysroot /path/to/build /path/to/build/mylib.h mylib.h.pch
Sean Silva93ca0212012-12-13 01:10:46 +0000812
813When loading the relocatable PCH file, the various headers used in the
814PCH file are found from the system header root. For example, ``mylib.h``
815can be found in ``/usr/include/mylib.h``. If the headers are installed
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000816in some other system root, the :option:`-isysroot` option can be used provide
Sean Silva93ca0212012-12-13 01:10:46 +0000817a different system root from which the headers will be based. For
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000818example, :option:`-isysroot /Developer/SDKs/MacOSX10.4u.sdk` will look for
Sean Silva93ca0212012-12-13 01:10:46 +0000819``mylib.h`` in ``/Developer/SDKs/MacOSX10.4u.sdk/usr/include/mylib.h``.
820
821Relocatable precompiled headers are intended to be used in a limited
822number of cases where the compilation environment is tightly controlled
823and the precompiled header cannot be generated after headers have been
824installed. Relocatable precompiled headers also have some performance
825impact, because the difference in location between the header locations
826at PCH build time vs. at the time of PCH use requires one of the PCH
827optimizations, ``stat()`` caching, to be disabled. However, this change
828is only likely to affect PCH files that reference a large number of
829headers.
830
831Controlling Code Generation
832---------------------------
833
834Clang provides a number of ways to control code generation. The options
835are listed below.
836
837**-fsanitize=check1,check2**
838 Turn on runtime checks for various forms of undefined or suspicious
839 behavior.
840
841 This option controls whether Clang adds runtime checks for various
842 forms of undefined or suspicious behavior, and is disabled by
843 default. If a check fails, a diagnostic message is produced at
844 runtime explaining the problem. The main checks are:
845
Richard Smith2dce7be2012-12-13 07:29:23 +0000846 - .. _opt_fsanitize_address:
Sean Silva93ca0212012-12-13 01:10:46 +0000847
Richard Smith2dce7be2012-12-13 07:29:23 +0000848 ``-fsanitize=address``:
Sean Silva93ca0212012-12-13 01:10:46 +0000849 :doc:`AddressSanitizer`, a memory error
850 detector.
851 - ``-fsanitize=address-full``: AddressSanitizer with all the
852 experimental features listed below.
853 - ``-fsanitize=integer``: Enables checks for undefined or
854 suspicious integer behavior.
Richard Smith2dce7be2012-12-13 07:29:23 +0000855 - .. _opt_fsanitize_thread:
856
Dmitry Vyukov7f5e76b2012-12-21 08:21:25 +0000857 ``-fsanitize=thread``: :doc:`ThreadSanitizer`, a data race detector.
Evgeniy Stepanovcc603e92012-12-21 10:50:00 +0000858 - .. _opt_fsanitize_memory:
859
860 ``-fsanitize=memory``: :doc:`MemorySanitizer`,
861 an *experimental* detector of uninitialized reads. Not ready for
862 widespread use.
Richard Smith2dce7be2012-12-13 07:29:23 +0000863 - .. _opt_fsanitize_undefined:
Sean Silva93ca0212012-12-13 01:10:46 +0000864
Richard Smith2dce7be2012-12-13 07:29:23 +0000865 ``-fsanitize=undefined``: Fast and compatible undefined behavior
Sean Silva93ca0212012-12-13 01:10:46 +0000866 checker. Enables the undefined behavior checks that have small
867 runtime cost and no impact on address space layout or ABI. This
868 includes all of the checks listed below other than
869 ``unsigned-integer-overflow``.
870
871 The following more fine-grained checks are also available:
872
873 - ``-fsanitize=alignment``: Use of a misaligned pointer or creation
874 of a misaligned reference.
Richard Smith463b48b2012-12-13 07:11:50 +0000875 - ``-fsanitize=bool``: Load of a ``bool`` value which is neither
876 ``true`` nor ``false``.
Sean Silva93ca0212012-12-13 01:10:46 +0000877 - ``-fsanitize=bounds``: Out of bounds array indexing, in cases
878 where the array bound can be statically determined.
Richard Smith463b48b2012-12-13 07:11:50 +0000879 - ``-fsanitize=enum``: Load of a value of an enumerated type which
880 is not in the range of representable values for that enumerated
881 type.
Sean Silva93ca0212012-12-13 01:10:46 +0000882 - ``-fsanitize=float-cast-overflow``: Conversion to, from, or
883 between floating-point types which would overflow the
884 destination.
885 - ``-fsanitize=float-divide-by-zero``: Floating point division by
886 zero.
887 - ``-fsanitize=integer-divide-by-zero``: Integer division by zero.
888 - ``-fsanitize=null``: Use of a null pointer or creation of a null
889 reference.
890 - ``-fsanitize=object-size``: An attempt to use bytes which the
891 optimizer can determine are not part of the object being
892 accessed. The sizes of objects are determined using
893 ``__builtin_object_size``, and consequently may be able to detect
894 more problems at higher optimization levels.
895 - ``-fsanitize=return``: In C++, reaching the end of a
896 value-returning function without returning a value.
897 - ``-fsanitize=shift``: Shift operators where the amount shifted is
898 greater or equal to the promoted bit-width of the left hand side
899 or less than zero, or where the left hand side is negative. For a
900 signed left shift, also checks for signed overflow in C, and for
901 unsigned overflow in C++.
902 - ``-fsanitize=signed-integer-overflow``: Signed integer overflow,
903 including all the checks added by ``-ftrapv``, and checking for
904 overflow in signed division (``INT_MIN / -1``).
905 - ``-fsanitize=unreachable``: If control flow reaches
906 ``__builtin_unreachable``.
907 - ``-fsanitize=unsigned-integer-overflow``: Unsigned integer
908 overflows.
909 - ``-fsanitize=vla-bound``: A variable-length array whose bound
910 does not evaluate to a positive value.
911 - ``-fsanitize=vptr``: Use of an object whose vptr indicates that
912 it is of the wrong dynamic type, or that its lifetime has not
913 begun or has ended. Incompatible with ``-fno-rtti``.
914
915 Experimental features of AddressSanitizer (not ready for widespread
916 use, require explicit ``-fsanitize=address``):
917
918 - ``-fsanitize=init-order``: Check for dynamic initialization order
919 problems.
920 - ``-fsanitize=use-after-return``: Check for use-after-return
921 errors (accessing local variable after the function exit).
922 - ``-fsanitize=use-after-scope``: Check for use-after-scope errors
923 (accesing local variable after it went out of scope).
924
Evgeniy Stepanovcc603e92012-12-21 10:50:00 +0000925 Extra features of MemorySanitizer (require explicit
926 ``-fsanitize=memory``):
927
928 - ``-fsanitize-memory-track-origins``: Enables origin tracking in
Evgeniy Stepanov583acae2012-12-21 10:53:20 +0000929 MemorySanitizer. Adds a second section to MemorySanitizer
930 reports pointing to the heap or stack allocation the
931 uninitialized bits came from. Slows down execution by additional
932 1.5x-2x.
Evgeniy Stepanovcc603e92012-12-21 10:50:00 +0000933
Sean Silva93ca0212012-12-13 01:10:46 +0000934 The ``-fsanitize=`` argument must also be provided when linking, in
935 order to link to the appropriate runtime library. It is not possible
936 to combine the ``-fsanitize=address`` and ``-fsanitize=thread``
937 checkers in the same program.
938**-f[no-]address-sanitizer**
939 Deprecated synonym for :ref:`-f[no-]sanitize=address
940 <opt_fsanitize_address>`.
941**-f[no-]thread-sanitizer**
942 Deprecated synonym for :ref:`-f[no-]sanitize=thread
Richard Smith2dce7be2012-12-13 07:29:23 +0000943 <opt_fsanitize_thread>`.
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000944
945.. option:: -fcatch-undefined-behavior
946
Sean Silva93ca0212012-12-13 01:10:46 +0000947 Deprecated synonym for :ref:`-fsanitize=undefined
948 <opt_fsanitize_undefined>`.
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000949
950.. option:: -fno-assume-sane-operator-new
951
Sean Silva93ca0212012-12-13 01:10:46 +0000952 Don't assume that the C++'s new operator is sane.
953
954 This option tells the compiler to do not assume that C++'s global
955 new operator will always return a pointer that does not alias any
956 other pointer when the function returns.
957
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000958.. option:: -ftrap-function=[name]
959
Sean Silva93ca0212012-12-13 01:10:46 +0000960 Instruct code generator to emit a function call to the specified
961 function name for ``__builtin_trap()``.
962
963 LLVM code generator translates ``__builtin_trap()`` to a trap
964 instruction if it is supported by the target ISA. Otherwise, the
965 builtin is translated into a call to ``abort``. If this option is
966 set, then the code generator will always lower the builtin to a call
967 to the specified function regardless of whether the target ISA has a
968 trap instruction. This option is useful for environments (e.g.
969 deeply embedded) where a trap cannot be properly handled, or when
970 some custom behavior is desired.
971
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000972.. option:: -ftls-model=[model]
973
Sean Silva93ca0212012-12-13 01:10:46 +0000974 Select which TLS model to use.
975
976 Valid values are: ``global-dynamic``, ``local-dynamic``,
977 ``initial-exec`` and ``local-exec``. The default value is
978 ``global-dynamic``. The compiler may use a different model if the
979 selected model is not supported by the target, or if a more
980 efficient model can be used. The TLS model can be overridden per
981 variable using the ``tls_model`` attribute.
982
983Controlling Size of Debug Information
984-------------------------------------
985
986Debug info kind generated by Clang can be set by one of the flags listed
987below. If multiple flags are present, the last one is used.
988
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000989.. option:: -g0
Sean Silva93ca0212012-12-13 01:10:46 +0000990
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000991 Don't generate any debug info (default).
Sean Silva93ca0212012-12-13 01:10:46 +0000992
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000993.. option:: -gline-tables-only
Sean Silva93ca0212012-12-13 01:10:46 +0000994
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +0000995 Generate line number tables only.
996
997 This kind of debug info allows to obtain stack traces with function names,
998 file names and line numbers (by such tools as ``gdb`` or ``addr2line``). It
999 doesn't contain any other data (e.g. description of local variables or
1000 function parameters).
1001
1002.. option:: -g
1003
1004 Generate complete debug info.
Sean Silva93ca0212012-12-13 01:10:46 +00001005
1006.. _c:
1007
1008C Language Features
1009===================
1010
1011The support for standard C in clang is feature-complete except for the
1012C99 floating-point pragmas.
1013
1014Extensions supported by clang
1015-----------------------------
1016
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001017See :doc:`LanguageExtensions`.
Sean Silva93ca0212012-12-13 01:10:46 +00001018
1019Differences between various standard modes
1020------------------------------------------
1021
1022clang supports the -std option, which changes what language mode clang
1023uses. The supported modes for C are c89, gnu89, c94, c99, gnu99 and
1024various aliases for those modes. If no -std option is specified, clang
1025defaults to gnu99 mode.
1026
1027Differences between all ``c*`` and ``gnu*`` modes:
1028
1029- ``c*`` modes define "``__STRICT_ANSI__``".
1030- Target-specific defines not prefixed by underscores, like "linux",
1031 are defined in ``gnu*`` modes.
1032- Trigraphs default to being off in ``gnu*`` modes; they can be enabled by
1033 the -trigraphs option.
1034- The parser recognizes "asm" and "typeof" as keywords in ``gnu*`` modes;
1035 the variants "``__asm__``" and "``__typeof__``" are recognized in all
1036 modes.
1037- The Apple "blocks" extension is recognized by default in ``gnu*`` modes
1038 on some platforms; it can be enabled in any mode with the "-fblocks"
1039 option.
1040- Arrays that are VLA's according to the standard, but which can be
1041 constant folded by the frontend are treated as fixed size arrays.
1042 This occurs for things like "int X[(1, 2)];", which is technically a
1043 VLA. ``c*`` modes are strictly compliant and treat these as VLAs.
1044
1045Differences between ``*89`` and ``*99`` modes:
1046
1047- The ``*99`` modes default to implementing "inline" as specified in C99,
1048 while the ``*89`` modes implement the GNU version. This can be
1049 overridden for individual functions with the ``__gnu_inline__``
1050 attribute.
1051- Digraphs are not recognized in c89 mode.
1052- The scope of names defined inside a "for", "if", "switch", "while",
1053 or "do" statement is different. (example: "``if ((struct x {int
1054 x;}*)0) {}``".)
1055- ``__STDC_VERSION__`` is not defined in ``*89`` modes.
1056- "inline" is not recognized as a keyword in c89 mode.
1057- "restrict" is not recognized as a keyword in ``*89`` modes.
1058- Commas are allowed in integer constant expressions in ``*99`` modes.
1059- Arrays which are not lvalues are not implicitly promoted to pointers
1060 in ``*89`` modes.
1061- Some warnings are different.
1062
1063c94 mode is identical to c89 mode except that digraphs are enabled in
1064c94 mode (FIXME: And ``__STDC_VERSION__`` should be defined!).
1065
1066GCC extensions not implemented yet
1067----------------------------------
1068
1069clang tries to be compatible with gcc as much as possible, but some gcc
1070extensions are not implemented yet:
1071
1072- clang does not support #pragma weak (`bug
1073 3679 <http://llvm.org/bugs/show_bug.cgi?id=3679>`_). Due to the uses
1074 described in the bug, this is likely to be implemented at some point,
1075 at least partially.
1076- clang does not support decimal floating point types (``_Decimal32`` and
1077 friends) or fixed-point types (``_Fract`` and friends); nobody has
1078 expressed interest in these features yet, so it's hard to say when
1079 they will be implemented.
1080- clang does not support nested functions; this is a complex feature
1081 which is infrequently used, so it is unlikely to be implemented
1082 anytime soon. In C++11 it can be emulated by assigning lambda
1083 functions to local variables, e.g:
1084
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001085 .. code-block:: cpp
Sean Silva93ca0212012-12-13 01:10:46 +00001086
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001087 auto const local_function = [&](int parameter) {
1088 // Do something
1089 };
1090 ...
1091 local_function(1);
Sean Silva93ca0212012-12-13 01:10:46 +00001092
1093- clang does not support global register variables; this is unlikely to
1094 be implemented soon because it requires additional LLVM backend
1095 support.
1096- clang does not support static initialization of flexible array
1097 members. This appears to be a rarely used extension, but could be
1098 implemented pending user demand.
1099- clang does not support
1100 ``__builtin_va_arg_pack``/``__builtin_va_arg_pack_len``. This is
1101 used rarely, but in some potentially interesting places, like the
1102 glibc headers, so it may be implemented pending user demand. Note
1103 that because clang pretends to be like GCC 4.2, and this extension
1104 was introduced in 4.3, the glibc headers will not try to use this
1105 extension with clang at the moment.
1106- clang does not support the gcc extension for forward-declaring
1107 function parameters; this has not shown up in any real-world code
1108 yet, though, so it might never be implemented.
1109
1110This is not a complete list; if you find an unsupported extension
1111missing from this list, please send an e-mail to cfe-dev. This list
1112currently excludes C++; see :ref:`C++ Language Features <cxx>`. Also, this
1113list does not include bugs in mostly-implemented features; please see
1114the `bug
1115tracker <http://llvm.org/bugs/buglist.cgi?quicksearch=product%3Aclang+component%3A-New%2BBugs%2CAST%2CBasic%2CDriver%2CHeaders%2CLLVM%2BCodeGen%2Cparser%2Cpreprocessor%2CSemantic%2BAnalyzer>`_
1116for known existing bugs (FIXME: Is there a section for bug-reporting
1117guidelines somewhere?).
1118
1119Intentionally unsupported GCC extensions
1120----------------------------------------
1121
1122- clang does not support the gcc extension that allows variable-length
1123 arrays in structures. This is for a few reasons: one, it is tricky to
1124 implement, two, the extension is completely undocumented, and three,
1125 the extension appears to be rarely used. Note that clang *does*
1126 support flexible array members (arrays with a zero or unspecified
1127 size at the end of a structure).
1128- clang does not have an equivalent to gcc's "fold"; this means that
1129 clang doesn't accept some constructs gcc might accept in contexts
1130 where a constant expression is required, like "x-x" where x is a
1131 variable.
1132- clang does not support ``__builtin_apply`` and friends; this extension
1133 is extremely obscure and difficult to implement reliably.
1134
1135.. _c_ms:
1136
1137Microsoft extensions
1138--------------------
1139
1140clang has some experimental support for extensions from Microsoft Visual
1141C++; to enable it, use the -fms-extensions command-line option. This is
1142the default for Windows targets. Note that the support is incomplete;
1143enabling Microsoft extensions will silently drop certain constructs
1144(including ``__declspec`` and Microsoft-style asm statements).
1145
1146clang has a -fms-compatibility flag that makes clang accept enough
1147invalid C++ to be able to parse most Microsoft headers. This flag is
1148enabled by default for Windows targets.
1149
1150-fdelayed-template-parsing lets clang delay all template instantiation
1151until the end of a translation unit. This flag is enabled by default for
1152Windows targets.
1153
1154- clang allows setting ``_MSC_VER`` with ``-fmsc-version=``. It defaults to
1155 1300 which is the same as Visual C/C++ 2003. Any number is supported
1156 and can greatly affect what Windows SDK and c++stdlib headers clang
1157 can compile. This option will be removed when clang supports the full
1158 set of MS extensions required for these headers.
1159- clang does not support the Microsoft extension where anonymous record
1160 members can be declared using user defined typedefs.
1161- clang supports the Microsoft "#pragma pack" feature for controlling
1162 record layout. GCC also contains support for this feature, however
1163 where MSVC and GCC are incompatible clang follows the MSVC
1164 definition.
1165- clang defaults to C++11 for Windows targets.
1166
1167.. _cxx:
1168
1169C++ Language Features
1170=====================
1171
1172clang fully implements all of standard C++98 except for exported
1173templates (which were removed in C++11), and `many C++11
1174features <http://clang.llvm.org/cxx_status.html>`_ are also implemented.
1175
1176Controlling implementation limits
1177---------------------------------
1178
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001179.. option:: -fconstexpr-depth=N
Sean Silva93ca0212012-12-13 01:10:46 +00001180
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001181 Sets the limit for recursive constexpr function invocations to N. The
1182 default is 512.
1183
1184.. option:: -ftemplate-depth=N
1185
1186 Sets the limit for recursively nested template instantiations to N. The
1187 default is 1024.
Sean Silva93ca0212012-12-13 01:10:46 +00001188
1189.. _objc:
1190
1191Objective-C Language Features
1192=============================
1193
1194.. _objcxx:
1195
1196Objective-C++ Language Features
1197===============================
1198
1199
1200.. _target_features:
1201
1202Target-Specific Features and Limitations
1203========================================
1204
1205CPU Architectures Features and Limitations
1206------------------------------------------
1207
1208X86
1209^^^
1210
1211The support for X86 (both 32-bit and 64-bit) is considered stable on
1212Darwin (Mac OS/X), Linux, FreeBSD, and Dragonfly BSD: it has been tested
1213to correctly compile many large C, C++, Objective-C, and Objective-C++
1214codebases.
1215
1216On ``x86_64-mingw32``, passing i128(by value) is incompatible to Microsoft
1217x64 calling conversion. You might need to tweak
1218``WinX86_64ABIInfo::classify()`` in lib/CodeGen/TargetInfo.cpp.
1219
1220ARM
1221^^^
1222
1223The support for ARM (specifically ARMv6 and ARMv7) is considered stable
1224on Darwin (iOS): it has been tested to correctly compile many large C,
1225C++, Objective-C, and Objective-C++ codebases. Clang only supports a
1226limited number of ARM architectures. It does not yet fully support
1227ARMv5, for example.
1228
1229Other platforms
1230^^^^^^^^^^^^^^^
1231
1232clang currently contains some support for PPC and Sparc; however,
1233significant pieces of code generation are still missing, and they
1234haven't undergone significant testing.
1235
1236clang contains limited support for the MSP430 embedded processor, but
1237both the clang support and the LLVM backend support are highly
1238experimental.
1239
1240Other platforms are completely unsupported at the moment. Adding the
1241minimal support needed for parsing and semantic analysis on a new
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001242platform is quite easy; see ``lib/Basic/Targets.cpp`` in the clang source
Sean Silva93ca0212012-12-13 01:10:46 +00001243tree. This level of support is also sufficient for conversion to LLVM IR
1244for simple programs. Proper support for conversion to LLVM IR requires
Dmitri Gribenko0bd9e722012-12-19 22:06:59 +00001245adding code to ``lib/CodeGen/CGCall.cpp`` at the moment; this is likely to
Sean Silva93ca0212012-12-13 01:10:46 +00001246change soon, though. Generating assembly requires a suitable LLVM
1247backend.
1248
1249Operating System Features and Limitations
1250-----------------------------------------
1251
1252Darwin (Mac OS/X)
1253^^^^^^^^^^^^^^^^^
1254
1255None
1256
1257Windows
1258^^^^^^^
1259
1260Experimental supports are on Cygming.
1261
1262See also `Microsoft Extensions <c_ms>`.
1263
1264Cygwin
1265""""""
1266
1267Clang works on Cygwin-1.7.
1268
1269MinGW32
1270"""""""
1271
1272Clang works on some mingw32 distributions. Clang assumes directories as
1273below;
1274
1275- ``C:/mingw/include``
1276- ``C:/mingw/lib``
1277- ``C:/mingw/lib/gcc/mingw32/4.[3-5].0/include/c++``
1278
1279On MSYS, a few tests might fail.
1280
1281MinGW-w64
1282"""""""""
1283
1284For 32-bit (i686-w64-mingw32), and 64-bit (x86\_64-w64-mingw32), Clang
1285assumes as below;
1286
1287- ``GCC versions 4.5.0 to 4.5.3, 4.6.0 to 4.6.2, or 4.7.0 (for the C++ header search path)``
1288- ``some_directory/bin/gcc.exe``
1289- ``some_directory/bin/clang.exe``
1290- ``some_directory/bin/clang++.exe``
1291- ``some_directory/bin/../include/c++/GCC_version``
1292- ``some_directory/bin/../include/c++/GCC_version/x86_64-w64-mingw32``
1293- ``some_directory/bin/../include/c++/GCC_version/i686-w64-mingw32``
1294- ``some_directory/bin/../include/c++/GCC_version/backward``
1295- ``some_directory/bin/../x86_64-w64-mingw32/include``
1296- ``some_directory/bin/../i686-w64-mingw32/include``
1297- ``some_directory/bin/../include``
1298
1299This directory layout is standard for any toolchain you will find on the
1300official `MinGW-w64 website <http://mingw-w64.sourceforge.net>`_.
1301
1302Clang expects the GCC executable "gcc.exe" compiled for
1303``i686-w64-mingw32`` (or ``x86_64-w64-mingw32``) to be present on PATH.
1304
1305`Some tests might fail <http://llvm.org/bugs/show_bug.cgi?id=9072>`_ on
1306``x86_64-w64-mingw32``.