Lines Matching +refs:is +refs:effective +refs:target +refs:keyword

11 The Clang Compiler is an open-source compiler for the C family of
26 Clang is designed to support the C family of programming languages,
47 Clang also provides an alternative driver, :ref:`clang-cl`, that is designed
51 features that depend on what CPU architecture or operating system is
56 terminology <terminology>` that is used throughout this manual and
82 This section is generally an index into other sections. It does not go
94 .. This is in plain monospaced font because it generates the same label as
103 Turn warning "foo" into an warning even if :option:`-Werror` is specified.
135 Stop emitting diagnostics after 123 errors have been produced. The default is
141 instantiation backtrace for a single warning or error. The default is 10, and
151 different preferences, and sometimes Clang is driven not by a human,
162 prints the column number of a diagnostic. For example, when this is
172 When this is disabled, Clang will print "test.c:28: warning..." with
185 For example, when this is enabled, Clang will print something like:
194 When this is disabled, Clang will not print the "test.c:28:8: "
203 diagnostic. For example, when this is enabled, Clang will print
214 This option, which defaults to on when a color-capable terminal is
217 When this option is enabled, Clang will use colors to highlight
231 When this is disabled, Clang will just print:
242 API to output colored diagnostics. This option is only used on Windows and
300 has one, it is listed in the diagnostic categorization field of the
334 is useful for users who may not understand what is wrong, but can be
343 information is a simple sequence of brace enclosed ranges, where each range
369 The range printed is a half-open range, so in this example the
385 The default for template type printing is to elide as many template
409 line, with differences marked inline. This is compatible with
513 be a hard error in C++98 mode even if this warning is turned off.
606 is actually part of the filename. Normally Clang uses backslash to "escape"
607 a special character, which is the convention used by GNU Make. The -MV
609 is the convention used by NMake and Jom.
626 output, and gives you fine-grain control over which information is
635 #. A text string that describes what the problem is.
646 #. "FixIt" information, which is a concise explanation of how to fix the
647 problem (when Clang is certain it knows)
674 high-level category. This category is intended to make it possible to
680 When set to "``name``", the category is printed textually in the
681 diagnostic output. When it is set to "``id``", a category number is
696 pragmas in the source code. This is useful for turning off specific
710 also allows you to push and pop the current warning state. This is
714 In the below example :option:`-Wextra-tokens` is ignored for only a single line
731 of the compiler, regardless of how it was set. That means that it is
736 of warnings, so even when using GCC compatible #pragmas there is no
739 In addition to controlling warnings and errors generated by the compiler, it is
768 an included file is treated as a system header if it is found in an
789 is found within a header search path and starts with a system prefix, the
790 header is treated as a system header. The last prefix on the
799 Here, ``#include "x/a.h"`` is treated as including a system header, even
800 if the header is found in ``foo``, and ``#include "x/y/b.h"`` is treated
801 as not including a system header, even if the header is found in
805 directory is treated as including a system header if the including file
806 is treated as a system header.
839 time. The underlying motivation of the approach is that it is common for
848 headers have been shown to be highly effective at speeding up program
867 option is passed to ``clang``:
873 The ``clang`` driver will first check if a PCH file for ``test.h`` is
898 It is sometimes necessary to build a precompiled header from headers
900 might build a precompiled header within the build tree that is then
934 number of cases where the compilation environment is tightly controlled
951 forms of undefined or suspicious behavior, and is disabled by
952 default. If a check fails, a diagnostic message is produced at
988 It is not possible to combine more than one of the ``-fsanitize=address``,
997 If the check is fatal, program will halt after the first error
998 of this kind is detected and error report is printed.
1005 is detected.
1010 any effect unless that sanitizer's trapping behavior is disabled with
1021 option is intended for use in cases where the sanitizer runtime cannot
1023 the binary size increase caused by the sanitizer runtime is a concern.
1025 This flag is only compatible with :doc:`control flow integrity
1028 is supplied together with ``-fsanitize=undefined``, the ``vptr`` sanitizer
1031 This flag is enabled by default for sanitizers in the ``cfi`` group.
1084 Don't assume that the C++'s new operator is sane.
1096 instruction if it is supported by the target ISA. Otherwise, the
1097 builtin is translated into a call to ``abort``. If this option is
1099 to the specified function regardless of whether the target ISA has a
1100 trap instruction. This option is useful for environments (e.g.
1102 some custom behavior is desired.
1109 ``initial-exec`` and ``local-exec``. The default value is
1111 selected model is not supported by the target, or if a more
1128 This option is used to indicate which mode (arm or thumb) supports
1136 This option is used to indicate whether CRC instructions are to
1153 The default value is ``optimal`` which generates compact branches
1161 This cap is ignored when directly accessing a variable or when the pointee
1168 not promise to return memory that is more than 8-byte or 16-byte-aligned. Use
1185 // The compiler may assume that ‘v’ is 64-byte aligned, regardless of the
1194 branch is taken very frequently helps the compiler make better decisions when
1195 ordering basic blocks. Knowing that a function ``foo`` is called more
1207 behavior. Code that is not exercised in the profile will be optimized as if it
1208 is unimportant, and the compiler may make poor optimization choices for code
1209 that is disproportionately used while profiling.
1217 1. Profile data generated with one cannot be used by the other, and there is no
1247 a program is built. Before the compiler can use profiling information,
1248 the code needs to execute under the profiler. The following is the
1253 requirement is that you add ``-gline-tables-only`` or ``-g`` to the
1254 command line. This is important for the profiler to be able to map
1273 Record (LBR) to record call chains. While this is not strictly required,
1278 This is currently supported via the AutoFDO converter ``create_llvm_prof``.
1279 It is available at http://github.com/google/autofdo. Once built and
1296 used in the first step. The only requirement is that you build the code
1311 1. ASCII text. This is the easiest one to generate. The file is divided into
1313 information. The format is described below. It can also be generated from
1317 profile files. This is the format generated by the ``create_llvm_prof`` tool
1320 3. GCC encoding. This is based on the gcov format, which is accepted by GCC. It
1321 is only interesting in environments where GCC and Clang co-exist. This
1322 encoding is only generated by the ``create_gcov`` tool in
1335 This section describes the ASCII text format for sampling profiles. It is,
1353 This is a nested tree in which the identation represents the nesting level
1355 within a single line is fixed. Additional spaces will result in an error
1358 Any line starting with the '#' character is completely ignored.
1360 Inlined calls are represented with indentation. The Inline stack is a
1370 count provides an indicator of how frequently the function is invoked.
1384 in the function where the sample was collected. The line number is
1385 always relative to the line where symbol of the function is
1387 13 is at line 293 in the file.
1397 b. [OPTIONAL] Discriminator. This is used if the sampled program
1405 If the predicate ``cond`` is true 80% of the time, then the edge
1408 line, so a sample count at that line is not sufficient. The
1409 compiler needs to know which part of that line is taken more
1412 This is what discriminators provide. In this case, the calls to
1417 c. Number of samples. This is an integer quantity representing the
1429 The above means that at relative line offset 130 there is a call
1431 with ``baz()`` being the relatively more frequently called target.
1491 Note that this step is necessary even when there is only one "raw" profile,
1524 When ``code`` is executed, the profile will be written to the file
1540 ``-fprofile-instr-use``. Otherwise, if ``pathname`` is the full path to a
1541 profile file, it reads from that file. If ``pathname`` is a directory name,
1565 below. If multiple flags are present, the last one is used.
1592 This is useful when working with 3rd-party libraries that don't come
1598 On Darwin **-fstandalone-debug** is enabled by default. The
1631 Emit warnings about use of documentation comments. This warning group is off
1635 present in the function signature, checking that ``\returns`` is used only on
1655 It is also possible to use ``-fcomment-block-commands`` several times; e.g.
1664 The support for standard C in clang is feature-complete except for the
1677 gnu11, and various aliases for those modes. If no -std option is
1681 revision is used in an earlier mode.
1693 - The Apple "blocks" extension is recognized by default in ``gnu*`` modes
1698 This occurs for things like "int X[(1, 2)];", which is technically a
1709 or "do" statement is different. (example: "``if ((struct x {int
1711 - ``__STDC_VERSION__`` is not defined in ``*89`` modes.
1712 - "inline" is not recognized as a keyword in c89 mode.
1713 - "restrict" is not recognized as a keyword in ``*89`` modes.
1722 - ``__STDC_VERSION__`` is defined to ``201112L`` rather than ``199901L``.
1724 c94 mode is identical to c89 mode except that digraphs are enabled in
1737 - clang does not support nested functions; this is a complex feature
1738 which is infrequently used, so it is unlikely to be implemented
1754 ``__builtin_va_arg_pack``/``__builtin_va_arg_pack_len``. This is
1764 This is not a complete list; if you find an unsupported extension
1777 arrays in structures. This is for a few reasons: one, it is tricky to
1778 implement, two, the extension is completely undocumented, and three,
1784 where a constant expression is required, like "x-x" where x is a
1787 is extremely obscure and difficult to implement reliably.
1795 extensions, use the ``-fms-extensions`` command-line option. This is the default
1803 <http://clang.llvm.org/compatibility.html#dep_lookup_bases>`_, which is
1804 a common compatibility issue with clang. This flag is enabled by default
1808 definitions until the end of a translation unit. This flag is enabled by
1835 default is 256.
1840 default is 512.
1845 default is 256.
1850 default is 256.
1886 is provided or target does not support TLS, code generation for threadprivate
1900 The support for X86 (both 32-bit and 64-bit) is considered stable on
1905 On ``x86_64-mingw32``, passing i128(by value) is incompatible with the
1909 For the X86 target, clang supports the :option:`-m16` command line
1910 argument which enables 16-bit code output. This is broadly similar to
1919 The support for ARM (specifically ARMv6 and ARMv7) is considered stable
1928 The support for PowerPC (especially PowerPC64) is considered stable
1930 large C and C++ codebases. PowerPC (32bit) is still missing certain
1946 platform is quite easy; see ``lib/Basic/Targets.cpp`` in the clang source
1947 tree. This level of support is also sufficient for conversion to LLVM IR
1949 adding code to ``lib/CodeGen/CGCall.cpp`` at the moment; this is likely to
1959 Thread Sanitizer is not supported.
2004 This directory layout is standard for any toolchain you will find on the
2018 clang-cl is an alternative command-line interface to Clang driver, designed for
2183 --target=<value> Generate code for the given target
2191 When clang-cl is run with the ``/fallback`` option, it will first try to
2195 This option is intended to be used as a temporary means to build projects where