blob: ac66bd3f0f3f35a90efb35e3df37aa71f0890dc1 [file] [log] [blame]
Sean Silvabf9b4cd2012-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 Gribenkod9d26072012-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 Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +000083options like :option:`-c`, :option:`-g`, etc.
Sean Silvabf9b4cd2012-12-13 01:10:46 +000084
85Options to Control Error and Warning Messages
86---------------------------------------------
87
Dmitri Gribenko1436ff22012-12-19 22:06:59 +000088.. option:: -Werror
Sean Silvabf9b4cd2012-12-13 01:10:46 +000089
Dmitri Gribenko1436ff22012-12-19 22:06:59 +000090 Turn warnings into errors.
Sean Silvabf9b4cd2012-12-13 01:10:46 +000091
Dmitri Gribenko1436ff22012-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 Silvabf9b4cd2012-12-13 01:10:46 +000094
Dmitri Gribenko1436ff22012-12-19 22:06:59 +000095``-Werror=foo``
Sean Silvabf9b4cd2012-12-13 01:10:46 +000096
Dmitri Gribenko1436ff22012-12-19 22:06:59 +000097 Turn warning "foo" into an error.
Sean Silvabf9b4cd2012-12-13 01:10:46 +000098
Dmitri Gribenko1436ff22012-12-19 22:06:59 +000099.. option:: -Wno-error=foo
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000100
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000101 Turn warning "foo" into an warning even if :option:`-Werror` is specified.
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000102
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000103.. option:: -Wfoo
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000104
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000105 Enable warning "foo".
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000106
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000107.. option:: -Wno-foo
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000108
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000109 Disable warning "foo".
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000110
Dmitri Gribenko1436ff22012-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 Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000238.. option:: -fdiagnostics-format=clang/msvc/vi
239
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000291.. option:: -fdiagnostics-show-category=none/id/name
292
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000356.. option:: -fdiagnostics-parseable-fixits
357
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000380.. option:: -fno-elide-type
381
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000402.. option:: -fdiagnostics-show-template-tree
403
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000417 With :option:`-fdiagnostics-show-template-tree`:
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000438.. option:: -Wextra-tokens
439
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000454.. option:: -Wambiguous-member-template
455
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000478.. option:: -Wbind-to-temporary-copy
479
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000526.. option:: -fno-crash-diagnostics
527
528 Disable auto-generation of preprocessed source files during a clang crash.
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000625.. code-block:: c
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000626
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000627 #pragma GCC diagnostic ignored "-Wall"
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-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 Silvabf9b4cd2012-12-13 01:10:46 +0000637
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000638.. code-block:: c
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000639
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000640 #pragma clang diagnostic push
641 #pragma clang diagnostic ignored "-Wmultichar"
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000642
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000643 char b = 'df'; // no warning.
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000644
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000645 #pragma clang diagnostic pop
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000668.. code-block:: c
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000669
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000670 char a = 'xy'; // warning
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000671
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000672 #pragma clang system_header
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000673
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000674 char b = 'ab'; // no warning
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000675
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000676The :option:`-isystem-prefix` and :option:`-ino-system-prefix` command-line
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000684.. code-block:: console
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000685
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000686 $ clang -Ifoo -isystem bar -isystem-prefix x/ -ino-system-prefix x/y/
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-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 Silvabf9b4cd2012-12-13 01:10:46 +0000705
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000706Note that when combined with :option:`-w` (which disables all warnings), that
Sean Silvabf9b4cd2012-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 Gribenko7ac0cc32012-12-15 21:10:51 +0000720.. _usersmanual-precompiled-headers:
721
Sean Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000743:option:`-x <language>-header` option. This mirrors the interface in GCC
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000744for generating PCH files:
745
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000746.. code-block:: console
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000747
Dmitri Gribenko1436ff22012-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 Silvabf9b4cd2012-12-13 01:10:46 +0000750
751Using a PCH File
752^^^^^^^^^^^^^^^^
753
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000754A PCH file can then be used as a prefix header when a :option:`-include`
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000755option is passed to ``clang``:
756
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000757.. code-block:: console
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000758
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000759 $ clang -include test.h test.c -o test
Sean Silvabf9b4cd2012-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 Silvabf9b4cd2012-12-13 01:10:46 +0000768
Dmitri Gribenko1436ff22012-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 Silvabf9b4cd2012-12-13 01:10:46 +0000771
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000772 .. code-block:: console
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000773
Dmitri Gribenko1436ff22012-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 Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000806:option:`-isysroot /path/to/build`, which makes all includes for your library
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000807relative to the build directory. For example:
808
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000809.. code-block:: console
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000810
Dmitri Gribenko1436ff22012-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 Silvabf9b4cd2012-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 Gribenko1436ff22012-12-19 22:06:59 +0000816in some other system root, the :option:`-isysroot` option can be used provide
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000817a different system root from which the headers will be based. For
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000818example, :option:`-isysroot /Developer/SDKs/MacOSX10.4u.sdk` will look for
Sean Silvabf9b4cd2012-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 Smithbb741f42012-12-13 07:29:23 +0000846 - .. _opt_fsanitize_address:
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000847
Richard Smithbb741f42012-12-13 07:29:23 +0000848 ``-fsanitize=address``:
Sean Silvabf9b4cd2012-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 Smithbb741f42012-12-13 07:29:23 +0000855 - .. _opt_fsanitize_thread:
856
857 ``-fsanitize=thread``: :doc:`ThreadSanitizer`,
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000858 an *experimental* data race detector. Not ready for widespread
859 use.
Richard Smithbb741f42012-12-13 07:29:23 +0000860 - .. _opt_fsanitize_undefined:
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000861
Richard Smithbb741f42012-12-13 07:29:23 +0000862 ``-fsanitize=undefined``: Fast and compatible undefined behavior
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000863 checker. Enables the undefined behavior checks that have small
864 runtime cost and no impact on address space layout or ABI. This
865 includes all of the checks listed below other than
866 ``unsigned-integer-overflow``.
867
868 The following more fine-grained checks are also available:
869
870 - ``-fsanitize=alignment``: Use of a misaligned pointer or creation
871 of a misaligned reference.
Richard Smith1629da92012-12-13 07:11:50 +0000872 - ``-fsanitize=bool``: Load of a ``bool`` value which is neither
873 ``true`` nor ``false``.
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000874 - ``-fsanitize=bounds``: Out of bounds array indexing, in cases
875 where the array bound can be statically determined.
Richard Smith1629da92012-12-13 07:11:50 +0000876 - ``-fsanitize=enum``: Load of a value of an enumerated type which
877 is not in the range of representable values for that enumerated
878 type.
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000879 - ``-fsanitize=float-cast-overflow``: Conversion to, from, or
880 between floating-point types which would overflow the
881 destination.
882 - ``-fsanitize=float-divide-by-zero``: Floating point division by
883 zero.
884 - ``-fsanitize=integer-divide-by-zero``: Integer division by zero.
885 - ``-fsanitize=null``: Use of a null pointer or creation of a null
886 reference.
887 - ``-fsanitize=object-size``: An attempt to use bytes which the
888 optimizer can determine are not part of the object being
889 accessed. The sizes of objects are determined using
890 ``__builtin_object_size``, and consequently may be able to detect
891 more problems at higher optimization levels.
892 - ``-fsanitize=return``: In C++, reaching the end of a
893 value-returning function without returning a value.
894 - ``-fsanitize=shift``: Shift operators where the amount shifted is
895 greater or equal to the promoted bit-width of the left hand side
896 or less than zero, or where the left hand side is negative. For a
897 signed left shift, also checks for signed overflow in C, and for
898 unsigned overflow in C++.
899 - ``-fsanitize=signed-integer-overflow``: Signed integer overflow,
900 including all the checks added by ``-ftrapv``, and checking for
901 overflow in signed division (``INT_MIN / -1``).
902 - ``-fsanitize=unreachable``: If control flow reaches
903 ``__builtin_unreachable``.
904 - ``-fsanitize=unsigned-integer-overflow``: Unsigned integer
905 overflows.
906 - ``-fsanitize=vla-bound``: A variable-length array whose bound
907 does not evaluate to a positive value.
908 - ``-fsanitize=vptr``: Use of an object whose vptr indicates that
909 it is of the wrong dynamic type, or that its lifetime has not
910 begun or has ended. Incompatible with ``-fno-rtti``.
911
912 Experimental features of AddressSanitizer (not ready for widespread
913 use, require explicit ``-fsanitize=address``):
914
915 - ``-fsanitize=init-order``: Check for dynamic initialization order
916 problems.
917 - ``-fsanitize=use-after-return``: Check for use-after-return
918 errors (accessing local variable after the function exit).
919 - ``-fsanitize=use-after-scope``: Check for use-after-scope errors
920 (accesing local variable after it went out of scope).
921
922 The ``-fsanitize=`` argument must also be provided when linking, in
923 order to link to the appropriate runtime library. It is not possible
924 to combine the ``-fsanitize=address`` and ``-fsanitize=thread``
925 checkers in the same program.
926**-f[no-]address-sanitizer**
927 Deprecated synonym for :ref:`-f[no-]sanitize=address
928 <opt_fsanitize_address>`.
929**-f[no-]thread-sanitizer**
930 Deprecated synonym for :ref:`-f[no-]sanitize=thread
Richard Smithbb741f42012-12-13 07:29:23 +0000931 <opt_fsanitize_thread>`.
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000932
933.. option:: -fcatch-undefined-behavior
934
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000935 Deprecated synonym for :ref:`-fsanitize=undefined
936 <opt_fsanitize_undefined>`.
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000937
938.. option:: -fno-assume-sane-operator-new
939
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000940 Don't assume that the C++'s new operator is sane.
941
942 This option tells the compiler to do not assume that C++'s global
943 new operator will always return a pointer that does not alias any
944 other pointer when the function returns.
945
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000946.. option:: -ftrap-function=[name]
947
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000948 Instruct code generator to emit a function call to the specified
949 function name for ``__builtin_trap()``.
950
951 LLVM code generator translates ``__builtin_trap()`` to a trap
952 instruction if it is supported by the target ISA. Otherwise, the
953 builtin is translated into a call to ``abort``. If this option is
954 set, then the code generator will always lower the builtin to a call
955 to the specified function regardless of whether the target ISA has a
956 trap instruction. This option is useful for environments (e.g.
957 deeply embedded) where a trap cannot be properly handled, or when
958 some custom behavior is desired.
959
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000960.. option:: -ftls-model=[model]
961
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000962 Select which TLS model to use.
963
964 Valid values are: ``global-dynamic``, ``local-dynamic``,
965 ``initial-exec`` and ``local-exec``. The default value is
966 ``global-dynamic``. The compiler may use a different model if the
967 selected model is not supported by the target, or if a more
968 efficient model can be used. The TLS model can be overridden per
969 variable using the ``tls_model`` attribute.
970
971Controlling Size of Debug Information
972-------------------------------------
973
974Debug info kind generated by Clang can be set by one of the flags listed
975below. If multiple flags are present, the last one is used.
976
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000977.. option:: -g0
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000978
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000979 Don't generate any debug info (default).
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000980
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000981.. option:: -gline-tables-only
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000982
Dmitri Gribenko1436ff22012-12-19 22:06:59 +0000983 Generate line number tables only.
984
985 This kind of debug info allows to obtain stack traces with function names,
986 file names and line numbers (by such tools as ``gdb`` or ``addr2line``). It
987 doesn't contain any other data (e.g. description of local variables or
988 function parameters).
989
990.. option:: -g
991
992 Generate complete debug info.
Sean Silvabf9b4cd2012-12-13 01:10:46 +0000993
994.. _c:
995
996C Language Features
997===================
998
999The support for standard C in clang is feature-complete except for the
1000C99 floating-point pragmas.
1001
1002Extensions supported by clang
1003-----------------------------
1004
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001005See :doc:`LanguageExtensions`.
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001006
1007Differences between various standard modes
1008------------------------------------------
1009
1010clang supports the -std option, which changes what language mode clang
1011uses. The supported modes for C are c89, gnu89, c94, c99, gnu99 and
1012various aliases for those modes. If no -std option is specified, clang
1013defaults to gnu99 mode.
1014
1015Differences between all ``c*`` and ``gnu*`` modes:
1016
1017- ``c*`` modes define "``__STRICT_ANSI__``".
1018- Target-specific defines not prefixed by underscores, like "linux",
1019 are defined in ``gnu*`` modes.
1020- Trigraphs default to being off in ``gnu*`` modes; they can be enabled by
1021 the -trigraphs option.
1022- The parser recognizes "asm" and "typeof" as keywords in ``gnu*`` modes;
1023 the variants "``__asm__``" and "``__typeof__``" are recognized in all
1024 modes.
1025- The Apple "blocks" extension is recognized by default in ``gnu*`` modes
1026 on some platforms; it can be enabled in any mode with the "-fblocks"
1027 option.
1028- Arrays that are VLA's according to the standard, but which can be
1029 constant folded by the frontend are treated as fixed size arrays.
1030 This occurs for things like "int X[(1, 2)];", which is technically a
1031 VLA. ``c*`` modes are strictly compliant and treat these as VLAs.
1032
1033Differences between ``*89`` and ``*99`` modes:
1034
1035- The ``*99`` modes default to implementing "inline" as specified in C99,
1036 while the ``*89`` modes implement the GNU version. This can be
1037 overridden for individual functions with the ``__gnu_inline__``
1038 attribute.
1039- Digraphs are not recognized in c89 mode.
1040- The scope of names defined inside a "for", "if", "switch", "while",
1041 or "do" statement is different. (example: "``if ((struct x {int
1042 x;}*)0) {}``".)
1043- ``__STDC_VERSION__`` is not defined in ``*89`` modes.
1044- "inline" is not recognized as a keyword in c89 mode.
1045- "restrict" is not recognized as a keyword in ``*89`` modes.
1046- Commas are allowed in integer constant expressions in ``*99`` modes.
1047- Arrays which are not lvalues are not implicitly promoted to pointers
1048 in ``*89`` modes.
1049- Some warnings are different.
1050
1051c94 mode is identical to c89 mode except that digraphs are enabled in
1052c94 mode (FIXME: And ``__STDC_VERSION__`` should be defined!).
1053
1054GCC extensions not implemented yet
1055----------------------------------
1056
1057clang tries to be compatible with gcc as much as possible, but some gcc
1058extensions are not implemented yet:
1059
1060- clang does not support #pragma weak (`bug
1061 3679 <http://llvm.org/bugs/show_bug.cgi?id=3679>`_). Due to the uses
1062 described in the bug, this is likely to be implemented at some point,
1063 at least partially.
1064- clang does not support decimal floating point types (``_Decimal32`` and
1065 friends) or fixed-point types (``_Fract`` and friends); nobody has
1066 expressed interest in these features yet, so it's hard to say when
1067 they will be implemented.
1068- clang does not support nested functions; this is a complex feature
1069 which is infrequently used, so it is unlikely to be implemented
1070 anytime soon. In C++11 it can be emulated by assigning lambda
1071 functions to local variables, e.g:
1072
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001073 .. code-block:: cpp
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001074
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001075 auto const local_function = [&](int parameter) {
1076 // Do something
1077 };
1078 ...
1079 local_function(1);
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001080
1081- clang does not support global register variables; this is unlikely to
1082 be implemented soon because it requires additional LLVM backend
1083 support.
1084- clang does not support static initialization of flexible array
1085 members. This appears to be a rarely used extension, but could be
1086 implemented pending user demand.
1087- clang does not support
1088 ``__builtin_va_arg_pack``/``__builtin_va_arg_pack_len``. This is
1089 used rarely, but in some potentially interesting places, like the
1090 glibc headers, so it may be implemented pending user demand. Note
1091 that because clang pretends to be like GCC 4.2, and this extension
1092 was introduced in 4.3, the glibc headers will not try to use this
1093 extension with clang at the moment.
1094- clang does not support the gcc extension for forward-declaring
1095 function parameters; this has not shown up in any real-world code
1096 yet, though, so it might never be implemented.
1097
1098This is not a complete list; if you find an unsupported extension
1099missing from this list, please send an e-mail to cfe-dev. This list
1100currently excludes C++; see :ref:`C++ Language Features <cxx>`. Also, this
1101list does not include bugs in mostly-implemented features; please see
1102the `bug
1103tracker <http://llvm.org/bugs/buglist.cgi?quicksearch=product%3Aclang+component%3A-New%2BBugs%2CAST%2CBasic%2CDriver%2CHeaders%2CLLVM%2BCodeGen%2Cparser%2Cpreprocessor%2CSemantic%2BAnalyzer>`_
1104for known existing bugs (FIXME: Is there a section for bug-reporting
1105guidelines somewhere?).
1106
1107Intentionally unsupported GCC extensions
1108----------------------------------------
1109
1110- clang does not support the gcc extension that allows variable-length
1111 arrays in structures. This is for a few reasons: one, it is tricky to
1112 implement, two, the extension is completely undocumented, and three,
1113 the extension appears to be rarely used. Note that clang *does*
1114 support flexible array members (arrays with a zero or unspecified
1115 size at the end of a structure).
1116- clang does not have an equivalent to gcc's "fold"; this means that
1117 clang doesn't accept some constructs gcc might accept in contexts
1118 where a constant expression is required, like "x-x" where x is a
1119 variable.
1120- clang does not support ``__builtin_apply`` and friends; this extension
1121 is extremely obscure and difficult to implement reliably.
1122
1123.. _c_ms:
1124
1125Microsoft extensions
1126--------------------
1127
1128clang has some experimental support for extensions from Microsoft Visual
1129C++; to enable it, use the -fms-extensions command-line option. This is
1130the default for Windows targets. Note that the support is incomplete;
1131enabling Microsoft extensions will silently drop certain constructs
1132(including ``__declspec`` and Microsoft-style asm statements).
1133
1134clang has a -fms-compatibility flag that makes clang accept enough
1135invalid C++ to be able to parse most Microsoft headers. This flag is
1136enabled by default for Windows targets.
1137
1138-fdelayed-template-parsing lets clang delay all template instantiation
1139until the end of a translation unit. This flag is enabled by default for
1140Windows targets.
1141
1142- clang allows setting ``_MSC_VER`` with ``-fmsc-version=``. It defaults to
1143 1300 which is the same as Visual C/C++ 2003. Any number is supported
1144 and can greatly affect what Windows SDK and c++stdlib headers clang
1145 can compile. This option will be removed when clang supports the full
1146 set of MS extensions required for these headers.
1147- clang does not support the Microsoft extension where anonymous record
1148 members can be declared using user defined typedefs.
1149- clang supports the Microsoft "#pragma pack" feature for controlling
1150 record layout. GCC also contains support for this feature, however
1151 where MSVC and GCC are incompatible clang follows the MSVC
1152 definition.
1153- clang defaults to C++11 for Windows targets.
1154
1155.. _cxx:
1156
1157C++ Language Features
1158=====================
1159
1160clang fully implements all of standard C++98 except for exported
1161templates (which were removed in C++11), and `many C++11
1162features <http://clang.llvm.org/cxx_status.html>`_ are also implemented.
1163
1164Controlling implementation limits
1165---------------------------------
1166
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001167.. option:: -fconstexpr-depth=N
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001168
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001169 Sets the limit for recursive constexpr function invocations to N. The
1170 default is 512.
1171
1172.. option:: -ftemplate-depth=N
1173
1174 Sets the limit for recursively nested template instantiations to N. The
1175 default is 1024.
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001176
1177.. _objc:
1178
1179Objective-C Language Features
1180=============================
1181
1182.. _objcxx:
1183
1184Objective-C++ Language Features
1185===============================
1186
1187
1188.. _target_features:
1189
1190Target-Specific Features and Limitations
1191========================================
1192
1193CPU Architectures Features and Limitations
1194------------------------------------------
1195
1196X86
1197^^^
1198
1199The support for X86 (both 32-bit and 64-bit) is considered stable on
1200Darwin (Mac OS/X), Linux, FreeBSD, and Dragonfly BSD: it has been tested
1201to correctly compile many large C, C++, Objective-C, and Objective-C++
1202codebases.
1203
1204On ``x86_64-mingw32``, passing i128(by value) is incompatible to Microsoft
1205x64 calling conversion. You might need to tweak
1206``WinX86_64ABIInfo::classify()`` in lib/CodeGen/TargetInfo.cpp.
1207
1208ARM
1209^^^
1210
1211The support for ARM (specifically ARMv6 and ARMv7) is considered stable
1212on Darwin (iOS): it has been tested to correctly compile many large C,
1213C++, Objective-C, and Objective-C++ codebases. Clang only supports a
1214limited number of ARM architectures. It does not yet fully support
1215ARMv5, for example.
1216
1217Other platforms
1218^^^^^^^^^^^^^^^
1219
1220clang currently contains some support for PPC and Sparc; however,
1221significant pieces of code generation are still missing, and they
1222haven't undergone significant testing.
1223
1224clang contains limited support for the MSP430 embedded processor, but
1225both the clang support and the LLVM backend support are highly
1226experimental.
1227
1228Other platforms are completely unsupported at the moment. Adding the
1229minimal support needed for parsing and semantic analysis on a new
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001230platform is quite easy; see ``lib/Basic/Targets.cpp`` in the clang source
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001231tree. This level of support is also sufficient for conversion to LLVM IR
1232for simple programs. Proper support for conversion to LLVM IR requires
Dmitri Gribenko1436ff22012-12-19 22:06:59 +00001233adding code to ``lib/CodeGen/CGCall.cpp`` at the moment; this is likely to
Sean Silvabf9b4cd2012-12-13 01:10:46 +00001234change soon, though. Generating assembly requires a suitable LLVM
1235backend.
1236
1237Operating System Features and Limitations
1238-----------------------------------------
1239
1240Darwin (Mac OS/X)
1241^^^^^^^^^^^^^^^^^
1242
1243None
1244
1245Windows
1246^^^^^^^
1247
1248Experimental supports are on Cygming.
1249
1250See also `Microsoft Extensions <c_ms>`.
1251
1252Cygwin
1253""""""
1254
1255Clang works on Cygwin-1.7.
1256
1257MinGW32
1258"""""""
1259
1260Clang works on some mingw32 distributions. Clang assumes directories as
1261below;
1262
1263- ``C:/mingw/include``
1264- ``C:/mingw/lib``
1265- ``C:/mingw/lib/gcc/mingw32/4.[3-5].0/include/c++``
1266
1267On MSYS, a few tests might fail.
1268
1269MinGW-w64
1270"""""""""
1271
1272For 32-bit (i686-w64-mingw32), and 64-bit (x86\_64-w64-mingw32), Clang
1273assumes as below;
1274
1275- ``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)``
1276- ``some_directory/bin/gcc.exe``
1277- ``some_directory/bin/clang.exe``
1278- ``some_directory/bin/clang++.exe``
1279- ``some_directory/bin/../include/c++/GCC_version``
1280- ``some_directory/bin/../include/c++/GCC_version/x86_64-w64-mingw32``
1281- ``some_directory/bin/../include/c++/GCC_version/i686-w64-mingw32``
1282- ``some_directory/bin/../include/c++/GCC_version/backward``
1283- ``some_directory/bin/../x86_64-w64-mingw32/include``
1284- ``some_directory/bin/../i686-w64-mingw32/include``
1285- ``some_directory/bin/../include``
1286
1287This directory layout is standard for any toolchain you will find on the
1288official `MinGW-w64 website <http://mingw-w64.sourceforge.net>`_.
1289
1290Clang expects the GCC executable "gcc.exe" compiled for
1291``i686-w64-mingw32`` (or ``x86_64-w64-mingw32``) to be present on PATH.
1292
1293`Some tests might fail <http://llvm.org/bugs/show_bug.cgi?id=9072>`_ on
1294``x86_64-w64-mingw32``.