Lines Matching +full:gzip +full:. +full:ttp

1 This is gcc.info, produced by makeinfo version 6.5 from gcc.texi.
3 Copyright (C) 1988-2020 Free Software Foundation, Inc.
10 below). A copy of the license is included in the section entitled "GNU
11 Free Documentation License".
19 You have freedom to copy and modify this GNU Manual, like GNU software.
21 development.
24 * gcc: (gcc). The GNU Compiler Collection.
25 * g++: (gcc). The GNU C++ compiler.
26 * gcov: (gcc) Gcov. 'gcov'--a test coverage program.
27 * gcov-tool: (gcc) Gcov-tool. 'gcov-tool'--an offline gcda profile processing program.
28 * gcov-dump: (gcc) Gcov-dump. 'gcov-dump'--an offline gcda and gcno profile dump tool.
29 * lto-dump: (gcc) lto-dump. 'lto-dump'--Tool for dumping LTO object files.
32 This file documents the use of the GNU compilers.
34 Copyright (C) 1988-2020 Free Software Foundation, Inc.
41 below). A copy of the license is included in the section entitled "GNU
42 Free Documentation License".
50 You have freedom to copy and modify this GNU Manual, like GNU software.
52 development.
55 File: gcc.info, Node: Top, Next: G++ and GCC
61 features and incompatibilities, and how to report bugs. It corresponds
62 to the compilers (GCC) version 10.5.0. The internals of the GNU
65 documented in a separate manual. *Note Introduction: (gccint)Top.
69 * G++ and GCC:: You can compile C or C++ programs.
70 * Standards:: Language standards supported by GCC.
71 * Invoking GCC:: Command options supported by 'gcc'.
72 * C Implementation:: How GCC implements the ISO C specification.
73 * C++ Implementation:: How GCC implements the ISO C++ specification.
74 * C Extensions:: GNU extensions to the C language family.
75 * C++ Extensions:: GNU extensions to the C++ language.
76 * Objective-C:: GNU Objective-C runtime features.
78 * Gcov:: 'gcov'--a test coverage program.
79 * Gcov-tool:: 'gcov-tool'--an offline gcda profile processing program.
80 * Gcov-dump:: 'gcov-dump'--an offline gcda and gcno profile dump tool.
82 object files.
83 * Trouble:: If you have trouble using GCC.
84 * Bugs:: How, why and where to report bugs.
86 * Contributing:: How to contribute to testing and developing GCC.
88 * Funding:: How to help assure funding for free software.
89 * GNU Project:: The GNU Project and GNU/Linux.
92 how you can copy and share GCC.
93 * GNU Free Documentation License:: How you can copy and share this manual.
94 * Contributors:: People who have contributed to GCC.
96 * Option Index:: Index to command line options.
97 * Keyword Index:: Index of concepts and symbol names.
100 File: gcc.info, Node: G++ and GCC, Next: Standards, Up: Top
105 GCC stands for "GNU Compiler Collection". GCC is an integrated
106 distribution of compilers for several major programming languages.
108 Fortran, Ada, D, Go, and BRIG (HSAIL).
110 The abbreviation "GCC" has multiple meanings in common use. The
112 generically to the complete suite of tools. The name historically stood
114 is on compiling C programs. Finally, the name is also used when
116 among the compilers for all supported languages.
120 various processors.
123 called the "front end". In addition to the front ends that are
125 are maintained separately. These support languages such as Mercury, and
126 COBOL. To use these, they must be built together with GCC proper.
128 Most of the compilers for languages other than C have their own names.
129 The C++ compiler is G++, the Ada compiler is GNAT, and so on. When we
131 compiler by its own name, or as GCC. Either is correct.
135 language such as C. None of the compilers included in GCC are
136 implemented this way; they all generate machine code directly. This
139 Objective-C++ languages.
142 File: gcc.info, Node: Standards, Next: Invoking GCC, Prev: G++ and GCC, Up: Top
149 some exceptions, and possibly with some extensions.
154 The original ANSI C standard (X3.159-1989) was ratified in 1989 and
155 published in 1990. This standard was ratified as an ISO standard
156 (ISO/IEC 9899:1990) later in 1990. There were no technical differences
158 were renumbered and became clauses in the ISO standard. The ANSI
159 standard, but not the ISO standard, also came with a Rationale document.
161 occasionally as "C90", from the dates of ratification. To select this
165 you want them to be errors rather than warnings). *Note Options
166 Controlling C Dialect: C Dialect Options.
169 Corrigenda published in 1994 and 1996. GCC does not support the
170 uncorrected version.
172 An amendment to the 1990 standard was published in 1995. This
174 otherwise concerned the library. This amendment is commonly known as
175 "AMD1"; the amended standard is sometimes known as "C94" or "C95". To
178 diagnostics).
181 9899:1999, and is commonly known as "C99". (While in development,
182 drafts of this standard version were referred to as "C9X".) GCC has
184 <http://gcc.gnu.org/c99status.html> for details. To select this
185 standard, use '-std=c99' or '-std=iso9899:1999'.
188 Corrigenda published in 2001, 2004 and 2007. GCC does not support the
189 uncorrected version.
192 2011 as ISO/IEC 9899:2011. (While in development, drafts of this
193 standard version were referred to as "C1X".) GCC has substantially
195 '-std=iso9899:2011'. A version with corrections integrated was prepared
199 options is the value of '__STDC_VERSION__'.
203 with '-std=c2x'.
206 rare occasions conflict with the C standard. *Note Extensions to the C
207 Language Family: C Extensions. Some features that are part of the C99
210 modes. Use of the '-std' options listed above disables these extensions
211 where they conflict with the C standard version selected. You may also
214 GNU extensions) or '-std=gnu11' (for C11 with GNU extensions).
217 '-std=gnu11'.
220 implementation. A "conforming hosted implementation" supports the whole
223 facilities: those in '<float.h>', '<limits.h>', '<stdarg.h>', and
224 '<stddef.h>'; since AMD1, also those in '<iso646.h>'; since C99, also
225 those in '<stdbool.h>' and '<stdint.h>'; and since C11, also those in
226 '<stdalign.h>' and '<stdnoreturn.h>'. In addition, complex types, added
227 in C99, are not required for freestanding implementations.
235 is through a function 'int main (void)' or 'int main (int, char *[])'.
238 example of a program running in a hosted environment.
242 implementation. By default, it acts as the compiler for a hosted
245 defined in the standard. To make it act as a conforming freestanding
249 library, with exceptions noted below. To build an OS kernel, you may
250 well still need to make your own arrangements for linking and startup.
251 *Note Options Controlling C Dialect: C Dialect Options.
255 freestanding implementations on all platforms. To use the facilities of
257 the GNU C library). *Note Standard Libraries: Standard Libraries.
260 'libgcc', but there are a few exceptions. GCC requires the freestanding
261 environment provide 'memcpy', 'memmove', 'memset' and 'memcmp'.
263 the 'trap' pattern, then GCC emits a call to 'abort'.
267 <http://gcc.gnu.org/readings.html>
273 2011 and 2014 revisions.
277 2003 (ISO/IEC 14882:2003). These standards are referred to as C++98 and
278 C++03, respectively. GCC implements the majority of C++98 ('export' is
279 a notable exception) and most of the changes in C++03. To select this
283 them to be errors rather than warnings).
287 referred to as C++0x. C++11 contains several changes to the C++
288 language, all of which have been implemented in GCC. For details see
289 <https://gcc.gnu.org/projects/cxx-status.html#cxx11>. To select this
290 standard in GCC, use the option '-std=c++11'.
294 sometimes referred to as C++1y. C++14 contains several further changes
295 to the C++ language, all of which have been implemented in GCC. For
296 details see <https://gcc.gnu.org/projects/cxx-status.html#cxx14>. To
297 select this standard in GCC, use the option '-std=c++14'.
300 published. This is referred to as C++17, and before publication was
301 often referred to as C++1z. GCC supports all the changes in the new
302 specification. For further details see
303 <https://gcc.gnu.org/projects/cxx-status.html#cxx1z>. Use the option
304 '-std=c++17' to select this variant of C++.
307 committee's web site at <http://www.open-std.org/jtc1/sc22/wg21/>.
311 otherwise GCC will allow some non-ISO C++ features as extensions. *Note
312 Warning Options::.
315 language that on rare occasions conflict with the C++ standard. *Note
316 Options Controlling C++ Dialect: C++ Dialect Options. Use of the '-std'
318 with the C++ standard version selected. You may also select an extended
322 (for C++17 with GNU extensions).
325 '-std=gnu++14'.
332 syntax. It has also support for a number of "Objective-C 2.0" language
335 in protocols. GCC supports Objective-C++ and features available in
336 Objective-C are also available in Objective-C++.
340 used on Apple systems. There are a number of differences documented in
341 this manual. The options '-fgnu-runtime' and '-fnext-runtime' allow you
344 runtime library.
346 There is no formal written standard for Objective-C or Objective-C++.
349 <http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf> is
350 the original NeXTstep document.
354 supported by GCC and is enabled with the option '-fobjc-exceptions'.
356 2.0 manuals from Apple.
364 keywords in protocols. You can disable all these Objective-C 2.0
367 GCC 4.0, and to produce an error if one of the new features is used.
369 GCC has currently no support for non-fragile instance variables.
373 …<https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjecti…
376 available online, see <http://gcc.gnu.org/readings.html>
381 As of the GCC 4.7.1 release, GCC supports the Go 1 language standard,
382 described at <https://golang.org/doc/go1>.
388 format as described in HSA Programmer's Reference Manual version 1.0.1.
390 HSAIL finalization extension for a gcc supported processor. HSA
392 <http://www.hsafoundation.com/standards/>.
397 GCC supports the D 2.0 programming language. The D language itself is
399 language specification, described at <https://dlang.org/spec/spec.html>.
405 conformance and compatibility of the Ada compiler.
408 supported by GNU Fortran.
411 File: gcc.info, Node: Invoking GCC, Next: C Implementation, Prev: Standards, Up: Top
417 assembly and linking. The "overall options" allow you to stop this
418 process at an intermediate stage. For example, the '-c' option says not
419 to run the linker. Then the output consists of object files output by
420 the assembler. *Note Options Controlling the Kind of Output: Overall
421 Options.
423 Other options are passed on to one or more stages of processing. Some
424 options control the preprocessor and others the compiler itself. Yet
426 documented here, since you rarely need to use any of them.
430 (usually C++), the explanation says so explicitly. If the description
432 that option with all supported languages.
436 specific version of GCC. When you compile C++ programs, you should
437 invoke GCC as 'g++' instead. *Note Compiling C++ Programs: Invoking
439 'g++' when compiling C++ programs.
441 The 'gcc' program accepts options and file names as operands. Many
443 options may _not_ be grouped: '-dv' is very different from '-d -v'.
445 You can mix options and other arguments. For the most part, the order
446 you use doesn't matter. Order does matter when you use several options
448 directories are searched in the order specified. Also, the placement of
449 the '-l' option is significant.
452 example, '-fmove-loop-invariants', '-Wformat' and so on. Most of these
454 '-fno-foo'. This manual documents only one of these two forms,
455 whichever one is not the default.
458 space or by the equals sign ('=') from the option name. Unless
459 documented otherwise, an argument can be either numeric or a string.
461 hexadecimal integers. Hexadecimal arguments must begin with the '0x'
462 prefix. Arguments to options that specify a size threshold of some sort
466 mebibyte, 'GB' and 'GiB' for gigabyte and gigibyte, and so on. Such
467 arguments are designated by BYTE-SIZE in the following text. Refer to
470 prefixes.
472 *Note Option Index::, for an index to GCC's options.
476 * Option Summary:: Brief list of all options, without explanations.
479 or preprocessed source.
480 * Invoking G++:: Compiling C++ programs.
481 * C Dialect Options:: Controlling the variant of C language compiled.
482 * C++ Dialect Options:: Variations on C++.
484 and Objective-C++.
486 be formatted.
488 * Static Analyzer Options:: More expensive warnings.
489 * Debugging Options:: Producing debuggable code.
491 * Instrumentation Options:: Enabling profiling and extra run-time error checking.
492 * Preprocessor Options:: Controlling header files and macro definitions.
493 Also, getting dependency information for Make.
494 * Assembler Options:: Passing options to the assembler.
495 * Link Options:: Specifying libraries and so on.
496 * Directory Options:: Where to find header files and libraries.
497 Where to find the compiler executable files.
499 and register usage.
501 debugging dumps.
503 specific processor variant.
504 * Spec Files:: How to pass switches to sub-processes.
505 * Environment Variables:: Env vars that affect GCC.
506 * Precompiled Headers:: Compiling a header once, and using it many times.
509 File: gcc.info, Node: Option Summary, Next: Overall Options, Up: Invoking GCC
514 Here is a summary of all the options, grouped by type. Explanations are
515 in the following sections.
518 *Note Options Controlling the Kind of Output: Overall Options.
520 -v -### --help[=CLASS[,...]] --target-help --version
527 *Note Options Controlling C Dialect: C Dialect Options.
541 *Note Options Controlling C++ Dialect: C++ Dialect Options.
553 -fnew-ttp-matching
588 Objective-C and Objective-C++ Dialect Options.
611 Message Formatting Options.
628 *Note Options to Request or Suppress Warnings: Warning Options.
763 *Note Options for Debugging Your Program: Debugging Options.
785 *Note Options that Control Optimization: Optimize Options.
879 *Note Program Instrumentation Options: Instrumentation Options.
888 -fasan-shadow-offset=NUMBER -fsanitize-sections=S1,S2,...
898 -finstrument-functions-exclude-function-list=SYM,SYM,...
899 -finstrument-functions-exclude-file-list=FILE,FILE,...
902 *Note Options Controlling the Preprocessor: Preprocessor Options.
922 *Note Passing Options to the Assembler: Assembler Options.
926 *Note Options for Linking: Link Options.
938 *Note Options for Directory Search: Directory Options.
949 *Note Options for Code Generation Conventions: Code Gen Options.
968 *Note GCC Developer Options: Developer Options.
1012 *Note Machine-Dependent Options: Submodel Options.
1390 -meb -mel -mmul.x -mno-crt0
1445 _PowerPC Options_ See RS/6000 and PowerPC Options.
1666 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx
1718 _zSeries Options_ See S/390 and zSeries Options.
1721 File: gcc.info, Node: Overall Options, Next: Invoking G++, Prev: Option Summary, Up: Invoking G…
1727 proper, assembly and linking, always in that order. GCC is capable of
1732 file.
1737 'FILE.c'
1738 C source code that must be preprocessed.
1740 'FILE.i'
1741 C source code that should not be preprocessed.
1743 'FILE.ii'
1744 C++ source code that should not be preprocessed.
1746 'FILE.m'
1747 Objective-C source code. Note that you must link with the
1748 'libobjc' library to make an Objective-C program work.
1750 'FILE.mi'
1751 Objective-C source code that should not be preprocessed.
1753 'FILE.mm'
1754 'FILE.M'
1755 Objective-C++ source code. Note that you must link with the
1756 'libobjc' library to make an Objective-C++ program work. Note that
1757 '.M' refers to a literal capital M.
1759 'FILE.mii'
1760 Objective-C++ source code that should not be preprocessed.
1762 'FILE.h'
1765 into an Ada spec (via the '-fdump-ada-spec' switch).
1767 'FILE.cc'
1768 'FILE.cp'
1769 'FILE.cxx'
1770 'FILE.cpp'
1771 'FILE.CPP'
1772 'FILE.c++'
1773 'FILE.C'
1774 C++ source code that must be preprocessed. Note that in '.cxx',
1775 the last two letters must both be literally 'x'. Likewise, '.C'
1776 refers to a literal capital C.
1778 'FILE.mm'
1779 'FILE.M'
1780 Objective-C++ source code that must be preprocessed.
1782 'FILE.mii'
1783 Objective-C++ source code that should not be preprocessed.
1785 'FILE.hh'
1786 'FILE.H'
1787 'FILE.hp'
1788 'FILE.hxx'
1789 'FILE.hpp'
1790 'FILE.HPP'
1791 'FILE.h++'
1792 'FILE.tcc'
1793 C++ header file to be turned into a precompiled header or Ada spec.
1795 'FILE.f'
1796 'FILE.for'
1797 'FILE.ftn'
1798 Fixed form Fortran source code that should not be preprocessed.
1800 'FILE.F'
1801 'FILE.FOR'
1802 'FILE.fpp'
1803 'FILE.FPP'
1804 'FILE.FTN'
1806 traditional preprocessor).
1808 'FILE.f90'
1809 'FILE.f95'
1810 'FILE.f03'
1811 'FILE.f08'
1812 Free form Fortran source code that should not be preprocessed.
1814 'FILE.F90'
1815 'FILE.F95'
1816 'FILE.F03'
1817 'FILE.F08'
1819 traditional preprocessor).
1821 'FILE.go'
1822 Go source code.
1824 'FILE.brig'
1825 BRIG files (binary representation of HSAIL).
1827 'FILE.d'
1828 D source code.
1830 'FILE.di'
1831 D interface file.
1833 'FILE.dd'
1834 D documentation code (Ddoc).
1836 'FILE.ads'
1840 generic, or subprogram renaming declaration). Such files are also
1841 called "specs".
1843 'FILE.adb'
1845 or package body). Such files are also called "bodies".
1847 'FILE.s'
1848 Assembler code.
1850 'FILE.S'
1851 'FILE.sx'
1852 Assembler code that must be preprocessed.
1855 An object file to be fed straight into linking. Any file name with
1856 no recognized suffix is treated this way.
1863 file name suffix). This option applies to all following input
1864 files until the next '-x' option. Possible values for LANGUAGE
1880 '-x' has not been used at all).
1884 options '-c', '-S', or '-E' to say where 'gcc' is to stop. Note that
1886 nothing at all.
1889 Compile or assemble the source files, but do not link. The linking
1890 stage simply is not done. The ultimate output is in the form of an
1891 object file for each source file.
1894 replacing the suffix '.c', '.i', '.s', etc., with '.o'.
1897 are ignored.
1900 Stop after the stage of compilation proper; do not assemble. The
1902 non-assembler input file specified.
1905 replacing the suffix '.c', '.i', etc., with '.s'.
1907 Input files that don't require compilation are ignored.
1910 Stop after the preprocessing stage; do not run the compiler proper.
1912 sent to the standard output.
1914 Input files that don't require preprocessing are ignored.
1917 Place output in file FILE. This applies to whatever sort of output
1919 file, an assembler file or preprocessed C code.
1922 in 'a.out', the object file for 'SOURCE.SUFFIX' in 'SOURCE.o', its
1923 assembler file in 'SOURCE.s', a precompiled header file in
1924 'SOURCE.SUFFIX.gch', and all preprocessed C source on standard
1925 output.
1929 stages of compilation. Also print the version number of the
1931 proper.
1935 quoted unless they contain only alphanumeric characters or './-_'.
1937 command lines.
1941 options understood by 'gcc'. If the '-v' option is also specified
1944 accept. If the '-Wextra' option has also been specified (prior to
1946 documentation associated with them are also displayed.
1950 command-line options for each tool. For some targets extra
1951 target-specific information may also be printed.
1953 '--help={CLASS|[^]QUALIFIER}[,...]'
1956 classes and qualifiers. These are the supported classes:
1960 compiler.
1964 produced by the compiler.
1967 Display target-specific options. Unlike the '--target-help'
1969 assembler are not displayed. This is because those tools do
1970 not currently support the extended '--help=' syntax.
1973 Display the values recognized by the '--param' option.
1978 GCC. If an option is supported by all languages, one needs to
1979 select 'common' class.
1982 Display the options that are common to all languages.
1987 Display only those options that are undocumented.
1992 '--help=target'.
1996 word following the original option, such as: '-o output-file'.
2005 (i.e., ones that are either on or off and that do not take an
2011 qualifiers.
2014 restricts the output so much that there is nothing to display. One
2016 TARGET. For example, to display all the target-specific
2021 The '--help=' option can be repeated on the command line. Each
2023 those that have already been displayed. If '--help' is also
2025 over any '--help=' option.
2029 changed. Instead of describing the displayed options, an
2032 at the point where the '--help=' option is used).
2056 Display the version number and copyrights of the invoked GCC.
2060 the compiler returns a non-success return code. If you specify
2063 indication. The C, C++, and Fortran front ends return 4 if an
2064 internal compiler error is encountered.
2068 various stages of compilation. This fails to work on some systems
2070 assembler has no trouble.
2076 'as', 'ld', etc. More than one '-specs=FILE' can be specified on
2078 right. *Note Spec Files::, for information about the format of the
2079 FILE.
2082 Invoke all subcommands under a wrapper program. The name of the
2084 list.
2086 gcc -c t.c -wrapper gdb,--args
2089 invocation of 'cc1' is 'gdb --args cc1 ...'.
2094 resided in directory 'NEW' instead. Specifying this option is
2096 options. This can be used to make reproducible builds that are
2097 location independent. See also '-fmacro-prefix-map' and
2098 '-fdebug-prefix-map'.
2100 '-fplugin=NAME.so'
2101 Load the plugin code in file NAME.so, assumed to be a shared object
2102 to be dlopen'd by the compiler. The base name of the shared object
2104 parsing (See '-fplugin-arg-NAME-KEY=VALUE' below). Each plugin
2105 should define the callback functions specified in the Plugins API.
2109 called NAME.
2113 specs. *Note (gnat_ugn)Generating Ada Bindings for C and C++
2114 headers::, which provides detailed documentation on this feature.
2118 specs as child units of parent UNIT.
2122 declarations in FILE. This generates Go 'const', 'type', 'var',
2124 a Go interface to code written in some other language.
2127 Read command-line options from FILE. The options read are inserted
2128 in place of the original @FILE option. If FILE does not exist, or
2130 removed.
2132 Options in FILE are separated by whitespace. A whitespace
2134 option in either single or double quotes. Any character (including
2136 included with a backslash. The FILE may itself contain additional
2137 @FILE options; any such options will be processed recursively.
2140 File: gcc.info, Node: Invoking G++, Next: C Dialect Options, Prev: Overall Options, Up: Invokin…
2145 C++ source files conventionally use one of the suffixes '.C', '.cc',
2146 '.cpp', '.CPP', '.c++', '.cp', or '.cxx'; C++ header files often use
2147 '.hh', '.hpp', '.H', or (for shared template code) '.tcc'; and
2148 preprocessed C++ files use the suffix '.ii'. GCC recognizes files with
2151 'gcc').
2153 However, the use of 'gcc' does not add the C++ library. 'g++' is a
2155 C++ library. It treats '.c', '.h' and '.i' files as C++ source files
2156 instead of C source files unless '-x' is used. This program is also
2157 useful when precompiling a C header file with a '.h' extension for use
2158 in C++ compilations. On many systems, 'g++' is also installed with the
2159 name 'c++'.
2164 languages; or options that are meaningful only for C++ programs. *Note
2166 options for languages related to C. *Note Options Controlling C++
2168 meaningful only for C++ programs.
2171 File: gcc.info, Node: C Dialect Options, Next: C++ Dialect Options, Prev: Invoking G++, Up: Inv…
2181 In C mode, this is equivalent to '-std=c90'. In C++ mode, it is
2182 equivalent to '-std=c++98'.
2188 you are using. It also enables the undesirable and rarely used ISO
2189 trigraph feature. For the C compiler, it disables recognition of
2190 C++ style '//' comments as well as the 'inline' keyword.
2193 '__typeof__' continue to work despite '-ansi'. You would not want
2196 with '-ansi'. Alternate predefined macros such as '__unix__' and
2197 '__vax__' are also available, with or without '-ansi'.
2200 gratuitously. For that, '-Wpedantic' is required in addition to
2201 '-ansi'. *Note Warning Options::.
2204 is used. Some header files may notice this macro and refrain from
2207 programs that might use these names for other things.
2211 functions when '-ansi' is used. *Note Other built-in functions
2213 affected.
2216 Determine the language standard. *Note Language Standards
2218 versions. This option is currently only supported when compiling C
2219 or C++.
2223 'gnu++98'. When a base standard is specified, the compiler accepts
2225 extensions that do not contradict it. For example, '-std=c90'
2229 the middle term of a '?:' expression. On the other hand, when a
2232 meaning of the base standard. As a result, some strict-conforming
2233 programs may be rejected. The particular standard is used by
2235 that version of the standard. For example '-std=gnu90 -Wpedantic'
2237 does not.
2245 conflict with ISO C90 are disabled). Same as '-ansi' for C
2246 code.
2249 ISO C90 as modified in amendment 1.
2255 ISO C99. This standard is substantially completely supported,
2257 relating to optional C99 features from Annexes F and G). See
2258 <http://gcc.gnu.org/c99status.html> for more information. The
2259 names 'c9x' and 'iso9899:199x' are deprecated.
2264 ISO C11, the 2011 revision of the ISO C standard. This
2268 Annexes K (Bounds-checking interfaces) and L (Analyzability).
2269 The name 'c1x' is deprecated.
2276 2018). This standard is same as C11 except for corrections of
2279 same extent as C11.
2283 development. The support for this version is experimental and
2284 incomplete.
2288 GNU dialect of ISO C90 (including some C99 features).
2292 GNU dialect of ISO C99. The name 'gnu9x' is deprecated.
2296 GNU dialect of ISO C11. The name 'gnu1x' is deprecated.
2300 GNU dialect of ISO C17. This is the default for C code.
2304 development, plus GNU extensions. The support for this
2305 version is experimental and incomplete.
2310 and some additional defect reports. Same as '-ansi' for C++
2311 code.
2315 GNU dialect of '-std=c++98'.
2319 The 2011 ISO C++ standard plus amendments. The name 'c++0x'
2320 is deprecated.
2324 GNU dialect of '-std=c++11'. The name 'gnu++0x' is
2325 deprecated.
2329 The 2014 ISO C++ standard plus amendments. The name 'c++1y'
2330 is deprecated.
2334 GNU dialect of '-std=c++14'. This is the default for C++
2335 code. The name 'gnu++1y' is deprecated.
2339 The 2017 ISO C++ standard plus amendments. The name 'c++1z'
2340 is deprecated.
2344 GNU dialect of '-std=c++17'. The name 'gnu++1z' is
2345 deprecated.
2349 The next revision of the ISO C++ standard, planned for 2020.
2351 change in incompatible ways in future releases.
2355 GNU dialect of '-std=c++20'. Support is highly experimental,
2357 future releases.
2361 semantics for 'inline' functions when in C99 mode. *Note An Inline
2362 Function is As Fast As a Macro: Inline. Using this option is
2364 all inline functions (*note Function Attributes::).
2367 semantics for 'inline' when in C99 or gnu99 mode (i.e., it
2368 specifies the default behavior). This option is not supported in
2369 '-std=c90' or '-std=gnu90' mode.
2373 effect for 'inline' functions. *Note (cpp)Common Predefined
2374 Macros::.
2380 evaluated to the precision and range of that type. These new
2383 'FLT_EVAL_METHOD'. As such, code conforming to C11 may not have
2384 been written expecting the possibility of the new values.
2389 18661-3.
2391 STYLE is either 'c11' or 'ts-18661-3' as appropriate.
2394 similar) is '-fpermitted-flt-eval-methods=c11'. The default when
2396 '-fpermitted-flt-eval-methods=ts-18661-3'.
2401 those in header files. This option is silently ignored in any
2402 language other than C.
2409 definition ('C' or 'F', respectively, in the following character).
2412 after the declaration.
2415 Accept variadic functions without named parameters.
2418 useful as it is not possible to read the arguments. This is only
2419 supported for C as this construct is allowed by C++.
2423 code can use these words as identifiers. You can use the keywords
2424 '__asm__', '__inline__' and '__typeof__' instead. '-ansi' implies
2425 '-fno-asm'.
2428 and 'inline' are standard keywords. You may want to use the
2429 '-fno-gnu-keywords' flag instead, which has the same effect. In
2432 in ISO C99.
2437 '__builtin_' as prefix. *Note Other built-in functions provided by
2441 do not have an ISO standard meaning.
2446 calls to 'memcpy' may become inline copy loops. The resulting code
2450 different library. In addition, when a function is recognized as a
2454 calls to that function. For example, warnings are given with
2456 'strlen' is known not to modify global memory.
2459 FUNCTION is disabled. FUNCTION must not begin with '__builtin_'.
2461 this option is ignored. There is no corresponding
2471 Enable parsing of function definitions marked with '__GIMPLE'.
2473 passes.
2477 Assert that compilation targets a hosted environment. This implies
2478 '-fbuiltin'. A hosted environment is one in which the entire
2480 type of 'int'. Examples are nearly everything except a kernel.
2481 This is equivalent to '-fno-freestanding'.
2485 Assert that compilation targets a freestanding environment. This
2486 implies '-fno-builtin'. A freestanding environment is one in which
2488 necessarily be at 'main'. The most obvious example is an OS
2489 kernel. This is equivalent to '-fno-hosted'.
2492 of freestanding and hosted environments.
2496 '!$acc' in Fortran. When '-fopenacc' is specified, the compiler
2498 Programming Interface v2.6 <https://www.openacc.org>. This option
2500 support for '-pthread'.
2504 that do not explicitly specify. The GEOM value is a triple of
2505 ':'-separated sizes, in order 'gang', 'worker' and, 'vector'. A
2506 size can be omitted, to use a target-specific default value.
2510 '!$omp' in Fortran. When '-fopenmp' is specified, the compiler
2512 Interface v4.5 <https://www.openmp.org>. This option implies
2514 for '-pthread'. '-fopenmp' implies '-fopenmp-simd'.
2518 C/C++ and '!$omp' in Fortran. Other OpenMP directives are ignored.
2523 ABI specification document (Revision 1.1, May 6 2009). This is an
2525 of GCC, as the official specification changes. Please note that
2526 not all architectures are supported for this feature.
2530 libitm.
2533 non-call exceptions ('-fnon-call-exceptions').
2536 Accept some non-standard constructs used in Microsoft header files.
2539 to previous types declarations.
2547 accepted with this option. *Note Unnamed struct/union fields
2548 within structs/unions: Unnamed Fields, for details.
2551 using ms-abi.
2554 Accept some non-standard constructs used in Plan 9 code.
2559 anonymous fields declared using a typedef. *Note Unnamed
2561 details. This is only supported for C, not C++.
2565 and third arguments. The value of such an expression is void.
2566 This option is not supported for C++.
2570 of elements and/or incompatible element types. This option should
2571 not be used for new code.
2574 Let the type 'char' be unsigned, like 'unsigned char'.
2576 Each kind of machine has a default for what 'char' should be. It
2578 default.
2581 'unsigned char' when it depends on the signedness of an object.
2584 machines they were written for. This option, and its inverse, let
2585 you make such a program work with the opposite default.
2589 like one of those two.
2592 Let the type 'char' be signed, like 'signed char'.
2595 negative form of '-funsigned-char'. Likewise, the option
2596 '-fno-signed-char' is equivalent to '-funsigned-char'.
2603 when the declaration does not use either 'signed' or 'unsigned'.
2605 the basic integer types such as 'int' are signed types.
2609 the specified endianness. The accepted values are 'big-endian',
2611 target (the default). This option is not supported for C++.
2615 specified endianness is not the native endianness of the target.
2618 File: gcc.info, Node: C++ Dialect Options, Next: Objective-C and Objective-C++ Dialect Options, …
2624 for C++ programs. You can also use most of the GNU compiler options
2625 regardless of what language your program is in. For example, you might
2626 compile a file 'firstClass.C' like this:
2628 g++ -g -fstrict-enums -O -c firstClass.C
2632 GCC.
2635 relevant for C++ programs. *Note Options Controlling C Dialect: C
2636 Dialect Options.
2641 Use version N of the C++ ABI. The default is version 0.
2644 ABI specification. Therefore, the ABI obtained using version 0
2645 will change in different versions of G++ as ABI bugs are fixed.
2648 3.2.
2651 3.4, and was the default through G++ 4.9.
2654 template argument.
2657 mangling for vector types.
2662 another parameter.
2667 scope function used as a template argument.
2671 argument scope.
2675 function-cv-qualifiers.
2678 of 'nullptr_t'.
2682 convention attributes (e.g. 'stdcall').
2685 sizeof... expressions and operator names. For multiple entities
2688 twelfth occurrence. It also implies '-fnew-inheriting-ctors'.
2692 with only deleted copy/move constructors. It accidentally changes
2694 and a trivial move constructor.
2697 change in version 12.
2700 of the nullptr expression.
2702 See also '-Wabi'.
2707 defining a symbol with an incorrect mangled name. This switch
2708 specifies which ABI version to use for the alias.
2711 compatibility). If another ABI version is explicitly selected,
2712 this defaults to 0. For compatibility with GCC versions 3.2
2713 through 4.9, use '-fabi-compat-version=2'.
2716 used for compatibility aliases. If this option is provided along
2718 used for the warning.
2721 Turn off all access checking. This switch is mainly useful for
2722 working around bugs in the access control code.
2726 than 'void* ::operator new(std::size_t)' provides. A numeric
2729 will need to override the default of 'alignof(std::max_align_t)'.
2731 This flag is enabled by default for '-std=c++17'.
2735 Enable support for 'char8_t' as adopted for C++2a. This includes
2739 '__cpp_char8_t' and '__cpp_lib_char8_t' feature test macros.
2755 template<typename T, T...> int operator""_udl3();
2759 introduces incompatibilities with ISO C++11 and later standards.
2761 is ill-formed when '-fchar8_t' is specified.
2779 before attempting to modify the storage allocated. This check is
2783 this option. In all other cases, when 'operator new' has a
2785 by throwing 'std::bad_alloc'. See also 'new (nothrow)'.
2790 Extensions for Concepts Technical Specification, ISO 19217 (2015).
2793 standard, so '-fconcepts' defaults to on. But the standard
2796 the standard can still be enabled by '-fconcepts-ts'.
2800 functions to N. A limit is needed to detect endless recursion
2801 during constant expression evaluation. The minimum specified by
2802 the standard is 512.
2806 constexpr functions that will be cached to N. This is a heuristic
2809 large from highly recursive evaluations). The default is 8. Very
2812 which value works best for you.
2816 functions to N. A limit is needed to detect infinite loops during
2817 constant expression evaluation. The default is 262144 (1<<18).
2821 evaluation. Even when number of iterations of a single loop is
2826 evaluation might take too long. The default is 33554432 (1<<25).
2829 Enable support for the C++ coroutines extension (experimental).
2834 same type. Specifying this option disables that optimization, and
2835 forces G++ to call the copy constructor in all cases. This option
2837 would be expanded inline.
2840 this option still affects trivial member functions.
2844 specifications at run time. This option violates the C++ standard,
2846 like defining 'NDEBUG'. This does not give user code permission to
2849 an unexpected exception results in undefined behavior at run time.
2854 'threadprivate' variables to have dynamic (runtime) initialization.
2856 function that performs any necessary initialization. When the use
2860 the variable doesn't actually need dynamic initialization. If the
2866 '-fno-extern-tls-init' option.
2869 '-fextern-tls-init'. On targets that do not support symbol
2870 aliases, the default is '-fno-extern-tls-init'.
2874 word as an identifier. You can use the keyword '__typeof__'
2875 instead. This option is implied by the strict ISO C++ dialects:
2876 '-ansi', '-std=c++98', '-std=c++11', etc.
2880 implicitly (i.e. by use); only emit code for explicit
2881 instantiations. If you use this option, you must take care to
2883 instantiations to avoid getting undefined symbols at link time.
2884 *Note Template Instantiation::, for more information.
2888 either. The default is to handle inlines differently so that
2890 explicit instantiations.
2894 controlled by '#pragma implementation'. This causes linker errors
2895 if these functions are not inlined everywhere they are called.
2900 non-standard syntax.
2904 inheritance. This is part of C++17 but also considered to be a
2905 Defect Report against C++11 and C++14. This flag is enabled by
2906 default unless '-fabi-version=10' or lower is specified.
2908 '-fnew-ttp-matching'
2912 parameter with fewer template parameters. This flag is enabled by
2913 default for '-std=c++17'.
2917 ANSI/ISO C. These include 'ffs', 'alloca', '_exit', 'index',
2918 'bzero', 'conjf', and other related functions.
2923 overhead relative to a function with no exception specification.
2927 optimized away. The semantic effect is that an exception thrown
2929 call to 'terminate' rather than 'unexpected'.
2933 'compl', 'not', 'or' and 'xor' as synonyms as keywords.
2937 to issue. Currently, the only such diagnostic issued by G++ is the
2938 one for a name having multiple meanings within a class.
2942 warnings. Thus, using '-fpermissive' allows some nonconforming
2943 code to compile.
2949 typenames in the signature (e.g. 'void f(T) [with T = int]' rather
2950 than 'void f(int)') so that it's clear which template is involved.
2953 default template arguments for that template. If either of these
2955 than easier, you can use '-fno-pretty-templates' to disable them.
2960 ('dynamic_cast' and 'typeid'). If you don't use those parts of the
2961 language, you can save some space by using this flag. Note that
2963 as needed. The 'dynamic_cast' operator can still be used for casts
2964 that do not require run-time type information, i.e. casts to 'void
2965 *' or to unambiguous base classes.
2968 '-fno-rtti' may not work. For example, programs may fail to link
2970 compiled with '-frtti'.
2976 as introduced in C++14. This is useful for user-defined
2978 of the object to make deallocation faster. Enabled by default
2979 under '-std=c++14' and above. The flag '-Wsized-deallocation'
2980 warns about places that might want to add a definition.
2987 the enumerators). This assumption may not be valid if the program
2989 type.
2994 order, as adopted for C++17. Enabled by default with '-std=c++17'.
2997 '-std=c++17'.
3001 warning or error to N. The default value is 10.
3004 Set the maximum instantiation depth for template classes to N. A
3006 endless recursions during template class instantiation. ANSI/ISO
3008 than 17 (changed to 1024 in C++11). The default value is 900, as
3010 situations.
3014 ABI for thread-safe initialization of local statics. You can use
3016 to be thread-safe.
3020 the '__cxa_atexit' function rather than the 'atexit' function.
3023 '__cxa_atexit'.
3026 Don't use the '__cxa_get_exception_ptr' runtime routine. This
3028 if the runtime routine is not available.
3033 two functions are taken in different shared objects.
3038 indirection when used within the DSO. Enabling this option can
3041 library makes heavy use of templates.
3046 that the function is defined in only one shared object.
3049 the effect of the switch for that method. For example, if you do
3051 mark it as having default visibility. Marking the enclosing class
3052 with explicit visibility has no effect.
3056 boundary. *Note Template Instantiation::.
3060 linkage model compatible with that of Microsoft Visual Studio.
3064 1. It sets the default visibility to 'hidden', like
3065 '-fvisibility=hidden'.
3067 2. Types, but not their members, are not hidden by default.
3069 3. The One Definition Rule is relaxed for types without explicit
3072 permitted when this option is not used.
3075 those classes that are intended to be externally visible.
3077 accidentally, on the Visual Studio behavior.
3083 different shared objects may not compare equal. When this flag is
3085 name differently.
3089 linker. By default, G++ uses weak symbols if they are available.
3091 end-users; it results in inferior code and has no benefits. This
3092 option may be removed in a future release of G++.
3096 suffixes as GNU extensions. When this option is turned off these
3098 suffixes. This is on by default for all pre-C++11 dialects and all
3100 '-std=gnu++14'. This option is off by default for ISO C++11
3101 onwards ('-std=c++11', ...).
3105 to C++, but do still search the other standard directories. (This
3106 option is used when building the C++ library.)
3112 have that ABI tag. See *note C++ Attributes:: for more information
3113 about ABI tags.
3117 expression. This usage was deprecated in C++2a. However, a comma
3118 expression wrapped in '( )' is not deprecated. Example:
3125 Enabled by default with '-std=c++2a'.
3130 nor public static member functions. Also warn if there are no
3132 function that isn't a constructor or destructor.
3136 has virtual functions and non-virtual destructor. It is unsafe to
3138 class if the base class does not have a virtual destructor. This
3139 warning is enabled by '-Wall'.
3144 copy constructor or copy assignment operator, in C++11 and up.
3145 This warning is enabled by '-Wextra'. With
3147 user-provided destructor.
3151 to result in dangling pointers. Since the underlying array for an
3154 end of the array's lifetime. For example:
3159 a dangling pointer.
3163 the 'initializer_list' in the heap has a dangling pointer.
3169 'initializer_list' variable has a dangling pointer.
3176 int i = li.begin()[0] // undefined behavior
3182 the end of the variable declaration statement.
3186 ud-suffix which does not begin with an underscore. As a conforming
3189 uses formatting macros from '<inttypes.h>'. For example:
3192 #include <inttypes.h>
3193 #include <stdio.h>
3201 token.
3205 begin with an underscore. Literal suffix identifiers that don't
3206 begin with an underscore are reserved for future standardization.
3208 These warnings are enabled by default.
3212 by default, as required by the standard. A narrowing conversion
3215 the diagnostic. Note that this does not affect the meaning of
3217 ill-formed in SFINAE contexts.
3220 prohibited by C++11 occurs within '{ }', e.g.
3224 This flag is included in '-Wall' and '-Wc++11-compat'.
3229 specification (i.e. 'throw()' or 'noexcept') but is known by the
3230 compiler to never throw an exception.
3234 changes the mangled name of a symbol relative to C++14. Enabled by
3235 '-Wabi' and '-Wc++17-compat'.
3244 'f<void(*)()noexcept>'.
3251 or encapsulation, or corrupt virtual table pointers. Modifying the
3253 member functions of the class. For example, the call to 'memset'
3255 and is, therefore, diagnosed. The safe way to either initialize or
3258 available.
3261 The '-Wclass-memaccess' option is enabled by '-Wall'. Explicitly
3264 the warning.
3271 or base class. This warning is automatically enabled if '-Weffc++'
3272 is specified.
3277 extension. The use of the 'register' keyword as storage class
3278 specifier has been deprecated in C++11 and removed in C++17.
3279 Enabled by default with '-std=c++17'.
3283 not match the order in which they must be executed. For instance:
3293 that effect. This warning is enabled by '-Wall'.
3297 elision. A typical scenario when copy elision can occur is when
3301 the function return type.
3304 ...
3309 ...
3313 But in this example, the 'std::move' call prevents copy elision.
3315 This warning is enabled by '-Wall'.
3320 'std::move' call. This happens because the compiler is forced to
3322 as returning a local variable, where copy elision isn't applicable.
3326 ...
3330 ...
3334 Here, the 'std::move' call is redundant. Because G++ implements
3338 ...
3341 ...
3346 ...
3352 rvalue.
3354 This warning is enabled by '-Wextra'.
3359 eliminated without causing an ambiguity. For example:
3372 the anonymous namespace or depends on a type with no linkage. If a
3375 meaning of B is different in each translation unit. If A only
3378 anonymous namespace as well. The compiler doesn't give this
3379 warning for types defined in the main .C file, as those are
3380 unlikely to have multiple definitions. '-Wsubobject-linkage' is
3381 enabled by default.
3388 classes with dynamically-allocated memory.
3390 * Prefer initialization to assignment in constructors.
3392 * Have 'operator=' return a reference to '*this'.
3395 object.
3398 decrement operators.
3400 * Never overload '&&', '||', or ','.
3403 the effective C++ recommendations. However, the check is extended
3405 non-polymorphic bases classes too.
3409 filter out those warnings.
3412 Warn about the use of an uncasted 'NULL' as sentinel. When
3414 defined to '__null'. Although it is a null pointer constant rather
3416 pointer. But this use is not portable across different compilers.
3420 within a template. In very old versions of GCC that predate
3425 and is enabled by default.
3429 within a C++ program. The new-style casts ('dynamic_cast',
3431 vulnerable to unintended effects and much easier to search for.
3435 base class. For example, in:
3450 fails to compile.
3454 function to a plain pointer.
3459 type of the same size. Previous versions of G++ tried to preserve
3460 unsignedness, but the standard mandates the current behavior.
3463 Warn when a primary template declaration is encountered. Some
3465 that rule. The warning is inactive inside a system header file,
3466 such as the STL, so one can still use the STL. One may also
3467 instantiate or specialize templates.
3473 provided.
3476 list of 'draw' triggers the warning. To avoid it, either remove
3478 match its definition.
3486 the example above shows. The '-Wmismatched-tags' option is
3487 intended to help achieve a consistent style of class declarations.
3491 class-keys. The option can be used either on its own or in
3492 conjunction with '-Wredundant-tags'.
3495 Warn when a class is defined with multiple direct base classes.
3497 used to enforce that rule. The warning is inactive inside a system
3498 header file, such as the STL, so one can still use the STL. One may
3499 also define classes that indirectly use multiple inheritance.
3502 Warn when a class is defined with a virtual direct base class.
3504 used to enforce that rule. The warning is inactive inside a system
3505 header file, such as the STL, so one can still use the STL. One may
3506 also define classes that indirectly use virtual inheritance.
3510 non-trivial C++11 move assignment operator. This is dangerous
3513 the moved-from state. If the move assignment operator is written
3515 disabled.
3518 Warn when a namespace definition is opened. Some coding rules
3519 disallow namespaces, and this may be used to enforce that rule.
3521 STL, so one can still use the STL. One may also use using
3522 directives and qualified names.
3526 result in a call to 'terminate'.
3531 conversion function will never be called.
3534 Warn about deprecated uses of the 'volatile' qualifier. This
3541 bindings of a 'volatile'-qualified type. This usage was deprecated
3542 in C++20.
3544 Enabled by default with '-std=c++2a'.
3547 Warn when a literal '0' is used as null pointer constant. This can
3548 be useful to facilitate the conversion to 'nullptr' in C++11.
3553 allocation function without an explicit alignment parameter. This
3554 option is enabled by '-Wall'.
3558 functions.
3564 of the object. For example, the placement new expression below is
3566 in a buffer only 64 bytes large.
3569 This warning is enabled by default.
3572 This is the default warning level of '-Wplacement-new'. At
3575 compatibility with legacy code. For example, the following
3578 it writes past the end of the one-element array.
3589 constructed. While the previous example would be diagnosed,
3591 extension to avoid the warning at level 2.
3598 Warn about catch handlers that do not catch via reference. With
3600 polymorphic class types that are caught by value. With
3602 value. With '-Wcatch-value=3' warn about all types that are not
3603 caught by reference. '-Wcatch-value' is enabled by '-Wall'.
3606 Warn for conditionally-supported (C++11 [intro.defs]) constructs.
3610 cause undefined behavior at runtime. This warning is enabled by
3611 default.
3615 definitions.
3619 a class derived from it due to ambiguity. The warning is enabled
3620 by default. Note that the warning for ambiguous virtual bases is
3621 enabled by the '-Wextra' option.
3631 warning is on by default because the ellipsis is not inherited.
3635 type. According to the 2014 ISO C++ standard, applying 'offsetof'
3636 to a non-standard-layout type is undefined. In existing C++
3638 results. This flag is for users who are aware that they are
3640 the warning about it.
3643 of the C++ standard.
3653 or vice versa. Enabled by '-Wextra' along with
3654 '-fsized-deallocation'.
3659 specifier, or, if possible, declared in an anonymous namespace.
3661 calls. This warning is more effective with link-time optimization,
3663 complete.
3669 the 'final' specifier. This warning is more effective with
3671 hierarchy graph is more complete. It is recommended to first
3673 with new annotations.
3677 the 'override' keyword.
3680 Warn when an expression is casted to its own type.
3683 Do not warn for conversions between 'NULL' and non-pointer types.
3684 '-Wconversion-null' is enabled by default.
3687 File: gcc.info, Node: Objective-C and Objective-C++ Dialect Options, Next: Diagnostic Message For…
3693 languages themselves. *Note Language Standards Supported by GCC:
3694 Standards, for references.)
3697 meaningful for Objective-C and Objective-C++ programs. You can also use
3698 most of the language-independent GNU compiler options. For example, you
3699 might compile a file 'some_class.m' like this:
3701 gcc -g -fgnu-runtime -O -c some_class.m
3705 language supported by GCC.
3709 front-end (e.g., '-Wtraditional'). Similarly, Objective-C++
3710 compilations may use C++-specific options (e.g., '-Wabi').
3717 literal string specified with the syntax '@"..."'. The default
3720 below). The '-fconstant-cfstrings' option, if also present,
3721 overrides the '-fconstant-string-class' setting and cause '@"..."'
3722 literals to be laid out as constant CoreFoundation strings.
3726 runtime. This is the default for most types of systems.
3729 Generate output compatible with the NeXT runtime. This is the
3730 default for NeXT-based systems, including Darwin and Mac OS X. The
3732 is used.
3737 not 'nil'. This allows for more efficient entry points in the
3738 runtime to be used. This option is only available in conjunction
3739 with the NeXT runtime and ABI version 0 or 1.
3742 Use version N of the Objective-C ABI for the selected runtime.
3743 This option is currently supported only for the NeXT runtime. In
3745 support for properties and other Objective-C 2.0 additions.
3747 properties and other Objective-C 2.0 additions. Version 2 is the
3748 modern (64-bit) ABI. If nothing is specified, the default is
3750 machines.
3754 is a C++ object with a non-trivial default constructor. If so,
3755 synthesize a special '- (id) .cxx_construct' instance method which
3757 variables, in order, and then return 'self'. Similarly, check if
3760 .cxx_destruct' method which runs all such default destructors, in
3761 reverse order.
3763 The '- (id) .cxx_construct' and '- (void) .cxx_destruct' methods
3766 superclasses. It is the responsibility of the Objective-C runtime
3767 to invoke all such methods in an object's inheritance hierarchy.
3768 The '- (id) .cxx_construct' methods are invoked by the runtime
3770 .cxx_destruct' methods are invoked immediately before the runtime
3771 deallocates an object instance.
3774 later has support for invoking the '- (id) .cxx_construct' and '-
3775 (void) .cxx_destruct' methods.
3778 Allow fast jumps to the message dispatcher. On Darwin this is
3779 accomplished via the comm page.
3783 Objective-C, similar to what is offered by C++. This option is
3785 '@catch', '@finally' and '@synchronized'. This option is available
3787 in conjunction with the NeXT runtime on Mac OS X 10.2 and earlier).
3791 programs. This option is only available with the NeXT runtime; the
3793 does not require special compiler flags.
3797 receiver in method invocations before doing the actual method call.
3798 This is the default and can be disabled using '-fno-objc-nilcheck'.
3800 no matter what this flag is set to. Currently this flag does
3802 runtime ABI, is used.
3806 recognized by GCC 4.0. This only affects the Objective-C additions
3809 flags. When this option is used with the Objective-C or
3811 recognized by GCC 4.0 is rejected. This is useful if you need to
3813 versions of GCC.
3818 time instead. This is used in conjunction with the
3821 execution, without the need to restart the program itself.
3823 conjunction with the NeXT runtime on Mac OS X 10.3 and later.
3827 replaces calls to 'objc_getClass("...")' (when the name of the
3829 get initialized at load time, which improves run-time performance.
3831 causes calls to 'objc_getClass("...")' to be retained. This is
3833 class implementations to be modified during program execution. The
3835 'objc_get_class("...")' regardless of command-line options.
3840 they're declared in. This can lead to shadowing between instance
3842 class method or globally with the same name. Specifying the
3844 variable shadowing issues.
3849 access modifier directives default to the specified visibility.
3853 to a file named 'SOURCENAME.decl'.
3857 garbage collector.
3861 semantics specified.
3866 class. The default behavior is to issue a warning for every method
3868 implementation is inherited from the superclass. If you use the
3871 them.
3875 are found during compilation. The check is performed on the list
3876 of methods in the final stage of compilation. Additionally, a
3878 '@selector(...)' expression, and a corresponding method for that
3879 selector has been found during compilation. Because these checks
3883 or because the '-fsyntax-only' option is being used.
3888 message using this selector to a receiver of type 'id' or 'Class'.
3891 that share the same size and alignment.
3894 Warn if a '@selector(...)' expression referring to an undeclared
3895 selector is found. A selector is considered undeclared if no
3896 method with that name has been declared before the '@selector(...)'
3898 declaration, or implicitly in an '@implementation' section. This
3899 option always performs its checks as soon as a '@selector(...)'
3901 the final stage of compilation. This also enforces the coding
3903 being used.
3907 by value, if any.
3910 File: gcc.info, Node: Diagnostic Message Formatting Options, Next: Warning Options, Prev: Object…
3916 the output device's aspect (e.g. its width, ...). You can use the
3918 diagnostic messages, e.g. how many characters per line, how often source
3919 location information should be reported. Note that some language front
3920 ends may not honor these options.
3924 characters. If N is zero, then no line-wrapping is done; each
3925 error message appears on a single line. This is the default for
3926 all front ends.
3930 function/type/variable attribute. It does not however affect the
3931 'pragma GCC warning' and 'pragma GCC error' pragmas.
3934 Only meaningful in line-wrapping mode. Instructs the diagnostic
3938 (as prefix) again, over and over, in subsequent continuation lines.
3939 This is the default behavior.
3942 Only meaningful in line-wrapping mode. Instructs the diagnostic
3945 a message which is too long to fit on a single line.
3949 Use color in diagnostics. WHEN is 'never', 'always', or 'auto'.
3953 otherwise. 'auto' makes GCC use color only when the standard error
3954 is a terminal, and when not executing in an emacs shell. The forms
3957 respectively.
3959 The colors are defined by the environment variable 'GCC_COLORS'.
3961 Graphic Rendition (SGR) substrings. SGR commands are interpreted
3962 by the terminal or terminal emulator. (See the section in the
3964 meanings as character attributes.) These substring values are
3966 semicolons. Common values to concatenate include '1' for bold, '4'
3973 '48;5;255' for 88-color and 256-color modes background colors.
3981 cyan, '32' is green, '34' is blue, '01' is bold, and '31' is red.
3982 Setting 'GCC_COLORS' to the empty string disables colors.
3983 Supported capabilities are as follows.
3986 SGR substring for error: markers.
3989 SGR substring for warning: markers.
3992 SGR substring for note: markers.
3998 interprocedural calls and returns.
4001 SGR substring for first additional range.
4004 SGR substring for second additional range.
4008 'file:line:column' etc.
4011 SGR substring for information printed within quotes.
4015 or replaced.
4018 SGR substring for fix-it hints suggesting text to be deleted.
4021 SGR substring for filename headers within generated patches.
4025 patches.
4028 SGR substring for deleted lines within generated patches.
4031 SGR substring for inserted lines within generated patches.
4035 template arguments in the C++ frontend.
4038 Use escape sequences to embed URLs in diagnostics. For example,
4041 documentation of that option.
4043 WHEN is 'never', 'always', or 'auto'. 'auto' makes GCC use URL
4046 which is known to be incompatible with this feature, see below.
4048 The default depends on how the compiler has been configured. It
4049 can be any of the above WHEN options.
4053 that the default is affected by environment variables. Under such
4056 the environment of the compiler, or 'never' if neither are.
4060 empty or 'no', do not embed URLs in diagnostics. If set to 'st',
4061 URLs use ST escape sequences. If set to 'bel', the default, URLs
4062 use BEL escape sequences. Any other non-empty value enables the
4063 feature. If 'GCC_URLS' is not set, use 'TERM_URLS' as a fallback.
4065 is an ASCII character, CTRL-G that usually sounds like a beep.
4070 escapes are likely to misbehave, i.e. print garbage on the screen.
4072 gnome-terminal versions, the linux console, and mingw. This check
4073 can be skipped with the '-fdiagnostics-urls=always'.
4078 an option is known to the diagnostic machinery). Specifying the
4079 '-fno-diagnostics-show-option' flag suppresses that behavior.
4083 line and a caret '^' indicating the column. This option suppresses
4084 this information. The source line is truncated to N characters, if
4085 the '-fmessage-length=n' option is given. When the output is done
4088 width.
4101 above, the vertical bars and the "char *" and "long int" text).
4105 (https://cwe.mitre.org/index.html) identifier. GCC itself only
4106 provides such metadata for some of the '-fanalyzer' diagnostics.
4107 GCC plugins may also provide diagnostics with such metadata. By
4109 the diagnostic. This option suppresses the printing of this
4110 metadata.
4115 numbers. This option suppresses this left margin.
4119 by '-fdiagnostics-show-line-numbers'. It defaults to 6.
4123 consumption by IDEs. For each fix-it, a line will be printed after
4124 the relevant diagnostic, starting with the string "fix-it:". For
4127 fix-it:"test.c":{45:3-45:21}:"gtk_widget_show_all"
4130 count of bytes, starting at byte 1 for the initial column. In the
4131 above example, bytes 3 through 20 of line 45 of "test.c" are to be
4142 characters as octal (e.g. vertical tab as "\013").
4145 removed. An empty range (e.g. "45:3-45:3") indicates that the
4146 string is to be inserted at the given position.
4150 diagnostics are printed. For example:
4152 --- test.c
4153 +++ test.c
4164 for diagnostics (see '-fdiagnostics-color').
4172 from 'map<[...],vector<double>>' to 'map<[...],vector<float>>
4179 [...],
4184 "float" in this case).
4189 as "[...]" to simplify the error message. For example:
4192 from 'map<[...],vector<double>>' to 'map<[...],vector<float>>
4194 Specifying the '-fno-elide-type' flag suppresses that behavior.
4196 '-fdiagnostics-show-template-tree' flag.
4200 that have such a path associated with them.
4202 KIND is 'none', 'separate-events', or 'inline-events', the default.
4204 'none' means to not print diagnostic paths.
4207 each event within the diagnostic. For example:
4209 …test.c:29:5: error: passing NULL as argument 1 to 'PyList_Append' which requires a non-NULL parame…
4210 test.c:25:10: note: (1) when 'PyList_New' fails, returning NULL
4211 test.c:27:3: note: (2) when 'i < count'
4212 test.c:29:5: note: (3) when calling 'PyList_Append', passing NULL from (1) as argument 1
4215 source code. This view attempts to consolidate the events into
4217 within the source.
4241 nested, pushed, and popped.
4291 control-flow paths associated with a diagnostic.
4295 '-fdiagnostics-path-format=separate-events'.
4299 flow.
4302 Do not print column numbers in diagnostics. This may be necessary
4304 understand the column numbers, such as 'dejagnu'.
4307 Select a different format for printing diagnostics. FORMAT is
4308 'text' or 'json'. The default is 'text'.
4311 JSON objects representing the diagnostics.
4314 below have been formatted for clarity.
4316 Diagnostics can have child diagnostics. For example, this error
4319 misleading-indentation.c:15:3: warning: this 'if' clause does not
4320 guard... [-Wmisleading-indentation]
4323 misleading-indentation.c:17:5: note: ...this statement, but the latter
4337 "file": "misleading-indentation.c",
4342 "file": "misleading-indentation.c",
4347 "message": "this \u2018if\u2019 clause does not guard...",
4349 …"option_url": "https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wmisleading-indentati…
4357 "file": "misleading-indentation.c",
4362 "message": "...this statement, but the latter is ..."
4366 ...
4369 where the 'note' is a child of the 'warning'.
4371 A diagnostic has a 'kind'. If this is 'warning', then there is an
4373 warning.
4375 A diagnostic can contain zero or more locations. Each location has
4377 'start' and 'finish' positions. A location can also have an
4378 optional 'label' string. For example, this error:
4380 bad-binary-ops.c:64:23: error: invalid operands to binary + (have 'S' {aka
4388 has three locations. Its primary location is at the "+" token at
4389 column 23. It has two secondary locations, describing the left and
4390 right-hand sides of the expression, which have labels. It might be
4399 "column": 23, "file": "bad-binary-ops.c", "line": 64
4404 "column": 10, "file": "bad-binary-ops.c", "line": 64
4407 "column": 21, "file": "bad-binary-ops.c", "line": 64
4413 "column": 25, "file": "bad-binary-ops.c", "line": 64
4416 "column": 36, "file": "bad-binary-ops.c", "line": 64
4421 "message": "invalid operands to binary + ..."
4426 '-fdiagnostics-parseable-fixits'. For example, this diagnostic
4429 demo.c:8:15: error: 'struct s' has no member named 'colour'; did you
4443 "file": "demo.c",
4448 "file": "demo.c",
4459 "file": "demo.c",
4464 "file": "demo.c",
4469 "message": "\u2018struct s\u2019 has no member named ..."
4473 to but not including 'next' with 'string''s value. Deletions are
4475 'start' equal 'next'.
4478 it, it has a 'path' array of objects representing the events. Each
4481 interprocedural paths. The 'function' represents the current
4484 the stack.
4496 "file": "test.c",
4506 "file": "test.c",
4516 "file": "test.c",
4523 File: gcc.info, Node: Warning Options, Next: Static Analyzer Options, Prev: Diagnostic Message F…
4530 an error.
4533 warnings but control the kinds of diagnostics produced by GCC.
4537 that.
4542 source code. If N is 0 (the default), there is no limit on the
4543 number of error messages produced. If '-Wfatal-errors' is also
4544 specified, then '-Wfatal-errors' takes precedence over this option.
4547 Inhibit all warning messages.
4550 Make all warnings into errors.
4553 Make the specified warning into an error. The specifier for a
4555 warnings controlled by '-Wswitch' into errors. This switch takes a
4558 not be errors, even when '-Werror' is in effect.
4561 option that controls the warning. That option can then be used
4562 with '-Werror=' and '-Wno-error=' as described above. (Printing of
4564 '-fno-diagnostics-show-option' flag.)
4566 Note that specifying '-Werror='FOO automatically implies '-W'FOO.
4567 However, '-Wno-error='FOO does not imply anything.
4572 further error messages.
4576 declarations. Each of these specific warning options also has a
4578 '-Wno-implicit'. This manual lists only one of the two forms, whichever
4579 is not the default. For further language-specific options also refer to
4581 Dialect Options::. Additional warnings can be produced by enabling the
4582 static analyzer; *Note Static Analyzer Options::.
4586 '-Wunused-value'. The combined effect of positive and negative forms is
4588 independently of their position in the command-line. For options of the
4589 same specificity, the last one takes effect. Options enabled or
4591 appeared at the end of the command-line.
4593 When an unrecognized warning option is requested (e.g.,
4595 not recognized. However, if the '-Wno-' form is used, the behavior is
4597 unless other diagnostics are being produced. This allows the use of new
4599 compiler warns that an unrecognized option is present.
4602 enabled. For example '-Wsuggest-final-types' is more effective with
4604 unless optimization is enabled.
4610 that do not follow ISO C and ISO C++. For ISO C, follows the
4611 version of the ISO C standard specified by any '-std' option used.
4615 option specifying the required version of ISO C). However, without
4617 features are supported as well. With this option, they are
4618 rejected.
4621 alternate keywords whose names begin and end with '__'. This
4623 '__intN' types, i.e. '__intN__'. Pedantic warnings are also
4624 disabled in the expression that follows '__extension__'. However,
4626 application programs should avoid them. *Note Alternate
4627 Keywords::.
4630 C conformance. They soon find that it does not do quite what they
4633 diagnostics have been added.
4637 and would be quite different from '-Wpedantic'. We don't have
4638 plans to support such a feature in the near future.
4643 dialect is based. Warnings from '-Wpedantic' are given where they
4644 are required by the base standard. (It does not make sense for
4648 would be nothing to warn about.)
4655 standard. This is not equivalent to '-Werror=pedantic', since
4657 latter and vice versa.
4662 prevent the warning), even in conjunction with macros. This also
4665 Options::.
4725 Note that some warning flags are not implied by '-Wall'. Some of
4730 suppress the warning. Some of them are enabled by '-Wextra' but
4731 many of them must be enabled individually.
4735 '-Wall'. (This option used to be called '-W'. The older name is
4736 still supported, but the newer name is more descriptive.)
4761 '>', or '>='.
4764 conditional expression.
4766 * (C++ only) Ambiguous virtual bases.
4769 'register'.
4772 declared 'register'.
4775 constructor of a derived class.
4779 Warn about code affected by ABI changes. This includes code that
4781 the psABI for the particular target.
4786 discovered since the initial release. '-Wabi' warns about more
4788 '-fabi-version=N').
4792 level, e.g. '-Wabi=2' to warn about changes relative to
4793 '-fabi-version=2'.
4797 this option is used for compatibility aliases. If no explicit
4800 for C++ ABI warnings.
4804 though G++ is generating incompatible code. There may also be
4806 generated is compatible.
4810 binary compatible with code generated by other compilers.
4821 This was fixed in '-fabi-version=3'.
4825 overloading of functions taking vectors of different sizes.
4827 The mangling was changed in '-fabi-version=4'.
4831 away.
4833 These mangling issues were fixed in '-fabi-version=5'.
4837 complain. On most targets this does not actually affect the
4839 smaller than 'int'.
4843 class scope function used as a template argument.
4845 These issues were corrected in '-fabi-version=6'.
4848 and the ABI changed the mangling of 'nullptr_t'.
4850 These issues were corrected in '-fabi-version=7'.
4854 substitution candidate.
4856 This was fixed in '-fabi-version=8', the default for GCC 5.1.
4859 to unaligned accesses. Note that this did not affect the ABI
4861 a minimum alignment.
4863 This was fixed in '-fabi-version=9', the default for GCC 5.2.
4867 regparm, etc.), did not affect the mangled name, leading to
4869 arguments.
4871 This was fixed in '-fabi-version=10', the default for GCC 6.1.
4873 This option also enables warnings about psABI-related changes. The
4877 in memory as specified in psABI. Prior to GCC 4.4, this was
4878 not the case. For example:
4885 'union U' is now always passed in memory.
4888 Warn if an array subscript has type 'char'. This is a common cause
4890 some machines. This warning is enabled by '-Wall'.
4894 '-fprofile-use' option. If a source file is changed between
4897 and GCC cannot use the profile feedback information. By default,
4898 this warning is enabled and is treated as an error.
4900 '-Wno-error=coverage-mismatch' can be used to disable the error.
4903 bug fixes to an existing code-base. Completely disabling the
4904 warning is not recommended.
4908 warning messages emitted by '#warning' directives.
4912 to 'double'. CPUs with a 32-bit "single-precision" floating-point
4914 software. On such a machine, doing computations using 'double'
4916 software emulation.
4919 floating-point literals are implicitly of type 'double'. For
4926 the floating-point literal is a 'double'.
4930 or '_Atomic' specifier. This warning is enabled by '-Wall'.
4934 Check calls to 'printf' and 'scanf', etc., to make sure that the
4937 make sense. This includes standard functions, and others specified
4941 families). Which functions are checked without format attributes
4944 disabled by '-ffreestanding' or '-fno-builtin'.
4947 GNU libc version 2.2. These include all ISO C90 and C99 features,
4949 and GNU extensions. Other library implementations may not support
4951 that go beyond a particular library's limitations. However, if
4955 standard). *Note Options Controlling C Dialect: C Dialect Options.
4960 '-Wno-format' is equivalent to '-Wformat=0'. Since '-Wformat'
4962 '-Wformat' also implies '-Wnonnull'. Some aspects of this
4965 '-Wno-format-zero-length'. '-Wformat' is enabled by '-Wall'.
4968 Enable '-Wformat' plus additional format checks. Currently
4970 -Wformat-y2k'.
4974 contain NUL bytes.
4978 'printf' or 'scanf' format function. The C standard specifies that
4979 such arguments are ignored.
4984 to pass to 'va_arg' to skip the unused arguments. However, in the
4987 Specification says that such unused arguments are allowed.
4993 buffer. When the exact number of bytes written by a format
4996 optimization. While enabling optimization will in most cases
4998 positives.
5004 likely overflow the buffer. At this level, numeric arguments
5006 the value of one, and strings of unknown length to be empty.
5011 range that results in the most bytes on output. For example,
5015 will be written past its end. Increasing the size of the
5017 though it may not be sufficient to avoid the overflow.
5028 magnitude. At level 2, unknown numeric arguments are assumed
5031 value otherwise. Unknown string arguments whose length cannot
5035 character long.
5040 end of the destination buffer. To make the call safe
5042 destination buffer must be increased to at least 34 bytes.
5044 informational note following the warning.
5047 buffer is to constrain the range of formatted values. The
5049 specifying the precision in the format directive. When
5053 reduce the required buffer size. For example, if A and B in
5057 maximum required size of the buffer to 24 bytes.
5066 If '-Wformat' is specified, do not warn about zero-length formats.
5067 The C standard specifies that zero-length formats are allowed.
5072 takes its format arguments as a 'va_list'.
5076 functions that represent possible security problems. At present,
5079 arguments, as in 'printf (foo);'. This may be a security hole if
5080 the format string came from untrusted input and contains '%n'.
5083 that are not included in '-Wformat-nonliteral'.)
5087 an unsigned argument and the argument is signed and vice versa.
5092 'snprintf' and 'vsnprintf' that might result in output truncation.
5095 that depend on the LEVEL argument and on optimization. While
5097 the warning, it may also result in false positives. Except as
5099 '-Wformat-overflow'.
5106 likely result in output truncation.
5111 an argument of sufficient length or magnitude.
5115 may yield only a two-digit year.
5119 a non-null value by the 'nonnull' function attribute.
5121 '-Wnonnull' is included in '-Wall' and '-Wformat'. It can be
5122 disabled with the '-Wno-nonnull' option.
5126 attribute against null inside the function.
5128 '-Wnonnull-compare' is included in '-Wall'. It can be disabled
5129 with the '-Wno-nonnull-compare' option.
5133 undefined behavior due to dereferencing a null pointer. This
5135 active, which is enabled by optimizations in most targets. The
5136 precision of the warnings depends on the optimization options used.
5140 themselves. Note this option can only be used with the
5141 '-Wuninitialized' option.
5151 This warning is enabled by '-Wall' in C++.
5155 type. This warning is enabled by default in C99 and later dialects
5156 of C, and also by '-Wall'.
5160 declared. This warning is enabled by default in C99 and later
5161 dialects of C, and also by '-Wall'. The warning is made into an
5162 error by '-pedantic-errors'.
5165 Same as '-Wimplicit-int' and '-Wimplicit-function-declaration'.
5166 This warning is enabled by '-Wall'.
5171 '-Wimplicit-fallthrough=0'.
5174 Warn when a switch case falls through. For example:
5189 fall through, e.g. when there is a return statement or a call to
5190 function declared with the noreturn attribute.
5192 statements, such as ifs, and only warns when appropriate. E.g.
5205 ...
5219 ...
5224 of the GNU attribute. In C++11 or C++14 users can use
5225 '[[gnu::fallthrough]];', which is a GNU extension. Instead of
5227 to silence the warning. The whole body of the C or C++ style
5228 comment should match the given regular expressions listed below.
5231 * '-Wimplicit-fallthrough=0' disables the warning altogether.
5233 * '-Wimplicit-fallthrough=1' matches '.*' regular expression,
5234 any comment is used as fallthrough comment.
5237 '.*falls?[ \t-]*thr(ough|u).*' regular expression.
5248 * '[ \t.!]*(ELSE,? |INTENTIONAL(LY)? )?
5249 FALL(S | |-)?THR(OUGH|U)[ \t.!]*(-[^\n\r]*)?'
5251 * '[ \t.!]*(Else,? |Intentional(ly)? )?
5252 Fall((s | |-)[Tt]|t)hr(ough|u)[ \t.!]*(-[^\n\r]*)?'
5254 * '[ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
5255 fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?'
5269 fallthrough comments, only attributes disable the warning.
5273 that precedes some 'case' or 'default' label.
5281 ...
5284 The '-Wimplicit-fallthrough=3' warning is enabled by '-Wextra'.
5288 attribute should be issued. These warnings are enabled by default.
5292 'const'. For ISO C such a type qualifier has no effect, since the
5293 value returned by a function is not an lvalue. For C++, the
5294 warning is only emitted for scalar types or 'void'. ISO C
5297 option.
5299 This warning is also enabled by '-Wextra'.
5302 This option controls warnings when an attribute is ignored. This
5305 attribute is either unknown, used in a wrong place, etc. This
5306 warning is enabled by default.
5309 Warn if the type of 'main' is suspicious. 'main' should be a
5311 arguments, two, or three arguments of appropriate types. This
5313 '-Wall' or '-Wpedantic'.
5317 structure. Specifically, a warning is issued for 'if', 'else',
5320 indentation.
5323 indented as if it were guarded by the "if" conditional.
5327 bar (); /* Gotcha: this is not guarded by the "if". */
5331 (defaulting to 8).
5334 logic such as the following example.
5345 made about the layout of the file that the directive references.
5347 This warning is enabled by '-Wall' in C and C++.
5353 generated code. For example, the warning is issued for
5355 restrictive requirements than those of their targets. This
5356 typically represents a potential optimization opportunity. By
5359 lead to incorrect code generation. Attributes considered include
5362 'returns_nonnull', and 'returns_twice'.
5367 or 'nonnull' is declared without it. Attributes 'deprecated',
5368 'error', and 'warning' suppress the warning. (*note Function
5369 Attributes::).
5373 explicitly enumerating the attributes. This attribute can be
5376 types (*note Common Type Attributes::).
5378 '-Wmissing-attributes' is enabled by '-Wall'.
5383 diagnosed because it is missing one of the attributes.
5394 Warn if an aggregate or union initializer is not fully bracketed.
5396 bracketed, but that for 'b' is fully bracketed.
5401 This warning is enabled by '-Wall'.
5404 Warn if a user-supplied include directory does not exist.
5408 using the '-fprofile-use' option. This option diagnoses those
5411 regenerating the profiles. In these cases, the profile feedback
5413 newly added function or file respectively. Also, in the case when
5414 profile count data (.gcda) files are removed, GCC cannot use any
5415 profile feedback information. In all these cases, warnings are
5416 issued to inform you that a profile generation step is due.
5417 Ignoring the warning can result in poorly optimized code.
5420 profile data is justified.
5426 after the macro is expanded.
5434 will increment 'y' unconditionally, not just when 'c' holds. The
5440 This warning is enabled by '-Wall' in C and C++.
5446 often get confused about.
5450 interpretation from that of ordinary mathematical notation.
5453 omitted middle operand. When the condition in the '?': operator is
5454 a boolean expression, the omitted value is always 1. Often
5456 expression instead.
5462 // Declares a local variable called mymutex.
5467 This warning is enabled by '-Wall'.
5471 violations of sequence point rules in the C and C++ standards.
5477 executed after it. These occur after the evaluation of a full
5482 function), and in certain other places. Other than as expressed by
5484 of an expression is not specified. All these rules describe only a
5488 specified. However, the standards committee have ruled that
5489 function calls do not overlap.
5492 the values of objects take effect. Programs whose behavior depends
5496 expression. Furthermore, the prior value shall be read only to
5497 determine the value to be stored.". If a program breaks these
5499 unpredictable.
5502 b[n++]' and 'a[i++] = i;'. Some more complicated cases are not
5505 at detecting this sort of problem in programs.
5510 above examples are no longer undefined. But this option will still
5512 undefined in C and earlier revisions of C++.
5516 cases. Links to discussions of the problem, including proposed
5518 <http://gcc.gnu.org/readings.html>.
5520 This warning is enabled by '-Wall' for C and C++.
5524 variable that goes out of scope after the function returns.
5528 defaults to 'int'. Also warn about any 'return' statement with no
5531 value).
5535 also 'void'. As a GNU extension, the latter case is accepted
5536 without a warning unless '-Wpedantic' is used. Attempting to use
5539 terminates the function is undefined.
5543 of the function is not used.
5545 This warning is enabled by default in C++ and by '-Wall' otherwise.
5548 Controls warnings if a shift count is negative. This warning is
5549 enabled by default.
5553 bit width of the type. This warning is enabled by default.
5556 Warn if left shifting a negative value. This warning is enabled by
5557 '-Wextra' in C99 (and newer) and C++11 to C++17 modes.
5561 These options control warnings about left shift overflows.
5565 by default in C99 and C++11 modes (and newer). This warning
5566 level does not warn about left-shifting 1 into the sign bit.
5568 where an integer constant expression is required.) No warning
5570 always wrap.
5574 sign bit, unless C++14 mode (or newer) is active.
5579 enumeration. (The presence of a 'default' label prevents this
5580 warning.) 'case' labels outside the enumeration range also provoke
5582 label). This warning is enabled by '-Wall'.
5585 Warn whenever a 'switch' statement does not have a 'default' case.
5590 enumeration. 'case' labels outside the enumeration range also
5591 provoke warnings when this option is used. The only difference
5594 'default' label.
5598 and the case values are outside the range of a boolean type. It is
5600 expression to a type other than 'bool'. For example:
5603 ...
5605 This warning is enabled by default for C and C++ programs.
5609 is outside of its respective type range. This warning is enabled
5610 by default for C and C++ programs.
5615 never be executed. For example:
5619 ...
5621 ...
5629 ...
5632 ...
5634 This warning is enabled by default for C and C++ programs.
5638 built-in functions are used. These functions changed semantics in
5639 GCC 4.4.
5643 unused (aside from its declaration).
5646 Attributes::).
5648 This warning is also enabled by '-Wunused' together with '-Wextra'.
5652 (aside from its declaration). This warning is enabled by '-Wall'.
5655 Attributes::).
5658 '-Wall'.
5662 non-inline static function is unused. This warning is enabled by
5663 '-Wall'.
5666 Warn whenever a label is declared but not used. This warning is
5667 enabled by '-Wall'.
5670 Attributes::).
5673 Warn when a typedef locally defined in a function is not used.
5674 This warning is enabled by '-Wall'.
5678 declaration.
5681 Attributes::).
5686 return value. The default is '-Wunused-result'.
5690 declaration. This option implies '-Wunused-const-variable=1' for
5691 C, but not for C++. This warning is enabled by '-Wall'.
5694 Attributes::).
5699 declaration. '-Wunused-const-variable=1' is enabled by
5700 '-Wunused-variable' for C, but not for C++. In C this declares
5702 variables take the place of '#define's.
5705 Attributes::).
5709 '-Wunused-variable' for C. It warns only about unused static
5711 about static const variables declared in any header included.
5715 variables in headers (excluding system headers). This is the
5718 it might be harder to clean up all headers included.
5722 used. To suppress this warning cast the unused expression to
5723 'void'. This includes an expression-statement or the left-hand
5724 side of a comma expression that contains no side effects. For
5726 'x[(void)i,j]' does not.
5728 This warning is enabled by '-Wall'.
5731 All the above '-Wunused' options combined.
5735 '-Wunused'), or separately specify '-Wunused-parameter'.
5739 initialized. In C++, warn if a non-static reference or non-static
5740 'const' member appears in a class without constructors.
5743 the variable in its own initializer, use the '-Winit-self' option.
5747 are uninitialized as a whole. They do not occur for variables or
5748 elements declared 'volatile'. Because these warnings depend on
5751 GCC used.
5756 warnings are printed.
5763 'memory_order' enumeration. For example, since the
5773 '-Winvalid-memory-model' is enabled by default.
5776 For an automatic (i.e. local) variable, if there exists a path from
5780 uninitialized paths are not executed at run time.
5783 otherwise GCC does not keep track of the state of variables.
5787 error. Here is one example of how this can happen:
5803 initialized, but GCC doesn't know this. To suppress the warning,
5804 you need to provide a default case with assert(0) or similar code.
5807 be changed by a call to 'longjmp'. The compiler sees only the
5808 calls to 'setjmp'. It cannot know where 'longjmp' will be called;
5809 in fact, a signal handler could call it at any point in the code.
5812 that would cause a problem.
5815 functions you use that never return as 'noreturn'. *Note Function
5816 Attributes::.
5818 This warning is enabled by '-Wall' or '-Wextra'.
5822 understood by GCC. If this command-line option is used, warnings
5823 are even issued for unknown pragmas in system header files. This
5825 command-line option.
5829 invalid syntax, or conflicts between pragmas. See also
5830 '-Wunknown-pragmas'.
5834 destructor. The use of constructor and destructor attributes allow
5836 its order of execution before 'main' is called or after it returns.
5838 reserves priority values between 0-100 for the implementation.
5841 This option is only active when '-fstrict-aliasing' is active. It
5843 the compiler is using for optimization. The warning does not catch
5844 all cases, but does attempt to catch the more common pitfalls. It
5845 is included in '-Wall'. It is equivalent to '-Wstrict-aliasing=3'
5848 This option is only active when '-fstrict-aliasing' is active. It
5850 the compiler is using for optimization. Higher levels correspond
5851 to higher accuracy (fewer false positives). Higher levels also
5852 correspond to more effort, similar to the way '-O' works.
5853 '-Wstrict-aliasing' is equivalent to '-Wstrict-aliasing=3'.
5855 Level 1: Most aggressive, quick, least accurate. Possibly useful
5857 the code, as it has very few false negatives. However, it has many
5858 false positives. Warns for all pointer conversions between
5859 possibly incompatible types, even if never dereferenced. Runs in
5860 the front end only.
5862 Level 2: Aggressive, quick, not too precise. May still have many
5864 negatives (but possibly more than level 1). Unlike level 1, it
5865 only warns when an address is taken. Warns about incomplete types.
5866 Runs in the front end only.
5869 false positives and few false negatives. Slightly slower than
5870 levels 1 or 2 when optimization is enabled. Takes care of the
5872 '*(int*)&some_float'. If optimization is enabled, it also runs in
5874 flow-sensitive points-to information. Only warns when the
5875 converted pointer is dereferenced. Does not warn about incomplete
5876 types.
5880 This option is only active when signed overflow is undefined. It
5882 assumption that signed overflow does not occur. Note that it does
5884 warns about cases where the compiler implements some optimization.
5885 Thus this warning depends on the optimization level.
5889 that overflow never does, in fact, occur. Therefore this warning
5891 actually a problem. To help focus on important issues, several
5892 warning levels are defined. No warnings are issued for the use of
5895 be executed at all.
5898 Warn about cases that are both questionable and easy to avoid.
5899 For example the compiler simplifies 'x + 1 > x' to '1'. This
5901 levels are not, and must be explicitly requested.
5905 to a constant. For example: 'abs (x) >= 0'. This can only be
5908 zero. '-Wstrict-overflow' (with no level) is the same as
5909 '-Wstrict-overflow=2'.
5912 Also warn about other cases where a comparison is simplified.
5913 For example: 'x + 1 > 1' is simplified to 'x > 0'.
5917 cases. For example: '(x * 10) / 5' is simplified to 'x * 2'.
5921 of a constant involved in a comparison. For example: 'x + 2 >
5922 y' is simplified to 'x + 1 >= y'. This is reported only at
5925 number of false positives.
5932 'strncmp'). Such calls could be mistakes. For example, the call
5934 non-zero irrespective of the contents of the array 'a'.
5940 ...
5945 '-Wstring-compare' is enabled by '-Wextra'.
5951 buffer. The optional argument is one greater than the type of
5953 destination. *Note Object Size Checking::. The argument is
5956 Object Size type-0. The option also warns for calls that specify a
5958 / 2' bytes. The option produces the best results with optimization
5961 like '__builtin_memcpy' that correspond to the standard functions.
5964 built-ins. For example, the option issues a warning for the
5967 size 4.
5984 Option '-Wstringop-overflow=2' is enabled by default.
5989 Checking to determine the sizes of destination objects. This
5990 is the default setting of the option. At this setting the
5993 largest surrounding object is known. When the destination may
5995 of them. On Linux systems, when optimization is enabled at
5997 '_FORTIFY_SOURCE' macro is defined to a non-zero value.
6001 Checking to determine the sizes of destination objects. At
6004 known. However, it does not warn for excessive writes to the
6007 elements.
6011 Checking to determine the sizes of destination objects. At
6013 object or data member. This is the most restrictive setting
6014 of the option that may result in warnings for safe code.
6018 Checking to determine the sizes of destination objects. At
6022 issue a warning. Similarly to '-Wstringop-overflow=3' this
6023 setting of the option may result in warnings for benign code.
6028 copied string or leave the destination unchanged.
6031 that is less than the length of the source string. As a result,
6033 diagnosed. To avoid the warning use 'bufsize - strlen (buf) - 1)'
6034 as the bound.
6038 strncat (buf, ".txt", 3);
6043 without appending the NUL to the end. Assuming the result of
6045 mistake, and so the call is diagnosed. To avoid the warning when
6047 instead.
6055 of the destination buffer as the bound. If the length of the
6057 the copy will not be NUL-terminated. Therefore, the call is also
6058 diagnosed. To avoid the warning, specify 'sizeof buf - 1' as the
6059 bound and set the last element of the buffer to 'NUL'.
6065 ...
6070 annotated with attribute 'nonstring' to avoid this warning. Such
6072 expect 'NUL'-terminated strings. To help detect accidental misuses
6074 is safe. *Note Common Variable Attributes::.
6077 Warn for cases where adding an attribute may be beneficial. The
6078 attributes currently supported are listed below.
6087 'pure', 'const' or 'noreturn' or 'malloc'. The compiler only
6090 function returns normally. A function returns normally if it
6092 throwing, calling 'abort' or trapping. This analysis requires
6094 and higher. Higher optimization levels improve the accuracy
6095 of the analysis.
6101 'format' attributes. Note these are only possible candidates,
6102 not absolute ones. GCC guesses that function pointers with
6105 have a corresponding 'format' attribute in the resulting type.
6106 I.e. the left-hand side of the assignment or initialization,
6109 attribute to avoid the warning.
6112 candidates for 'format' attributes. Again, these are only
6113 possible candidates. GCC guesses that 'format' attributes
6117 appropriate may not be detected.
6122 attribute. This is based on static detection and generally
6125 fatal error reporting functions leading to 'abort'.
6131 'calloc', 'malloc', and 'realloc'. Because the behavior of these
6135 avoided.
6142 'PTRDIFF_MAX' on the target.
6143 '-Walloc-size-larger-than=''PTRDIFF_MAX' is enabled by default.
6146 '-Wno-alloc-size-larger-than'. *Note Function Attributes::.
6149 Disable '-Walloc-size-larger-than=' warnings. The option is
6150 equivalent to '-Walloc-size-larger-than=''SIZE_MAX' or larger.
6153 This option warns on all uses of 'alloca' in the source.
6158 predicate that limits its value to at most BYTE-SIZE. It also
6159 warns for calls to 'alloca' where the bound value is unknown.
6161 they appear to be constrained to the expected range.
6177 1000 bytes. However, if '-Walloca-larger-than=500' were passed,
6178 the compiler would emit a warning.
6181 controlling predicate constraining its integer argument. For
6191 a warning, but this time because of the lack of bounds checking.
6206 expected argument to be implicitly cast into the 'alloca' call.
6208 This option also warns when 'alloca' is used in a loop.
6212 '-O2' and above).
6214 See also '-Wvla-larger-than=''byte-size'.
6217 Disable '-Walloca-larger-than=' warnings. The option is equivalent
6218 to '-Walloca-larger-than=''SIZE_MAX' or larger.
6223 their values. This affects warnings from '-Wconversion',
6224 '-Wfloat-conversion', and '-Wsign-conversion'.
6235 '-O2' and above). It warns about subscripts to arrays that are
6236 always out of bounds. This warning is enabled by '-Wall'.
6241 requested.
6246 pointers. This warning level may give a larger number of
6247 false positives and is deactivated by default.
6252 whose target is incompatible with the type of the alias. *Note
6253 Declaring Attributes of Functions: Function Attributes.
6258 declaration and that of its target. Such incompatibilities
6259 are typically indicative of bugs.
6265 than the attributes applied to its target. These mismatches
6266 can potentially result in incorrect code generation. In other
6268 adding the missing attribute to the target. For comparison,
6271 than the target, rather than more restrictive.
6276 'returns_twice'.
6278 '-Wattribute-alias' is equivalent to '-Wattribute-alias=1'. This
6279 is the default. You can disable these warnings with either
6280 '-Wno-attribute-alias' or '-Wattribute-alias=0'.
6284 different from 'true'/'false'. For instance, the following
6287 ...
6288 if ((n > 1) == 2) { ... }
6289 This warning is enabled by '-Wall'.
6292 Warn about suspicious operations on expressions of a boolean type.
6294 the program. For C, this warning also warns about incrementing or
6295 decrementing a boolean, which rarely makes sense. (In C++,
6296 decrementing a boolean is always invalid. Incrementing a boolean
6297 is invalid in C++17, and deprecated otherwise.)
6299 This warning is enabled by '-Wall'.
6302 Warn when an if-else has identical branches. This warning detects
6308 It doesn't warn when both branches contain just a null statement.
6313 Warn about duplicated conditions in an if-else-if chain. For
6315 if (p->q != NULL) { ... }
6316 else if (p->q != NULL) { ... }
6321 0. Such calls may return indeterminate values or crash the
6322 program. The warning is included in '-Wall'.
6325 Do not warn if type qualifiers on pointers are being discarded.
6327 passed to a function that takes a 'char *' parameter. This option
6328 can be used to suppress such a warning.
6332 are being discarded. Typically, the compiler warns if a 'const int
6334 parameter. This option can be used to suppress such a warning.
6338 incompatible types. This warning is for cases not covered by
6340 assignment with different signedness.
6344 integer conversions. This warning is about implicit conversions;
6346 and '-Wno-pointer-to-int-cast' may be used.
6350 might overlap other members of the same object. Declaring interior
6352 undefined. See *Note Zero Length::.
6356 'c'. The third store is diagnosed by '-Warray-bounds' because it
6357 is beyond the bounds of the enclosing object.
6364 x.a[0] = 0; // -Wzero-length-bounds
6365 x.a[1] = 1; // -Wzero-length-bounds
6366 x.a[2] = 2; // -Warray-bounds
6369 Option '-Wzero-length-bounds' is enabled by '-Warray-bounds'.
6372 Do not warn about compile-time integer division by zero.
6374 legitimate way of obtaining infinities and NaNs.
6377 Print warning messages for constructs found in system header files.
6380 would only make the compiler output harder to read. Using this
6382 as if they occurred in user code. However, note that using '-Wall'
6385 be used.
6388 Warn if a self-comparison always evaluates to true or false. This
6391 ...
6392 if (i > i) { ... }
6396 if ((a & 16) == 10) { ... }
6397 will always be false.
6399 This warning is enabled by '-Wall'.
6402 Warn about trampolines generated for pointers to nested functions.
6405 taken, and is used to call the nested function indirectly. For
6407 special treatment. But, for most targets, it is made up of code
6409 program to work properly.
6412 Warn if floating-point values are used in equality comparisons.
6416 infinitely precise real numbers. If you are doing this, then you
6420 output, but that's a different problem). In particular, instead of
6424 mistaken.
6428 traditional and ISO C. Also warn about ISO C constructs that have
6430 should be avoided.
6433 macro body. In traditional C macro replacement takes place
6434 within string literals, but in ISO C it does not.
6436 * In traditional C, some preprocessor directives did not exist.
6438 directive if the '#' appeared in column 1 on the line.
6441 appear as the first character on the line. It also suggests
6443 traditional C by indenting them. Some traditional
6445 suggests avoiding it altogether.
6447 * A function-like macro that appears without arguments.
6449 * The unary plus operator.
6452 floating-point constant suffixes. (Traditional C does support
6453 the 'L' suffix on integer constants.) Note, these suffixes
6455 systems, e.g. the '_MIN'/'_MAX' macros in '<limits.h>'. Use
6458 context to avoid warning in these cases.
6461 the end of the block.
6463 * A 'switch' statement has an operand of type 'long'.
6465 * A non-'static' function declaration follows a 'static' one.
6467 compilers.
6470 signedness from its traditional type. This warning is only
6471 issued if the base of the constant is ten. I.e. hexadecimal
6473 not warned about.
6475 * Usage of ISO string concatenation is detected.
6477 * Initialization of automatic aggregates.
6479 * Identifier conflicts with labels. Traditional C lacks a
6480 separate namespace for labels.
6482 * Initialization of unions. If the initializer is zero, the
6483 warning is omitted. This is done under the assumption that
6484 the zero initializer in user code appears conditioned on e.g.
6486 default initialization to zero in the traditional C case.
6489 and vice versa. The absence of these prototypes when
6490 compiling with traditional C causes serious problems. This is
6492 use '-Wtraditional-conversion'.
6494 * Use of ISO C style function definitions. This warning
6498 macros, 'PARAMS' and 'VPARAMS'. This warning is also bypassed
6501 compatibility.
6506 prototype. This includes conversions of fixed point to floating
6509 promotion.
6512 Warn when a declaration is found after a statement in a block.
6514 by default allowed in GCC. It is not supported by ISO C90. *Note
6515 Mixed Declarations::.
6521 shadowed. Note that in C++, the compiler warns if a local variable
6523 struct/class/enum. If this warning is enabled, it includes also
6524 all instances of local shadowing. This means that
6526 when '-Wshadow' is used. Same as '-Wshadow=global'.
6530 in an Objective-C method.
6533 Warn for any shadowing. Same as '-Wshadow'.
6537 parameter.
6542 variable. In C++, type compatibility here means the type of the
6544 variable. The creation of this flag (in addition to
6549 for (SomeIterator i = SomeObj.begin(); i != SomeObj.end(); ++i)
6553 ...
6555 ...
6560 warning. Because their types are incompatible, if a programmer
6562 expected to catch that and emit an error or warning. Use of this
6564 warnings triggered by intentional shadowing. Note that this also
6566 warning.
6568 This warning is also enabled by '-Wshadow=local'.
6571 Warn whenever an object is defined whose size exceeds BYTE-SIZE.
6572 '-Wlarger-than=''PTRDIFF_MAX' is enabled by default. Warnings
6574 BYTE-SIZE of 'SIZE_MAX' or more or by '-Wno-larger-than'.
6577 Disable '-Wlarger-than=' warnings. The option is equivalent to
6578 '-Wlarger-than=''SIZE_MAX' or larger.
6581 Warn if the size of a function frame exceeds BYTE-SIZE. The
6583 and not conservative. The actual requirements may be somewhat
6584 greater than BYTE-SIZE even if you do not get a warning. In
6587 determining whether or not to issue a warning.
6588 '-Wframe-larger-than=''PTRDIFF_MAX' is enabled by default.
6591 '-Wno-frame-larger-than'.
6594 Disable '-Wframe-larger-than=' warnings. The option is equivalent
6595 to '-Wframe-larger-than=''SIZE_MAX' or larger.
6599 allocated on the heap.
6602 Warn if the stack usage of a function might exceed BYTE-SIZE. The
6603 computation done to determine the stack usage is conservative. Any
6606 not to issue a warning.
6608 The message is in keeping with the output of '-fstack-usage'.
6621 '-Wstack-usage=''PTRDIFF_MAX' is enabled by default. Warnings
6623 BYTE-SIZE of 'SIZE_MAX' or more or by '-Wno-stack-usage'.
6626 Disable '-Wstack-usage=' warnings. The option is equivalent to
6627 '-Wstack-usage=''SIZE_MAX' or larger.
6631 assume anything on the bounds of the loop indices. With
6633 assumptions.
6639 used on Windows targets, which depend on the MS runtime.
6643 or of 'void'. GNU C assigns these types a size of 1, for
6645 functions. In C++, warn also when an arithmetic operation involves
6646 'NULL'. This warning is also enabled by '-Wpedantic'.
6650 constant. This usually means that the pointer was meant to be
6651 dereferenced. For example:
6657 Note that the code above is invalid in C++11.
6659 This warning is enabled by default.
6664 expressions. For example, warn if an unsigned variable is compared
6665 against zero with '<' or '>='. This warning is also enabled by
6666 '-Wextra'.
6671 available. For example, calling 'abs(3.14)' triggers the warning
6673 value of a double argument is 'fabs'. The option also triggers
6675 unsigned type. This warning can be suppressed with an explicit
6676 type cast and it is also enabled by '-Wextra'.
6681 comment, or whenever a backslash-newline appears in a '//' comment.
6682 This warning is enabled by '-Wall'.
6686 of the program. Trigraphs within comments are not warned about,
6687 except those that would form escaped newlines.
6689 This option is implied by '-Wall'. If '-Wall' is not given, this
6690 option is still enabled unless trigraphs are enabled. To get
6692 warnings, use '-trigraphs -Wall -Wno-trigraphs'.
6695 Warn if an undefined identifier is evaluated in an '#if' directive.
6696 Such identifiers are replaced with zero.
6701 directive). Such usage is not portable. This warning is also
6702 enabled by '-Wpedantic' and '-Wextra'.
6705 Warn about macros defined in the main file that are unused. A
6707 once. The preprocessor also warns if the macro has not been used
6708 at the time it is redefined or undefined.
6711 defined in include files are not warned about.
6714 conditional blocks, then the preprocessor reports it as unused. To
6717 skipped block. Alternatively, you could provide a dummy use with
6725 text. This sometimes happens in older programs with code of the
6729 ...
6731 ...
6734 The second and third 'FOO' should be in comments. This warning is
6735 on by default.
6738 Warn when a function call is cast to a non-matching type. For
6740 cast to a pointer type.
6743 Warn about features not present in ISO C90, but present in ISO C99.
6746 so on. This option is independent of the standards mode. Warnings
6747 are disabled in the expression that follows '__extension__'.
6750 Warn about features not present in ISO C99, but present in ISO C11.
6754 so on. This option is independent of the standards mode. Warnings
6755 are disabled in the expression that follows '__extension__'.
6758 Warn about features not present in ISO C11, but present in ISO C2X.
6761 types, and so on. This option is independent of the standards
6762 mode. Warnings are disabled in the expression that follows
6763 '__extension__'.
6767 of ISO C and ISO C++, e.g. request for implicit conversion from
6768 'void *' to a pointer to non-'void' type.
6772 1998 and ISO C++ 2011, e.g., identifiers in ISO C++ 1998 that are
6773 keywords in ISO C++ 2011. This warning turns on '-Wnarrowing' and
6774 is enabled by '-Wall'.
6778 2011 and ISO C++ 2014. This warning is enabled by '-Wall'.
6782 2014 and ISO C++ 2017. This warning is enabled by '-Wall'.
6786 2017 and ISO C++ 2020. This warning is enabled by '-Wall'.
6790 from the target type. For example, warn if a 'const char *' is
6791 cast to an ordinary 'char *'.
6794 unsafe way. For example, casting 'char **' to 'const char **' is
6797 /* p is char ** value. */
6799 /* Assignment of readonly string to const char * is OK. */
6801 /* Now char** pointer points to read-only memory. */
6806 the target is increased. For example, warn if a 'char *' is cast
6808 two- or four-byte boundaries.
6812 the target is increased. For example, warn if a 'char *' is cast
6813 to an 'int *' regardless of the target machine.
6817 pointer. In a cast involving function types with a variable
6819 are considered. Any parameter of pointer-type matches any other
6820 pointer-type. Any benign differences in integral types are
6821 ignored, like 'int' vs. 'long' on ILP32 targets. Likewise type
6822 qualifiers are ignored. The function type 'void (*) (void)' is
6824 warning. In a cast involving pointer to member types this warning
6826 type. This warning is enabled by '-Wextra'.
6831 'char *' pointer produces a warning. These warnings help you find
6834 declarations and prototypes. Otherwise, it is just a nuisance.
6835 This is why we did not make '-Wall' request these warnings.
6838 string literals to 'char *'. This warning is enabled by default
6839 for C++ programs.
6842 Warn for variables that might be changed by 'longjmp' or 'vfork'.
6843 This warning is also enabled by '-Wextra'.
6846 Warn for implicit conversions that may alter a value. This
6850 (M_PI)'. Do not warn for explicit casts like 'abs ((int) x)' and
6852 conversion like in 'abs (2.0)'. Warnings about conversions between
6854 '-Wno-sign-conversion'.
6859 class or a reference to them. Warnings about conversions between
6861 '-Wsign-conversion' is explicitly enabled.
6864 that type are only given with '-Warith-conversion'.
6868 statement an 'else' branch belongs. Here is an example of such a
6880 'if' statement, which in this example is 'if (b)'. This is often
6882 example by indentation the programmer chose. When there is the
6884 is specified. To eliminate the warning, add explicit braces around
6886 belong to the enclosing 'if'. The resulting code looks like this:
6898 This warning is enabled by '-Wparentheses'.
6903 compilations.
6907 statement. This warning is also enabled by '-Wextra'.
6910 Do not warn about stray tokens after '#else' and '#endif'.
6914 types. In C++ enumerated type mismatches in conditional
6916 default. In C this warning is enabled by '-Wall'.
6920 different enumerated type. This warning is enabled by '-Wextra'.
6925 label after the variable has been initialized. This only warns
6926 about variables that are initialized when they are declared. This
6928 of branch is an error in any case.
6930 '-Wjump-misses-init' is included in '-Wc++-compat'. It can be
6931 disabled with the '-Wno-jump-misses-init' option.
6936 unsigned. In C++, this warning is also enabled by '-Wall'. In C,
6937 it is also enabled by '-Wextra'.
6942 unsigned integer variable. An explicit cast silences the warning.
6943 In C, this option is enabled also by '-Wconversion'.
6947 value. This includes conversions from real to integer, and from
6948 higher precision real to lower precision real values. This option
6949 is also enabled by '-Wconversion'.
6953 storage order.
6958 compute the array size but won't work out correctly with pointers.
6959 This warning warns e.g. about 'sizeof (ptr) / sizeof (ptr[0])' if
6960 'ptr' is not an array, but a pointer. This warning is enabled by
6961 '-Wall'.
6965 built-in functions if the argument uses 'sizeof'. This warning
6968 about 'memcpy (&foo, ptr, sizeof (&foo));'.
6971 the bound a 'sizeof' expression of the source array. For example,
6973 of the source string as the bound. That is almost certainly a
6974 mistake and so the call is diagnosed.
6979 strncat (path, ".text", sizeof ".text");
6980 ...
6983 The '-Wsizeof-pointer-memaccess' option is enabled by '-Wall'.
6987 that is declared as an array in a function definition. This
6988 warning is enabled by default for C and C++ programs.
6994 of the array in memory. This indicates that the user has omitted a
6995 multiplication by the element size. This warning is enabled by
6996 '-Wall'.
7000 the second argument is not zero and the third argument is zero.
7002 because 'memset (buf, 0, sizeof buf)' was meant instead. The
7003 diagnostic is only emitted if the third argument is a literal zero.
7006 been mistakenly transposed and no warning is emitted. This warning
7007 is enabled by '-Wall'.
7010 Warn about suspicious uses of memory addresses. These include
7013 address of a string literal, such as 'if (x == "abc")'. Such uses
7019 the programmer intended to use 'strcmp'. This warning is enabled
7020 by '-Wall'.
7024 taken, which usually results in an unaligned pointer value. This
7025 is enabled by default.
7028 Warn about suspicious uses of logical operators in expressions.
7030 operator is likely to be expected. Also warns when the operands of
7033 if (a < 0 && a < 0) { ... }
7037 comparison. This option does not warn if the right operand is
7038 considered to be a boolean expression. Its purpose is to detect
7041 ...
7042 if (!a > 1) { ... }
7046 if ((!a) > 1) { ... }
7048 This warning is enabled by '-Wall'.
7052 or called. (In languages where you can return an array, this also
7053 elicits a warning.)
7058 the iterations.
7063 etc. This does not stop errors for incorrect use of supported
7064 attributes.
7071 the function. When '-Wextra' is specified, also warn when a
7073 prototype. The '-Wbuiltin-declaration-mismatch' warning is enabled
7074 by default. To avoid the warning include the appropriate header to
7075 bring the prototypes of built-in functions into scope.
7079 argument but the type of '32' is 'int'. With '-Wextra', the
7080 declaration of the function is diagnosed as well.
7088 Do not warn if certain built-in macros are redefined. This
7090 '__TIME__', '__DATE__', '__FILE__', and '__BASE_FILE__'.
7094 argument types. (An old-style function definition is permitted
7096 argument types.)
7100 declaration. For example, warn if storage-class specifiers like
7101 'static' are not the first things in a declaration. This warning
7102 is also enabled by '-Wextra'.
7105 Warn if an old-style function definition is used. A warning is
7106 given even if there is a previous prototype. A definition using
7109 old-style definition for older standards.
7117 This warning is also enabled by '-Wextra'.
7121 declaration. This warning is issued even if the definition itself
7122 provides a prototype. Use this option to detect global functions
7123 that do not have a matching prototype declaration in a header file.
7126 overload rather than conflict with an earlier declaration. Use
7127 '-Wmissing-declarations' to detect missing declarations in C++.
7131 declaration. Do so even if the definition itself provides a
7132 prototype. Use this option to detect global functions that are not
7133 declared in header files. In C, no warnings are issued for
7135 '-Wmissing-prototypes' to detect missing prototypes. In C++, no
7137 functions, or for functions in anonymous namespaces.
7140 Warn if a structure's initializer has some fields missing. For
7141 example, the following code causes such a warning, because 'x.h' is
7151 struct s x = { .f = 3, .g = 4 };
7165 This warning is included in '-Wextra'. To get other '-Wextra'
7167 -Wno-missing-field-initializers'.
7170 Do not warn if a multicharacter constant (''FOOF'') is used.
7173 code.
7177 different sequences of characters. However, sometimes when
7179 have two different character sequences that look the same. To
7182 that look the same are turned into the same sequence. GCC can warn
7184 this option controls that warning.
7186 There are four levels of warning supported by GCC. The default is
7188 the ISO 10646 "C" normalized form, "NFC". NFC is the recommended
7189 form for most uses. It is equivalent to '-Wnormalized'.
7193 identifiers. That is, there's no way to use these symbols in
7194 portable ISO C or C++ and have all your identifiers in NFC.
7195 '-Wnormalized=id' suppresses the warning for these characters. It
7197 correct this, which is why this option is not the default.
7200 '-Wnormalized=none' or '-Wno-normalized'. You should only do this
7203 impossible to see.
7207 formatting has been applied. For instance '\u207F', "SUPERSCRIPT
7209 been placed in a superscript. ISO 10646 defines the "NFKC"
7212 '-Wnormalized=nfkc'. This warning is comparable to warning about
7216 cannot be fixed to display these characters distinctly.
7220 declared with 'warning' attribute. By default, this warning is
7221 enabled. '-Wno-attribute-warning' can be used to disable the
7223 the error when compiled with '-Werror' flag.
7226 Do not warn about usage of deprecated features. *Note Deprecated
7227 Features::.
7233 attribute.
7236 Do not warn about compile-time overflow in constant expressions.
7240 optimization. Enabled by default.
7244 directive set by user. The '-fsimd-cost-model=unlimited' option
7245 can be used to relax the cost model.
7250 Designated Inits.).
7252 This warning is included in '-Wextra'. To get other '-Wextra'
7253 warnings without this one, use '-Wextra -Wno-override-init'.
7258 Designated Inits.). This warning is enabled by default.
7262 attribute has no effect on the layout or size of the structure.
7263 Such structures may be mis-aligned for little benefit. For
7264 instance, in this code, the variable 'f.x' in 'struct bar' is
7279 bit-fields of type 'char'. This was fixed in GCC 4.4 but the
7280 change can lead to differences in the structure layout. GCC
7281 informs you when the offset of such a field has changed in GCC 4.4.
7291 This warning is enabled by default. Use
7292 '-Wno-packed-bitfield-compat' to disable this warning.
7296 packed struct or union is misaligned. For example, a warning will
7305 This warning is enabled by '-Wall'.
7309 element of the structure or to align the whole structure.
7312 smaller.
7316 in cases where multiple declaration is valid and changes nothing.
7321 another argument, or when copies between such objects overlap. For
7324 last four. However, because the call writes the terminating NUL
7325 into 'a[4]', the copies overlap and the call is diagnosed.
7331 ...
7334 even without optimization but works best at '-O2' and above. It is
7335 included in '-Wall'.
7338 Warn if an 'extern' declaration is encountered within a function.
7341 Warn if a function that is declared as inline cannot be inlined.
7343 inline functions declared in system headers.
7346 not to inline a function. For example, the compiler takes into
7348 inlining that has already been done in the current function.
7351 disappear.
7356 integer constants in boolean context, like 'if (a <= b ? 2 : 3)'.
7358 (a = 0; 1 << a; a++);'. Likewise for all kinds of multiplications
7359 regardless of the data type. This warning is enabled by '-Wall'.
7363 different size. In C++, casting to a pointer type of smaller size
7364 is an error. 'Wint-to-pointer-cast' is enabled by default.
7368 different size.
7372 in the search path but cannot be used.
7375 Warn if 'long long' type is used. This is enabled by either
7376 '-Wpedantic' or '-Wtraditional' in ISO C90 and C++98 modes. To
7377 inhibit the warning messages, use '-Wno-long-long'.
7381 alternate syntax is used in ISO C99 mode. This is enabled by
7382 either '-Wpedantic' or '-Wtraditional'. To inhibit the warning
7383 messages, use '-Wno-variadic-macros'.
7387 variable arguments like 'va_start'. These warnings are enabled by
7388 default.
7392 of the architecture. Mainly useful for the performance tuning.
7398 into a scalar type.
7401 Warn if a variable-length array is used in the code. '-Wno-vla'
7402 prevents the '-Wpedantic' warning of the variable-length array.
7408 bytes. This is similar to how '-Walloca-larger-than='BYTE-SIZE
7409 works, but with variable-length arrays.
7413 such arrays.
7417 '-O2' and above).
7419 See also '-Walloca-larger-than=BYTE-SIZE'.
7422 Disable '-Wvla-larger-than=' warnings. The option is equivalent to
7423 '-Wvla-larger-than=''SIZE_MAX' or larger.
7426 Warn if a register variable is declared volatile. The volatile
7428 reads and/or writes to register variables. This warning is enabled
7429 by '-Wall'.
7432 Warn if a requested optimization pass is disabled. This warning
7435 handle the code effectively. Often, the problem is that your code
7438 time.
7442 signedness. This option is only supported for C and Objective-C.
7444 with '-Wno-pointer-sign'.
7447 This option is only active when '-fstack-protector' is active. It
7449 smashing.
7453 maximum" length specified in the C standard. Modern compilers
7456 using longer strings.
7459 not count the trailing NUL. In C90, the limit was 509 characters;
7460 in C99, it was raised to 4095. C++98 does not specify a normative
7461 minimum maximum, so we do not diagnose overlength strings in C++.
7464 '-Wno-overlength-strings'.
7469 suffix. When used together with '-Wsystem-headers' it warns about
7470 such constants in system header files. This can be useful when
7472 the decimal floating-point extension to C99.
7477 mismatches in global declarations from different compilation units.
7478 Requires '-flto' to be enabled. Enabled by default.
7483 'designated_init' attribute.
7487 or OpenMP construct. These warnings are enabled by default.
7490 File: gcc.info, Node: Static Analyzer Options, Next: Debugging Options, Prev: Warning Options, …
7498 issues warnings for problems found on them.
7500 This analysis is much more expensive than other GCC warnings.
7523 support enabled.
7528 but these can be defeated by sufficiently complicated code.
7532 internal limit. The '-Wanalyzer-too-complex' option warns if this
7533 occurs.
7537 '-Wno-analyzer-double-fclose' to disable it.
7540 *' can have 'fclose' called on it more than once.
7544 '-Wno-analyzer-double-free' to disable it.
7547 can have 'free' called on it more than once.
7551 '-Wno-analyzer-exposure-through-output-file' to disable it.
7555 writing a password to a log file).
7559 '-Wno-analyzer-file-leak' to disable it.
7562 '<stdio.h>' 'FILE *' stream object is leaked.
7566 '-Wno-analyzer-free-of-non-heap' to disable it.
7569 called on a non-heap pointer (e.g. an on-stack buffer, or a
7570 global).
7574 '-Wno-analyzer-malloc-leak' to disable it.
7577 allocated via 'malloc' is leaked.
7581 '-Wno-analyzer-possible-null-argument' to disable it.
7585 '__attribute__((nonnull))' as requiring a non-NULL value.
7589 '-Wno-analyzer-possible-null-dereference' to disable it.
7592 possibly-NULL value is dereferenced.
7596 '-Wno-analyzer-null-argument' to disable it.
7600 '__attribute__((nonnull))' as requiring a non-NULL value.
7604 '-Wno-analyzer-null-dereference' to disable it.
7607 known to be NULL is dereferenced.
7611 '-Wno-analyzer-stale-setjmp-buffer' to disable it.
7615 function that has returned.
7618 it records the stack frame. The stack frame becomes invalid when
7619 the function containing the 'setjmp' call returns. Attempting to
7621 longer exists, and likely lead to a crash (or worse).
7626 '-Wno-analyzer-tainted-array-index' to disable it.
7630 an array access without being sanitized.
7634 '-Wno-analyzer-unsafe-call-within-signal-handler' to disable it.
7638 called from a signal handler.
7642 '-Wno-analyzer-use-after-free' to disable it.
7645 is used after 'free' is called on it.
7649 '-Wno-analyzer-use-of-pointer-in-stale-stack-frame' to disable it.
7652 is dereferenced that points to a variable in a stale stack frame.
7658 analyzer-min-snodes-for-call-summary=VALUE'.
7660 The following options control the analyzer.
7665 from callsite to each possible return.
7669 '--param analyzer-min-snodes-for-call-summary=VALUE').
7672 Restrict the analyzer to run just the named checker, and enable it.
7677 enable them.
7680 This option is intended for analyzer developers.
7683 control flow graphs with data flow information.
7686 of multiple statements within a basic block. With
7687 '-fanalyzer-fine-grained', each statement gets its own edge.
7694 deduplication logic.
7697 This option is intended for analyzer developers.
7701 "exploded graph". With '-fno-analyzer-state-merge' this merging
7702 can be suppressed, for debugging state-handling issues.
7705 This option is intended for analyzer developers.
7709 relevant e.g. the values of locals that aren't accessed later in
7710 the function and which aren't relevant to leak analysis.
7713 suppressed, for debugging state-handling issues.
7717 analyzer.
7720 This option is intended for analyzer developers. It enables more
7722 within diagnostic paths.
7725 This option is intended for analyzer developers. It enables more
7727 to state machines within diagnostic paths.
7731 are emitted for analyzer diagnostics.
7738 relating to a diagnostic. For example, for a double-'free'
7739 diagnostic, both calls to 'free' will be shown.
7743 to each function.
7748 (e.g. "true path taken" at a conditional).
7750 This level is the default.
7754 not just significant ones.
7758 various other events intended for debugging the analyzer.
7762 'FILE.analyzer.txt'. This option is overridden by
7763 '-fdump-analyzer-stderr'.
7766 Dump internal details about what the analyzer is doing to stderr.
7767 This option overrides '-fdump-analyzer'.
7771 GraphViz to 'FILE.callgraph.dot'.
7775 with GraphViz to 'FILE.eg.dot'. Nodes are color-coded based on
7776 state-machine states to emphasize state changes.
7780 relation to the program source.
7784 'FILE.eg.txt'.
7788 file per node, to 'FILE.eg-ID.txt'. This is typically a large
7789 number of dump files.
7794 graph with information on what state will be purged at each node.
7795 The graph is written to 'FILE.state-purge.dot'.
7799 GraphViz to 'FILE.supergraph.dot' and to 'FILE.supergraph-eg.dot'.
7801 interprocedural edges for calls and returns. The second dump
7803 diagnostics associated with them.
7806 File: gcc.info, Node: Debugging Options, Next: Optimize Options, Prev: Static Analyzer Options, …
7812 all cases you need only to add '-g' to your other options.
7814 GCC allows you to use '-g' with '-O'. The shortcuts taken by optimized
7819 in different places because they have been moved out of loops.
7820 Nevertheless it is possible to debug optimized output. This makes it
7821 reasonable to use the optimizer for programs that might have bugs.
7824 '-Og' (*note Optimize Options::) with '-g'. With no '-O' option at all,
7827 experience.
7831 format (stabs, COFF, XCOFF, or DWARF). GDB can work with this
7832 debugging information.
7837 debuggers crash or refuse to read the program. If you want to
7840 below).
7843 Produce debugging information for use by GDB. This means to use
7846 if at all possible.
7851 supported). The value of VERSION may be either 2, 3, 4 or 5; the
7852 default version for most targets is 4. DWARF Version 5 is only
7853 experimental.
7856 some non-conflicting DWARF 3 extensions in the unwind tables.
7859 maximum benefit.
7862 different than Version 2 and later. For historical reasons, some
7865 currently-supported versions of DWARF.
7869 supported), without GDB extensions. This is the format used by DBX
7870 on most BSD systems. On MIPS, Alpha and System V Release 4 systems
7872 by DBX. On System V Release 4 systems this option requires the GNU
7873 assembler.
7878 debugger (GDB). The use of these extensions is likely to make
7879 other debuggers crash or refuse to read the program.
7883 supported). This is the format used by the DBX debugger on IBM
7884 RS/6000 systems.
7889 debugger (GDB). The use of these extensions is likely to make
7892 error.
7896 supported). This is the format used by DEBUG on Alpha/VMS systems.
7904 much information. The default level is 2.
7906 Level 0 produces no debug information at all. Thus, '-g0' negates
7907 '-g'.
7910 in parts of the program that you don't plan to debug. This
7912 number tables, but no information about local variables.
7915 definitions present in the program. Some debuggers support macro
7916 expansion when you use '-g3'.
7919 the last such option is the one that is effective.
7922 confusion with '-gdwarf-LEVEL'. Instead use an additional
7923 '-gLEVEL' option to change the debug level for DWARF.
7927 not actually used. Use this option if you want debug information
7928 for all symbols.
7932 one object file, emit it in all object files using the class. This
7936 information by as much as a factor of two.
7940 information that are identical in different object files. Merging
7941 is not supported by all assemblers or linkers. Merging decreases
7943 increasing link processing time. Merging is enabled by default.
7948 'NEW' instead. This can be used to replace a build-time path with
7949 an install-time path in the debug info. It can also be used to
7950 change an absolute path to a relative path by using '.' for NEW.
7953 find the source files. See also '-ffile-prefix-map'.
7956 Run variable tracking pass. It computes where variables are stored
7957 at each position in code. Better debugging information is then
7959 information).
7962 '-O', '-O2', ...), debugging information ('-g') and the debug info
7963 format supports it.
7969 while optimizing. Use of '-gdwarf-4' is recommended along with it.
7972 annotations are created and maintained, but discarded at the end.
7974 except when selective scheduling is enabled.
7978 separate output file with the extension '.dwo'. This option allows
7979 the build system to avoid linking files with debug information. To
7981 '.dwo' files.
7986 call site parameter DIEs.
7989 Generate DWARF '.debug_pubnames' and '.debug_pubtypes' sections.
7992 Generate '.debug_pubnames' and '.debug_pubtypes' sections in a
7993 format suitable for conversion into a GDB index. This option is
7994 only useful with a linker that can produce GDB index version 7.
7998 their own '.debug_types' section instead of making them part of the
7999 '.debug_info' section. It is more efficient to put them in a
8001 duplicates. But not all DWARF consumers support '.debug_types'
8002 sections yet and on some objects '.debug_types' produces larger
8003 instead of smaller debugging information.
8009 DW_AT_producer attribute in DWARF debugging information. The
8011 other and from the compiler version. It is enabled by default.
8013 compiler options into the object file.
8017 selected with '-gdwarf-VERSION'. On most targets using
8019 allowed.
8023 selected with '-gdwarf-VERSION'.
8026 Inform the compiler that the assembler supports '.loc' directives.
8028 number tables.
8032 can generate itself.
8035 the assembler was found to support such directives.
8039 DWARF2+ line number tables are to be generated.
8043 and reset assertion checking in '.loc' directives.
8046 the assembler was found to support them.
8050 '-gvariable-location-views' are explicitly requested.
8055 rather than just file and line. This option is enabled by default.
8062 output of 'is_stmt' markers in the line number table. This is
8064 '-O2', ...), and outputting DWARF 2 debug information at the normal
8065 level.
8071 implied from the line number table. This enables debug information
8074 locations are present at that point. If the assembler lacks
8077 somewhat less compact. The augmented line number tables and
8080 augmentations, but they won't derive any benefit from them either.
8085 '-gstrict-dwarf' is not. When assembler support is not available,
8089 location views.
8094 '-gvariable-location-views=incompat5'. This option may be removed
8096 the proposed representation. Debug information consumers are not
8098 rendered unable to decode location lists using it.
8103 location view lists. This requires the compiler to have very
8106 an assembler that does not support location view lists. The GNU
8107 assembler will flag any such error as a 'view number mismatch'.
8109 function.
8113 Generate extended debug information for inlined functions.
8116 in debug information. This can be enabled independently of
8119 only enabled by default if location views are enabled.
8123 supported. If TYPE is not given, the default type depends on the
8124 capabilities of the assembler and linker used. TYPE may be one of
8127 compression in traditional GNU format). If the linker doesn't
8128 support writing compressed debug sections, the option is rejected.
8130 silently ignored when producing object files.
8135 in which the struct is defined.
8139 to the debugger. See '-femit-struct-debug-reduced' for a less
8140 aggressive option. See '-femit-struct-debug-detailed' for more
8141 detailed control.
8143 This option works only with DWARF debug output.
8149 defined in a system header.
8153 debugger. See '-femit-struct-debug-baseonly' for a more aggressive
8154 option. See '-femit-struct-debug-detailed' for more detailed
8155 control.
8157 This option works only with DWARF debug output.
8161 debug information. The intent is to reduce duplicate struct debug
8162 information between different object files within the same program.
8165 and '-femit-struct-debug-baseonly', which serves for most needs.
8171 are used directly ('dir:') or used indirectly ('ind:'). A struct
8172 type is used directly when it is the type of a variable, member.
8173 Indirect uses arise through pointers to structs. That is, when use
8174 of an incomplete struct is valid, the use is indirect. An example
8175 is 'struct one direct; struct two * indirect;'.
8178 structs ('ord:') or generic structs ('gen:'). Generic structs are
8179 a bit complicated to explain. For C++, these are non-explicit
8181 the above. Other programming languages have generics, but
8182 '-femit-struct-debug-detailed' does not yet implement them.
8185 which the compiler should emit debug information. The values
8186 'none' and 'any' have the normal meaning. The value 'base' means
8189 file. In practice, this means that when compiling 'foo.c', debug
8191 'foo.h', but not other header files. The value 'sys' means those
8192 types satisfying 'base' or declared in system or compiler headers.
8195 application.
8197 The default is '-femit-struct-debug-detailed=all'.
8199 This option works only with DWARF debug output.
8202 Emit DWARF unwind info as compiler generated '.eh_frame' section
8203 instead of using GAS '.cfi_*' directives.
8208 being compiled. Sometimes it is useful to have GCC emit debugging
8213 declared). More often, however, this results in a significant
8214 amount of wasted space.
8217 File: gcc.info, Node: Optimize Options, Next: Instrumentation Options, Prev: Debugging Options, …
8222 These options control various sorts of optimizations.
8225 cost of compilation and to make debugging produce the expected results.
8229 get exactly the results you expect from the source code.
8233 possibly the ability to debug the program.
8236 program. Compiling multiple files at once to a single output file mode
8238 compiling each of them.
8240 Not all optimizations are controlled directly by a flag. Only
8241 optimizations that have a flag are listed in this section.
8245 are specified. Similarly, '-Og' suppresses many optimization passes.
8249 those listed here. You can invoke GCC with '-Q --help=optimizers' to
8250 find out the exact set of optimizations that are enabled at each level.
8251 *Note Overall Options::, for examples.
8255 Optimize. Optimizing compilation takes somewhat more time, and a
8256 lot more memory for a large function.
8260 of compilation time.
8311 Optimize even more. GCC performs nearly all supported
8312 optimizations that do not involve a space-speed tradeoff. As
8314 the performance of the generated code.
8316 '-O2' turns on all optimization flags specified by '-O'. It also
8356 programs that use computed gotos.
8359 Optimize yet more. '-O3' turns on all optimizations specified by
8381 results. This is the default.
8384 Optimize for size. '-Os' enables all '-O2' optimizations except
8393 optimizations designed to reduce code size.
8396 Disregard strict standards compliance. '-Ofast' enables all '-O3'
8397 optimizations. It also enables optimizations that are not valid
8398 for all standard-compliant programs. It turns on '-ffast-math',
8401 '-fno-protect-parens'.
8404 Optimize debugging experience. '-Og' should be the optimization
8407 compilation and a good debugging experience. It is a better choice
8409 passes that collect debug information are disabled at '-O0'.
8412 passes so that individual options controlling them have no effect.
8423 last such option is the one that is effective.
8425 Options of the form '-fFLAG' specify machine-independent flags. Most
8427 '-ffoo' is '-fno-foo'. In the table below, only one of the forms is
8428 listed--the one you typically use. You can figure out the other form by
8429 either removing 'no-' or adding it.
8431 The following options control specific optimizations. They are either
8432 activated by '-O' options or are related to ones that are. You can use
8434 optimizations to be performed is desired.
8438 pop the arguments as soon as each function returns. At levels
8441 function calls and pop them all at once.
8444 Perform a forward propagation pass on RTL. The pass tries to
8446 simplified. If loop unrolling is active, two passes are performed
8447 and the second is scheduled after loop unrolling.
8450 '-O2', '-O3', '-Os'.
8453 '-ffp-contract=off' disables floating-point expression contraction.
8456 native support for them. '-ffp-contract=on' enables floating-point
8457 expression contraction if allowed by the language standard. This
8459 '-ffp-contract=off'.
8461 The default is '-ffp-contract=fast'.
8464 Omit the frame pointer in functions that don't need one. This
8466 pointer; on many targets it also makes an extra register available.
8470 omitted.
8473 pointer is used in all functions. Several targets always omit the
8474 frame pointer in leaf functions.
8476 Enabled by default at '-O' and higher.
8479 Optimize sibling and tail recursive calls.
8481 Enabled at levels '-O2', '-O3', '-Os'.
8484 Optimize various standard C string functions (e.g. 'strlen',
8486 faster alternatives.
8488 Enabled at levels '-O2', '-O3'.
8492 'always_inline' attribute. This is the default when not
8493 optimizing.
8496 the 'noinline' attribute.
8501 smaller). The compiler heuristically decides which functions are
8502 simple enough to be worth integrating in this way. This inlining
8503 applies to all functions, even those not declared inline.
8505 Enabled at levels '-O2', '-O3', '-Os'.
8509 compile time thanks to previous inlining. This option has any
8511 '-finline-functions' or '-finline-small-functions' options.
8513 Enabled at levels '-O2', '-O3', '-Os'.
8517 inline. The compiler heuristically decides which functions are
8518 worth integrating in this way.
8522 assembler code in its own right.
8524 Enabled at levels '-O2', '-O3', '-Os'. Also enabled by
8525 '-fprofile-use' and '-fauto-profile'.
8529 caller even if they are not marked 'inline'. If a call to a given
8531 assembler code in its own right.
8533 Enabled at levels '-O1', '-O2', '-O3' and '-Os', but not '-Og'.
8538 '-fprofile-generate' instrumentation and real inlining pass. Doing
8540 faster on programs having large chains of nested wrapper functions.
8542 Enabled by default.
8547 reference by parameters passed by value.
8549 Enabled at levels '-O2', '-O3' and '-Os'.
8552 By default, GCC limits the size of functions that can be inlined.
8553 This flag allows coarse control of this limit. N is the size of
8554 functions that can be inlined in number of pseudo instructions.
8557 may be specified individually by using '--param NAME=VALUE'. The
8561 is set to N/2.
8563 is set to N/2.
8566 controlling inlining and for the defaults of these parameters.
8569 default behavior.
8572 an abstract measurement of function's size. In no way does it
8574 meaning might change from one release to an another.
8579 'dllexport' attribute or declspec. *Note Declaring Attributes of
8580 Functions: Function Attributes.
8585 callers. This switch does not affect functions using the 'extern
8586 inline' extension in GNU C90. In C++, emit any and all inline
8587 functions into the object file.
8591 is never used.
8595 turned on, even if the variables aren't referenced.
8597 GCC enables this option by default. If you want to force the
8600 '-fno-keep-static-consts' option.
8604 floating-point constants) across compilation units.
8607 assembler and linker support it. Use '-fno-merge-constants' to
8608 inhibit this behavior.
8610 Enabled at levels '-O', '-O2', '-O3', '-Os'.
8613 Attempt to merge identical constants and identical variables.
8615 This option implies '-fmerge-constants'. In addition to
8616 '-fmerge-constants' this considers e.g. even constant initialized
8618 floating-point types. Languages like C or C++ require each
8621 results in non-conforming behavior.
8625 scheduling pass. This pass looks at innermost loops and reorders
8626 their instructions by overlapping different iterations.
8630 moves allowed. By setting this flag certain anti-dependences edges
8632 the life-range analysis. This option is effective only with
8633 '-fmodulo-sched' enabled.
8639 zero, and then branch based upon the result. This option is only
8641 include x86, PowerPC, IA-64 and S/390. Note that the
8644 introduced by other optimization passes.
8647 '-Og'.
8652 explicitly.
8656 optimizations performed when this option is not used.
8662 that are initialized to zero into BSS. This can save space in the
8663 resulting code.
8666 explicitly rely on variables going to the data section--e.g., so
8668 section and/or make assumptions based on that.
8670 The default is '-fzero-initialized-in-bss'.
8674 location where another comparison subsumed by the first is found.
8677 whether the condition is known to be true or false.
8679 Enabled at levels '-O2', '-O3', '-Os'.
8684 them independently. This normally generates better code for those
8685 types, but may make debugging more difficult.
8687 Enabled at levels '-O', '-O2', '-O3', '-Os'.
8690 Fully split wide types early, instead of very late. This option
8691 has no effect unless '-fsplit-wide-types' is turned on.
8693 This is the default on some targets.
8698 other path. For example, when CSE encounters an 'if' statement
8700 tested is false.
8702 Enabled at levels '-O2', '-O3', '-Os'.
8706 jumps that conditionally skip over blocks. When CSE encounters a
8708 causes CSE to follow the jump around the body of the 'if'.
8710 Enabled at levels '-O2', '-O3', '-Os'.
8714 are performed.
8716 Enabled at levels '-O2', '-O3', '-Os'.
8719 Perform a global common subexpression elimination pass. This pass
8720 also performs global constant and copy propagation.
8725 '-fno-gcse' to the command line.
8727 Enabled at levels '-O2', '-O3', '-Os'.
8732 into themselves. This allows a loop containing a load/store
8734 within the loop.
8736 Enabled by default when '-fgcse' is enabled.
8740 global common subexpression elimination. This pass attempts to
8741 move stores out of loops. When used in conjunction with
8743 to a load before the loop and a store after the loop.
8745 Not enabled at any optimization level.
8750 to the same memory location (both partial and full redundancies).
8752 Not enabled at any optimization level.
8756 pass is performed after reload. The purpose of this pass is to
8757 clean up redundant spilling.
8759 Enabled by '-fprofile-use' and '-fauto-profile'.
8763 derive bounds for the number of iterations of a loop. This assumes
8765 causing signed integer overflows or out-of-bound array accesses.
8767 loop unrolling and peeling and loop exit test optimizations. This
8768 option is enabled by default.
8772 blocks (e.g. Fortran) may later be overridden with longer trailing
8773 arrays. This prevents certain optimizations that depend on knowing
8774 the array bounds.
8777 Perform cross-jumping transformation. This transformation unifies
8778 equivalent code and saves code size. The resulting code may or may
8779 not perform better than without cross-jumping.
8781 Enabled at levels '-O2', '-O3', '-Os'.
8784 Combine increments or decrements of addresses with memory accesses.
8786 instructions to support this. Enabled by default at '-O' and
8787 higher on architectures that support this.
8790 Perform dead code elimination (DCE) on RTL. Enabled by default at
8791 '-O' and higher.
8794 Perform dead store elimination (DSE) on RTL. Enabled by default at
8795 '-O' and higher.
8799 equivalents. This includes use of conditional moves, min, max, set
8801 arithmetics. The use of conditional execution on chips where it is
8802 available is controlled by '-fif-conversion2'.
8804 Enabled at levels '-O', '-O2', '-O3', '-Os', but not with '-Og'.
8808 conditional jumps into branch-less equivalents.
8810 Enabled at levels '-O', '-O2', '-O3', '-Os', but not with '-Og'.
8816 afterwards. For a hierarchy with virtual bases, the base and
8818 function. With this option, the base and complete variants are
8819 changed to be thunks that call a common implementation.
8821 Enabled by '-Os'.
8825 that no code or data element resides at address zero. This option
8827 levels. In addition, other optimization passes in GCC use this
8831 checked after it has already been dereferenced, it cannot be null.
8833 Note however that in some environments this assumption is not true.
8835 for programs that depend on that behavior.
8837 This option is enabled by default on most targets. On Nios II ELF,
8838 it defaults to off. On AVR, CR16, and MSP430, this option is
8839 completely disabled.
8842 at different optimization levels.
8845 Attempt to convert calls to virtual functions to direct calls.
8848 constant propagation ('-fipa-cp'). Enabled at levels '-O2', '-O3',
8849 '-Os'.
8853 calls. Based on the analysis of the type inheritance graph,
8854 determine for a given call the set of likely targets. If the set
8856 deciding between direct and indirect calls. The speculative calls
8857 enable more optimizations, such as inlining. When they seem
8859 original form.
8863 when running the link-time optimizer in local transformation mode.
8865 increases the size of streamed data. For this reason it is
8866 disabled by default.
8870 expensive.
8872 Enabled at levels '-O2', '-O3', '-Os'.
8875 Attempt to remove redundant extension instructions. This is
8878 32-bit half.
8880 Enabled for Alpha, AArch64 and x86 at levels '-O2', '-O3', '-Os'.
8886 object are dead when the object is destroyed. Normally dead store
8889 object, you can use this flag to disable this optimization. To
8890 preserve stores before the constructor starts (e.g. because your
8892 as dead after the destructor, you can use '-flifetime-dse=1'. The
8894 '-flifetime-dse=2'. '-flifetime-dse=0' is equivalent to
8895 '-fno-lifetime-dse'.
8899 shrinkage. This is helpful for fast processors with small or
8900 moderate size register sets.
8904 allocator. The ALGORITHM argument can be 'priority', which
8906 Chaitin-Briggs coloring. Chaitin-Briggs coloring is not
8908 support it, it is the default because it generates better code.
8911 Use specified regions for the integrated register allocator. The
8915 Use all loops as register allocation regions. This can give
8917 register set.
8921 the regions. This value usually gives the best results in
8924 '-O2', ...).
8927 Use all functions as a single region. This typically results
8929 or '-O0'.
8933 decisions to hoist expressions. This option usually results in
8934 smaller code, but it can slow the compiler down.
8936 This option is enabled at level '-Os' for all targets.
8940 move loop invariants. This option usually results in generation of
8942 32 registers), but it can slow the compiler down.
8944 This option is enabled at level '-O3' for some targets.
8948 registers living through a call. Each hard register gets a
8950 larger.
8953 Disable sharing of stack slots allocated for pseudo-registers.
8956 larger.
8959 Enable CFG-sensitive rematerialization in LRA. Instead of loading
8961 values if it is profitable.
8963 Enabled at levels '-O2', '-O3', '-Os'.
8968 branch instructions.
8970 Enabled at levels '-O', '-O2', '-O3', '-Os', but not at '-Og'.
8975 being unavailable. This helps machines that have slow floating
8978 instruction is required.
8980 Enabled at levels '-O2', '-O3'.
8984 instruction scheduling after register allocation has been done.
8987 than one cycle.
8989 Enabled at levels '-O2', '-O3', '-Os'.
8993 normally enabled when scheduling before register allocation, i.e.
8994 with '-fschedule-insns' or at '-O2' or higher.
8998 normally enabled when scheduling before register allocation, i.e.
8999 with '-fschedule-insns' or at '-O2' or higher.
9003 allocation. This only makes sense when scheduling before register
9004 allocation is enabled, i.e. with '-fschedule-insns' or at '-O2' or
9005 higher. Usage of this option can improve the generated code and
9008 register allocation.
9011 Allow speculative motion of some load instructions. This only
9012 makes sense when scheduling before register allocation, i.e. with
9013 '-fschedule-insns' or at '-O2' or higher.
9016 Allow speculative motion of more load instructions. This only
9017 makes sense when scheduling before register allocation, i.e. with
9018 '-fschedule-insns' or at '-O2' or higher.
9024 scheduling pass. '-fno-sched-stalled-insns' means that no insns
9026 limit on how many queued insns can be moved prematurely.
9028 '-fsched-stalled-insns=1'.
9034 the queue of stalled insns. This has an effect only during the
9036 used. '-fno-sched-stalled-insns-dep' is equivalent to
9037 '-fsched-stalled-insns-dep=0'. '-fsched-stalled-insns-dep' without
9038 a value is equivalent to '-fsched-stalled-insns-dep=1'.
9042 scheduling. This allows motion across basic block boundaries,
9043 resulting in faster schedules. This option is experimental, as not
9045 to avoid unreliable results from the algorithm.
9048 i.e. with '-fschedule-insns2' or at '-O2' or higher.
9051 Enable the group heuristic in the scheduler. This heuristic favors
9052 the instruction that belongs to a schedule group. This is enabled
9053 by default when scheduling is enabled, i.e. with '-fschedule-insns'
9054 or '-fschedule-insns2' or at '-O2' or higher.
9057 Enable the critical-path heuristic in the scheduler. This
9058 heuristic favors instructions on the critical path. This is
9059 enabled by default when scheduling is enabled, i.e. with
9060 '-fschedule-insns' or '-fschedule-insns2' or at '-O2' or higher.
9063 Enable the speculative instruction heuristic in the scheduler.
9065 dependency weakness. This is enabled by default when scheduling is
9066 enabled, i.e. with '-fschedule-insns' or '-fschedule-insns2' or at
9067 '-O2' or higher.
9070 Enable the rank heuristic in the scheduler. This heuristic favors
9072 frequency. This is enabled by default when scheduling is enabled,
9073 i.e. with '-fschedule-insns' or '-fschedule-insns2' or at '-O2' or
9074 higher.
9077 Enable the last-instruction heuristic in the scheduler. This
9079 instruction scheduled. This is enabled by default when scheduling
9080 is enabled, i.e. with '-fschedule-insns' or '-fschedule-insns2' or
9081 at '-O2' or higher.
9084 Enable the dependent-count heuristic in the scheduler. This
9086 depending on it. This is enabled by default when scheduling is
9087 enabled, i.e. with '-fschedule-insns' or '-fschedule-insns2' or at
9088 '-O2' or higher.
9091 Modulo scheduling is performed before traditional scheduling. If a
9093 schedule. Use this option to control that behavior.
9096 Schedule instructions using selective scheduling algorithm.
9097 Selective scheduling runs instead of the first scheduler pass.
9100 Schedule instructions using selective scheduling algorithm.
9101 Selective scheduling runs instead of the second scheduler pass.
9105 scheduling. This option has no effect unless one of
9106 '-fselective-scheduling' or '-fselective-scheduling2' is turned on.
9110 outer loops. This option has no effect unless
9111 '-fsel-sched-pipelining' is turned on.
9115 dynamic linker. This means that for symbols exported from the DSO,
9118 variable in question may change. While this feature is useful, for
9120 implementation, it is expensive in the terms of code quality. With
9123 have precisely the same semantics (and side effects). Similarly if
9125 variable will be the same. The flag has no effect for functions
9128 declared weak.
9132 it, rather than at the top of the function. This flag is enabled
9133 by default at '-O' and higher.
9137 so that those parts are only executed when needed. This option is
9139 turned on and the target supports this.
9144 the registers around such calls. Such allocation is done only when
9145 it seems to result in better code.
9149 instead.
9151 Enabled at levels '-O2', '-O3', '-Os'.
9155 references and then tries to find ways to combine them.
9157 Enabled by default at '-O1' and higher.
9161 used by any called function. In that case it is not necessary to
9162 save and restore them around calls. This is only possible if
9164 function and they are compiled before it.
9170 epilogues in RTL).
9173 Attempt to minimize stack usage. The compiler attempts to use less
9174 stack space, even if that makes the program slower. This option
9176 'large-stack-frame-growth' parameter to 400.
9179 Perform reassociation on trees. This flag is enabled by default at
9180 '-O' and higher.
9183 Perform code hoisting. Code hoisting tries to move the evaluation
9185 as possible. This is especially useful as a code size
9186 optimization, but it often helps for code speed as well. This flag
9187 is enabled by default at '-O2' and higher.
9190 Perform partial redundancy elimination (PRE) on trees. This flag
9191 is enabled by default at '-O2' and '-O3'.
9194 Make partial redundancy elimination (PRE) more aggressive. This
9195 flag is enabled by default at '-O3'.
9198 Perform forward propagation on trees. This flag is enabled by
9199 default at '-O' and higher.
9202 Perform full redundancy elimination (FRE) on trees. The difference
9204 computed on all paths leading to the redundant computation. This
9205 analysis is faster than PRE, though it exposes fewer redundancies.
9206 This flag is enabled by default at '-O' and higher.
9209 Perform hoisting of loads from conditional pointers on trees. This
9210 pass is enabled by default at '-O' and higher.
9215 target architecture has a conditional move instruction. This flag
9216 is enabled by default at '-O2' and higher.
9219 Perform copy propagation on trees. This pass eliminates
9220 unnecessary copy operations. This flag is enabled by default at
9221 '-O' and higher.
9224 Discover which functions are pure or constant. Enabled by default
9225 at '-O' and higher.
9228 Discover which static variables do not escape the compilation unit.
9229 Enabled by default at '-O' and higher.
9233 variables. Enabled by default at '-O' and higher.
9236 Reduce stack alignment on call sites if possible. Enabled by
9237 default.
9241 modification and reference analysis. This option can cause
9242 excessive memory and compile-time usage on large compilation units.
9243 It is not enabled by default at any optimization level.
9246 Perform interprocedural profile propagation. The functions called
9247 only from cold functions are marked as cold. Also functions
9249 destructors) are identified. Cold functions and loop less parts of
9250 functions executed once are then optimized for size. Enabled by
9251 default at '-O' and higher.
9254 Perform interprocedural constant propagation. This optimization
9256 are constants and then optimizes accordingly. This optimization
9258 constants passed to functions. This flag is enabled by default at
9259 '-O2', '-Os' and '-O3'. It is also enabled by '-fprofile-use' and
9260 '-fauto-profile'.
9264 propagation stronger. When enabled, interprocedural constant
9266 function can be called with constant arguments. Because this
9269 ipa-cp-unit-growth=VALUE'). This flag is enabled by default at
9270 '-O3'. It is also enabled by '-fprofile-use' and '-fauto-profile'.
9273 When enabled, perform interprocedural bitwise constant propagation.
9275 '-fauto-profile'. It requires that '-fipa-cp' is enabled.
9278 When enabled, perform interprocedural propagation of value ranges.
9279 This flag is enabled by default at '-O2'. It requires that
9280 '-fipa-cp' is enabled.
9284 variables. The optimization reduces code size and may disturb
9286 different name. The optimization works more effectively with
9287 link-time optimization enabled.
9292 only by GCC and equivalences found only by Gold.
9294 This flag is enabled by default at '-O2' and '-Os'.
9298 live-patching.
9302 function, the latter is called an impacted function of the former.
9304 too.
9307 interprocedural optimizations. For example, a caller is impacted
9311 indirect callers, etc.
9314 of impacted functions for each function. In order to control the
9317 two different levels.
9325 aggregates and partial inlining. As a result, when patching a
9327 impacted, therefore need to be patched as well.
9338 Only enable inlining of static functions. As a result, when
9340 so need to be patched as well.
9349 value is INLINE-CLONE.
9351 This flag is disabled by default.
9354 optimization ('-flto').
9358 dereferencing a null pointer. Isolate those paths from the main
9360 behavior into a trap. This flag is enabled by default at '-O2' and
9362 enabled.
9367 'nonnull' attribute. Isolate those paths from the main control
9369 into a trap. This is not currently enabled, but may be enabled by
9370 '-O2' in the future.
9373 Perform forward store motion on trees. This flag is enabled by
9374 default at '-O' and higher.
9378 propagate pointer alignment information. This pass only operates
9380 higher, except for '-Og'. It requires that '-ftree-ccp' is
9381 enabled.
9384 Perform sparse conditional constant propagation (CCP) on trees.
9386 default at '-O' and higher.
9390 in order to simplify the definitions. For example, this pass
9391 strips sign operations if the sign of a value never matters. The
9392 flag is enabled by default at '-O' and higher.
9396 code. This pass is enabled by default at '-O1' and higher, except
9397 for '-Og'.
9401 initializations from a scalar array. This flag is enabled by
9402 default at '-O2' and higher.
9405 Look for identical code sequences. When found, replace one with a
9406 jump to the other. This optimization is known as tail merging or
9407 cross jumping. This flag is enabled by default at '-O2' and
9408 higher. The compilation time in this pass can be limited using
9410 'max-tail-merge-iterations' parameter.
9413 Perform dead code elimination (DCE) on trees. This flag is enabled
9414 by default at '-O' and higher.
9419 side effects. This flag is enabled by default at '-O2' and higher
9420 if '-Os' is not also specified.
9424 not loop indefinitely. This allows the compiler to remove loops
9426 endless looping as such.
9429 or higher.
9434 expression simplification) based on a dominator tree traversal.
9435 This also performs jump threading (to reduce jumps to jumps). This
9436 flag is enabled by default at '-O' and higher.
9439 Perform dead store elimination (DSE) on trees. A dead store is a
9441 store without any intervening loads. In this case the earlier
9442 store can be deleted. This flag is enabled by default at '-O' and
9443 higher.
9446 Perform loop header copying on trees. This is beneficial since it
9447 increases effectiveness of code motion optimizations. It also
9448 saves one jump. This flag is enabled by default at '-O' and
9449 higher. It is not enabled for '-Os', since it usually increases
9450 code size.
9453 Perform loop optimizations on trees. This flag is enabled by
9454 default at '-O' and higher.
9459 Perform loop nest optimizations. Same as '-floop-nest-optimize'.
9462 infrastructure.
9465 Enable the identity transformation for graphite. For every SCoP we
9467 gimple. Using '-fgraphite-identity' we can check the costs or
9468 benefits of the GIMPLE -> GRAPHITE -> GIMPLE transformation. Some
9470 like index splitting and dead code elimination in loops.
9473 Enable the isl based loop nest optimizer. This is a generic loop
9474 nest optimizer based on the Pluto optimization algorithms. It
9476 parallelism. This option is experimental.
9480 can be parallelized. Parallelize all the loops that can be
9482 that it is profitable to parallelize the loops.
9487 user-defined variables, instead of just compiler temporaries. This
9489 compiled with '-fno-var-tracking-assignments'. In the negated
9490 form, this flag prevents SSA coalescing of user variables. This
9492 does very little otherwise.
9496 branch-less equivalents. The intent is to remove control-flow from
9498 vectorization pass to handle these loops. This is enabled by
9499 default if vectorization is enabled.
9502 Perform loop distribution. This flag can improve cache performance
9504 parallelization or vectorization, to take place. For example, the
9517 This flag is enabled by default at '-O3'. It is also enabled by
9518 '-fprofile-use' and '-fauto-profile'.
9522 with calls to a library. This flag is enabled by default at '-O2'
9523 and higher, and by '-fprofile-use' and '-fauto-profile'.
9526 to memset zero. For example, the loop
9539 zero. This flag is enabled by default at '-O3'. It is also
9540 enabled by '-fprofile-use' and '-fauto-profile'.
9543 Perform loop interchange outside of graphite. This flag can
9545 optimizations, like vectorization, to take place. For example, the
9556 This flag is enabled by default at '-O3'. It is also enabled by
9557 '-fprofile-use' and '-fauto-profile'.
9560 Apply unroll and jam transformations on feasible loops. In a loop
9562 resulting multiple inner loops. This flag is enabled by default at
9563 '-O3'. It is also enabled by '-fprofile-use' and '-fauto-profile'.
9566 Perform loop invariant motion on trees. This pass moves only
9568 operations that expand to nontrivial sequences of insns). With
9571 invariantness analysis in loop unswitching. The pass also includes
9572 store motion.
9577 analysis. Later optimizations then may determine the number
9578 easily. Useful especially in connection with unrolling.
9581 Perform final value replacement. If a variable is modified in a
9585 provided it is sufficiently cheap. This reduces data dependencies
9586 and may allow further simplifications. Enabled by default at '-O'
9587 and higher.
9592 trees.
9595 Parallelize loops, i.e., split their iteration space to run in n
9596 threads. This is only possible for loops whose iterations are
9597 independent and can be arbitrarily reordered. The optimization is
9599 CPU-intensive, rather than constrained e.g. by memory bandwidth.
9601 targets that have support for '-pthread'.
9604 Perform function-local points-to analysis on trees. This flag is
9605 enabled by default at '-O1' and higher, except for '-Og'.
9608 Perform scalar replacement of aggregates. This pass replaces
9610 to memory too early. This flag is enabled by default at '-O1' and
9611 higher, except for '-Og'.
9614 Perform merging of narrow stores to consecutive memory addresses.
9617 instructions. This is enabled by default at '-O2' and higher as
9618 well as '-Os'.
9622 phase. Single use/single def temporaries are replaced at their use
9623 location with their defining expression. This results in
9625 work on resulting in better RTL generation. This is enabled by
9626 default at '-O' and higher.
9629 Perform straight-line strength reduction on trees. This recognizes
9631 less expensive calculations when possible. This is enabled by
9632 default at '-O' and higher.
9635 Perform vectorization on trees. This flag enables
9637 explicitly specified.
9640 Perform loop vectorization on trees. This flag is enabled by
9642 '-fauto-profile'.
9645 Perform basic block vectorization on trees. This flag is enabled
9647 '-fauto-profile'.
9650 Alter the cost model used for vectorization. The MODEL argument
9651 should be one of 'unlimited', 'dynamic' or 'cheap'. With the
9656 scalar loop. The 'cheap' model disables vectorization of loops
9659 otherwise is equal to the 'dynamic' model. The default cost model
9661 'cheap'.
9665 the OpenMP simd directive. The MODEL argument should be one of
9666 'unlimited', 'dynamic', 'cheap'. All values of MODEL have the same
9668 model defined with '-fvect-cost-model' is used.
9671 Perform Value Range Propagation on trees. This is similar to the
9673 are propagated. This allows the optimizers to remove unnecessary
9674 range checks like array bound checks and null pointer checks. This
9675 is enabled by default at '-O2' and higher. Null pointer check
9677 enabled.
9680 Split paths leading to loop backedges. This can improve dead code
9681 elimination and common subexpression elimination. This is enabled
9682 by default at '-O3' and above.
9687 iteration. This breaks long dependency chains, thus improving
9688 efficiency of the scheduling passes.
9691 same effect. However, that is not reliable in cases where the loop
9692 body is more complicated than a single basic block. It also does
9694 CSE pass.
9696 This optimization is enabled by default.
9701 code.
9704 disabled by default otherwise.
9707 Inline parts of functions. This option has any effect only when
9709 '-finline-small-functions' options.
9711 Enabled at levels '-O2', '-O3', '-Os'.
9714 Perform predictive commoning optimization, i.e., reusing
9716 previous iterations of loops.
9718 This option is enabled at level '-O3'. It is also enabled by
9719 '-fprofile-use' and '-fauto-profile'.
9724 large arrays.
9727 dependent on the structure of loops within the source code.
9729 Disabled at level '-Os'.
9734 'vsnprintf' (but not 'printf' of 'fprintf'). This transformation
9738 that makes determining the exact return value possible. For
9742 because the return value is guaranteed to be at most 8.
9746 ...
9749 and yields best results with '-O2' and above. It works in tandem
9750 with the '-Wformat-overflow' and '-Wformat-truncation' options.
9751 The '-fprintf-return-value' option is enabled by default.
9755 Disable any machine-specific peephole optimizations. The
9758 use the other, a few use both.
9760 '-fpeephole' is enabled by default. '-fpeephole2' enabled at
9761 levels '-O2', '-O3', '-Os'.
9764 Do not guess branch probabilities using heuristics.
9767 provided by profiling feedback ('-fprofile-arcs'). These
9768 heuristics are based on the control flow graph. If some branch
9772 account. The interactions between the heuristics and
9775 '__builtin_expect' are easier to understand.
9779 function.
9782 '-O3', '-Os'.
9786 number of taken branches and improve code locality.
9788 Enabled at levels '-O', '-O2', '-O3', '-Os'.
9791 Use the specified algorithm for basic block reordering. The
9796 executed by making extra copies of code.
9799 '-O2', '-O3'.
9804 basic blocks into separate sections of the assembly and '.o' files,
9805 to improve paging and cache locality performance.
9811 architecture that does not support named sections. When
9814 working linker).
9816 Enabled for x86 at levels '-O2', '-O3', '-Os'.
9820 locality. This is implemented by using special subsections
9821 '.text.hot' for most frequently executed functions and
9822 '.text.unlikely' for unlikely executed functions. Reordering is
9824 sections and linker must place them in a reasonable way.
9829 Attributes::).
9831 Enabled at levels '-O2', '-O3', '-Os'.
9835 applicable to the language being compiled. For C (and C++), this
9836 activates optimizations based on the type of expressions. In
9839 almost the same. For example, an 'unsigned int' can alias an
9840 'int', but not a 'void*' or a 'double'. A character type may alias
9841 any other type.
9851 t.d = 3.0;
9852 return t.i;
9855 most recently written to (called "type-punning") is common. Even
9857 memory is accessed through the union type. So, the code above
9858 works as expected. *Note Structures unions enumerations and
9859 bit-fields implementation::. However, this code might not:
9863 t.d = 3.0;
9864 ip = &t.i;
9870 if the cast uses a union type, e.g.:
9877 '-Os'.
9885 or equal to N, skipping up to M-1 bytes. This ensures that at
9887 without crossing an N-byte alignment boundary.
9889 If M is not specified, it defaults to N.
9895 if this can be done by skipping 6 bytes or less.
9901 2 bytes or less. If M2 is not specified, it defaults to N2.
9904 that case, it is rounded up.
9907 mean that functions are not aligned.
9909 If N is not specified or is zero, use a machine-dependent default.
9910 The maximum allowed N option value is 65536.
9912 Enabled at levels '-O2', '-O3'.
9916 unnecessarily overaligning functions. It attempts to instruct the
9918 but not to skip more bytes than the size of the function.
9925 Align all branch targets to a power-of-two boundary.
9928 option. '-fno-align-labels' and '-falign-labels=1' are equivalent
9929 and mean that labels are not aligned.
9932 greater than this value, then their values are used instead.
9935 which is very likely to be '1', meaning no alignment. The maximum
9936 allowed N option value is 65536.
9938 Enabled at levels '-O2', '-O3'.
9945 Align loops to a power-of-two boundary. If the loops are executed
9947 instructions.
9950 used instead.
9953 option. '-fno-align-loops' and '-falign-loops=1' are equivalent
9954 and mean that loops are not aligned. The maximum allowed N option
9955 value is 65536.
9957 If N is not specified or is zero, use a machine-dependent default.
9959 Enabled at levels '-O2', '-O3'.
9967 where the targets can only be reached by jumping. In this case, no
9968 dummy operations need be executed.
9971 used instead.
9974 option. '-fno-align-jumps' and '-falign-jumps=1' are equivalent
9975 and mean that loops are not aligned.
9977 If N is not specified or is zero, use a machine-dependent default.
9978 The maximum allowed N option value is 65536.
9980 Enabled at levels '-O2', '-O3'.
9983 Do not remove unused C++ allocations in dead code elimination.
9986 Allow the compiler to introduce new data races on stores.
9988 Enabled at level '-Ofast'.
9991 This option is left for compatibility reasons. '-funit-at-a-time'
9993 '-fno-toplevel-reorder' and '-fno-section-anchors'.
9995 Enabled by default.
9999 statements. Output them in the same order that they appear in the
10000 input file. When this option is used, unreferenced static
10001 variables are not removed. This option is intended to support
10002 existing code that relies on a particular ordering. For new code,
10003 it is better to use attributes when possible.
10006 at '-O0' if '-fsection-anchors' is explicitly requested.
10008 '-fno-section-anchors'.
10012 and assign each web individual pseudo register. This allows the
10015 optimizer and trivial dead code remover. It can, however, make
10017 register".
10019 Enabled by default with '-funroll-loops'.
10023 program being compiled. All public functions and variables with
10026 optimized more aggressively by interprocedural optimizers.
10028 This option should not be used in combination with '-flto'.
10030 precise information.
10033 This option runs the standard link-time optimizer. When invoked
10036 object file. When the object files are linked together, all the
10038 as if they had been part of the same translation unit.
10041 should be specified at compile time and during the final link. It
10044 link time. For example:
10046 gcc -c -O2 -flto foo.c
10047 gcc -c -O2 -flto bar.c
10048 gcc -o myprog -flto -O2 foo.o bar.o
10051 GIMPLE into special ELF sections inside 'foo.o' and 'bar.o'. The
10052 final invocation reads the GIMPLE bytecode from 'foo.o' and
10053 'bar.o', merges the two files into a single internal image, and
10054 compiles the result as usual. Since both 'foo.o' and 'bar.o' are
10057 if they were a single one. This means, for example, that the
10058 inliner is able to inline functions in 'bar.o' into functions in
10059 'foo.o' and vice-versa.
10063 gcc -o myprog -flto -O2 foo.c bar.c
10065 The above generates bytecode for 'foo.c' and 'bar.c', merges them
10067 usual to produce 'myprog'.
10071 step. GCC automatically performs link-time optimization if any of
10073 option. You can always override the automatic decision to do
10074 link-time optimization by passing '-fno-lto' to the link command.
10077 make certain whole program assumptions. The compiler needs to know
10079 runtime outside of the link-time optimized unit. When supported by
10082 symbols. When the linker plugin is not available,
10085 decisions.
10090 '-ffat-lto-objects'. This means that object files with LTO
10092 passed to the linker, no interprocedural optimizations are applied.
10094 is faster but you cannot perform a regular, non-LTO link on them.
10097 optimizations to those files that contain bytecode. Therefore, you
10099 and final object code. GCC automatically selects which files to
10101 processing.
10106 files.
10110 compiling the object files. Note that it is generally ineffective
10112 at compile time, for two reasons. First, compiling without
10114 needed for effective optimization at link time. Second, some early
10116 at link time.
10120 link. Currently, the following options and their settings are
10123 '-fnon-call-exceptions', '-fgnu-tm' and all the '-m' target flags.
10127 value is ignored. This includes options such as
10128 '-freg-struct-return' and '-fpcc-struct-return'.
10133 translation units. Specifically '-fno-strict-overflow', '-fwrapv'
10135 '-ffp-contract=off' takes precedence over '-ffp-contract=fast'.
10136 You can override them at link time.
10140 compile-step at function granularity. Note that this matters only
10141 for diagnostics emitted during optimization. Note that code
10144 compile time.
10149 all translation units. You can alternatively also specify
10150 assembler options at LTO link time.
10153 time. If any of the input files at link time were built with debug
10155 as well. Any elaborate debug info settings like the dwarf level
10158 is discouraged.
10162 (undefined behavior according to ISO C99 6.2.7), a non-fatal
10163 diagnostic may be issued. The behavior is still undefined at run
10164 time. Similar diagnostics may be raised for other languages.
10170 gcc -c -flto foo.c
10171 g++ -c -flto bar.cc
10172 gfortran -c -flto baz.f90
10173 g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran
10177 runtime libraries. In general, when mixing languages in LTO mode,
10179 languages in a regular (non-LTO) compilation.
10182 archive, say 'libfoo.a', it is possible to extract and use them in
10183 an LTO link if you are using a linker with plugin support. To
10186 object files with GIMPLE bytecode, use 'gcc-nm'. Those commands
10188 support. At link time, use the flag '-fuse-linker-plugin' to
10192 gcc -o myprog -O2 -flto -fuse-linker-plugin a.o b.o -lfoo
10195 GIMPLE files from 'libfoo.a' and passes them on to the running GCC
10196 to make them part of the aggregated GIMPLE image to be optimized.
10199 enable the linker plugin, then the objects inside 'libfoo.a' are
10201 LTO optimization process. In order to make a static library
10203 object files with '-flto' '-ffat-lto-objects'.
10206 program to operate. If the program does not require any symbols to
10210 opportunities. Use of '-fwhole-program' is not needed when linker
10211 plugin is active (see '-fuse-linker-plugin').
10214 bytecode that is portable between different types of hosts. The
10217 an older or newer version of GCC.
10221 combination of ELF and DWARF.
10225 utilizing an installed 'make' program. The environment variable
10226 'MAKE' may be used to override the program used.
10229 mode to determine the number of parallel jobs. This is useful when
10230 the Makefile calling GCC is already executing in parallel. You
10232 this to work. This option likely only works if 'MAKE' is GNU make.
10234 running GNU make's job server.
10238 present in your system.
10241 Specify the partitioning algorithm used by the link-time optimizer.
10245 partition for every symbol where possible. Specifying 'none' as an
10246 algorithm disables partitioning and streaming completely. The
10247 default value is 'balanced'. While '1to1' can be used as an
10249 is intended for internal testing only. The value 'one' specifies
10252 directly from the WPA phase.
10257 meaningful in conjunction with LTO mode ('-flto'). Valid values
10258 are 0 (no compression) to 9 (maximum compression). Values outside
10259 this range are clamped to either 0 or 9. If the option is not
10260 given, a default balanced compression setting is used.
10263 Enables the use of a linker plugin during link-time optimization.
10265 available in gold or in GNU ld 2.21 or newer.
10268 bytecode out of library archives. This improves the quality of
10269 optimization by exposing more code to the link-time optimizer.
10271 (by non-LTO object or during dynamic linking). Resulting code
10273 hidden visibility) are similar to '-fwhole-program'. See '-flto'
10274 for a description of the effect of this flag and how to use it.
10278 plugins (GNU ld 2.21 or newer or gold).
10282 language and the object code. This makes them usable for both LTO
10283 linking and normal linking. This option is effective only when
10284 compiling with '-flto' and is ignored at link time.
10287 but requires the complete toolchain to be aware of LTO. It requires
10288 a linker with linker plugin support for basic functionality.
10291 building static libraries etc). GCC provides the 'gcc-ar',
10293 tools. With non fat LTO makefiles need to be modified to use them.
10295 Note that modern binutils provide plugin auto-load mechanism.
10298 and 'gcc-ranlib').
10301 support.
10306 flags similar to a comparison operation based on that arithmetic.
10307 If possible, eliminate the explicit comparison operation.
10311 complete.
10313 Enabled at levels '-O', '-O2', '-O3', '-Os'.
10318 scheduling dependencies and occasionally eliminate the copy.
10320 Enabled at levels '-O', '-O2', '-O3', '-Os'.
10324 programs may be inconsistent due to missed counter updates. When
10326 out such inconsistencies. By default, GCC emits an error message
10327 when an inconsistent profile is detected.
10329 This option is enabled by '-fauto-profile'.
10333 train run are optimized agressively for size rather than speed. In
10335 the program. (For example, program may contain functions specific
10337 configurations program is run on.) With
10340 optimized as if they were compiled without profile feedback. This
10342 but also leads to significantly bigger code.
10359 information. *Note Instrumentation Options::, for information
10360 about the '-fprofile-generate' option.
10363 not match the source code. This error can be turned into a warning
10364 by using '-Wno-error=coverage-mismatch'. Note this may result in
10365 poorly optimized code. Additionally, by default, GCC also emits a
10367 '-Wmissing-profile').
10370 feedback data files. See '-fprofile-dir'.
10386 PATH is the name of a file containing AutoFDO profile information.
10387 If omitted, it defaults to 'fbdata.afdo' in the current directory.
10391 system. For more information, see <https://perf.wiki.kernel.org/>.
10393 E.g.
10394 perf record -e br_inst_retired:near_taken -b -o perf.data \
10398 a format that can be used by GCC. You must also supply the
10399 unstripped binary for your program to this tool. See
10400 <https://github.com/google/autofdo>.
10402 E.g.
10403 create_gcov --binary=your_program.unstripped --profile=perf.data \
10404 --gcov=profile.afdo
10407 floating-point arithmetic. These options trade off between speed and
10408 correctness. All must be specifically enabled.
10413 taken from a register or memory.
10417 precision than a 'double' is supposed to have. Similarly for the
10418 x86 architecture. For most programs, the excess precision does
10420 IEEE floating point. Use '-ffloat-store' for such programs, after
10422 into variables.
10428 floating-point types. By default, '-fexcess-precision=fast' is in
10432 types specified in the source code takes place. When compiling C,
10436 (whereas '-ffloat-store' only affects assignments). This option is
10438 '-std=c99' is used. '-ffast-math' enables
10440 conformance option is used.
10443 other than C. On the x86, it has no effect if '-mfpmath=sse' or
10446 unpredictable.
10451 '-fcx-limited-range' and '-fexcess-precision=fast'.
10454 defined.
10459 math functions. It may, however, yield faster code for programs
10460 that do not require the guarantees of these specifications.
10464 with a single instruction, e.g., 'sqrt'. A program that relies on
10466 for speed while maintaining IEEE arithmetic compatibility.
10471 functions. It may, however, yield faster code for programs that do
10472 not require the guarantees of these specifications.
10474 The default is '-fmath-errno'.
10476 On Darwin systems, the math library never sets 'errno'. There is
10478 that it might, and '-fno-math-errno' is the default.
10484 ANSI standards. When used at link time, it may include libraries
10486 similar optimizations.
10491 functions. It may, however, yield faster code for programs that do
10492 not require the guarantees of these specifications. Enables
10494 '-freciprocal-math'.
10496 The default is '-fno-unsafe-math-optimizations'.
10501 operations. This violates the ISO C and C++ language standard by
10502 possibly changing computation result. NOTE: re-ordering may change
10505 on rounding behavior like '(x + 2**52) - 2**52'. May also reorder
10507 comparisons are required. This option requires that both
10508 '-fno-signed-zeros' and '-fno-trapping-math' be in effect.
10509 Moreover, it doesn't make much sense with '-frounding-math'. For
10511 '-fno-signed-zeros' and '-fno-trapping-math' are in effect.
10513 The default is '-fno-associative-math'.
10518 the value if this enables optimizations. For example 'x / y' can
10520 to common subexpression elimination. Note that this loses
10521 precision and increases the number of flops operating on the value.
10523 The default is '-fno-reciprocal-math'.
10527 arguments and results are not NaNs or +-Infs.
10532 functions. It may, however, yield faster code for programs that do
10533 not require the guarantees of these specifications.
10535 The default is '-fno-finite-math-only'.
10539 signedness of zero. IEEE arithmetic specifies the behavior of
10542 '-ffinite-math-only'). This option implies that the sign of a zero
10543 result isn't significant.
10545 The default is '-fsigned-zeros'.
10549 generate user-visible traps. These traps include division by zero,
10550 overflow, underflow, inexact result and invalid operation. This
10551 option requires that '-fno-signaling-nans' be in effect. Setting
10553 arithmetic, for example.
10558 functions.
10560 The default is '-ftrapping-math'.
10564 floating-point rounding behavior. This is round-to-zero for all
10566 other arithmetic truncations. This option should be specified for
10568 be executed with a non-default rounding mode. This option disables
10572 rounding modes.
10574 The default is '-fno-rounding-math'.
10577 disable all GCC optimizations that are affected by rounding mode.
10579 using C99's 'FENV_ACCESS' pragma. This command-line option will be
10580 used to specify the default state for 'FENV_ACCESS'.
10584 user-visible traps during floating-point operations. Setting this
10586 exceptions visible with signaling NaNs. This option implies
10587 '-ftrapping-math'.
10590 defined.
10592 The default is '-fno-signaling-nans'.
10595 disable all GCC optimizations that affect signaling NaN behavior.
10601 noninteger arguments. ISO C99 and C11 allow these functions to
10604 allow these functions to do so.
10607 to be raised, unless C2X or a later C standard is selected. This
10608 option does nothing unless '-ftrapping-math' is in effect.
10613 18661.
10617 implicitly converting them to double-precision constants.
10621 needed when performing complex division. Also, there is no
10624 case. The default is '-fno-cx-limited-range', but is enabled by
10625 '-ffast-math'.
10628 'CX_LIMITED_RANGE' pragma. Nevertheless, the option applies to all
10629 languages.
10632 Complex multiplication and division follow Fortran rules. Range
10636 case.
10638 The default is '-fno-cx-fortran-rules'.
10641 performance, but are not enabled by any '-O' options. This section
10642 includes experimental options that may produce broken code.
10648 number of times each branch was taken. When a program compiled
10650 file called 'SOURCENAME.gcda' for each source file. The
10653 same optimization options for both compilations.
10656 each 'JUMP_INSN' and 'CALL_INSN'. These can be used to improve
10657 optimization. Currently, they are only used in one place: in
10658 'reorg.c', instead of guessing which path a branch is most likely
10660 which path is taken more often.
10662 Enabled by '-fprofile-use' and '-fauto-profile'.
10666 about values of expressions in the program is gathered.
10669 profiling values of expressions for usage in optimizations.
10672 '-fauto-profile'.
10677 ascending order.
10679 Enabled with '-fprofile-use'.
10684 expressions.
10687 actually performs the optimizations based on them. Currently the
10689 the knowledge about the value of the denominator.
10691 Enabled with '-fprofile-use' and '-fauto-profile'.
10695 of registers left over after register allocation. This
10696 optimization most benefits processors with lots of registers.
10699 longer stay in a "home register".
10701 Enabled by default with '-funroll-loops'.
10707 other in the instruction flow.
10709 Enabled at levels '-O2', '-O3', '-Os'.
10712 Perform tail duplication to enlarge superblock size. This
10714 other optimizations to do a better job.
10716 Enabled by '-fprofile-use' and '-fauto-profile'.
10720 compile time or upon entry to the loop. '-funroll-loops' implies
10721 '-frerun-cse-after-loop', '-fweb' and '-frename-registers'. It
10722 also turns on complete loop peeling (i.e. complete removal of loops
10723 with a small constant number of iterations). This option makes
10724 code larger, and may or may not make it run faster.
10726 Enabled by '-fprofile-use' and '-fauto-profile'.
10730 when the loop is entered. This usually makes programs run more
10731 slowly. '-funroll-all-loops' implies the same options as
10732 '-funroll-loops'.
10736 roll much (from profile feedback or static analysis). It also
10737 turns on complete loop peeling (i.e. complete removal of loops with
10738 small constant number of iterations).
10740 Enabled by '-O3', '-fprofile-use', and '-fauto-profile'.
10743 Enables the loop invariant motion pass in the RTL loop optimizer.
10744 Enabled at level '-O1' and higher, except for '-Og'.
10748 for one side of the iteration space and false for the other.
10750 Enabled by '-fprofile-use' and '-fauto-profile'.
10755 result of the condition).
10757 Enabled by '-fprofile-use' and '-fauto-profile'.
10761 another version of the loop that assumes the stride is always one.
10765 x[i * stride] = ...;
10771 x[i] = ...;
10774 x[i * stride] = ...;
10778 contiguous accesses. This flag is enabled by default at '-O3'. It
10779 is also enabled by '-fprofile-use' and '-fauto-profile'.
10784 file if the target supports arbitrary sections. The name of the
10786 in the output file.
10790 space. Most systems using the ELF object format have linkers with
10791 such optimizations. On AIX, the linker rearranges sections
10792 (CSECTs) based on the call graph. The performance impact varies.
10796 executables (after stripping).
10799 the debug information. There could be issues with other object
10800 files/debug info formats.
10803 doing so. When you specify these options, the assembler and linker
10804 create larger object and executable files and are also slower.
10805 These options affect code generation. They prevent optimizations
10807 translation unit since the locations are unknown until link time.
10809 instructions.
10813 to usage of those arguments.
10817 shared "anchor" symbols to address nearby objects. This
10819 accesses on some targets.
10828 a common anchor point instead. The effect is similar to the
10837 Not all targets support this option.
10841 optimization that is done. For example, GCC does not inline
10842 functions that contain more than a certain number of instructions.
10844 the '--param' option.
10848 change without notice in future releases.
10851 one can use '--help=param -Q' options.
10853 In each case, the VALUE is an integer. The following choices of
10859 predictable.
10864 instructions. This parameter gives the maximum number of
10866 if-conversion. The compiler will also use other heuristics to
10867 decide whether if-conversion is likely to be profitable.
10873 instructions. These parameters give the maximum permissible
10876 predictable or not. The units for this parameter are the same
10877 as those for the GCC internal seq_cost metric. The compiler
10879 using the BRANCH_COST target macro.
10883 cross-jumping. The algorithm used by '-fcrossjumping' is
10884 O(N^2) in the number of edges incoming to each block.
10887 in executable size.
10891 end of two blocks before cross-jumping is performed on them.
10893 the block being cross-jumped from are matched.
10897 blocks instead of jumping. The expansion is relative to a
10898 jump instruction.
10902 that jumps to a computed goto. To avoid O(N^2) behavior in a
10904 compilation process, and unfactors them as late as possible.
10906 than max-goto-duplication-insns are unfactored.
10910 for an instruction to fill a delay slot. If more than this
10913 searching. Increasing values mean more aggressive
10915 probably small improvement in execution time.
10920 live register information. Increasing this arbitrarily chosen
10922 compilation time. This parameter should be removed when the
10924 graph.
10929 elimination optimization. If more memory than specified is
10930 required, the optimization is not done.
10936 computations in the instruction stream.
10940 before flushing the current state and starting over. Large
10942 large lists which needlessly consume memory and resources.
10946 make when modulo scheduling a loop. Larger values can
10947 exponentially increase compilation time.
10950 Several parameters control the tree inliner used in GCC. This
10953 tree inliner considers for inlining. This only affects
10955 declaration (C++).
10960 inlining by the compiler are investigated. To those
10963 max-inline-insns-auto').
10967 with '-finline-small-functions'.
10970 This is bound applied to calls which are optimized for size.
10972 oppurtunities exposed by inlining.
10976 overhead such as function prologue and epilogue.
10986 later optimizations).
10997 max-inline-insns-single' and '--param max-inline-insns-auto'.
11000 The limit specifying really large functions. For functions
11002 by '--param large-function-growth'. This parameter is useful
11004 non-linear algorithms used by the back end.
11008 in percents. For example, parameter value 100 limits large
11009 function growth to 2.0 times the original size.
11012 The limit specifying large translation unit. Growth caused by
11014 '--param inline-unit-growth'. For small units this might be
11015 too tight. For example, consider a unit consisting of
11016 function A that is inline and B that just calls A three times.
11018 yet such inlining is very sane. For very large units
11021 code size. Thus for smaller units, the size is increased to
11023 inline-unit-growth'.
11027 caused by inlining. For example, parameter value 20 limits
11028 unit growth to 1.2 times the original size. Cold functions
11030 are not accounted into the unit size.
11034 caused by interprocedural constant propagation. For example,
11036 original size.
11039 The limit specifying large stack frames. While inlining the
11040 algorithm is trying to not grow past this limit too much.
11044 inlining in percents. For example, parameter value 1000
11045 limits large stack frame growth to 11 times the original size.
11051 performing recursive inlining.
11054 declared inline. For functions not declared inline, recursive
11057 applies instead.
11062 inlining.
11065 declared inline. For functions not declared inline, recursive
11068 applies instead.
11074 of function body to other optimizers.
11078 that function recurses via a given call expression. This
11080 probability exceeds the given threshold (in percents).
11083 Specify growth that the early inliner can make. In effect it
11085 abstraction penalty.
11088 Limit of iterations of the early inliner. This basically
11090 can resolve. Deeper chains are still handled by late
11091 inlining.
11095 visibility are shared across multiple compilation units.
11099 profile database lookup. If the value is 0, the compiler uses
11102 such as function reordering etc.
11106 vectorized when '-ftree-vectorize' is used. The number of
11108 value specified by this option to allow vectorization.
11112 expression can be moved by GCSE optimizations. This is
11113 currently supported only in the code hoisting pass. The
11115 simple expressions, i.e., the expressions that have cost less
11116 than 'gcse-unrestricted-cost'. Specifying 0 disables hoisting
11117 of simple expressions.
11122 distance an expression can travel. This is currently
11123 supported only in the code hoisting pass. The lesser the
11124 cost, the more aggressive code hoisting is. Specifying 0
11125 allows all expressions to travel unrestricted distances.
11129 hoist. This is used to avoid quadratic behavior in hoisting
11130 algorithm. The value of 0 does not limit on the search, but
11131 may slow down compilation of huge functions.
11134 The maximum amount of similar bbs to compare a bb with. This
11135 is used to avoid quadratic behavior in tree tail merging.
11139 function. This is used to limit compilation time in tree tail
11140 merging.
11144 it is legal to do so.
11148 stores in the store merging pass.
11152 unrolled. If a loop is unrolled, this parameter also
11153 determines how many times the loop code is unrolled.
11157 their execution that a loop may have to be unrolled. If a
11159 times the loop code is unrolled.
11162 The maximum number of unrollings of a single loop.
11166 peeled. If a loop is peeled, this parameter also determines
11167 how many times the loop code is peeled.
11170 The maximum number of peelings of a single loop.
11174 peeled sequence.
11177 The maximum number of insns of a completely peeled loop.
11181 complete peeling.
11185 peeling.
11188 The maximum number of insns of an unswitched loop.
11191 The maximum number of branches unswitched in a single loop.
11195 invariant motion.
11201 loop split.
11206 variable optimizations. If there are more candidates than
11208 quadratic time complexity.
11212 contain more induction variable uses.
11217 adding a new one.
11220 Average number of iterations of a loop.
11224 store elimination. Larger values may result in larger
11225 compilation times.
11228 Maximum number of queries into the alias oracle per store.
11230 result in more removed dead stores.
11234 analyzer. Large expressions slow the analyzer.
11238 evolutions analyzer. Complex expressions slow the analyzer.
11242 conversion unless the loop is marked with simd pragma.
11246 when doing loop versioning for alignment in the vectorizer.
11250 when doing loop versioning for alias in the vectorizer.
11254 for vectorizer. Value -1 means no limit.
11259 tries to evaluate.
11264 block needs to at least have in order to be considered hot.
11267 of the maximal execution count. 0 means that it is never
11268 considered hot. Used in non-LTO mode.
11274 be considered hot. The default is 990, which means that a
11277 profiled execution of the entire program. 0 means that it is
11278 never considered hot. Used in LTO mode.
11283 function needs to at least have in order to be considered hot.
11287 function. 0 means that it is never considered hot.
11293 considered unlikely executed. The default is 20, which means
11296 program. 0 means that it is always considered unlikely
11297 executed.
11300 The maximum number of loop iterations we predict statically.
11302 loop with known bound and another loop with unknown bound.
11304 the unknown number of iterations average to roughly 10. This
11306 relative to the other one.
11310 value. This parameter takes a percentage (i.e. 0 ... 100) as
11311 input.
11315 cmp call eligible for inlining.
11320 basic block in a function to align the basic block.
11325 iterations is aligned.
11331 given percentage of executed instructions is covered. This
11332 limits unnecessary code size expansion.
11335 when profile feedback is available. The real profiles (as
11337 allowing the threshold to be larger value.
11341 percentage. This is a rather artificial limit, as most of the
11343 set to much higher values than is the desired code growth.
11348 is less than this threshold (in percent).
11354 than this threshold.
11357 provided. 'tracer-min-branch-probability-feedback' is used
11359 'tracer-min-branch-probability' compilation without. The
11361 conservative (higher) in order to make tracer effective.
11365 as 2 raised to NUM bytes. Higher values may reduce the number
11368 clash style attacks.
11372 allocated. This param controls the maximum distance between
11373 probes into the stack as 2 raised to NUM bytes. Higher values
11376 vulnerable to stack clash style attacks.
11380 The maximum number of basic blocks on path that CSE considers.
11384 flushing.
11389 allocation. This parameter specifies the minimum percentage
11391 expand between collections. Tuning this may improve
11392 compilation speed; it has no effect on code generation.
11395 100% when RAM >= 1GB. If 'getrlimit' is available, the notion
11397 'RLIMIT_AS'. If GCC is not able to calculate RAM on a
11398 particular platform, the lower bound of 30% is used. Setting
11400 collection to occur at every opportunity. This is extremely
11401 slow, but can be useful for debugging.
11406 bothering to collect garbage. The first collection occurs
11408 'ggc-min-heapsize'. Again, tuning this may improve
11409 compilation speed, and has no effect on code generation.
11414 an upper bound of 131072 (128 megabytes). If GCC is not able
11416 used. Setting this parameter very large effectively disables
11417 garbage collection. Setting this parameter and
11419 every opportunity.
11423 for equivalent register. Increasing values mean more
11425 with probably slightly better performance.
11429 account. Increasing values mean more aggressive optimization,
11431 better performance.
11436 scheduling pass. Increasing values mean more thorough
11438 little benefit.
11442 interblock scheduling.
11446 pipelining in the selective scheduler.
11450 interblock scheduling.
11454 pipelining in the selective scheduler.
11458 block for interblock speculative scheduling.
11462 regions. A value of 0 disables region extensions.
11466 speculative motion.
11470 so that speculative insns are scheduled.
11474 save its state across it.
11478 targeting same memory locations.
11482 scheduling. It is a depth of search for available
11483 instructions.
11487 during selective scheduling. This is the limit on the number
11488 of iterations through which the instruction may be pipelined.
11492 are considered for renaming in the selective scheduler.
11496 generates.
11501 last known value of that register.
11505 combine.
11509 reducing the compiler's memory usage and increasing its speed.
11510 This sets the maximum value of a shared integer constant.
11513 The minimum size of buffers (i.e. arrays) that receive stack
11514 smashing protection when '-fstack-protection' is used.
11518 sharing when not optimizing.
11522 be duplicated when threading jumps.
11526 sensitive manner during pointer analysis.
11530 before prefetch finishes. The distance prefetched ahead is
11531 proportional to this constant. Increasing this number may
11533 'simultaneous-prefetches').
11536 Maximum number of prefetches that can run at the same time.
11539 The size of cache line in L1 data cache, in bytes.
11542 The size of L1 data cache, in kilobytes.
11545 The size of L2 data cache, in kilobytes.
11549 prefetch hints for strides that are non-constant. In some
11552 benefit to issuing these hints.
11555 non-constant strides. Set to 0 if prefetch hints should be
11557 below 'prefetch-minimum-stride'.
11561 hints for. If the stride is less than this threshold,
11562 prefetch hints will not be issued.
11566 hardware prefetchers and the software prefetchers. If the
11569 prefetchers.
11572 prefetch hints can be issued for any constant stride.
11575 constant.
11578 The maximum number of stmts in a loop to be interchanged.
11582 to be profitable.
11586 number of prefetches to enable prefetching in a loop.
11590 number of memory references to enable prefetching in a loop.
11593 Whether the compiler should use the "canonical" type system.
11595 mechanism for comparing types in C++ and Objective-C++.
11598 types.
11603 number of branches in the switch.
11608 ('-ftree-pre') when optimizing at '-O3' and above. For some
11611 memory available on the host machine. This parameter sets a
11613 prevents the runaway behavior. Setting a value of 0 for this
11614 parameter allows an unlimited set length.
11617 Maximum loop depth that is value-numbered optimistically.
11620 optimistically and the remaining ones not.
11624 for redundancies for loads and stores. If this limit is hit
11626 redundant. The number of queries is algorithmically limited
11628 function entry.
11631 IRA uses regional register allocation by default. If a
11635 allocation.
11640 of memory for huge functions. If the conflict table for a
11644 building a pseudo-register conflict table.
11648 loops for decisions to move loop invariants (see '-O3'). The
11650 is given by this parameter. Default of the parameter is the
11651 best found from numerous experiments.
11655 insns. This optimization is called inheritance. EBB is used
11656 as a region to do this optimization. The parameter defines a
11658 add BB to inheritance EBB in LRA. The default value was chosen
11659 from numerous runs of SPEC2000 on x86-64.
11664 with very large loops. Loops with more basic blocks than this
11666 performed on them.
11669 Building data dependencies is expensive for very large loops.
11671 that are considered for data dependence analysis. These large
11673 dependencies.
11677 variable tracking dataflow analysis of any function. If this
11680 after removing all debug insns from the function. If the
11682 analysis is completely disabled for the function. Setting the
11683 parameter to zero makes it unlimited.
11687 map variable names or debug temporaries to value expressions.
11689 information. If this is set too low, value expressions that
11693 time and memory use may grow.
11696 Sets a threshold on the number of debug markers (e.g. begin
11698 expanding to RTL. If a function has more such gimple stmts
11700 inlined copy of a function, and from its RTL expansion.
11703 Use uids starting at this parameter for nondebug insns. The
11707 is exhausted.
11713 original pointer parameter.
11716 Maximum pieces of an aggregate that IPA-SRA tracks. As a
11718 a formal parameter.
11724 of independent scalar variables. These parameters control the
11728 ('sra-max-scalarization-size-Osize') respectively.
11733 variable, in order to facilitate copy propagation.
11739 save/restore code sequence pairs. This option only applies
11740 when using '-fgnu-tm'.
11745 bounded. A value of zero can be used to lift the bound. A
11747 defined outside a SCoP is a parameter of the SCoP.
11752 the loop nest by a given number of iterations. The strip
11754 parameter.
11759 perform devirtualization. 'ipa-cp-value-list-size' is the
11761 parameter of a function.
11766 scores that exceed 'ipa-cp-eval-threshold'.
11770 function.
11774 executed exceeds the parameter.
11778 they are evaluated for cloning.
11783 cloning.
11787 passed in an aggregate. 'ipa-max-agg-items' controls the
11788 maximum number of such values per one parameter.
11794 candidate.
11799 parameters. In order not spend too much time analyzing huge
11801 examining 'ipa-max-aa-steps' statements modifying memory.
11805 statement. For switch exceeding this limit, IPA-CP will not
11807 cloning benefit, for default case of the switch statement.
11812 certain constant value. But if number of operations in a
11815 by IPA analysis.
11819 compilation. The number of partitions should exceed the
11820 number of CPUs used for compilation.
11824 instructions). This prevents expenses of splitting very small
11825 programs into too many partitions.
11828 Size of max partition for WHOPR (in estimated instructions).
11829 to provide an upper bound for individual size of partition.
11830 Meant to be used only with balanced partitioning.
11833 Maximal number of parallel processes used for LTO streaming.
11837 when C++ name lookup fails for an identifier.
11842 statement sinking of a statement. Larger numbers result in
11843 more aggressive statement sinking. A small positive
11845 those are even more profitable so sink.
11849 sunk. Set to 0 if either vectorization ('-ftree-vectorize')
11850 or if-conversion ('-ftree-loop-if-convert') is disabled.
11854 to use a jump-table instead of a tree of conditional branches.
11855 If the value is 0, use the default for the machine.
11859 table (in percent). The parameter is used when optimizing for
11860 size.
11864 table (in percent). The parameter is used when optimizing for
11865 speed.
11869 reassociated tree. This parameter overrides target dependent
11870 heuristics used by default if has non zero value.
11874 '-fsched-pressure'. Algorithm 1 is the original
11876 from being reordered. Algorithm 2 was designed to be a
11879 default scheduler. It relies more heavily on having a regular
11880 register file and accurate register pressure classes. See
11881 'haifa-sched.c' in the GCC sources for more details.
11883 The default choice depends on the target.
11888 strength reduction candidate.
11891 Enable buffer overflow detection for global objects. This
11893 '-fsanitize=address' option. To disable global objects
11894 protection use '--param asan-globals=0'.
11897 Enable buffer overflow detection for stack objects. This kind
11899 '-fsanitize=address'. To disable stack protection use
11900 '--param asan-stack=0' option.
11903 Enable buffer overflow detection for memory reads. This kind
11905 '-fsanitize=address'. To disable memory reads protection use
11906 '--param asan-instrument-reads=0'.
11909 Enable buffer overflow detection for memory writes. This kind
11911 '-fsanitize=address'. To disable memory writes protection use
11912 '--param asan-instrument-writes=0' option.
11915 Enable detection for built-in functions. This kind of
11917 '-fsanitize=address'. To disable built-in functions
11918 protection use '--param asan-memintrin=0'.
11921 Enable detection of use-after-return. This kind of protection
11923 option. To disable it use '--param asan-use-after-return=0'.
11925 Note: By default the check is disabled at run time. To enable
11927 variable 'ASAN_OPTIONS'.
11932 inline checks. E.g. to disable inline code use '--param
11933 asan-instrumentation-with-call-threshold=0'.
11938 instead of using run-time callbacks.
11942 on a finite state automaton jump thread path.
11946 jump thread path.
11950 state automaton.
11953 Chunk size of omp schedule for loops parallelized by parloops.
11957 parloops (static, dynamic, guided, auto, runtime).
11962 preferred over the single threaded one. Note that for a
11964 outermost loop per thread is two.
11968 names in things like fold routines. One level of recursion
11969 corresponds to following a use-def chain.
11973 which are then read and reported by libgomp plugin.
11975 '--param hsa-gen-debug-stores=1' to enable it.
11980 a virtual call we may be able to devirtualize speculatively.
11984 of a switch statement during VRP.
11989 considered profitable.
11993 by the unroll-and-jam transformation.
11998 considered unpredictable.
12003 during loop unrolling.
12007 than this threshold (in percent). Used when profile feedback
12008 is available.
12013 inlining happen.
12017 will track string lengths.
12021 elimination after reload.
12025 permit performing redundancy elimination after reload.
12029 copy loop headers pass.
12032 Enable loop epilogue vectorization using smaller vector size.
12036 for SLP vectorization.
12039 Maximum number of bits for which we avoid creating FMAs.
12043 modulo scheduler.
12047 checking conflicts using DFA.
12051 grow to via recursive inlining.
12054 Whether codegen errors should be ICEs when '-fchecking'.
12058 scheduler uses for scheduling a loop.
12062 spilling a non-reload pseudo.
12066 exponentiation by a real constant.
12070 elimination.
12073 Enable asan allocas/VLAs protection.
12077 iterations.
12080 Maximum number of isl operations, 0 means unlimited.
12083 Maximum number of arrays per scop.
12086 Max. size of loc list for which reverse ops should be added.
12090 that must be covered by trace formation. Used when profile
12091 feedback is available.
12095 functions.
12100 blocks.
12104 threader will not try to thread through its block.
12108 dependencies during uninitialized variable analysis.
12112 be considered for scalarization when compiling for size.
12116 path when comparing to the number of (scaled) statements.
12119 Hardware autoprefetcher scheduler model control flag. Number
12121 instruction sorting heuristic.
12125 before the loop versioning pass considers it too big to copy.
12131 benefit from versioning.
12135 determining a property of a variable such as its value. This
12138 determining their validity prior to issuing diagnostics.
12141 Maximum size of a single store merging region in bytes.
12145 done for each searched element.
12149 find_base_term call.
12153 the analyzer, before terminating analysis of that point.
12157 analyzer to consider summarizing its effects at call sites.
12162 call that would recurse deeper.
12166 hot. The parameter is used only in GIMPLE FE.
12170 the analyzer per supernode, before terminating analysis.
12177 cheapest approach. Also use the cost model to choose between
12178 SVE and Advanced SIMD vectorization.
12182 and truncating stores.
12186 for float type. The precision of division is proportional to
12187 this param when division approximation is enabled. The
12188 default value is 1.
12192 for double type. The precision of division is propotional to
12193 this param when division approximation is enabled. The
12194 default value is 2.
12197 Force an ISA selection strategy for auto-vectorization.
12198 Accepts values from 0 to 4, inclusive.
12200 Use the default heuristics.
12202 Use only Advanced SIMD for auto-vectorization.
12204 Use only SVE for auto-vectorization.
12206 Use both Advanced SIMD and SVE. Prefer Advanced SIMD when
12207 the costs are deemed equal.
12209 Use both Advanced SIMD and SVE. Prefer SVE when the costs
12210 are deemed equal.
12211 The default value is 0.
12214 File: gcc.info, Node: Instrumentation Options, Next: Preprocessor Options, Prev: Optimize Option…
12220 run-time instrumentation to the code it normally generates. For
12223 profile-guided optimizations. Another class of program instrumentation
12227 hijacking. There is also a general hook which can be used to implement
12229 program analysis purposes.
12234 analysis program 'prof' (for '-p') or 'gprof' (for '-pg'). You
12236 about, and you must also use it when linking.
12240 these options. *Note Common Function Attributes::.
12243 Add code so that program flow "arcs" are instrumented. During
12245 is executed and how many times it is taken or returns. On targets
12249 variable.
12252 'AUXNAME.gcda' for each source file. The data may be used for
12254 test coverage analysis ('-ftest-coverage'). Each object file's
12257 it is the basename of the source file. In both cases any suffix is
12258 removed (e.g. 'foo.gcda' for input file 'dir/foo.c', or
12259 'dir/foo.gcda' for output file specified as '-o dir/foo.o'). *Note
12260 Cross-profiling::.
12265 coverage analysis. The option is a synonym for '-fprofile-arcs'
12266 '-ftest-coverage' (when compiling) and '-lgcov' (when linking).
12267 See the documentation for those options for more details.
12270 optimization and code generation options. For test coverage
12271 analysis, use the additional '-ftest-coverage' option. You do
12272 not need to profile every source file in a program.
12276 '.gcno' files. This allows 'gcov' to find the correct sources
12278 directories.
12281 latter implies the former).
12284 arc profile information. This may be repeated any number of
12285 times. You can run concurrent instances of your program, and
12287 will be correctly updated. Unless a strict ISO C dialect
12289 handled without double counting.
12294 Optimization: Optimize Options.).
12297 readable information from the '.gcno' and '.gcda' files.
12298 Refer to the 'gcov' documentation for further information.
12302 graph. Only arcs that are not on the spanning tree have to be
12304 that these arcs are executed. When an arc is the only exit or only
12307 instrumentation code.
12311 'gcov'--a Test Coverage Program: Gcov.) can use to show program
12312 coverage. Each source file's note file is called 'AUXNAME.gcno'.
12314 AUXNAME and instructions on how to generate test coverage data.
12316 optimize.
12320 names in the '.gcno' files. This allows 'gcov' to find the correct
12322 directories.
12326 Set the directory to search for the profile data files in to PATH.
12330 options. Both absolute and relative paths can be used. By
12332 data file appears in the same directory as the object file. In
12335 'SOURCENAME.gcda' file and use it as the file name of a '.gcda'
12336 file. See similar option '-fprofile-note'.
12339 recommended to save profile to different folders. That can be done
12343 process ID.
12353 feedback based optimization. You must use '-fprofile-generate'
12354 both when compiling and when linking your program.
12357 '-fprofile-values', '-finline-functions', and '-fipa-bit-cp'.
12360 feedback data files. See '-fprofile-dir'.
12363 use '-fprofile-use'. *Note Optimize Options::, for more
12364 information.
12368 If PATH is specified, GCC saves '.gcno' file into PATH location.
12369 If you combine the option with multiple source files, the '.gcno'
12370 file will be overwritten.
12376 inform GCC where is the base directory of built source tree. By
12378 of all object files in the built project. This is not desirable
12382 optimized build. In such setups '-fprofile-prefix-path='PATH with
12385 relative to the main build directory.
12390 feedback based optimization. The METHOD argument should be one of
12391 'single', 'atomic' or 'prefer-atomic'. The first one is useful for
12393 corruption by emitting thread-safe code.
12397 corrupted.
12400 supported by a target, or to 'single' otherwise. The GCC driver
12402 the command line.
12407 expression (separated by a semi-colon).
12409 For example, '-fprofile-filter-files=main.c;module.*.c' will
12410 instrument only 'main.c' and all C files starting with 'module'.
12415 the regular expressions (separated by a semi-colon).
12418 instrumentation of all files that are located in '/usr/' folder.
12422 '-fprofile-generate'. This makes it possible to rebuild program
12424 packages.
12430 same order. Note that profile streaming happens at the end of
12431 program run but also before 'fork' function is invoked.
12436 rate). Such non-reproducible part of programs may be annotated by
12437 'no_instrument_function' function attribute. 'gcov-dump' with '-l'
12439 reproducible.
12443 gcda files. This setting makes it possible to run multiple
12445 -j'). This reduces quality of gathered data, in particular of
12446 indirect call profiling.
12449 Enable AddressSanitizer, a fast memory error detector. Memory
12451 use-after-free bugs. The option enables
12452 '-fsanitize-address-use-after-scope'. See
12453 <https://github.com/google/sanitizers/wiki/AddressSanitizer> for
12454 more details. The run-time behavior can be influenced using the
12455 'ASAN_OPTIONS' environment variable. When set to 'help=1', the
12456 available options are shown at startup of the instrumented program.
12458 <https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags>
12459 for a list of supported options. The option cannot be combined
12460 with '-fsanitize=thread'.
12463 Enable AddressSanitizer for Linux kernel. See
12464 <https://github.com/google/kasan/wiki> for more details.
12468 operands. The option must be combined with either
12470 cannot be combined with '-fsanitize=thread'. Note: By default the
12471 check is disabled at run time. To enable it, add
12473 'ASAN_OPTIONS'. Using 'detect_invalid_pointer_pairs=1' detects
12474 invalid operation only when both pointers are non-null.
12477 Instrument subtraction with pointer operands. The option must be
12480 '-fsanitize=thread'. Note: By default the check is disabled at run
12481 time. To enable it, add 'detect_invalid_pointer_pairs=2' to the
12482 environment variable 'ASAN_OPTIONS'. Using
12484 when both pointers are non-null.
12487 Enable ThreadSanitizer, a fast data race detector. Memory access
12488 instructions are instrumented to detect data race bugs. See
12489 <https://github.com/google/sanitizers/wiki#threadsanitizer> for
12490 more details. The run-time behavior can be influenced using the
12492 <https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags>
12493 for a list of supported options. The option cannot be combined
12494 with '-fsanitize=address', '-fsanitize=leak'.
12498 ('-fnon-call-exceptions').
12501 Enable LeakSanitizer, a memory leak detector. This option only
12504 functions. See
12505 <https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>
12506 for more details. The run-time behavior can be influenced using
12507 the 'LSAN_OPTIONS' environment variable. The option cannot be
12508 combined with '-fsanitize=thread'.
12512 detector. Various computations are instrumented to detect
12513 undefined behavior at runtime. See
12514 <https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html> for
12515 more details. The run-time behavior can be influenced using the
12516 'UBSAN_OPTIONS' environment variable. Current suboptions are:
12520 operation is not undefined. Note that what exactly is
12522 well as between ISO C90 and C99, etc. This option has two
12524 '-fsanitize=shift-exponent'.
12529 precision of the promoted first argument.
12533 check that the result of a shift operation is not undefined.
12536 C99, etc.
12540 division.
12545 instead. When reaching the '__builtin_unreachable' call, the
12546 behavior is undefined.
12550 variable length array is positive.
12553 This option enables pointer checking. Particularly, the
12558 by a NULL pointer.
12561 This option enables return statement checking. Programs built
12564 returning a value. This option works in C++ only.
12567 This option enables signed integer overflow checking. We
12569 '-' does not overflow in the signed arithmetics. Note,
12570 integer promotion rules must be taken into account. That is,
12576 This option enables instrumentation of array bounds. Various
12577 out of bounds accesses are detected. Flexible array members,
12579 variables with static storage are not instrumented.
12582 This option enables strict instrumentation of array bounds.
12584 array members and flexible array member-like arrays.
12586 instrumented.
12593 is invoked on insufficiently aligned object.
12597 the '__builtin_object_size' function. Various out of bounds
12598 pointer accesses are detected.
12601 Detect floating-point division by zero. Unlike other similar
12604 can be a legitimate way of obtaining infinities and NaNs.
12608 checking. We check that the result of the conversion does not
12609 overflow. Unlike other similar options,
12611 '-fsanitize=undefined'. This option does not work well with
12612 'FE_INVALID' exceptions enabled.
12618 non-null value by the 'nonnull' function attribute.
12624 detect returning of null values from such functions.
12628 This option enables instrumentation of loads from bool. If a
12629 value other than 0/1 is loaded, a run-time error is issued.
12634 type. If a value outside the range of values for the enum
12635 type is loaded, a run-time error is issued.
12642 has the correct dynamic type.
12646 This option enables instrumentation of pointer arithmetics.
12648 issued.
12653 builtin functions. If an invalid value is passed to such
12654 arguments, a run-time error is issued. E.g. passing 0 as the
12656 undefined behavior and is diagnosed by this option.
12659 '-fsanitize=undefined' gives a diagnostic message. This currently
12660 works only for the C family of languages.
12664 This option disables all previously enabled sanitizers.
12666 together.
12670 AddressSanitizer checks. It is useful for experimenting with
12671 different shadow memory layouts in Kernel AddressSanitizer.
12673 '-fsanitize-sections=S1,S2,...'
12674 Sanitize global variables in selected user-defined sections. SI
12675 may contain wildcards.
12679 mentioned in comma-separated list of OPTS. Enabling this option
12681 the program as if no error happened. This means multiple runtime
12684 reported. The '-fno-sanitize-recover=' option can be used to alter
12686 program then exits with a non-zero exit code.
12692 '-fsanitize=kernel-address' and '-fsanitize=address'. For these
12694 '-fsanitize=address', for which this feature is experimental.
12698 support it.
12702 are still fatal. The runtime library defaults to 'halt_on_error=0'
12704 value for AddressSanitizer is 'halt_on_error=1'. This can be
12706 corresponding environment variable.
12708 Syntax without an explicit OPTS parameter is deprecated. It is
12715 bugs. The option sets '-fstack-reuse' to 'none'.
12720 than a 'libubsan' library routine. The advantage of this is that
12722 is usable even in freestanding environments.
12725 Enable coverage-guided fuzzing code instrumentation. Inserts a
12726 call to '__sanitizer_cov_trace_pc' into every basic block.
12729 Enable dataflow guided fuzzing code instrumentation. Inserts a
12739 '__sanitizer_cov_trace_switch' for switch statements.
12745 return, indirect jump) are valid. This prevents diverting the flow
12746 of control to an unexpected target. This is intended to protect
12748 similarly call/jmp-oriented programming (COP/JOP).
12752 instructions, i.e. call/jmp instructions. The value 'return'
12754 function. The value 'full' is an alias for specifying both
12755 'branch' and 'return'. The value 'none' turns off instrumentation.
12758 optimization (LTO). An error is issued if LTO object files are
12759 compiled with different '-fcf-protection' values. The value
12760 'check' is ignored at the compile time.
12762 The macro '__CET__' is defined when '-fcf-protection' is used. The
12764 second bit of '__CET__' is set to 1 for the 'return'.
12768 Function Attributes::).
12772 i686 processor or newer.
12776 smashing attacks. This is done by adding a guard variable to
12777 functions with vulnerable objects. This includes functions that
12779 bytes. The guards are initialized when a function is entered and
12780 then checked when the function exits. If a guard check fails, an
12781 error message is printed and the program exits. Only variables
12783 away variables or variables allocated in registers don't count.
12786 Like '-fstack-protector' except that all functions are protected.
12791 references to local frame addresses. Only variables that are
12793 variables or variables allocated in registers don't count.
12797 have the 'stack_protect' attribute.
12801 the stack. You should specify this flag if you are running in an
12805 stack.
12808 the operating system or the language runtime must do that. The
12810 being extended.
12815 bare '-fstack-check'.
12821 1. Modified allocation strategy for large objects: they are
12823 threshold. Note this may change the semantics of some code.
12825 2. Fixed limit on the size of the static frame of functions: when
12827 reliable and a warning is issued by the compiler.
12829 3. Inefficiency: because of both the modified allocation strategy
12830 and the generic implementation, code performance is hampered.
12833 'specific' if no target support has been added in the compiler.
12836 recursion and stack overflows. 'specific' is an excellent choice
12837 when compiling Ada code. It is not generally sufficient to protect
12838 against stack-clash attacks. To protect against those you want
12839 '-fstack-clash-protection'.
12842 Generate code to prevent stack clash style attacks. When this
12845 allocation. Thus, it prevents allocations from jumping over any
12846 stack guard page provided by the operating system.
12848 Most targets do not fully support stack clash protection. However,
12850 stack allocations. '-fstack-clash-protection' may also provide
12852 supports '-fstack-check=specific'.
12859 symbol. If a larger stack is required, a signal is raised at run
12860 time. For most targets, the signal is raised before the stack
12862 without taking special precautions.
12868 128KB. Note that this may only work with the GNU linker.
12871 'no_stack_limit' function attribute (*note Function Attributes::).
12874 Generate code to automatically split the stack before it overflows.
12876 overflow if the program is unable to allocate any more memory.
12879 thread. This is currently only implemented for the x86 targets
12880 running GNU/Linux.
12884 the latter code to run. If compiling all code, including library
12887 '-fsplit-stack' always has a large stack. Support for this is
12889 later.
12892 This option is only available when compiling C++ code. It turns on
12896 object, and has not been corrupted or overwritten. If an invalid
12898 execution of the program is immediately halted.
12901 startup, which are used for verifying the vtable pointers. The
12903 structures are built. In both cases the data structures are built
12904 before execution reaches 'main'. Using '-fvtable-verify=std'
12906 been loaded and initialized. '-fvtable-verify=preinit' causes them
12908 initialized.
12912 'std' and 'preinit'; 'preinit' takes priority over 'std'.
12917 functions for the vtable verification feature to be called. This
12919 pointers it finds for each class. This information is written to a
12920 file named 'vtv_set_ptr_data.log' in the directory named by the
12922 current working directory otherwise.
12924 Note: This feature _appends_ data to the log file. If you want a
12925 fresh log file, be sure to delete any existing one.
12928 This is a debugging flag. When used in conjunction with
12931 encounters and the number of verifications it inserts. It also
12934 unit. The compiler writes this information to a file named
12935 'vtv_count_data.log' in the directory named by the environment
12937 directory otherwise. It also counts the size of the vtable pointer
12939 'vtv_class_set_sizes.log' in the same directory.
12941 Note: This feature _appends_ data to the log files. To get fresh
12942 log files, be sure to delete any existing ones.
12945 Generate instrumentation calls for entry and exit to functions.
12948 current function and its call site. (On some platforms,
12951 profiling functions otherwise.)
12959 function, which may be looked up exactly in the symbol table.
12962 other functions. The profiling calls indicate where, conceptually,
12963 the inline function is entered and exited. This means that
12964 addressable versions of such functions must be available. If all
12966 additional expansion of code size. If you use 'extern inline' in
12968 provided. (This is normally the case anyway, but if you get lucky
12970 have gotten away without providing static copies.)
12973 which case this instrumentation is not done. This can be used, for
12977 profiling routines generate output or allocate memory). *Note
12978 Common Function Attributes::.
12980 '-finstrument-functions-exclude-file-list=FILE,FILE,...'
12983 (see the description of '-finstrument-functions'). If the file
12985 that function is not instrumented. The match is done on
12987 it is considered to be a match.
12994 contain '/bits/stl' or 'include/sys'.
12997 write '\,'. For example,
12999 single quote surrounding the option).
13001 '-finstrument-functions-exclude-function-list=SYM,SYM,...'
13005 instrumentation. The function name to be matched is its
13007 not the internal mangled name (e.g., '_Z4blahRSt6vectorIiSaIiEE').
13009 substring of the function name, it is considered to be a match.
13011 given in UTF-8, not using universal character names.
13015 function entry point before the Mth NOP. If M is omitted, it
13017 the first NOP. The NOP instructions reserve extra space which can
13019 provided that the code segment is writable. The amount of space is
13022 back-end interface 'gen_nop'. This behavior is target-specific and
13024 compilation options.
13029 section of the resulting binary.
13033 '-fpatchable-function-entry=N,M'. This can be used to increase the
13034 area size or to remove it completely on a single function. If
13035 'N=0', no pad location is recorded.
13038 on M--the function entry address, even before the prologue.
13041 File: gcc.info, Node: Preprocessor Options, Next: Assembler Options, Prev: Instrumentation Optio…
13047 file before actual compilation.
13049 If you use the '-E' option, nothing is done except preprocessing. Some
13051 the preprocessor output to be unsuitable for actual compilation.
13055 Options::. Options to control preprocessor diagnostics are listed in
13056 *note Warning Options::.
13059 Predefine NAME as a macro, with definition '1'.
13063 appeared during translation phase three in a '#define' directive.
13065 characters.
13069 characters such as spaces that have a meaning in the shell syntax.
13073 equals sign (if any). Parentheses are meaningful to most shells,
13074 so you should quote the option. With 'sh' and 'csh',
13075 '-D'NAME(ARGS...)=DEFINITION'' works.
13078 the command line. All '-imacros FILE' and '-include FILE' options
13079 are processed after all '-D' and '-U' options.
13083 with a '-D' option.
13087 the primary source file. However, the first directory searched for
13089 directory containing the main source file. If not found there, it
13090 is searched for in the remainder of the '#include "..."' search
13091 chain as normal.
13094 the order they appear on the command line.
13098 scanning FILE is thrown away. Macros it defines remain defined.
13100 also processing its declarations.
13103 specified by '-include'.
13106 Do not predefine any system-specific or GCC-specific macros. The
13107 standard predefined macros remain defined.
13111 library. You should use this option consistently for both
13112 compilation and linking. This option is supported on GNU/Linux
13114 MinGW targets.
13119 file. The preprocessor outputs one 'make' rule containing the
13122 '-imacros' command-line options.
13127 parts removed. If there are many included files then the rule is
13128 split into several lines using '\'-newline. The rule has no
13129 commands.
13132 as '-dM'. To avoid mixing such debug output with the dependency
13135 (*note Environment Variables::). Debug output is still sent to the
13136 regular output stream as normal.
13139 with an implicit '-w'.
13144 indirectly, from such a header.
13148 header appears in '-MM' dependency output.
13152 dependencies to. If no '-MF' switch is given the preprocessor
13154 output.
13157 the default dependency output file.
13159 If FILE is '-', then the dependencies are written to 'stdout'.
13164 and adds them to the dependency list without raising an error. The
13166 without prepending any path. '-MG' also suppresses preprocessed
13167 output, as a missing header file renders this useless.
13169 This feature is used in automatic updating of makefiles.
13173 other than the main file, causing each to depend on nothing. These
13175 files without updating the 'Makefile' to match.
13179 test.o: test.c test.h
13181 test.h:
13185 Change the target of the rule emitted by dependency generation. By
13187 directory components and any file suffix such as '.c', and appends
13188 the platform's usual object suffix. The result is the target.
13191 specify. If you want multiple targets, you can specify them as a
13192 single argument to '-MT', or use multiple '-MT' options.
13194 For example, '-MT '$(objpfx)foo.o'' might give
13196 $(objpfx)foo.o: foo.c
13201 Make. '-MQ '$(objpfx)foo.o'' gives
13203 $$(objpfx)foo.o: foo.c
13206 with '-MQ'.
13210 implied. The driver determines FILE based on whether an '-o'
13211 option is given. If it is, the driver uses its argument but with a
13212 suffix of '.d', otherwise it takes the name of the input file,
13213 removes any directory components and suffix, and applies a '.d'
13214 suffix.
13218 dashMF.), but if used without '-E', each '-o' is understood to
13219 specify a target object file.
13222 dependency output file as a side effect of the compilation process.
13226 files.
13230 preprocessed. This suppresses things like macro expansion,
13232 most directives. The preprocessor still recognizes and removes
13234 compiler without problems. In this mode the integrated
13235 preprocessor is little more than a tokenizer for the front ends.
13238 extensions '.i', '.ii' or '.mi'. These are the extensions that GCC
13239 uses for preprocessed files created by '-save-temps'.
13242 When preprocessing, handle directives, but do not expand macros.
13245 options.
13248 such as '#define', '#ifdef', and '#error'. Other preprocessor
13250 performed. In addition, the '-dD' option is implicitly enabled.
13253 builtin macros is disabled. Macros such as '__LINE__', which are
13254 contextually dependent, are handled normally. This enables
13256 -fdirectives-only'.
13259 take precedence. This enables full preprocessing of files
13260 previously preprocessed with '-E -fdirectives-only'.
13263 Accept '$' in identifiers.
13267 identifiers. This option is enabled by default for C99 (and later
13268 C standard versions) and C++.
13272 canonicalization.
13275 Set the maximum depth of the nested #include. The default is 200.
13278 Set the distance between tab stops. This helps the preprocessor
13280 appear on the line. If the value is less than 1 or greater than
13281 100, the option is ignored. The default is 8.
13284 Track locations of tokens across macro expansions. This allows the
13286 when a compilation error occurs in a macro expansion. Using this
13287 option makes the preprocessor and the compiler consume more memory.
13290 necessary. Value '0' of LEVEL de-activates this option. Value '1'
13292 memory overhead. In this mode all tokens resulting from the
13294 location. Value '2' tracks tokens locations completely. This
13295 value is the most memory hungry. When this option is given no
13296 argument, the default parameter value is '2'.
13298 Note that '-ftrack-macro-expansion=2' is activated by default.
13303 directory 'NEW' instead. This can be used to change an absolute
13304 path to a relative path by using '.' for NEW which can result in
13305 more reproducible builds that are location independent. This
13306 option also affects '__builtin_FILE()' during compilation. See
13307 also '-ffile-prefix-map'.
13311 constants. The default is UTF-8. CHARSET can be any encoding
13312 supported by the system's 'iconv' library routine.
13316 character constants. The default is one of UTF-32BE, UTF-32LE,
13319 for code generation. As with '-fexec-charset', CHARSET can be any
13322 exactly in 'wchar_t'.
13327 GCC. If the locale does not specify, or GCC cannot get this
13328 information from the locale, the default is UTF-8. This can be
13329 overridden by either the locale or this command-line option.
13331 conflict. CHARSET can be any encoding supported by the system's
13332 'iconv' library routine.
13337 the precompiled header's dependencies. If not specified, only the
13340 header is used.
13344 Headers::) together with '-E'. It inserts a special '#pragma',
13346 place where the precompiled header was found, and its FILENAME.
13348 loads the PCH.
13351 output is only really suitable as input to GCC. It is switched on
13352 by '-save-temps'.
13356 different location. The filename may be absolute or it may be
13357 relative to GCC's current directory.
13362 preprocessing. When this option is enabled, the preprocessor
13364 current working directory followed by two slashes. GCC uses this
13367 debugging information formats. This option is implicitly enabled
13369 the negated form '-fno-working-directory'. If the '-P' flag is
13371 '#line' directives are emitted whatsoever.
13374 Make an assertion with the predicate PREDICATE and answer ANSWER.
13377 characters.
13380 Cancel an assertion with the predicate PREDICATE and answer ANSWER.
13383 Do not discard comments. All comments are passed through to the
13385 deleted along with the directive.
13388 the preprocessor to treat comments as tokens in their own right.
13392 longer a '#'.
13395 Do not discard comments, including during macro expansion. This is
13397 passed through to the output file where the macro is expanded.
13401 to C-style comments. This is to prevent later use of that macro
13402 from inadvertently commenting out the remainder of the source line.
13404 The '-CC' option is generally used to support lint comments.
13408 preprocessor. This might be useful when running the preprocessor
13410 which might be confused by the linemarkers.
13416 opposed to ISO C preprocessors. See the GNU CPP manual for
13417 details.
13421 switch, or when invoking CPP explicitly.
13424 Support ISO C trigraphs. These are three-character sequences, all
13426 characters. For example, '??/' stands for '\', so ''??/n'' is a
13427 character constant for a newline.
13435 it converts them. See the '-std' and '-ansi' options.
13439 very short file names, such as MS-DOS.
13443 normal activities. Each name is indented to show how deep in the
13444 '#include' stack it is. Precompiled header files are also printed,
13446 file is printed with '...x' and a valid one with '...!' .
13450 LETTERS. The flags documented here are those relevant to the
13451 preprocessor. Other LETTERS are interpreted by the compiler
13453 ignored. If you specify LETTERS whose behavior conflicts, the
13454 result is undefined. *Note Developer Options::, for more
13455 information.
13460 the preprocessor, including predefined macros. This gives you
13462 preprocessor. Assuming you have no file 'foo.h', the command
13464 touch foo.h; cpp -dM foo.h
13466 shows all the predefined macros.
13469 as a synonym for '-fdump-rtl-mach'. *Note (gcc)Developer
13470 Options::.
13475 directives and the result of preprocessing. Both kinds of
13476 output go to the standard output file.
13480 expansions.
13484 preprocessing.
13491 undefined at the time.
13494 This option is only useful for debugging GCC. When used from CPP or
13495 with '-E', it dumps debugging information about location maps.
13497 location belongs to.
13499 When used from GCC without '-E', this option has no effect.
13503 OPTION directly through to the preprocessor. If OPTION contains
13504 commas, it is split into multiple options at the commas. However,
13507 forcibly bypasses this phase. The preprocessor's direct interface
13510 instead.
13513 Pass OPTION as an option to the preprocessor. You can use this to
13515 recognize.
13519 argument.
13522 Perform preprocessing as a separate pass before compilation. By
13524 tokenization and parsing. If this option is provided, the
13528 preprocessed input. This option may be useful in conjunction with
13531 normal preprocessing and compilation.
13534 File: gcc.info, Node: Assembler Options, Next: Link Options, Prev: Preprocessor Options, Up: In…
13539 You can pass options to the assembler.
13542 Pass OPTION as an option to the assembler. If OPTION contains
13543 commas, it is split into multiple options at the commas.
13546 Pass OPTION as an option to the assembler. You can use this to
13548 recognize.
13551 '-Xassembler' twice, once for the option and once for the argument.
13554 File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invok…
13560 an executable output file. They are meaningless if the compiler is not
13561 doing a link step.
13565 considered to name an object file or library. (Object files are
13567 contents.) If linking is done, these object files are used as
13568 input to the linker.
13574 object file names should not be used as arguments. *Note Overall
13575 Options::.
13578 This option controls code generation of the link-time optimizer.
13580 linker plugin. For debugging the compiler and if incremental
13582 control the type manually.
13584 If TYPE is 'exec', code generation produces a static binary. In
13585 this case '-fpic' and '-fpie' are both disabled.
13587 If TYPE is 'dyn', code generation produces a shared library. In
13589 automatically. This allows to build shared libraries without
13591 i.e. on x86.
13593 If TYPE is 'pie', code generation produces an '-fpie' executable.
13595 is not disabled if specified at compilation time.
13598 done. The sections containing intermediate code for link-time
13600 object file. In addition, if '-ffat-lto-objects' is specified,
13601 binary code is produced for future non-LTO linking. The object
13603 library produced from the same object files. At link time the
13606 used.
13610 the intermediate code for later link-time optimization is stripped.
13614 whole program optimizations are lost.
13617 'rel'. With current interfaces to GNU Binutils it is however not
13619 a single mixed object file. If any of object files in incremental
13621 issues a warning and uses 'nolto-rel'. To maintain whole program
13623 library instead. Alternatively it is possible to use H.J. Lu's
13624 binutils with support for mixed objects.
13627 Use the 'bfd' linker instead of the default linker.
13630 Use the 'gold' linker instead of the default linker.
13633 Use the LLVM 'lld' linker instead of the default linker.
13637 Search the library named LIBRARY when linking. (The second
13639 POSIX compliance and is not recommended.)
13641 The '-l' option is passed directly to the linker by GCC. Refer to
13642 your linker documentation for exact details. The general
13643 description below applies to the GNU linker.
13645 The linker searches a standard list of directories for the library.
13647 directories plus any that you specify with '-L'.
13650 like 'libLIBRARY.a'. Some targets also support shared libraries,
13651 which typically have names like 'libLIBRARY.so'. If both static
13654 used.
13658 order they are specified. Thus, 'foo.o -lz bar.o' searches library
13659 'z' after file 'foo.o' but before 'bar.o'. If 'bar.o' refers to
13660 functions in 'z', those functions may not be loaded.
13664 Objective-C or Objective-C++ program.
13667 Do not use the standard system startup files when linking. The
13669 '-nolibc', or '-nodefaultlibs' is used.
13672 Do not use the standard system libraries when linking. Only the
13675 '-static-libgcc' or '-shared-libgcc', are ignored. The standard
13676 startup files are used normally, unless '-nostartfiles' is used.
13679 'memmove'. These entries are usually resolved by entries in libc.
13681 when this option is specified.
13685 it when linking. Still link with the startup files, 'libgcc' or
13688 inclusion are used as well. This typically removes '-lc' from the
13691 assumed, for example '-lpthread' or '-lm' in some configurations.
13693 library available.
13697 linking. No startup files and only the libraries you specify are
13700 ignored.
13703 'memmove'. These entries are usually resolved by entries in libc.
13705 when this option is specified.
13708 '-nodefaultlibs' is 'libgcc.a', a library of internal subroutines
13710 special needs for some languages. (*Note Interfacing to GCC
13711 Output: (gccint)Interface, for more discussion of 'libgcc.a'.) In
13712 most cases, you need 'libgcc.a' even when you want to avoid other
13713 standard libraries. In other words, when you specify '-nostdlib'
13714 or '-nodefaultlibs' you should usually specify '-lgcc' as well.
13716 library subroutines. (An example of such an internal subroutine is
13718 'collect2': (gccint)Collect2.)
13723 Specify that the program entry point is ENTRY. The argument is
13725 name or an address.
13729 targets that support it. For predictable results, you must also
13731 '-fPIE', or model suboptions) when you specify this linker option.
13734 Don't produce a dynamically linked position independent executable.
13738 support it. A static position independent executable is similar to
13740 dynamic linker. For predictable results, you must also specify the
13742 model suboptions) when you specify this linker option.
13745 Link with the POSIX threads library. This option is supported on
13747 Cygwin and MinGW targets. On some targets this option also sets
13749 both compilation and linking.
13752 Produce a relocatable object as output. This is also known as
13753 partial linking.
13757 support it. This instructs the linker to add all symbols, not only
13758 used ones, to the dynamic symbol table. This option is needed for
13760 a program.
13764 executable.
13768 prevents linking with the shared libraries. On other systems, this
13769 option has no effect.
13773 to form an executable. Not all systems support this option. For
13776 you specify this linker option.(1)
13781 force the use of either the shared or static version, respectively.
13783 configured, these options have no effect.
13786 shared 'libgcc' instead of the static version. The most common of
13788 across different shared libraries. In that case, each of the
13790 'libgcc'.
13795 to do.
13798 may find that they are not always linked with the shared 'libgcc'.
13802 shared libraries by default. Otherwise, it takes advantage of the
13804 'libgcc', linking with the static version of libgcc by default.
13806 without incurring relocation costs at library load time.
13811 'libgcc'.
13815 GCC driver automatically links against 'libasan'. If 'libasan' is
13817 used, then this links against the shared version of 'libasan'. The
13819 statically, without necessarily linking other libraries statically.
13823 GCC driver automatically links against 'libtsan'. If 'libtsan' is
13825 used, then this links against the shared version of 'libtsan'. The
13827 statically, without necessarily linking other libraries statically.
13831 GCC driver automatically links against 'liblsan'. If 'liblsan' is
13833 used, then this links against the shared version of 'liblsan'. The
13835 statically, without necessarily linking other libraries statically.
13839 the GCC driver automatically links against 'libubsan'. If
13842 'libubsan'. The '-static-libubsan' option directs the GCC driver
13844 libraries statically.
13848 automatically links against 'libstdc++'. If 'libstdc++' is
13850 used, then this links against the shared version of 'libstdc++'.
13851 That is normally fine. However, it is sometimes useful to freeze
13853 the way to a fully static link. The '-static-libstdc++' option
13855 necessarily linking other libraries statically.
13858 Bind references to global symbols when building a shared object.
13860 editor option '-Xlinker -z -Xlinker defs'). Only a few systems
13861 support this option.
13864 Use SCRIPT as the linker script. This option is supported by most
13865 systems using the GNU linker. On some targets, such as bare-board
13867 required when linking to avoid references to undefined symbols.
13870 Pass OPTION as an option to the linker. You can use this to supply
13871 system-specific linker options that GCC does not recognize.
13875 argument. For example, to pass '-assert definitions', you must
13876 write '-Xlinker -assert -Xlinker definitions'. It does not work to
13879 expects.
13883 separate arguments. For example, you can specify '-Xlinker
13884 -Map=output.map' rather than '-Xlinker -Map -Xlinker output.map'.
13885 Other linkers may not support this syntax for command-line options.
13888 Pass OPTION as an option to the linker. If OPTION contains commas,
13889 it is split into multiple options at the commas. You can use this
13890 syntax to pass an argument to the option. For example,
13891 '-Wl,-Map,output.map' passes '-Map output.map' to the linker. When
13893 '-Wl,-Map=output.map'.
13897 modules to define it. You can use '-u' multiple times with
13898 different symbols to force loading of additional library modules.
13902 KEYWORD. See the section in the documentation of your linker for
13903 permitted values and their meanings.
13908 code for constructors to work. On multi-libbed systems, 'gcc -shared'
13909 must select the correct support libraries to link against. Failing to
13910 supply the correct flags may lead to subtle defects. Supplying them in
13911 cases where they are not necessary is innocuous.
13914 File: gcc.info, Node: Directory Options, Next: Code Gen Options, Prev: Link Options, Up: Invoki…
13927 header files during preprocessing. If DIR begins with '=' or
13929 prefix; see '--sysroot' and '-isysroot'.
13932 of the directive, '#include "FILE"'. Directories specified with
13934 '#include "FILE"' and '#include <FILE>' directives.
13937 command line to search for header files in several directories.
13940 1. For the quote form of the include directive, the directory of
13941 the current file is searched first.
13943 2. For the quote form of the include directive, the directories
13945 order, as they appear on the command line.
13947 3. Directories specified with '-I' options are scanned in
13948 left-to-right order.
13950 4. Directories specified with '-isystem' options are scanned in
13951 left-to-right order.
13953 5. Standard system directories are scanned.
13955 6. Directories specified with '-idirafter' options are scanned in
13956 left-to-right order.
13960 standard system header file directories. However, you should not
13962 system header files; use '-isystem' for that.
13966 is applied to the standard system directories.
13970 ignored. The directory is still searched but as a system directory
13971 at its normal position in the system include chain. This is to
13974 changed. If you really need to change the search order for system
13975 directories, use the '-nostdinc' and/or '-isystem' options.
13978 Split the include path. This option has been deprecated. Please
13980 remove the '-I-' option.
13984 are not searched for '#include <FILE>'. If additional directories
13986 are searched for all '#include' directives.
13989 file directory as the first search directory for '#include "FILE"'.
13990 There is no way to override this effect of '-I-'.
13993 Specify PREFIX as the prefix for subsequent '-iwithprefix' options.
13995 '/'.
14000 add the resulting directory to the include search path.
14002 '-iwithprefix' puts it where '-idirafter' would.
14007 header files and libraries). See the '--sysroot' option for more
14008 information.
14012 target-specific C++ headers.
14015 Do not search the standard system directories for header files.
14018 current file, if appropriate) are searched.
14022 directories, but do still search the other standard directories.
14023 (This option is used when building the C++ library.)
14027 '-fplugin=NAME' instead of '-fplugin=PATH/NAME.so'. This option is
14028 not meant to be used by the user, but only passed by the driver.
14032 '-l'.
14036 include files, and data files of the compiler itself.
14039 'cpp', 'cc1', 'as' and 'ld'. It tries PREFIX as a prefix for each
14041 for the corresponding target machine and compiler version.
14044 '-B' prefix, if any. If that name is not found, or if '-B' is not
14046 and '/usr/local/lib/gcc/'. If neither of those results in a file
14049 variable.
14053 at the end of the path.
14057 options into '-L' options for the linker. They also apply to
14059 these options into '-isystem' options for the preprocessor. In
14060 this case, the compiler appends 'include' to the prefix.
14062 The runtime support file 'libgcc.a' can also be searched for using
14063 the '-B' prefix, if needed. If it is not found there, the two
14064 standard prefixes above are tried, and that is all. The file is
14065 left out of the link if it is not found by those means.
14068 the environment variable 'GCC_EXEC_PREFIX'. *Note Environment
14069 Variables::.
14073 is replaced by '[dir/]include'. This is to help with
14074 boot-strapping the compiler.
14077 Do not expand any symbolic links, resolve references to '/../' or
14078 '/./', or make the path absolute when generating a relative prefix.
14081 Use DIR as the logical root directory for headers and libraries.
14084 'DIR/usr/include' and 'DIR/usr/lib'.
14088 applies to header files.
14091 support for this option. If your linker does not support this
14093 library aspect does not.
14099 instead of 'DIR/usr/include'. This option disables the addition of
14100 such a suffix.
14103 File: gcc.info, Node: Code Gen Options, Next: Developer Options, Prev: Directory Options, Up: I…
14109 in code generation.
14112 of '-ffoo' is '-fno-foo'. In the table below, only one of the forms is
14113 listed--the one that is not the default. You can figure out the other
14114 form by either removing 'no-' or adding it.
14118 variables and compiler generated temporaries. REUSE_LEVEL can be
14119 'all', 'named_vars', or 'none'. 'all' enables stack reuse for all
14122 disables stack reuse completely. The default value is 'all'. The
14125 point defined by the language. When a lifetime of a variable ends,
14128 scoped local variables whose live range does not overlap with it.
14130 stack reuse optimization.
14140 ....
14145 ...
14175 ....
14178 // is reused with a. What is the value of ap->i?
14183 the C++ standard. When a lifetime of a temporary ends, and if the
14186 variables whose live range does not overlap with it. However some
14189 reuse can lead to runtime errors. This option is used to control
14190 the temporary stack reuse optimization.
14194 subtraction, multiplication operations. The options '-ftrapv' and
14196 command-line results in '-fwrapv' being effective. Note that only
14198 on the command-line results in '-ftrapv' being effective.
14203 using twos-complement representation. This flag enables some
14204 optimizations and disables others. The options '-ftrapv' and
14206 command-line results in '-fwrapv' being effective. Note that only
14208 on the command-line results in '-ftrapv' being effective.
14213 twos-complement representation. This flag disables some
14214 optimizations which assume pointer overflow is invalid.
14218 negated implies '-fwrapv' '-fwrapv-pointer'.
14221 Enable exception handling. Generates extra code needed to
14222 propagate exceptions. For some targets, this implies GCC generates
14225 execution. If you do not specify this option, GCC enables it by
14228 require it. However, you may need to enable this option when
14230 handlers written in C++. You may also wish to disable this option
14232 handling.
14236 exceptions. Note that this requires platform-specific runtime
14237 support that does not exist everywhere. Moreover, it only allows
14238 _trapping_ instructions to throw exceptions, i.e. memory references
14239 or floating-point instructions. It does not allow exceptions to be
14240 thrown from arbitrary signal handlers such as 'SIGALRM'.
14245 optimized away. This option is enabled by default for the Ada
14246 front end, as permitted by the Ada language specification.
14248 enabled independently at different optimization levels.
14253 way. You normally do not need to enable this option; instead, a
14255 behalf.
14259 machine. The table is exact at each instruction boundary, so it
14261 debugger or garbage collector).
14271 one about the binding of the symbol. But this causes 'dlclose' to
14274 '-fno-gnu-unique'.
14278 ones, rather than in registers. This convention is less efficient,
14281 particularly the Portable C Compiler (pcc).
14284 on the target configuration macros.
14287 match that of some integer type.
14291 '-freg-struct-return' switch. Use it to conform to a non-default
14292 application binary interface.
14295 Return 'struct' and 'union' values in registers when possible.
14297 '-fpcc-struct-return'.
14301 standard for the target. If there is no standard convention, GCC
14303 the principal compiler. In those cases, we can choose the
14305 alternative.
14309 '-fpcc-struct-return' switch. Use it to conform to a non-default
14310 application binary interface.
14314 declared range of possible values. Specifically, the 'enum' type
14315 is equivalent to the smallest integer type that has enough room.
14319 switch. Use it to conform to a non-default application binary
14320 interface.
14324 int' instead of the default for the target. This option is useful
14325 for building programs to run under WINE.
14329 switch. Use it to conform to a non-default application binary
14330 interface.
14335 the C standard. Tentative definitions are distinct from
14337 allocate storage.
14341 object file. This inhibits the merging of tentative definitions by
14343 variable is accidentally defined in more than one compilation unit.
14346 block. This allows the linker to resolve all tentative definitions
14348 object, or to a non-tentative definition. This behavior is
14350 size penalty on global variable references. It is mainly useful to
14351 enable legacy code to link without errors.
14354 Ignore the '#ident' directive.
14357 Don't output a '.size' assembler directive, or anything else that
14359 two halves are placed at locations far apart in memory. This
14360 option is used when compiling 'crtstuff.c'; you should not need to
14361 use it for anything else.
14365 make it more readable. This option is generally only of use to
14367 (perhaps while debugging the compiler itself).
14370 omitted and is useful when comparing two assembler files.
14380 various assembly instruction operands.
14398 gcc -S test.c -fverbose-asm -Os -o -
14402 .file "test.c"
14403 # GNU C11 (GCC) version 7.0.0 20160809 (experimental) (x86_64-pc-linux-gnu)
14404 [...snip...]
14406 [...snip...]
14408 .text
14409 .globl test
14410 .type test, @function
14412 .LFB0:
14413 .cfi_startproc
14414 # test.c:4: int total = 0;
14416 # test.c:6: for (i = 0; i < n; i++)
14418 .L2:
14419 # test.c:6: for (i = 0; i < n; i++)
14421 jge .L5 #,
14422 # test.c:7: total += i * i;
14425 # test.c:6: for (i = 0; i < n; i++)
14427 # test.c:7: total += i * i;
14429 jmp .L2 #
14430 .L5:
14431 # test.c:10: }
14433 .cfi_endproc
14434 .LFE0:
14435 .size test, .-test
14436 .ident "GCC: (GNU) 7.0.0 20160809 (experimental)"
14437 .section .note.GNU-stack,"",@progbits
14440 the precise format of the comments is subject to change.
14444 be recorded into the object file that is being created. This
14447 usually takes the form of a section containing ASCII text. This
14450 so it never reaches the object file. See also
14452 into the object file.
14456 shared library, if supported for the target machine. Such code
14458 (GOT). The dynamic loader resolves the GOT entries when the
14460 of the operating system). If the GOT size for the linked
14463 work; in that case, recompile with '-fPIC' instead. (These
14465 and RS/6000. The x86 has no such limit.)
14468 works only on certain machines. For the x86, GCC supports PIC for
14469 System V but not for the Sun 386i. Code generated for the IBM
14470 RS/6000 is always position-independent.
14473 defined to 1.
14478 size of the global offset table. This option makes a difference on
14479 AArch64, m68k, PowerPC and SPARC.
14482 works only on certain machines.
14485 defined to 2.
14490 position-independent code can be only linked into executables.
14492 using the '-pie' GCC option.
14494 '-fpie' and '-fPIE' both define the macros '__pie__' and '__PIE__'.
14495 The macros have the value 1 for '-fpie' and 2 for '-fPIE'.
14499 position-independent code. Instead, load the callee address at
14500 call sites from the GOT and branch to it. This leads to more
14502 optimizations. On architectures such as 32-bit x86 where PLT stubs
14504 register allocation freedom to the compiler. Lazy binding requires
14506 at load time.
14509 calls through the PLT for specific external functions.
14513 instead.
14517 more efficient than other code generation strategies. This option
14520 address of a jump table. On some targets, jump tables do not
14521 require a GOT and this option is not needed.
14526 pointer or in some other fixed role).
14528 REG must be the name of a register. The register names accepted
14530 in the machine description macro file.
14533 three-way choice.
14537 clobbered by function calls. It may be allocated for temporaries
14538 or variables that do not live across a call. Functions compiled
14539 this way do not save and restore the register REG.
14542 pointer. Use of this flag for other registers that have fixed
14544 disastrous results.
14547 three-way choice.
14551 functions. It may be allocated even for temporaries or variables
14552 that live across a call. Functions compiled this way save and
14553 restore the register REG if they use it.
14556 pointer. Use of this flag for other registers that have fixed
14558 disastrous results.
14561 a register in which function values may be returned.
14564 three-way choice.
14568 without holes. When a value is specified (which must be a small
14572 unaligned at the next fitting location.
14576 switch. Additionally, it makes the code suboptimal. Use it to
14577 conform to a non-default application binary interface.
14582 file. One use is to help link with legacy assembly code.
14586 switch. Use it to conform to a non-default application binary
14587 interface. Not all targets provide complete support for this
14588 switch.
14592 Thread-Local::). The MODEL argument should be one of
14593 'global-dynamic', 'local-dynamic', 'initial-exec' or 'local-exec'.
14596 translation unit, or if '-fpic' is not given on the command line.
14599 default is 'global-dynamic'.
14603 always generate them instead of using descriptors. Otherwise, for
14605 nothing.
14609 used to call the nested function indirectly. Therefore, it
14611 to work properly.
14615 that this is safe, and replace them with descriptors. Descriptors
14617 to deal with them. As of this writing, '-fno-trampolines' is
14618 enabled by default only for Ada.
14622 are present. This option must therefore be used on a program-wide
14623 basis and be manipulated with extreme care.
14628 the code. Using this feature can very substantially improve
14631 clashes. It is *strongly* recommended that you use this in any
14632 shared objects you distribute.
14634 Despite the nomenclature, 'default' always means public; i.e.,
14635 available to be linked against from outside the shared object.
14637 so the only other commonly used option is 'hidden'. The default if
14638 '-fvisibility' isn't specified is 'default', i.e., make every
14639 symbol public.
14644 <https://www.akkadia.org/drepper/>)--however a superior solution
14647 public. This is the norm with DLLs on Windows and with
14650 semantics with identical syntax. This is a great boon to those
14651 working with cross-platform projects.
14654 '#pragma GCC visibility' of use. This works by you enclosing the
14657 pop'. Bear in mind that symbol visibility should be viewed *as
14659 always specify visibility when it is not the default; i.e.,
14663 self-documentation of the code. Note that due to ISO C++
14665 must always be of default visibility.
14669 be expecting to be compiled with visibility other than the default.
14671 push(default)' before including any such headers.
14675 modifications. However, this means that calls to 'extern'
14679 be treated as hidden.
14681 Note that '-fvisibility' does affect C++ vague linkage entities.
14684 that the 'type_info' nodes are unified between the DSOs.
14687 is at <http://gcc.gnu.org/wiki/Visibility>.
14693 field's type, aligned to a natural alignment if possible. For
14698 accesses instead of, perhaps, a more efficient 32-bit access.
14701 instruction. In the previous example, that might be a 32-bit load
14704 to the one being updated.
14709 machine. In this case GCC falls back to generating multiple
14711 run time.
14714 accesses are not allowed to touch non bit-field members. It is
14716 bit-field members.
14719 binary interface for the target processor.
14724 '__atomic' family of functions.
14727 form of the option is '-fno-sync-libcalls'. This option is used in
14728 the implementation of the 'libatomic' runtime library.
14731 File: gcc.info, Node: Developer Options, Next: Submodel Options, Prev: Code Gen Options, Up: In…
14739 problems. This includes options that produce debug dumps at various
14742 such as where it searches for libraries. You should rarely need to use
14743 any of these options for ordinary compilation and linking tasks.
14746 optional '=FILENAME' suffix. You can specify 'stdout' or '-' to dump to
14747 standard output, and 'stderr' for standard error.
14751 pass name. The base dump file name is the name of output file produced
14753 it is the source file name. The pass number is determined by the order
14754 passes are registered with the compiler's pass manager. This is
14758 executed earlier. The phase letter is one of 'i' (inter-procedural
14759 analysis), 'l' (language-specific), 'r' (RTL), or 't' (tree). The files
14760 are created in the directory of the output file.
14765 a per-object-file basis. The information is generated in the
14766 common VCG format. It can be decorated with additional, per-node
14768 is additionally specified. When the 'su' marker is specified, the
14770 equivalent to '-fstack-usage'. When the 'da' marker is specified,
14772 allocated objects.
14775 along with the object file. At LTO link time, '-fcallgraph-info'
14777 intermediate LTO output files.
14783 by LETTERS. This is used for debugging the RTL-based passes of the
14784 compiler.
14787 for preprocessing. *Note Preprocessor Options::, for information
14788 about preprocessor-specific dump options.
14791 option LETTERS. Here are the possible letters for use in PASS and
14795 Dump after branch alignments have been computed.
14799 constraints.
14802 Dump after auto-inc-dec discovery. This pass is only run on
14803 architectures that have auto inc or auto dec instructions.
14806 Dump after cleaning up the barrier instructions.
14809 Dump after partitioning hot and cold basic blocks.
14812 Dump after block reordering.
14817 the two branch target load optimization passes.
14820 Dump after jump bypassing and control flow optimizations.
14823 Dump after the RTL instruction combination pass.
14826 Dump after duplicating the computed gotos.
14832 enable dumping after the three if conversion passes.
14835 Dump after hard register copy propagation.
14838 Dump after combining stack adjustments.
14843 the two common subexpression elimination passes.
14846 Dump after the standalone dead code elimination passes.
14849 Dump after delayed branch scheduling.
14854 the two dead store elimination passes.
14857 Dump after finalization of EH handling code.
14860 Dump after conversion of EH handling range regions.
14863 Dump after RTL generation.
14868 after the two forward propagation passes.
14873 global common subexpression elimination.
14876 Dump after the initialization of the registers.
14879 Dump after the computation of the initial value sets.
14882 Dump after converting to cfglayout mode.
14885 Dump after iterated register allocation.
14888 Dump after the second jump optimization.
14892 optimization passes.
14896 pass, if that pass exists.
14899 Dump after removing redundant mode switches.
14902 Dump after register renumbering.
14905 Dump after converting from cfglayout mode.
14908 Dump after the peephole pass.
14911 Dump after post-reload optimizations.
14914 Dump after generating the function prologues and epilogues.
14919 after the basic block scheduling passes.
14922 Dump after sign/zero extension elimination.
14925 Dump after common sequence discovery.
14928 Dump after shortening branches.
14931 Dump after sibling call optimizations.
14939 splitting.
14942 Dump after modulo scheduling. This pass is only run on some
14943 architectures.
14947 registers to the x87's stack-like registers. This pass is
14948 only run on x86 variants.
14953 after the two subreg expansion passes.
14956 Dump after all rtl has been unshared.
14959 Dump after variable tracking.
14962 Dump after converting virtual registers to hard registers.
14965 Dump after live range splitting.
14972 These dumps are defined but always produce empty files.
14976 Produce all the dumps listed above.
14980 information.
14984 addition to normal output.
14987 Produce a core dump whenever an error occurs.
14991 pattern and alternative is used. The length and cost of each
14992 instruction are also printed.
14996 instruction. Also turns on '-dp' annotation.
14999 Just generate RTL for a function instead of compiling it.
15000 Usually used with '-fdump-rtl-expand'.
15004 phase.
15008 generation phase.
15011 When doing debugging dumps, suppress address output. This makes it
15014 / bss / data / heap / stack / dso start locations.
15018 internal compiler error (ICE) occurs.
15022 address output. This makes it more feasible to use diff on
15024 particular with and without '-g'.
15029 instructions in a sequence.
15034 language tree to a file. The file name is generated by appending a
15036 created in the same directory as the output file. The following
15040 Enables all inter-procedural analysis dumps.
15044 function removal, and inlining decisions.
15047 Dump after function inlining.
15051 defaulting to '-optimized'.
15055 that were not inlined.
15059 details about the analysis.
15065 Control the dumping of language-specific information. The OPTIONS
15067 option. The following SWITCH values are accepted:
15071 Enable all language-specific dumps.
15074 Dump class hierarchy information. Virtual table information
15075 is emitted unless ''slim'' is specified. This option is
15076 applicable to C++ only.
15079 Dump the raw internal tree data. This option is applicable to
15080 C++ only.
15084 on and off by the current command-line options.
15087 Enable and control dumping of pass statistics in a separate file.
15089 '.statistics' to the source file name, and the file is created in
15090 the same directory as the output file. If the '-OPTION' form is
15093 generate them. The default with no option is to sum counters for
15094 each function compiled.
15101 intermediate language tree to a file. If the '-OPTIONS' form is
15103 details of the dump. Not all options are applicable to all dumps;
15104 those that are not meaningful are ignored. The following options
15108 Print the address of each node. Usually this is not
15110 source file. Its primary use is for tying up a dump file with
15111 a debug environment.
15114 that in the dump instead of 'DECL_NAME'. Its primary use is
15116 assembly file.
15120 because that scope has been reached. Only dump such items
15121 when they are directly reachable by some other path.
15124 dumping the bodies of control structures.
15127 instead of the default LISP-like representation.
15129 Print a raw representation of the tree. By default, trees are
15130 pretty-printed into a C-like representation.
15132 Enable more detailed dumps (not honored by every dump option).
15133 Also include information from the optimization passes.
15136 by every dump option).
15138 Enable showing basic block boundaries (disabled in raw dumps).
15143 'FILE.PASSID.PASS.dot'. Each function in the file is
15145 all in a single plot.
15148 always dumped in slim form.
15150 Enable showing virtual operands for every statement.
15152 Enable showing line numbers for statements.
15154 Enable showing the unique ID ('DECL_UID') for each variable.
15156 Enable showing the tree dump for each statement.
15158 Enable showing the EH region number holding each statement.
15160 Enable showing scalar evolution analysis details.
15163 certain passes).
15166 in certain passes).
15169 in certain passes).
15172 'lineno'.
15174 Turn on all optimization options, i.e., 'optimized', 'missed',
15175 and 'note'.
15178 pass of interest follow the steps below.
15180 1. Invoke GCC with '-fdump-passes' and in the 'stderr' output
15182 interested in. For example, the codes 'tree-evrp',
15184 Range Propagation passes. The number at the end distinguishes
15185 distinct invocations of the same pass.
15186 2. To enable the creation of the dump file, append the pass code
15187 to the '-fdump-' option prefix and invoke GCC with it. For
15190 option. Optionally, you may specify the name of the dump
15191 file. If you don't specify one, GCC creates as described
15192 below.
15193 3. Find the pass dump in a file whose name is composed of three
15197 the letter 'r' for RTL passes), and finally the pass code.
15199 'myfile.c.038t.evrp' in the current working directory. Note
15201 version of GCC to another.
15206 Controls optimization dumps from various optimization passes. If
15208 option keywords to select the dump details and optimizations.
15211 1. options describing what kinds of messages should be emitted,
15212 2. options describing the verbosity of the dump, and
15213 3. options describing which optimizations should be included.
15215 non-overlapping. However, in case of any conflicts, the later
15216 options override the earlier options on the command line.
15223 applied. It is up to a pass to decide which information is
15224 relevant. For example, the vectorizer passes print the source
15225 location of loops which are successfully vectorized.
15227 Print information about missed optimizations. Individual
15228 passes control which information to include in the output.
15231 transformations, more detailed messages about decisions etc.
15233 Print detailed optimization information. This includes
15234 'optimized', 'missed', and 'note'.
15239 By default, only "high-level" messages are emitted. This
15241 likely to only be of interest to GCC developers.
15247 Enable dumps from all interprocedural optimizations.
15249 Enable dumps from all loop optimizations.
15251 Enable dumps from all inlining optimizations.
15254 optimizations.
15256 Enable dumps from all vectorization optimizations.
15258 Enable dumps from all optimizations. This is a superset of
15259 the optimization groups listed above.
15263 passes, omitting messages that are treated as "internals".
15266 optimizations are concatenated into the FILENAME. Otherwise the
15267 dump is output onto 'stderr'. Though multiple '-fopt-info' options
15268 are accepted, only one of them can include a FILENAME. If other
15270 ignored.
15273 translation units. If a combined output from multiple translation
15274 units is desired, 'stderr' should be used instead.
15282 gcc -O3 -fopt-info-missed=missed.all
15285 'missed.all', and this one:
15290 vectorization passes on 'stderr'. Note that
15291 '-fopt-info-vec-missed' is equivalent to '-fopt-info-missed-vec'.
15293 after '-fopt-info' does not matter.
15296 gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
15299 locations from all the inlining passes into 'inline.txt'.
15303 gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
15305 Here the two output filenames 'vec.miss' and 'loop.opt' are in
15306 conflict since only one output file is allowed. In this case, only
15308 ignored. Thus only 'vec.miss' is produced which contains dumps
15309 from the vectorizer about missed opportunities.
15312 Write a SRCFILE.opt-record.json.gz file detailing what
15314 '-fopt-info'.
15317 compressed JSON file is subject to change.
15349 passes.
15354 files.
15357 information as '-fdump-rtl-sched1' and '-fdump-rtl-sched2'. For N
15359 detailed ready list information and unit/insn info. For N greater
15361 info. And for N over four, '-fsched-verbose' also includes
15362 dependence info.
15368 optimization passes. These options are intended for use for
15369 debugging GCC. Compiler users should use regular options for
15370 enabling/disabling passes instead.
15373 Disable IPA pass PASS. PASS is the pass name. If the same
15376 from 1.
15380 Disable RTL pass PASS. PASS is the pass name. If the same
15383 from 1. RANGE-LIST is a comma-separated list of function
15384 ranges or assembler names. Each range is a number pair
15385 separated by a colon. The range is inclusive in both ends.
15387 a single number. If the function's call graph node's UID
15389 for that function. The UID is shown in the function header of
15391 '-fdump-passes'.
15395 Disable tree pass PASS. See '-fdisable-rtl' for the
15396 description of option arguments.
15399 Enable IPA pass PASS. PASS is the pass name. If the same
15402 from 1.
15406 Enable RTL pass PASS. See '-fdisable-rtl' for option argument
15407 description and examples.
15411 Enable tree pass PASS. See '-fdisable-rtl' for the
15412 description of option arguments.
15414 Here are some examples showing uses of these options.
15435 Enable internal consistency checking. The default depends on the
15436 compiler configuration. '-fchecking=2' enables further internal
15437 consistency checking that might affect code generation.
15442 different in every compiled file. It is also used to place unique
15444 them. You can use the '-frandom-seed' option to produce
15445 reproducibly identical object files.
15449 computing CRC32).
15451 The STRING should be different for every file you compile.
15457 file. Thus, compiling 'foo.c' with '-c -save-temps' produces files
15458 'foo.i' and 'foo.s', as well as 'foo.o'. This creates a
15459 preprocessed 'foo.i' output file even though the compiler now
15460 normally uses an integrated preprocessor.
15464 source file with the same extension as an intermediate file. The
15466 source file before using '-save-temps'.
15472 each other, and overwrite the temporary files. For instance:
15474 gcc -save-temps -o outdir1/foo.o indir1/foo.c&
15475 gcc -save-temps -o outdir2/foo.o indir2/foo.c&
15477 may result in 'foo.i' and 'foo.o' being written to simultaneously
15478 by both compilers.
15481 Store the usual "temporary" intermediate files permanently. If the
15483 file. If the '-o' option is not used, the '-save-temps=obj' switch
15484 behaves like '-save-temps'.
15488 gcc -save-temps=obj -c foo.c
15489 gcc -save-temps=obj -c bar.c -o dir/xbar.o
15490 gcc -save-temps=obj foobar.c -o dir2/yfoobar
15492 creates 'foo.i', 'foo.s', 'dir/xbar.i', 'dir/xbar.s',
15493 'dir2/yfoobar.i', 'dir2/yfoobar.s', and 'dir2/yfoobar.o'.
15497 sequence. For C source files, this is the compiler proper and
15498 assembler (plus the linker if linking is done).
15507 spent executing the program itself. The second number is "system
15509 the program. Both numbers are in seconds.
15520 options.
15523 Dump the final internal representation (RTL) to FILE. If the
15524 optional argument is omitted (or if FILE is '.'), the name of the
15525 dump file is determined by appending '.gkd' to the compilation
15526 output file name.
15531 passed to the second compilation. Dump the final internal
15533 differ.
15535 If the equal sign is omitted, the default '-gtoggle' is used.
15538 and nonzero, implicitly enables '-fcompare-debug'. If
15540 then it is used for OPTS, otherwise the default '-gtoggle' is used.
15545 even 'GCC_COMPARE_DEBUG' from taking effect.
15550 than preprocessing, assembly or linking). To get just a warning,
15552 will do.
15559 effect. Dump files and preserved temporary files are renamed so as
15560 to contain the '.gk' additional extension during the second
15561 compilation, to avoid overwriting those generated by the first.
15565 other than debugging the compiler proper.
15569 generates it, or turn it on at level 2 otherwise. The position of
15572 matter how many times it is given. This is mainly intended to be
15573 used with '-fcompare-debug'.
15577 '-gtoggle' toggles '-g'.
15581 and print some statistics about each pass when it finishes.
15585 each pass when it finishes.
15589 each pass.
15593 allocator. The default value is 5. If the value N is greater or
15595 format as N minus 10.
15599 link-time optimizer. The contents of this report vary from version
15600 to version. It is meant to be useful to GCC developers when
15601 processing object files in LTO mode (via '-flto').
15603 Disabled by default.
15607 optimization.
15611 allocation when it finishes.
15615 allocation for the WPA phase only.
15620 allocation before or after interprocedural optimization.
15624 (estimated) profile and effect of individual passes.
15628 on a per-function basis. The filename for the dump is made by
15629 appending '.su' to the AUXNAME. AUXNAME is generated from the name
15631 executable, otherwise it is the basename of the source file. An
15634 * The name of the function.
15635 * A number of bytes.
15636 * One or more qualifiers: 'static', 'dynamic', 'bounded'.
15641 adjustments are otherwise made in the function. The second field
15642 is this fixed number of bytes.
15647 example to push/pop arguments around function calls. If the
15650 upper bound of the total amount of stack used by the function. If
15653 part.
15657 compilation. This option is supported only by the C++ front end,
15659 team.
15662 Print the name and the counter upper bound for all debug counters.
15665 Set the internal debug counter lower and upper bound.
15667 NAME:LOWER_BOUND1-UPPER_BOUND1 [:LOWER_BOUND2-UPPER_BOUND2...]
15669 intervals. The LOWER_BOUND is optional and is zero initialized if
15670 not set. For example, with '-fdbg-cnt=dce:2-4:10-11,tail_call:10',
15672 and eleventh invocation. For 'dbg_cnt(tail_call)' true is returned
15673 for first 10 invocations.
15677 be used when linking--and don't do anything else. With this
15679 file name.
15683 any other switches present in the command line. This directory is
15684 supposed to exist in 'GCC_EXEC_PREFIX'.
15688 switches that enable them. The directory name is separated from
15690 the '-', without spaces between multiple switches. This is
15691 supposed to ease shell processing.
15695 to some 'lib' subdirectory. If OS libraries are present in the
15697 '.', if OS libraries are present in 'libSUFFIX' sibling directories
15698 this prints e.g. '../lib64', '../lib' or '../lib32', or if OS
15699 libraries are present in 'lib/SUBDIR' subdirectories it prints e.g.
15700 'amd64', 'sparcv9' or 'ev6'.
15704 to some 'lib' subdirectory.
15707 Like '-print-file-name', but searches for a program such as 'cpp'.
15710 Same as '-print-file-name=libgcc.a'.
15713 do want to link with 'libgcc.a'. You can do:
15715 gcc -nostdlib FILES... `gcc -print-libgcc-file-name`
15720 anything else.
15723 problem, cannot exec cpp0: No such file or directory'. To resolve
15727 installed them. Don't forget the trailing '/'. *Note Environment
15728 Variables::.
15731 Print the target sysroot directory that is used during compilation.
15734 depends on compilation options. If no target sysroot is specified,
15735 the option prints nothing.
15740 such a suffix--and don't do anything else.
15744 'i686-pc-linux-gnu')--and don't do anything else.
15747 Print the compiler version (for example, '3.0', '6.3.0' or
15748 '7')--and don't do anything else. This is the compiler version
15749 used in filesystem paths and specs. Depending on how the compiler
15752 numbers separated by dots (major, minor and patchlevel version).
15755 Print the full compiler version--and don't do anything else. The
15757 patchlevel version.
15760 Print the compiler's built-in specs--and don't do anything else.
15761 (This is used when GCC itself is being built.) *Note Spec Files::.
15764 File: gcc.info, Node: Submodel Options, Next: Spec Files, Prev: Developer Options, Up: Invoking…
15771 ABI, or to control optimizations specific to that machine. By
15772 convention, the names of machine-specific options start with '-m'.
15776 on the same platform.
15845 File: gcc.info, Node: AArch64 Options, Next: Adapteva Epiphany Options, Up: Submodel Options
15847 3.19.1 AArch64 Options
15853 Generate code for the specified data model. Permissible values are
15856 bits, but long int and pointers are 64 bits.
15858 The default depends on the specific target configuration. Note
15861 compatible set of libraries.
15864 Generate big-endian code. This is the default when GCC is
15865 configured for an 'aarch64_be-*-*' target.
15868 Generate code which uses only the general-purpose registers. This
15871 assembler.
15874 Generate little-endian code. This is the default when GCC is
15875 configured for an 'aarch64-*-*' but not an 'aarch64_be-*-*' target.
15878 Generate code for the tiny code model. The program and its
15879 statically defined symbols must be within 1MB of each other.
15880 Programs can be statically or dynamically linked.
15883 Generate code for the small code model. The program and its
15884 statically defined symbols must be within 4GB of each other.
15885 Programs can be statically or dynamically linked. This is the
15886 default code model.
15889 Generate code for the large code model. This makes no assumptions
15890 about addresses and sizes of sections. Programs can be statically
15891 linked only. The '-mcmodel=large' option is incompatible with
15892 '-mabi=ilp32', '-fpic' and '-fPIC'.
15898 specification.
15902 Omit or keep the frame pointer in leaf functions. The former
15903 behavior is the default.
15908 Generate stack protection code using canary at GUARD. Supported
15910 in an appropriate system register.
15916 from what offset from that base register. There is no default
15918 kernel.
15923 Generate stack protection code using canary at GUARD. Supported
15925 in an appropriate system register.
15931 from what offset from that base register. There is no default
15933 kernel.
15937 dynamic accesses of TLS variables. This is the default.
15941 dynamic accesses of TLS variables.
15944 Specify bit size of immediate TLS offsets. Valid values are 12,
15945 24, 32, 48. This option requires binutils 2.26 or newer.
15950 number 835769. This involves inserting a NOP instruction between
15952 instructions.
15957 number 843419. This erratum workaround is made at link time and
15958 this will only pass the corresponding flag to the linker.
15962 Enable or disable the reciprocal square root approximation. This
15964 '-funsafe-math-optimizations' is used as well. Enabling this
15966 bits for single precision and to 32 bits for double precision.
15970 Enable or disable the square root approximation. This option only
15972 used as well. Enabling this reduces precision of square root
15974 double precision. If enabled, it implies
15975 '-mlow-precision-recip-sqrt'.
15979 Enable or disable the division approximation. This option only has
15981 as well. Enabling this reduces precision of division results to
15983 precision.
15988 speculative execution through conditional branches. The tracking
15991 sequence to be generated.
15996 operations. These helpers will, at runtime, determine if the LSE
15997 instructions from ARMv8.1-A can be used; if not, they will use the
15999 ARMv8.0 ISA.
16001 This option is only applicable when compiling for the base ARMv8.0
16002 instruction set. If using a later revision, e.g.
16003 '-march=armv8.1-a' or '-march=armv8-a+lse', the ARMv8.1-Atomics
16004 instructions will be used directly. The same applies when using
16005 '-mcpu=' when the selected cpu supports the 'lse' feature. This
16006 option is on by default.
16010 more feature modifiers. This option has the form
16011 '-march=ARCH{+[no]FEATURE}*'.
16019 'armv8.1-a' Armv8.1-A 'armv8-a', '+crc', '+lse', '+rdma'
16020 'armv8.2-a' Armv8.2-A 'armv8.1-a'
16021 'armv8.3-a' Armv8.3-A 'armv8.2-a'
16022 'armv8.4-a' Armv8.4-A 'armv8.3-a', '+fp16fml', '+dotprod'
16023 'armv8.5-a' Armv8.5-A 'armv8.4-a', '+sb', '+ssbs', '+predres'
16024 'armv8.6-a' Armv8.6-A 'armv8.5-a', '+bf16', '+i8mm'
16027 causes the compiler to pick the architecture of the host system.
16033 aarch64-feature-modifiers. Where conflicting feature modifiers are
16034 specified, the right-most feature is used.
16037 when generating assembly code. If '-march' is specified without
16040 implementing the target architecture.
16044 the performance of the code. Permissible values for this option
16056 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
16057 'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
16058 'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55', 'ampere1',
16059 'ampere1a', 'native'.
16061 The values 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
16062 'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
16063 'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55' specify that GCC
16064 should tune for a big.LITTLE system.
16068 bandwidth of 512 bits per cycle. In other words, the option tells
16072 256-bit SVE, 4 for 128-bit SVE). This is more general than tuning
16074 default tuning described below.
16077 tunes performance to the host system. This option has no effect if
16079 system.
16082 code is tuned to perform well across a range of target processors.
16084 This option cannot be suffixed by feature modifiers.
16088 one or more feature modifiers. This option has the form
16090 are the same as those available for '-mtune'. The permissible
16092 '-march' and '-mcpu' Feature Modifiers: aarch64-feature-modifiers.
16094 feature is used.
16099 '-mtune'). Where this option is used in conjunction with '-march'
16101 part of this option.
16106 cycle. Unless overridden by '-march', '-mcpu=neoverse-512tvb'
16108 V1 is the first Neoverse core with these properties. Unless
16110 same way as for '-mtune=neoverse-512tvb'.
16114 '-mtune=' switch. The syntax, semantics, and accepted values for
16116 releases.
16118 This option is only intended to be useful when developing GCC.
16121 Enable verbose cost model dumping in the debug dump files. This
16122 option is provided for use in debugging the compiler.
16126 Enable or disable PC-relative literal loads. With this option
16128 after each function. This limits the maximum size of functions to
16129 1MB. This is enabled by default for '-mcmodel=tiny'.
16133 applied. Permissible values are 'none', which disables return
16136 pointer signing for all functions. The default value is 'none'.
16137 This option has been deprecated by -mbranch-protection.
16140 Select the branch protection features to use. 'none' is the
16141 default and turns off all types of branch protection. 'standard'
16142 turns on all types of branch protection features. If a feature has
16144 level. 'pac-ret[+LEAF]' turns on return address signing to its
16147 the a-key. The optional argument 'leaf' can be used to extend the
16148 signing to include leaf functions. The optional argument 'b-key'
16150 A-key. 'bti' turns on branch target identification mechanism.
16153 Enable compiler hardening against straight line speculation (SLS).
16158 '-mharden-sls=none' disables all SLS hardening.
16161 Specify the number of bits in an SVE vector register. This option
16162 only has an effect when SVE is enabled.
16167 about the vector length when it is useful for optimization reasons.
16169 '1024' and '2048'. Specifying 'scalable' selects vector-length
16170 agnostic output. At present '-msve-vector-bits=128' also generates
16171 vector-length agnostic output for big-endian targets. All other
16172 values generate vector-length specific code. The behavior of these
16175 different hardware SVE vector lengths.
16178 vector-length agnostic code.
16180 3.19.1.1 '-march' and '-mcpu' Feature Modifiers
16181 ...............................................
16187 Enable CRC extension. This is on by default for
16188 '-march=armv8.1-a'.
16190 Enable Crypto extension. This also enables Advanced SIMD and
16191 floating-point instructions.
16193 Enable floating-point instructions. This is on by default for all
16194 possible values for options '-march' and '-mcpu'.
16196 Enable Advanced SIMD instructions. This also enables
16197 floating-point instructions. This is on by default for all
16198 possible values for options '-march' and '-mcpu'.
16200 Enable Scalable Vector Extension instructions. This also enables
16201 Advanced SIMD and floating-point instructions.
16203 Enable Large System Extension instructions. This is on by default
16204 for '-march=armv8.1-a'.
16206 Enable Round Double Multiply Accumulate instructions. This is on
16207 by default for '-march=armv8.1-a'.
16209 Enable FP16 extension. This also enables floating-point
16210 instructions.
16212 Enable FP16 fmla extension. This also enables FP16 extensions and
16213 floating-point instructions. This option is enabled by default for
16214 '-march=armv8.4-a'. Use of this option with architectures prior to
16215 Armv8.2-A is not supported.
16218 Enable the RcPc extension. This does not change code generation
16220 statements to use instructions from the RcPc extension.
16222 Enable the Dot Product extension. This also enables Advanced SIMD
16223 instructions.
16225 Enable the Armv8-a aes and pmull crypto extension. This also
16226 enables Advanced SIMD instructions.
16228 Enable the Armv8-a sha2 crypto extension. This also enables
16229 Advanced SIMD instructions.
16231 Enable the sha512 and sha3 crypto extension. This also enables
16232 Advanced SIMD instructions. Use of this option with architectures
16233 prior to Armv8.2-A is not supported.
16235 Enable the sm3 and sm4 crypto extension. This also enables
16236 Advanced SIMD instructions. Use of this option with architectures
16237 prior to Armv8.2-A is not supported.
16239 Enable the Statistical Profiling extension. This option is only to
16241 code generation.
16243 Enable the Armv8.5-a Random Number instructions. This option is
16245 affect code generation.
16247 Enable the Armv8.5-a Memory Tagging Extensions. Use of this option
16248 with architectures prior to Armv8.5-A is not supported.
16250 Enable the Armv8-a Speculation Barrier instruction. This option is
16252 affect code generation. This option is enabled by default for
16253 '-march=armv8.5-a'.
16255 Enable the Armv8-a Speculative Store Bypass Safe instruction. This
16257 does not affect code generation. This option is enabled by default
16258 for '-march=armv8.5-a'.
16261 instructions. This option is only to enable the extension at the
16262 assembler level and does not affect code generation. This option
16263 is enabled by default for '-march=armv8.5-a'.
16265 Enable the Armv8-a Scalable Vector Extension 2. This also enables
16266 SVE instructions.
16268 Enable SVE2 bitperm instructions. This also enables SVE2
16269 instructions.
16271 Enable SVE2 sm4 instructions. This also enables SVE2 instructions.
16273 Enable SVE2 aes instructions. This also enables SVE2 instructions.
16275 Enable SVE2 sha3 instructions. This also enables SVE2
16276 instructions.
16278 Enable the Transactional Memory Extension.
16280 Enable 8-bit Integer Matrix Multiply instructions. This also
16281 enables Advanced SIMD and floating-point instructions. This option
16282 is enabled by default for '-march=armv8.6-a'. Use of this option
16283 with architectures prior to Armv8.2-A is not supported.
16285 Enable 32-bit Floating point Matrix Multiply instructions. This
16286 also enables SVE instructions. Use of this option with
16287 architectures prior to Armv8.2-A is not supported.
16289 Enable 64-bit Floating point Matrix Multiply instructions. This
16290 also enables SVE instructions. Use of this option with
16291 architectures prior to Armv8.2-A is not supported.
16293 Enable brain half-precision floating-point instructions. This also
16294 enables Advanced SIMD and floating-point instructions. This option
16295 is enabled by default for '-march=armv8.6-a'. Use of this option
16296 with architectures prior to Armv8.2-A is not supported.
16298 Feature 'crypto' implies 'aes', 'sha2', and 'simd', which implies 'fp'.
16300 and 'nosha2'.
16303 File: gcc.info, Node: Adapteva Epiphany Options, Next: AMD GCN Options, Prev: AArch64 Options, …
16305 3.19.2 Adapteva Epiphany Options
16311 Don't allocate any register in the range 'r32'...'r63'. That
16312 allows code to run on hardware variants that lack these registers.
16316 generation. This can result in increased instruction count, so
16317 this may either reduce or increase overall code size.
16320 Set the cost of branches to roughly NUM "simple" instructions.
16322 consistent results across releases.
16325 Enable the generation of conditional moves.
16328 Emit NUM NOPs before every other generated instruction.
16332 instruction and test the flags. This is faster than a software
16335 difference is calculated as zero. The default is '-msoft-cmpsf',
16336 which uses slower, but IEEE-compliant, software comparisons.
16339 Set the offset between the top of the stack and the stack pointer.
16340 E.g., a value of 8 means that the eight bytes in the range
16341 'sp+0...sp+7' can be used by leaf functions without stack
16342 allocation. Values other than '8' or '16' are untested and
16343 unlikely to work. Note also that this option changes the ABI;
16345 libraries have been compiled with generally does not work. This
16350 '--with-stack-offset=NUM' option.
16354 truncating. The default is '-mround-nearest'.
16360 performing a (otherwise direct) call. This is the default.
16365 instructions for direct calls. The default is '-mlong-calls'.
16368 Assume addresses can be loaded as 16-bit unsigned values. This
16370 semantics are in effect.
16373 Set the prevailing mode of the floating-point unit. This
16375 function call and return time. Making this mode match the mode you
16377 and faster by avoiding unnecessary mode switches.
16383 when the function returns, and when it calls other functions.
16390 needed with a more specific choice of prevailing FPU mode.
16394 truncating (i.e. round towards zero) rounding mode. That
16395 includes conversion from floating point to integer.
16399 round-to-nearest-or-even rounding mode.
16403 FPU, e.g. integer multiply, or integer
16404 multiply-and-accumulate.
16413 generation of post-modify addresses. The defaults are
16414 'msplit-lohi', '-mpost-inc', and '-mpost-modify'.
16417 Change the preferred SIMD mode to SImode. The default is
16418 '-mvect-double', which uses DImode as preferred SIMD mode.
16421 The maximum alignment for SIMD vector mode types. NUM may be 4 or
16422 8. The default is 8. Note that this is an ABI change, even though
16425 relevant types.
16428 Split vector moves into single word moves before reload. In theory
16430 seems to be generally the case.
16434 small negative constants and certain bitmasks faster. Allowable
16437 register is used for this purpose. The default is '-m1reg-none'.
16440 File: gcc.info, Node: AMD GCN Options, Next: ARC Options, Prev: Adapteva Epiphany Options, Up: …
16442 3.19.3 AMD GCN Options
16445 These options are defined specifically for the AMD GCN port.
16449 Set architecture type or tuning for GPU. Supported values for GPU
16453 Compile for GCN3 Fiji devices (gfx803).
16456 Compile for GCN5 Vega 10 devices (gfx900).
16459 Compile for GCN5 Vega 20 devices (gfx906).
16463 GPU thread (wave-front). Beware that there may be many threads and
16464 limited memory available. The size of the stack allocation may
16465 also have an impact on run-time performance. The default is 32KB
16466 when using OpenACC or OpenMP, and 1MB otherwise.
16469 File: gcc.info, Node: ARC Options, Next: ARM Options, Prev: AMD GCN Options, Up: Submodel Optio…
16471 3.19.4 ARC Options
16478 Generate instructions supported by barrel shifter. This is the
16479 default unless '-mcpu=ARC601' or '-mcpu=ARCEM' is in effect.
16482 Force to call a function using jli_s instruction. This option is
16483 valid only for ARCv2 architecture.
16487 parameters for CPU. There are also shortcut alias options
16488 available for backward compatibility and convenience. Supported
16492 Compile for ARC600. Aliases: '-mA6', '-mARC600'.
16495 Compile for ARC601. Alias: '-mARC601'.
16498 Compile for ARC700. Aliases: '-mA7', '-mARC700'. This is the
16499 default when configured with '--with-cpu=arc700'.
16502 Compile for ARC EM.
16505 Compile for ARC HS.
16508 Compile for ARC EM CPU with no hardware extensions.
16511 Compile for ARC EM4 CPU.
16514 Compile for ARC EM4 DMIPS CPU.
16518 floating-point extension.
16522 floating-point and double assist instructions.
16526 atomic instructions.
16529 Compile for ARC HS34 CPU.
16532 Compile for ARC HS38 CPU.
16535 Compile for ARC HS38 CPU with all hardware extensions on.
16538 Compile for ARC 600 CPU with 'norm' instructions enabled.
16542 instructions enabled.
16546 instructions enabled.
16549 Compile for ARC 601 CPU with 'norm' instructions enabled.
16553 instructions enabled.
16557 instructions enabled.
16560 Compile for ARC 700 on NPS400 chip.
16564 register set.
16569 implementation.
16573 implementation.
16577 registers.
16580 Generate extended arithmetic instructions. Currently only 'divaw',
16581 'adds', 'subs', and 'sat16' are supported. Only valid for
16582 '-mcpu=ARC700'.
16585 Do not generate 'mpy'-family instructions for ARC700. This option
16586 is deprecated.
16589 Generate 32x16-bit multiply and multiply-accumulate instructions.
16592 Generate 'mul64' and 'mulu64' instructions. Only valid for
16593 '-mcpu=ARC600'.
16596 Generate 'norm' instructions. This is the default if
16597 '-mcpu=ARC700' is in effect.
16602 implementation.
16606 implementation.
16610 builtins. Only valid for '-mcpu=ARC700'.
16614 only. Software floating-point code is emitted by default, and this
16617 '-mdpfp-compact', or '-mdpfp-fast' for double precision.
16620 Generate 'swap' instructions.
16624 implement atomic memory built-in functions. Not available for ARC
16625 6xx or ARC EM cores.
16628 Enable 'div' and 'rem' instructions for ARCv2 cores.
16631 Enable code density instructions for ARC EM. This option is on by
16632 default for ARC HS.
16635 Enable double load/store operations for ARC HS cores.
16638 Specify thread pointer register number.
16641 Compile ARCv2 code with a multiplier design option. You can
16643 MULTO. 'wlh1' is the default value. The recognized values are:
16647 No multiplier available.
16651 16x16 multiplier, fully pipelined. The following instructions
16652 are enabled: 'mpyw' and 'mpyuw'.
16656 32x32 multiplier, fully pipelined (1 stage). The following
16658 'mpymu', and 'mpy_s'.
16662 32x32 multiplier, fully pipelined (2 stages). The following
16664 'mpymu', and 'mpy_s'.
16668 Two 16x16 multipliers, blocking, sequential. The following
16670 'mpymu', and 'mpy_s'.
16674 One 16x16 multiplier, blocking, sequential. The following
16676 'mpymu', and 'mpy_s'.
16680 One 32x4 multiplier, blocking, sequential. The following
16682 'mpymu', and 'mpy_s'.
16686 ARC HS SIMD support.
16690 ARC HS SIMD support.
16694 ARC HS SIMD support.
16696 This option is only available for ARCv2 cores.
16700 ARCv2 cores. Supported values for FPU are:
16704 extensions.
16708 extensions. The single-precision floating-point extension is
16709 also enabled. Not available for ARC EM.
16713 extensions using double-precision assist instructions. The
16714 single-precision floating-point extension is also enabled.
16715 This option is only available for ARC EM.
16719 extensions using double-precision assist instructions. The
16721 extensions are also enabled. This option is only available
16722 for ARC EM.
16726 extensions using double-precision assist instructions. The
16728 hardware extensions are also enabled. This option is only
16729 available for ARC EM.
16733 extensions using double-precision assist instructions. All
16735 enabled. This option is only available for ARC EM.
16739 square-root and divide hardware extensions.
16743 square-root and divide hardware extensions. This option
16744 includes option 'fpus_div'. Not available for ARC EM.
16748 multiply and add hardware extensions.
16752 multiply and add hardware extensions. This option includes
16753 option 'fpus_fma'. Not available for ARC EM.
16757 hardware extensions.
16761 floating-point hardware extensions. Not available for ARC EM.
16765 automatically saves/restores on interrupt entry and exit.
16766 REGISTER-RANGE is specified as two registers separated by a dash.
16768 register. BLINK and LP_COUNT are optional. This option is only
16769 valid for ARC EM and ARC HS cores.
16773 bank on entry to fast interrupt. Fast interrupts are interrupts
16774 with the highest priority level P0. These interrupts save only PC
16776 interrupt entry and exit sequences. Use this option when you are
16777 using fast interrupts in an ARC V2 family processor. Permitted
16778 values are 4, 8, 16, and 32.
16781 Specify the width of the 'lp_count' register. Valid values for
16782 WIDTH are 8, 16, 20, 24, 28 and 32 bits. The default width is
16783 fixed to 32 bits. If the width is less than 32, the compiler does
16786 register can hold the required loop-counter value. Depending on
16788 continue to use the loop mechanism for various needs. This option
16789 defines macro '__ARC_LPC_WIDTH__' with the value of WIDTH.
16793 register file. This option defines the '__ARC_RF16__' preprocessor
16794 macro.
16797 Enable use of 'bi' or 'bih' instructions to implement jump tables.
16800 define preprocessor macro symbols.
16803 Passed down to the assembler to enable the DSP Pack A extensions.
16804 Also sets the preprocessor symbol '__Xdsp_packa'. This option is
16805 deprecated.
16809 extension. Also sets the preprocessor symbol '__Xdvbf'. This
16810 option is deprecated.
16814 conditional extension. Also sets the preprocessor symbol
16815 '__Xlock'.
16818 Passed down to the assembler. Also sets the preprocessor symbol
16819 '__Xxmac_d16'. This option is deprecated.
16822 Passed down to the assembler. Also sets the preprocessor symbol
16823 '__Xxmac_24'. This option is deprecated.
16827 counter extension instruction. Also sets the preprocessor symbol
16828 '__Xrtsc'. This option is deprecated.
16832 extension instruction. Also sets the preprocessor symbol
16833 '__Xswape'.
16837 instructions for telephony. Also sets the preprocessor symbol
16838 '__Xtelephony'. This option is deprecated.
16841 Passed down to the assembler to enable the XY memory extension.
16842 Also sets the preprocessor symbol '__Xxy'.
16847 Annotate assembler instructions with estimated addresses.
16851 an instruction short or long.
16857 emulation. This option is enabled by default in tool chains built
16859 profiling is not requested.
16863 emulation. This option is enabled by default in tool chains built
16865 profiling is requested.
16871 the full 32-bit address range.
16875 offset available for an unconditional branch-and-link instruction.
16878 branch-and-link. This is the default for tool chains built for
16879 'arc-linux-uclibc' and 'arceb-linux-uclibc' targets.
16883 if that data is no bigger than NUM bytes. The default value of NUM
16885 operations.
16888 Do not generate sdata references. This is the default for tool
16890 targets.
16893 Use ordinarily cached memory accesses for volatile references.
16894 This is the default.
16897 Enable cache bypass for volatile references.
16901 Do alignment optimizations for call instructions.
16904 Enable the use of pre/post modify with register displacement.
16907 Enable bbit peephole2.
16911 generate compare-and-branch ('brCC') instructions. It has no
16913 pass.
16916 Use PC-relative switch case tables to enable case table shortening.
16917 This is the default for '-Os'.
16920 Enable compact 'casesi' pattern. This is the default for '-Os',
16921 and only available for ARCv1 cores. This option is deprecated.
16925 execution instructions.
16933 shortening, and delay slot scheduling have been done. This pass
16936 to switch it off. If you have a problem with call instructions
16939 instead.
16942 Enable pre-reload use of the 'cbranchsi' pattern.
16945 Expand 'adddi3' and 'subdi3' at RTL generation time into 'add.f',
16946 'adc' etc. This option is deprecated.
16949 Enable the use of indexed loads. This can be problematic because
16951 the case.
16954 Enable Local Register Allocation. This is still experimental for
16955 ARC, so by default the compiler uses standard reload (i.e.
16956 '-mno-lra').
16959 Don't indicate any priority for target registers.
16962 Indicate target register priority for r0..r3 / r12..r15.
16965 Reduce target register priority for r0..r3 / r12..r15.
16971 referred to as a _millicode_ call. As these calls can pose
16974 millicode call generation.
16978 instructions. These instructions are only valid for CPUs with
16979 code-density feature.
16982 Tweak register allocation to help 16-bit instruction generation.
16984 size while increasing the instruction count.
16987 Ths option is deprecated. Enable 'q' instruction alternatives.
16988 This is the default for '-Os'.
16991 Enable 'Rcq' constraint handling. Most short code generation
16992 depends on this. This is the default.
16995 Enable 'Rcw' constraint handling. Most ccfsm condexec mostly
16996 depends on this. This is the default.
17000 alignment. The recognized values for LEVEL are:
17002 No size optimization. This level is deprecated and treated
17003 like '1'.
17006 Short instructions are used opportunistically.
17010 dropped.
17014 option 'Os' is enabled.
17016 This defaults to '3' when '-Os' is in effect. Otherwise, the
17017 behavior when this is not set is equivalent to level '1'.
17021 implied by '-mcpu='.
17026 Tune for ARC600 CPU.
17029 Tune for ARC601 CPU.
17032 Tune for ARC700 CPU with standard multiplier block.
17035 Tune for ARC700 CPU with XMAC block.
17038 Tune for ARC725D CPU.
17041 Tune for ARC750D CPU.
17045 a normal instruction.
17048 Set probability threshold for unaligning branches. When tuning for
17052 PROBABILITY. *Note Cross-profiling::. The default is
17053 (REG_BR_PROB_BASE/2), i.e. 5000.
17059 Obsolete FPX.
17063 Compile code for big-endian targets. Use of these options is now
17064 deprecated. Big-endian code is supported by configuring GCC to
17066 endian is the default.
17070 Compile code for little-endian targets. Use of these options is
17071 now deprecated. Little-endian code is supported by configuring GCC
17073 little endian is the default.
17076 Replaced by '-mbarrel-shifter'.
17079 Replaced by '-mdpfp-compact'.
17082 Replaced by '-mdpfp-fast'.
17085 Replaced by '-mdsp-packa'.
17088 Replaced by '-mea'.
17091 Replaced by '-mmac-24'.
17094 Replaced by '-mmac-d16'.
17097 Replaced by '-mspfp-compact'.
17100 Replaced by '-mspfp-fast'.
17105 respectively.
17108 Replaced by '-mmultcost'.
17111 File: gcc.info, Node: ARM Options, Next: AVR Options, Prev: ARC Options, Up: Submodel Options
17113 3.19.5 ARM Options
17119 Generate code for the specified ABI. Permissible values are:
17120 'apcs-gnu', 'atpcs', 'aapcs', 'aapcs-linux' and 'iwmmxt'.
17125 necessary for correct execution of the code. Specifying
17127 to be generated for leaf functions. The default is
17128 '-mno-apcs-frame'. This option is deprecated.
17131 This is a synonym for '-mapcs-frame' and is deprecated.
17135 instruction sets. Without this option, on pre-v5 architectures,
17137 program. The default is '-mno-thumb-interwork', since slightly
17138 larger code is generated when '-mthumb-interwork' is specified. In
17139 AAPCS configurations this option is meaningless.
17144 function's body. This means that all functions start with a
17148 piece of code. The default is '-msched-prolog'.
17151 Specifies which floating-point ABI to use. Permissible values are:
17152 'soft', 'softfp' and 'hard'.
17155 calls for floating-point operations. 'softfp' allows the
17157 still uses the soft-float calling conventions. 'hard' allows
17159 calling conventions.
17161 The default depends on the specific target configuration. Note
17164 with a compatible set of libraries.
17167 Generate code which uses only the general-purpose registers. This
17170 assembler.
17173 Generate code for a processor running in little-endian mode. This
17174 is the default for all standard configurations.
17178 default is to compile code for a little-endian processor.
17183 formats. The option has no effect for little-endian images and is
17184 ignored. The default is dependent on the selected target
17185 architecture. For ARMv6 and later architectures the default is
17186 BE8, for older architectures the default is BE32. BE32 format has
17187 been deprecated by ARM.
17189 '-march=NAME[+extension...]'
17190 This specifies the name of the target ARM architecture. GCC uses
17192 generating assembly code. This option can be used in conjunction
17193 with or instead of the '-mcpu=' option.
17197 'armv7', 'armv7-a', 'armv7ve', 'armv8-a', 'armv8.1-a', 'armv8.2-a',
17198 'armv8.3-a', 'armv8.4-a', 'armv8.5-a', 'armv8.6-a', 'armv7-r',
17200 'armv8-m.base', 'armv8-m.main', 'armv8.1-m.main', 'iwmmxt' and
17201 'iwmmxt2'.
17205 deprecated: 'armv4'.
17207 Many of the architectures support extensions. These can be added
17208 by appending '+EXTENSION' to the architecture name. Extension
17209 options are processed in order and capabilities accumulate. An
17211 it depends. For example, the '+crypto' extension will always
17212 enable the '+simd' extension. The exception to the additive
17213 construction is for extensions that are prefixed with '+no...':
17215 extensions that may depend on the presence of that extension.
17219 disabled by the '+nofp' option that follows it.
17222 is dependent upon the architecture to which it is applied. For
17226 variant for 'armv8-a'.
17229 architecture. Architectures not mentioned do not support any
17230 extensions.
17241 The VFPv2 floating-point instructions. The extension
17242 '+vfpv2' can be used as an alias for this extension.
17245 Disable the floating-point instructions.
17249 architectures.
17252 double-precision registers. The extension '+vfpv3-d16'
17253 can be used as an alias for this extension. Note that
17256 ARMv7-R architectures.
17259 Disable the floating-point instructions.
17263 The multiprocessing extension.
17266 The security extension.
17270 double-precision registers. The extension '+vfpv3-d16'
17271 can be used as an alias for this extension.
17275 instructions. The extensions '+neon' and '+neon-vfpv3'
17276 can be used as aliases for this extension.
17280 double-precision registers.
17285 floating-point conversion operations.
17290 floating-point conversion operations.
17294 double-precision registers.
17298 double-precision registers.
17303 conversion operations.
17307 instructions.
17311 floating point).
17315 instructions.
17319 for virtualization.
17322 double-precision registers. The extension '+vfpv4-d16'
17323 can be used as an alias for this extension.
17327 instructions. The extension '+neon-vfpv4' can be used as
17328 an alias for this extension.
17332 double-precision registers.
17336 double-precision registers.
17341 floating-point conversion operations.
17346 floating-point conversion operations.
17350 double-precision registers.
17354 double-precision registers.
17358 instructions. The extension '+neon-vfpv3' can be used as
17359 an alias for this extension.
17364 conversion operations.
17368 floating point).
17372 instructions.
17376 The Cyclic Redundancy Check (CRC) instructions.
17379 instructions.
17381 The cryptographic instructions.
17383 Disable the cryptographic instructions.
17386 cryptographic instructions.
17388 Speculation Barrier Instruction.
17390 Execution and Data Prediction Restriction Instructions.
17392 'armv8.1-a'
17394 The ARMv8.1-A Advanced SIMD and floating-point
17395 instructions.
17398 The cryptographic instructions. This also enables the
17399 Advanced SIMD and floating-point instructions.
17402 Disable the cryptographic instructions.
17406 cryptographic instructions.
17409 Speculation Barrier Instruction.
17412 Execution and Data Prediction Restriction Instructions.
17414 'armv8.2-a'
17415 'armv8.3-a'
17418 instructions. This also enables the Advanced SIMD and
17419 floating-point instructions.
17422 The half-precision floating-point fmla extension. This
17424 and Advanced SIMD and floating-point instructions.
17427 The ARMv8.1-A Advanced SIMD and floating-point
17428 instructions.
17431 The cryptographic instructions. This also enables the
17432 Advanced SIMD and floating-point instructions.
17435 Enable the Dot Product extension. This also enables
17436 Advanced SIMD instructions.
17439 Disable the cryptographic extension.
17443 cryptographic instructions.
17446 Speculation Barrier Instruction.
17449 Execution and Data Prediction Restriction Instructions.
17452 8-bit Integer Matrix Multiply instructions. This also
17453 enables Advanced SIMD and floating-point instructions.
17456 Brain half-precision floating-point instructions. This
17458 instructions.
17460 'armv8.4-a'
17463 instructions. This also enables the Advanced SIMD and
17466 extension.
17469 The ARMv8.3-A Advanced SIMD and floating-point
17470 instructions as well as the Dot Product extension.
17473 The cryptographic instructions. This also enables the
17475 the Dot Product extension.
17478 Disable the cryptographic extension.
17482 cryptographic instructions.
17485 Speculation Barrier Instruction.
17488 Execution and Data Prediction Restriction Instructions.
17491 8-bit Integer Matrix Multiply instructions. This also
17492 enables Advanced SIMD and floating-point instructions.
17495 Brain half-precision floating-point instructions. This
17497 instructions.
17499 'armv8.5-a'
17502 instructions. This also enables the Advanced SIMD and
17505 extension.
17508 The ARMv8.3-A Advanced SIMD and floating-point
17509 instructions as well as the Dot Product extension.
17512 The cryptographic instructions. This also enables the
17514 the Dot Product extension.
17517 Disable the cryptographic extension.
17521 cryptographic instructions.
17524 8-bit Integer Matrix Multiply instructions. This also
17525 enables Advanced SIMD and floating-point instructions.
17528 Brain half-precision floating-point instructions. This
17530 instructions.
17532 'armv8.6-a'
17535 instructions. This also enables the Advanced SIMD and
17538 extension.
17541 The ARMv8.3-A Advanced SIMD and floating-point
17542 instructions as well as the Dot Product extension.
17545 The cryptographic instructions. This also enables the
17547 the Dot Product extension.
17550 Disable the cryptographic extension.
17554 cryptographic instructions.
17557 8-bit Integer Matrix Multiply instructions. This also
17558 enables Advanced SIMD and floating-point instructions.
17561 Brain half-precision floating-point instructions. This
17563 instructions.
17566 '+fp.sp'
17567 The single-precision VFPv3 floating-point instructions.
17569 extension.
17573 double-precision registers. The extension +vfpv3-d16 can
17574 be used as an alias for this extension.
17579 floating-point conversion operations.
17584 floating-point conversion operations.
17587 Disable the floating-point extension.
17590 The ARM-state integer division instructions.
17593 Disable the ARM-state integer division extension.
17597 The single-precision VFPv4 floating-point instructions.
17600 The single-precision FPv5 floating-point instructions.
17602 '+fp.dp'
17604 instructions.
17607 Disable the floating-point extensions.
17609 'armv8.1-m.main'
17612 The DSP instructions.
17616 instructions.
17618 '+mve.fp'
17620 precision floating-point instructions.
17623 The single-precision floating-point instructions.
17625 '+fp.dp'
17627 instructions.
17630 Disable the floating-point extension.
17632 '+cdecp0, +cdecp1, ... , +cdecp7'
17635 options in the range 0 to 7.
17637 'armv8-m.main'
17639 The DSP instructions.
17642 Disable the DSP extension.
17645 The single-precision floating-point instructions.
17647 '+fp.dp'
17649 instructions.
17652 Disable the floating-point extension.
17654 '+cdecp0, +cdecp1, ... , +cdecp7'
17657 options in the range 0 to 7.
17661 The Cyclic Redundancy Check (CRC) instructions.
17662 '+fp.sp'
17663 The single-precision FPv5 floating-point instructions.
17666 instructions.
17668 The cryptographic instructions.
17670 Disable the cryptographic instructions.
17673 cryptographic instructions.
17676 of the build computer. At present, this feature is only supported
17677 on GNU/Linux, and not all architectures are recognized. If the
17678 auto-detect is unsuccessful the option has no effect.
17682 which GCC should tune the performance of the code. For some ARM
17684 option. Permissible names are: 'arm7tdmi', 'arm7tdmi-s',
17700 'cortex-m35p', 'cortex-m55', 'cortex-m1.small-multiply',
17701 'cortex-m0.small-multiply', 'cortex-m0plus.small-multiply',
17704 'fa626', 'fa606te', 'fa626te', 'fmp626', 'fa726te', 'xgene1'.
17707 performance of the code for a big.LITTLE system. Permissible names
17708 are: 'cortex-a15.cortex-a7', 'cortex-a17.cortex-a7',
17709 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
17710 'cortex-a72.cortex-a35', 'cortex-a73.cortex-a53',
17711 'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55'.
17714 performance for a blend of processors within architecture ARCH.
17718 CPUs. The effects of this option may change in future GCC versions
17719 as CPU models come and go.
17722 extension options do not affect the tuning of the generated code.
17725 build computer. At present, this feature is only supported on
17726 GNU/Linux, and not all architectures are recognized. If the
17727 auto-detect is unsuccessful the option has no effect.
17729 '-mcpu=NAME[+extension...]'
17730 This specifies the name of the target ARM processor. GCC uses this
17733 for performance (as if specified by '-mtune'). Where this option
17735 take precedence over the appropriate part of this option.
17738 extensions. Where this is so the architectural extensions are
17739 normally enabled by default. If implementations that lack the
17741 those extensions that have been omitted. For floating-point and
17747 instructions.
17751 with floating-point and Advanced SIMD. The default is to enable all
17754 instructions respectively.
17757 '-mtune'.
17762 Disable the DSP instructions on 'cortex-m33', 'cortex-m35p'.
17769 'cortex-m33' and 'cortex-m35p'. Disables the floating-point
17772 'cortex-a15', 'cortex-a17', 'cortex-a15.cortex-a7',
17773 'cortex-a17.cortex-a7', 'cortex-a32', 'cortex-a35',
17774 'cortex-a53' and 'cortex-a55'.
17776 '+nofp.dp'
17779 'cortex-r52' and 'cortex-m7'.
17783 'generic-armv7-a', 'cortex-a5', 'cortex-a7' and 'cortex-a9'.
17789 'xgene1', 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
17790 'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53' and
17791 'cortex-a75.cortex-a55'.
17794 with 16 double-precision registers. It supports the following
17797 'neon-vfpv3', 'neon-fp16', 'neon-vfpv4'. The meanings are the same
17798 as for the extensions to '-march=armv7-a'.
17801 '-march=ARCH -mtune=generic-ARCH'. See '-mtune' for more
17802 information.
17805 build computer. At present, this feature is only supported on
17806 GNU/Linux, and not all architectures are recognized. If the
17807 auto-detect is unsuccessful the option has no effect.
17811 is available on the target. Permissible names are: 'auto',
17816 'crypto-neon-fp-armv8'. Note that 'neon' is an alias for
17817 'neon-vfpv3' and 'vfp' is an alias for 'vfpv2'.
17819 The setting 'auto' is the default and is special. It causes the
17821 instructions based on the settings of '-mcpu' and '-march'.
17824 (e.g. '-mfpu=neon'), note that floating-point operations are not
17826 '-funsafe-math-optimizations' is also specified. This is because
17830 loss of precision.
17835 Pragmas::).
17839 type. Permissible names are 'none', 'ieee', and 'alternative'; the
17840 default is 'none', in which case the '__fp16' type is not defined.
17841 *Note Half-Precision::, for more information.
17845 of the number of bits set by this option. Permissible values are
17846 8, 32 and 64. The default value varies for different toolchains.
17847 For the COFF targeted toolchain the default value is 8. A value of
17848 64 is only allowed if the underlying ABI supports it.
17851 but can also increase the size of the program. Different values
17852 are potentially incompatible. Code compiled with one value cannot
17855 unions.
17857 This option is deprecated.
17861 function. It is executed if the function tries to return.
17867 subroutine call on this register. This switch is needed if the
17869 the offset-based version of subroutine call instruction.
17872 into long calls. The heuristic is that static functions, functions
17876 compilation unit are not turned into long calls. The exceptions to
17880 always turned into long calls.
17882 This feature is not enabled by default. Specifying
17885 directive. Note these switches have no effect on how the compiler
17886 generates code to handle function calls via function pointers.
17890 than loading it in the prologue for each function. The runtime
17892 appropriate value before execution begins.
17895 Specify the register to be used for PIC addressing. For standard
17897 compiler. For single PIC base case, the default is 'R9' if target
17899 is 'R10'.
17903 fixed at static link time. This permits using PC-relative
17905 segment. For non-VxWorks RTP targets, this option is enabled by
17906 default. When disabled on such targets, it will enable
17907 '-msingle-pic-base' by default.
17911 preceding the function prologue. The generated code is similar to
17915 .ascii "arm_poke_function_name", 0
17916 .align
17918 .word 0xff000000 + (t1 - t0)
17925 'pc' stored at 'fp + 0'. If the trace function then looks at
17928 location and has length '((pc[-3]) & 0xff000000)'.
17934 states. The default for most configurations is to generate code
17936 configuring GCC with the '--with-mode='STATE configure option.
17941 Specific Option Pragmas::).
17944 Switch ARM/Thumb modes on alternating functions. This option is
17946 and is not intended for ordinary use in compiling code.
17950 Call Standard for all non-leaf functions. (A leaf function is one
17951 that does not call any other functions.) The default is
17952 '-mno-tpcs-frame'.
17956 Call Standard for all leaf functions. (A leaf function is one that
17957 does not call any other functions.) The default is
17958 '-mno-apcs-leaf-frame'.
17963 executing the rest of the function. This allows these functions to
17964 be called from non-interworking code. This option is not valid in
17965 AAPCS configurations because interworking is enabled by default.
17970 compiled for interworking or not. There is a small overhead in the
17971 cost of executing a function pointer if this option is enabled.
17973 interworking is enabled by default.
17976 Specify the access model for the thread local storage pointer. The
17980 which uses the best available method for the selected processor.
17981 The default setting is 'auto'.
17984 Specify the dialect to use for accessing thread local storage. Two
17985 DIALECTs are supported--'gnu' and 'gnu2'. The 'gnu' dialect
17987 dynamic TLS models. The 'gnu2' dialect selects the GNU descriptor
17988 scheme, which provides better performance for shared libraries.
17990 but does require new assembler, linker and library support.
17992 always use the original scheme.
17995 Only generate absolute relocations on word-sized values (i.e.
17996 R_ARM_ABS32). This is enabled by default on targets (uClinux,
17998 when '-fpic' or '-fPIC' is specified. This option conflicts with
17999 '-mslow-flash-data'.
18004 used. This option avoids generating these instructions. This
18005 option is enabled by default when '-mcpu=cortex-m3' is specified.
18010 from addresses that are not 16- or 32- bit aligned. By default
18013 architectures. If unaligned access is not enabled then words in
18014 packed data structures are accessed a byte at a time.
18018 setting of this option. If unaligned access is enabled then the
18019 preprocessor symbol '__ARM_FEATURE_UNALIGNED' is also defined.
18022 This option is deprecated and has no effect.
18025 Assume loading data from flash is slower than fetching instruction.
18026 Therefore literal load is minimized for better performance. This
18028 by default. It conflicts with '-mword-relocations'.
18031 Assume inline assembler is using unified asm syntax. The default
18032 is currently off which implies divided syntax. This option has no
18033 impact on Thumb2. However, this may change in future releases of
18034 GCC. Divided syntax should be considered deprecated.
18038 ARMv8-A. IT blocks can only contain a single 16-bit instruction
18039 from a select set of instructions. This option is on by default
18040 for ARMv8-A Thumb mode.
18043 Print CPU tuning information as comment in assembler file. This is
18045 intended for ordinary use in compiling code. This option is
18046 disabled by default.
18049 Enable verbose cost model dumping in the debug dump files. This
18050 option is provided for use in debugging the compiler.
18053 Do not allow constant data to be placed in code sections.
18056 'SHF_ARM_PURECODE'. This option is only available when generating
18057 non-pic code for M-profile targets.
18063 <https://developer.arm.com/documentation/ecm0359818/latest/>.
18068 (CVE-2021-365465). This option is enabled by default when the
18070 'cortex-m55'. The option '-mno-fix-cmse-cve-2021-35465' can be
18071 used to disable the mitigation.
18076 represent pointers to functions. When the compiler is configured
18079 provided. On other targets, it only enables the FDPIC-specific
18081 the PIC/PIE-related options as needed.
18084 involve the dynamic linker when the program self-relocates. If
18086 options.
18090 toolchain as the one used to build the userland programs.
18093 File: gcc.info, Node: AVR Options, Next: Blackfin Options, Prev: ARM Options, Up: Submodel Opti…
18095 3.19.6 AVR Options
18101 Specify Atmel AVR instruction set architectures (ISA) or MCU type.
18103 The default for this option is 'avr2'.
18108 "Classic" devices with up to 8 KiB of program memory.
18111 'at90s4434', 'at90c8534', 'at90s8515', 'at90s8535'.
18115 the 'MOVW' instruction.
18122 'attiny861', 'attiny861a', 'ata5272', 'ata6616c', 'at86rf401'.
18125 "Classic" devices with 16 KiB up to 64 KiB of program memory.
18126 MCU = 'at76c711', 'at43usb355'.
18129 "Classic" devices with 128 KiB of program memory.
18130 MCU = 'atmega103', 'at43usb320'.
18134 and with the 'MOVW' instruction.
18137 'at90usb162'.
18140 "Enhanced" devices with up to 8 KiB of program memory.
18146 'at90pwm3b', 'at90pwm81'.
18149 "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
18176 'at90usb647', 'at94k', 'm3000'.
18179 "Enhanced" devices with 128 KiB of program memory.
18183 'at90usb1287'.
18186 "Enhanced" devices with 3-byte PC, i.e. with more than 128 KiB
18187 of program memory.
18189 'atmega2564rfr2'.
18193 program memory.
18197 'atxmega32d4', 'atxmega32e5'.
18202 space.
18211 'atmega4808', 'atmega4809'.
18215 program memory.
18218 'atxmega64d4'.
18222 program memory and more than 64 KiB of RAM.
18223 MCU = 'atxmega64a1', 'atxmega64a1u'.
18226 "XMEGA" devices with more than 128 KiB of program memory.
18233 'atxmega384d3'.
18237 more than 64 KiB of RAM.
18238 MCU = 'atxmega128a1', 'atxmega128a1u', 'atxmega128a4u'.
18242 memory.
18244 'attiny40'.
18248 for assembler only.
18250 'at90s1200'.
18255 instructions. This option has only an effect on reduced Tiny
18256 devices like ATtiny40. See also the 'absdata' *note variable
18257 attribute: AVR Variable Attributes.
18262 prologue/epilogue. Without this option, outgoing arguments are
18263 pushed before calling a function and popped afterwards.
18268 after such a function call.
18272 stack like calls to printf-like functions.
18275 Set the branch costs for conditional branch instructions to COST.
18276 Reasonable values for COST are small, non-negative integers. The
18277 default branch cost is 0.
18281 subroutines. Code size is smaller.
18286 respectively. Possible values for BITS are 32 and 64. Whether or
18289 configure options (https://gcc.gnu.org/install/configure.html#avr),
18290 and the same applies for the default values of the options.
18294 instruction supported by GNU Binutils. If this option is on, the
18296 *note 'no_gccisr': AVR Function Attributes. function attribute.
18299 support PR21683 (https://sourceware.org/PR21683).
18302 Assume 'int' to be 8-bit integer. This affects the sizes of all
18304 and 'long long' is 4 bytes. Please note that this option does not
18305 conform to the C standards, but it results in smaller code size.
18308 Do not save registers in 'main'. The effect is the same like
18309 attaching attribute *note 'OS_task': AVR Function Attributes. to
18310 'main'. It is activated per default if optimization is on.
18313 Assume that the flash memory has a size of NUM times 64 KiB.
18316 Generated code is not compatible with hardware interrupts. Code
18317 size is smaller.
18320 Try to replace 'CALL' resp. 'JMP' instruction by the shorter
18321 'RCALL' resp. 'RJMP' instruction if applicable. Setting '-mrelax'
18323 line and the '--relax' option to the linker's command line.
18326 not known before code is located. Therefore, the assembler code
18328 executable may differ from instructions in the assembler code.
18331 section on 'EIND' and linker stubs below.
18335 'XCH', 'LAC', 'LAS' and 'LAT'.
18339 Assume that 'RJMP' and 'RCALL' can target the whole program memory.
18341 This option is used internally for multilib selection. It is not
18342 an optimization option, and you don't need to set it by hand.
18345 Treat the stack pointer register as an 8-bit register, i.e. assume
18346 the high byte of the stack pointer is zero. In general, you don't
18347 need to set this option by hand.
18350 multilibs for architectures 'avr2' and 'avr25'. These
18351 architectures mix devices with and without 'SPH'. For any setting
18355 an 8-bit stack pointer and thus no 'SPH' register or not.
18358 Use address register 'X' in a way proposed by the hardware. This
18360 pre-decrement addressing.
18363 as 'Y' or 'Z' which then is emulated by additional instructions.
18372 Only change the lower 8 bits of the stack pointer.
18376 fractional fixed-point types.
18379 Don't link against AVR-LibC's device specific library 'lib<mcu>.a'.
18383 command line. The user takes responsibility for supplying the
18385 appropriate command line options. This means that the user has to
18387 '-specs=PATH-TO-SPECS-FILE'. There is no more need for option
18388 '-mmcu=MCU'.
18394 specified by '-mmcu=MCU'.
18399 space.
18402 Warn if the ISR is misspelled, i.e. without __vector prefix.
18403 Enabled by default.
18405 3.19.6.1 'EIND' and Devices with More Than 128 Ki Bytes of Flash
18406 ................................................................
18408 Pointers in the implementation are 16 bits wide. The address of a
18410 and calls can target any code address in the range of 64 Ki words.
18415 when 'EICALL' or 'EIJMP' instructions are used.
18420 * The compiler never sets 'EIND'.
18424 indirect call/jump by means of a 'RET' instruction.
18427 code or during the application. In particular, 'EIND' is not
18429 prologue/epilogue.
18432 generates _stubs_. Stubs are jump pads sometimes also called
18433 _trampolines_. Thus, the indirect call/jump jumps to such a stub.
18434 The stub contains a direct jump to the desired address.
18437 the stubs correctly in all situations. See the compiler option
18438 '-mrelax' and the linker option '--relax'. There are corner cases
18440 relaxation and without a helpful error message.
18442 * The default linker script is arranged for code with 'EIND = 0'. If
18445 name start with '.trampolines' into the segment where 'EIND' points
18446 to.
18448 * The startup code from libgcc never sets 'EIND'. Notice that
18449 startup code is a blend of code from libgcc and AVR-LibC. For the
18451 AVR-LibC user manual (http://nongnu.org/avr-libc/user-manual/).
18455 section '.init3'. Such code runs prior to general startup code
18458 the vector table is located.
18459 #include <avr/io.h>
18462 __attribute__((section(".init3"),naked,used,no_instrument_function))
18469 The '__trampolines_start' symbol is defined in the linker script.
18479 _outside_ the segment where the stubs are located.
18483 - Taking address of a function or code label.
18484 - Computed goto.
18486 command-line option.
18487 - Switch/case dispatch tables. If you do not want such dispatch
18489 option.
18491 startup/shutdown.
18492 - If the tools hit a 'gs()' modifier explained above.
18502 Instead, a stub has to be set up, i.e. the function has to be
18513 and the application be linked with '-Wl,--defsym,func_4=0x4'.
18514 Alternatively, 'func_4' can be defined in the linker script.
18516 3.19.6.2 Handling of the 'RAMPD', 'RAMPX', 'RAMPY' and 'RAMPZ' Special Function Registers
18517 .........................................................................................
18520 be accessed with 16-bit pointers. To access memory locations outside
18524 to get a wide address. Similarly, 'RAMPD' is used together with direct
18525 addressing.
18528 with zero.
18530 * If a *note named address space: AVR Named Address Spaces. other
18532 before the operation.
18536 reset to zero after the operation.
18540 zero in case the ISR code might (implicitly) use it.
18542 * RAM larger than 64 KiB is not supported by GCC for AVR targets. If
18545 reset it to zero after the access.
18547 3.19.6.3 AVR Built-in Macros
18548 ............................
18551 the presence or absence of features. Almost any of the following
18553 by the '-mmcu=' command-line option.
18556 Spaces:: and *note AVR Built-in Functions::.
18560 the architecture and depends on the '-mmcu=MCU' option. Possible
18573 'avrxmega5', 'avrxmega6', 'avrxmega7', respectively. If MCU
18574 specifies a device, this built-in macro is set accordingly. For
18575 example, with '-mmcu=atmega8' the macro is defined to '4'.
18579 the device's name. For example, '-mmcu=atmega8' defines the
18581 '__AVR_ATtiny261A__', etc.
18584 DEVICE is the device name as from the AVR user manual. The
18586 '-mmcu=DEVICE' is that the latter is always lowercase.
18589 'avr51', this macro is not defined.
18593 name. For example, with '-mmcu=atmega8' the macro is defined to
18594 'atmega8'.
18597 'avr51', this macro is not defined.
18600 The device / architecture belongs to the XMEGA family of devices.
18603 The device has the 'ELPM' instruction.
18606 The device has the 'ELPM RN,Z' and 'ELPM RN,Z+' instructions.
18610 register-register moves.
18613 The device has the 'LPM RN,Z' and 'LPM RN,Z+' instructions.
18616 The device has a hardware multiplier.
18619 The device has the 'JMP' and 'CALL' instructions. This is the case
18620 for devices with more than 8 KiB of program memory.
18624 The device has the 'EIJMP' and 'EICALL' instructions. This is the
18625 case for devices with more than 128 KiB of program memory. This
18626 also means that the program counter (PC) is 3 bytes wide.
18629 The program counter (PC) is 2 bytes wide. This is the case for
18630 devices with up to 128 KiB of program memory.
18635 16-bit register by the compiler. The definition of these macros is
18636 affected by '-mtiny-stack'.
18641 function register or has an 8-bit stack pointer, respectively. The
18643 of '-mmcu=avr2' and '-mmcu=avr25' also by '-msp8'.
18650 function register, respectively.
18653 This macro reflects the '-mno-interrupts' command-line option.
18658 instructions because of a hardware erratum. Skip instructions are
18659 'SBRS', 'SBRC', 'SBIS', 'SBIC' and 'CPSE'. The second macro is
18660 only defined if '__AVR_HAVE_JMP_CALL__' is also set.
18664 LAT).
18668 directly like 'IN', 'OUT', 'SBI', etc. may use a different address
18669 as if addressed by an instruction to access RAM like 'LD' or 'STS'.
18672 I/O address.
18675 The '-mshort-calls' command line option is set.
18679 instructions. The flash memory is seen in the data address space
18680 at an offset of '__AVR_PM_BASE_ADDRESS__'. If this macro is not
18681 defined, this feature is not available. If defined, the address
18682 space is linear and there is no need to put '.rodata' into RAM.
18684 currently available for 'avrtiny' and 'avrxmega3'. Even more
18686 or features like attribute 'progmem' and 'pgm_read_*'.
18689 The compiler is configured to be used together with AVR-Libc. See
18690 the '--with-avrlibc' configure option.
18693 Defined if '-mdouble=' acts as a multilib option.
18697 Defined if the compiler supports 32-bit double resp. 64-bit
18698 double. The actual layout is specified by option '-mdouble='.
18701 The size in bits of 'double' if '-mdouble=' is not set. To test
18703 '__SIZEOF_DOUBLE__'.
18709 Same as above, but for 'long double' instead of 'double'.
18713 configure option (https://gcc.gnu.org/install/configure.html#avr)
18714 and is defined to '2' or '3'.
18720 configure option (https://gcc.gnu.org/install/configure.html#avr).
18723 File: gcc.info, Node: Blackfin Options, Next: C6X Options, Prev: AVR Options, Up: Submodel Opti…
18725 3.19.7 Blackfin Options
18729 Specifies the name of the target Blackfin processor. Currently,
18734 'bf548m', 'bf549m', 'bf561', 'bf592'.
18737 target Blackfin processor. Any workarounds available for the
18738 targeted silicon revision are enabled. If SIREVISION is 'none', no
18739 workarounds are enabled. If SIREVISION is 'any', all workarounds
18740 for the targeted processor are enabled. The '__SILICON_REVISION__'
18742 and minor numbers in the silicon revision. If SIREVISION is
18743 'none', the '__SILICON_REVISION__' is not defined. If SIREVISION
18744 is 'any', the '__SILICON_REVISION__' is defined to be '0xffff'. If
18746 silicon revision of the targeted Blackfin processor.
18748 GCC defines a preprocessor macro for the specified CPU. For the
18750 by libgloss to be linked in if '-msim' is not given.
18752 Without this option, 'bf532' is used as the processor by default.
18754 Note that support for 'bf561' is incomplete. For 'bf561', only the
18755 preprocessor macro is defined.
18758 Specifies that the program will be run on the simulator. This
18759 causes the simulator BSP provided by libgloss to be linked in.
18760 This option has effect only for 'bfin-elf' toolchain. Certain
18762 '-msim'.
18765 Don't keep the frame pointer in a register for leaf functions.
18767 pointers and makes an extra register available in leaf functions.
18771 contain speculative loads after jump instructions. If this option
18772 is used, '__WORKAROUND_SPECULATIVE_LOADS' is defined.
18776 occurring.
18781 branches. If this option is used, '__WORKAROUND_SPECULATIVE_SYNCS'
18782 is defined.
18786 from occurring too soon after a conditional branch.
18790 knowledge that the entire program fits into the low 64k of memory.
18793 Assume that the program is arbitrarily large. This is the default.
18797 memory by the uClinux kernel.
18801 method. This allows for execute in place and shared libraries in
18802 an environment without virtual memory management. This option
18803 implies '-fPIC'. With a 'bfin-elf' target, this option implies
18804 '-msim'.
18808 being used. This is the default.
18813 against any other ID shared libraries. That allows the compiler to
18814 use faster code for jumps and calls.
18818 ID shared libraries. Slower code is generated for jump and call
18819 insns.
18823 being compiled. Specifying a value of 0 generates more compact
18826 omitting this option.
18830 different area of memory from the text segment. This allows for
18832 management by eliminating relocations against the text section.
18836 segment. This is the default.
18842 subroutine call on this register. This switch is needed if the
18844 offset-based version of subroutine call instruction.
18846 This feature is not enabled by default. Specifying
18847 '-mno-long-calls' restores the default behavior. Note these
18849 handle function calls via function pointers.
18852 Link with the fast floating-point library. This library relaxes
18854 inputs against Not-a-Number (NAN), in the interest of performance.
18858 are not known to bind locally. It has no effect without '-mfdpic'.
18861 Build a standalone application for multicore Blackfin processors.
18863 multicore to be used, and defines the macro '__BFIN_MULTICORE'. It
18864 can only be used with '-mcpu=bf561[-SIREVISION]'.
18867 the one-application-per-core programming model. Without '-mcorea'
18869 used. In this model, the main function of Core B should be named
18870 as 'coreb_main'.
18873 model is used.
18877 one-application-per-core programming model. Proper start files and
18879 '__BFIN_COREA' is defined. This option can only be used in
18880 conjunction with '-mmulticore'.
18884 one-application-per-core programming model. Proper start files and
18886 '__BFIN_COREB' is defined. When this option is used, 'coreb_main'
18887 should be used instead of 'main'. This option can only be used in
18888 conjunction with '-mmulticore'.
18891 Build a standalone application for SDRAM. Proper start files and
18893 macro '__BFIN_SDRAM' is defined. The loader should initialize
18894 SDRAM before loading the application.
18897 Assume that ICPLBs are enabled at run time. This has an effect on
18898 certain anomaly workarounds. For Linux targets, the default is to
18900 is off.
18903 File: gcc.info, Node: C6X Options, Next: CRIS Options, Prev: Blackfin Options, Up: Submodel Opt…
18905 3.19.8 C6X Options
18909 This specifies the name of the target architecture. GCC uses this
18911 generating assembly code. Permissible names are: 'c62x', 'c64x',
18912 'c64x+', 'c67x', 'c67x+', 'c674x'.
18915 Generate code for a big-endian target.
18918 Generate code for a little-endian target. This is the default.
18921 Choose startup files and linker script suitable for the simulator.
18924 Put small global and static data in the '.neardata' section, which
18925 is pointed to by register 'B14'. Put small uninitialized global
18926 and static data in the '.bss' section, which is adjacent to the
18927 '.neardata' section. Put small read-only data into the '.rodata'
18928 section. The corresponding sections used for large pieces of data
18929 are '.fardata', '.far' and '.const'.
18934 to access them.
18938 absolute addresses to access all data. Put all initialized global
18939 and static data in the '.fardata' section, and all uninitialized
18940 data in the '.far' section. Put all constant data into the
18941 '.const' section.
18944 File: gcc.info, Node: CRIS Options, Next: CR16 Options, Prev: C6X Options, Up: Submodel Options
18946 3.19.9 CRIS Options
18949 These options are defined specifically for the CRIS ports.
18953 Generate code for the specified architecture. The choices for
18955 ETRAX 4, ETRAX 100, and ETRAX 100 LX. Default is 'v0' except for
18956 cris-axis-linux-gnu, where the default is 'v10'.
18960 code, except for the ABI and the set of available instructions.
18962 '-march=ARCHITECTURE-TYPE'.
18965 Warn when the stack frame of a function exceeds N bytes.
18970 '-march=v3' and '-march=v8' respectively.
18975 models where it applies. This option is active by default.
18979 assembly code. This option also has the effect of turning off the
18981 beginning of the assembly file.
18985 emit compare and test instructions before use of condition codes.
18989 other than post-increment.
18999 the maximum single data access size for the chosen CPU model. The
19000 default is to arrange for 32-bit alignment. ABI details such as
19001 structure layout are not affected by these options.
19008 be 32-bit, 16-bit or 8-bit aligned. The default is 32-bit
19009 alignment.
19015 instructions or return sequences are generated in the code. Use
19019 allocated.
19026 the PLT. The default is '-mgotplt'.
19030 cris-axis-linux-gnu targets.
19034 target.
19038 with input-output functions from a simulator library. Code,
19040 consecutively.
19044 0x40000000 and zero-initialized data at 0x80000000.
19047 File: gcc.info, Node: CR16 Options, Next: C-SKY Options, Prev: CRIS Options, Up: Submodel Optio…
19049 3.19.10 CR16 Options
19052 These options are defined specifically for the CR16 ports.
19055 Enable the use of multiply-accumulate instructions. Disabled by
19056 default.
19060 Generate code for CR16C or CR16C+ architecture. CR16C+
19061 architecture is default.
19064 Links the library libsim.a which is in compatible with simulator.
19065 Applicable to ELF compiler only.
19068 Choose integer type as 32-bit wide.
19071 Generates 'sbit'/'cbit' instructions for bit manipulations.
19074 Choose a data model. The choices for MODEL are 'near', 'far' or
19075 'medium'. 'medium' is default. However, 'far' is not valid with
19077 model.
19080 File: gcc.info, Node: C-SKY Options, Next: Darwin Options, Prev: CR16 Options, Up: Submodel Opt…
19082 3.19.11 C-SKY Options
19085 GCC supports these options when compiling for C-SKY V2 processors.
19088 Specify the C-SKY target architecture. Valid values for ARCH are:
19089 'ck801', 'ck802', 'ck803', 'ck807', and 'ck810'. The default is
19090 'ck810'.
19093 Specify the C-SKY target processor. Valid values for CPU are:
19104 'ck810ftv'.
19111 Select big- or little-endian code. The default is little-endian.
19116 Select hardware or software floating-point implementations. The
19117 default is soft float.
19122 double-precision float instructions. This is the default except
19123 when compiling for CK803.
19128 'fsqrtd', and 'fdivd' instructions. This is the default except
19129 when compiling for CK803.
19132 Select the floating-point processor. This option can only be used
19133 with '-mhard-float'. Values for FPU are 'fpv2_sf' (equivalent to
19135 -mno-divdu'), and 'fpv2_divd' ('-mdouble-float -mdivdu').
19139 Enable the extended 'lrw' instruction. This option defaults to on
19140 for CK801 and off otherwise.
19144 Enable interrupt stack instructions; the default is off.
19147 'isr' function attributes (*note C-SKY Function Attributes::).
19150 Enable multiprocessor instructions; the default is off.
19153 Enable coprocessor instructions; the default is off.
19156 Enable coprocessor instructions; the default is off.
19159 Enable C-SKY security instructions; the default is off.
19162 Enable C-SKY trust instructions; the default is off.
19168 respectively. All of these options default to off.
19172 Generate divide instructions. Default is off.
19177 allow use of 16-bit instructions. This option is ignored for CK801
19179 CK802. For other targets, the default is off.
19183 Generate code using the high registers numbered 16-31. This option
19185 default for other processors.
19189 Generate code using global anchor symbol addresses.
19193 Generate code using 'push' and 'pop' instructions. This option
19194 defaults to on.
19200 Generate code using 'stm' and 'ldm' instructions. This option
19202 processors.
19207 the assembler. This option is the default and required for correct
19209 processors.
19213 Emit '.stack_size' directives for each function in the assembly
19214 output. This option defaults to off.
19218 Generate code for the C-SKY compiler runtime instead of libgcc.
19219 This option defaults to off.
19222 Set the branch costs to roughly 'n' instructions. The default is
19223 1.
19227 Permit scheduling of function prologue and epilogue sequences.
19230 backtraced. It is disabled by default.
19233 File: gcc.info, Node: Darwin Options, Next: DEC Alpha Options, Prev: C-SKY Options, Up: Submode…
19235 3.19.12 Darwin Options
19239 operating system.
19242 object file for the single architecture that GCC was built to target.
19245 times and joining the results together with 'lipo'.
19249 like '-mcpu' or '-march'. The '-force_cpusubtype_ALL' option can be
19250 used to override this.
19253 mismatch. The assembler, 'as', only permits instructions to be used
19255 cannot put 64-bit instructions in a 'ppc750' object file. The linker
19259 'ppc7400' library). The linker for executables, 'ld', quietly gives the
19260 executable the most restrictive subtype of any of its input files.
19264 directories to be searched for header files. These directories are
19266 a left-to-right order.
19268 A framework directory is a directory with frameworks in it. A
19270 directory contained directly in it that ends in '.framework'. The
19272 '.framework'. Headers associated with the framework are found in
19273 one of those two directories, with 'Headers' being searched first.
19275 'Frameworks' directory. Includes of subframework headers can only
19277 or in a sibling subframework header. Two subframeworks are
19278 siblings if they occur in the same framework. A subframework
19280 if this is violated. Currently a subframework cannot have
19282 support this. The standard frameworks can be found in
19283 '/System/Library/Frameworks' and '/Library/Frameworks'. An example
19284 include looks like '#include <Framework/header.h>', where
19285 'Framework' denotes the name of the framework and 'header.h' is
19286 found in the 'PrivateHeaders' or 'Headers' directory.
19289 Like '-F' except the directory is a treated as a system directory.
19292 contained within header files found via DIR. This option is valid
19293 only for the C family of languages.
19296 Emit debugging information for symbols that are used. For stabs
19297 debugging format, this enables '-feliminate-unused-debug-symbols'.
19298 This is by default ON.
19301 Emit debugging information for all symbols and types.
19305 VERSION. Typical values of VERSION include '10.1', '10.2', and
19306 '10.3.9'.
19311 are compatible with as many systems and code bases as possible.
19314 Enable kernel development mode. The '-mkernel' option sets
19317 '-fno-rtti' where applicable. This mode also sets '-mno-altivec',
19319 targets.
19322 Override the defaults for 'bool' so that 'sizeof(bool)==1'. By
19325 x86.
19329 switch. Using this switch may require recompiling all other
19330 modules in a program, including system libraries. Use this switch
19331 to conform to a non-default data model.
19337 allow GDB to dynamically load '.o' files into already-running
19338 programs. '-findirect-data' and '-ffix-and-continue' are provided
19339 for backwards compatibility.
19342 Loads all members of static archive libraries. See man ld(1) for
19343 more information.
19347 architecture to be fatal.
19352 launched.
19355 Produce a Mach-o bundle format file. See man ld(1) for more
19356 information.
19360 output file being linked. See man ld(1) for more information.
19364 an executable when linking, using the Darwin 'libtool' command.
19368 one controlled by the '-mcpu' or '-march' option.
19428 These options are passed to the Darwin linker. The Darwin linker
19429 man page describes them in detail.
19432 File: gcc.info, Node: DEC Alpha Options, Next: eBPF Options, Prev: Darwin Options, Up: Submodel…
19434 3.19.13 DEC Alpha Options
19442 floating-point operations. When '-msoft-float' is specified,
19443 functions in 'libgcc.a' are used to perform floating-point
19444 operations. Unless they are replaced by routines that emulate the
19447 operations. If you are compiling for an Alpha without
19449 built so as not to call them.
19452 are required to have floating-point registers.
19457 set. '-mno-fp-regs' implies '-msoft-float'. If the floating-point
19460 results are passed in '$0' instead of '$f0'. This is a
19463 with '-mno-fp-regs' must also be compiled with that option.
19467 registers.
19471 for maximum performance. It is mostly compliant with the IEEE
19472 floating-point standard. However, for full compliance, software
19473 assistance is required. This option generates code fully
19475 maintained (see below). If this option is turned on, the
19476 preprocessor macro '_IEEE_FP' is defined during compilation. The
19479 not-a-number and plus/minus infinity. Other Alpha compilers call
19480 this option '-ieee_with_no_inexact'.
19484 IEEE INEXACT-FLAG. Turning on this option causes the generated
19485 code to implement fully-compliant IEEE math. In addition to
19486 '_IEEE_FP', '_IEEE_FP_EXACT' is defined as a preprocessor macro.
19488 significantly slower than the code generated by default. Since
19490 should normally not specify this option. Other Alpha compilers
19491 call this option '-ieee_with_inexact'.
19494 This option controls what floating-point related traps are enabled.
19495 Other Alpha compilers call this option '-fptm TRAP-MODE'. The trap
19499 This is the default (normal) setting. The only traps that are
19501 (e.g., division by zero trap).
19505 enabled as well.
19510 details).
19513 Like 'su', but inexact traps are enabled as well.
19516 Selects the IEEE rounding mode. Other Alpha compilers call this
19517 option '-fprm ROUNDING-MODE'. The ROUNDING-MODE can be one of:
19520 Normal IEEE rounding mode. Floating-point numbers are rounded
19522 number in case of a tie.
19525 Round towards minus infinity.
19528 Chopped rounding mode. Floating-point numbers are rounded
19529 towards zero.
19532 Dynamic rounding mode. A field in the floating-point control
19534 controls the rounding mode in effect. The C library
19535 initializes this register for rounding towards plus infinity.
19537 to round towards plus infinity.
19540 In the Alpha architecture, floating-point traps are imprecise.
19543 terminated. GCC can generate code that can assist operating system
19545 floating-point trap. Depending on the requirements of an
19549 Program precision. This option is the default and means a
19551 floating-point exception.
19554 Function precision. The trap handler can determine the
19555 function that caused a floating-point exception.
19558 Instruction precision. The trap handler can determine the
19559 exact instruction that caused a floating-point exception.
19562 '-scope_safe' and '-resumption_safe'.
19565 This option marks the generated code as IEEE conformant. You must
19567 and either '-mfp-trap-mode=su' or '-mfp-trap-mode=sui'. Its only
19568 effect is to emit the line '.eflag 48' in the function prologue of
19569 the generated assembly file.
19574 instructions. If it cannot, it outputs the constant as a literal
19575 and generates code to load it from the data segment at run time.
19579 six).
19582 loader. Itself a shared library, it must relocate itself in memory
19584 segment.
19595 CIX, FIX and MAX instruction sets. The default is to use the
19598 specified.
19603 arithmetic instead of IEEE single and double precision.
19608 relocations except via assembler macros. Use of these macros does
19609 not allow optimal instruction scheduling. GNU binutils as of
19612 instructions. This option is mostly useful for debugging, as GCC
19614 the default accordingly.
19619 "gp-relative" relocations. When '-msmall-data' is used, objects 8
19621 '.sdata' and '.sbss' sections) and are accessed via 16-bit
19622 relocations off of the '$gp' register. This limits the size of the
19624 accessed via a single instruction.
19626 The default is '-mlarge-data'. With this option the data area is
19627 limited to just below 2GB. Programs that require more than 2GB of
19629 instead of in the program's data segment.
19632 '-msmall-data' and '-fPIC' implies '-mlarge-data'.
19638 reachable with a branch instruction. When '-msmall-data' is used,
19641 function call from 4 to 1.
19643 The default is '-mlarge-text'.
19647 machine type CPU_TYPE. You can specify either the 'EV' style name
19648 or the corresponding chip number. GCC supports scheduling
19651 processor you specify. If you do not specify a processor type, GCC
19652 defaults to the processor on which the compiler was built.
19659 Schedules as an EV4 and has no instruction set extensions.
19663 Schedules as an EV5 and has no instruction set extensions.
19667 Schedules as an EV5 and supports the BWX extension.
19672 Schedules as an EV5 and supports the BWX and MAX extensions.
19677 extensions.
19682 extensions.
19685 the best architecture option for the host processor.
19687 processor.
19691 CPU_TYPE. The instruction set is not changed.
19694 the best architecture option for the host processor.
19696 processor.
19700 references as seen by the application. This number is highly
19702 the size of the external cache on the machine.
19707 A decimal number representing clock cycles.
19716 memory. Note that L3 is only valid for EV5.
19719 File: gcc.info, Node: eBPF Options, Next: FR30 Options, Prev: DEC Alpha Options, Up: Submodel O…
19721 3.19.14 eBPF Options
19725 This specifies the hard limit for frame sizes, in bytes.
19727 equal to '32767'. Defaults to whatever limit is imposed by the
19728 version of the Linux kernel targeted.
19732 compiled program. GCC uses this version to determine which
19733 instructions to use, what kernel helpers to allow, etc. Currently,
19737 '5.2', 'latest' and 'native'.
19740 Generate code for a big-endian target.
19743 Generate code for a little-endian target. This is the default.
19749 exit, respectively.
19752 File: gcc.info, Node: FR30 Options, Next: FT32 Options, Prev: eBPF Options, Up: Submodel Options
19754 3.19.15 FR30 Options
19757 These options are defined specifically for the FR30 port.
19760 Use the small address space model. This can produce smaller code,
19762 a 20-bit range.
19766 need to include the simulator library ('libsim.a') on the linker
19767 command line.
19770 File: gcc.info, Node: FT32 Options, Next: FRV Options, Prev: FR30 Options, Up: Submodel Options
19772 3.19.16 FT32 Options
19775 These options are defined specifically for the FT32 port.
19778 Specifies that the program will be run on the simulator. This
19779 causes an alternate runtime startup and library to be linked. You
19782 whatever I/O functions are needed.
19785 Enable Local Register Allocation. This is still experimental for
19786 FT32, so by default the compiler uses standard reload.
19789 Do not use div and mod instructions.
19792 Enable use of the extended instructions of the FT32B processor.
19795 Compress all code using the Ft32B code compression scheme.
19798 Do not generate code that reads program memory.
19801 File: gcc.info, Node: FRV Options, Next: GNU/Linux Options, Prev: FT32 Options, Up: Submodel Op…
19803 3.19.17 FRV Options
19808 Only use the first 32 general-purpose registers.
19812 Use all 64 general-purpose registers.
19816 Use only the first 32 floating-point registers.
19820 Use all 64 floating-point registers.
19824 Use hardware instructions for floating-point operations.
19828 Use library routines for floating-point operations.
19832 Dynamically allocate condition code registers.
19837 use 'icc0' and 'fcc0'.
19841 Change ABI to use double word insns.
19845 Do not use double word instructions.
19849 Use floating-point double instructions.
19853 Do not use floating-point double instructions.
19857 Use media instructions.
19861 Do not use media instructions.
19865 Use multiply and add/subtract instructions.
19869 Do not use multiply and add/subtract instructions.
19874 pointers to functions. Without any PIC/PIE-related options, it
19875 implies '-fPIE'. With '-fpic' or '-fpie', it assumes GOT entries
19877 with '-fPIC' or '-fPIE', GOT offsets are computed with 32 bits.
19878 With a 'bfin-elf' target, this option implies '-msim'.
19883 are not known to bind locally. It has no effect without '-mfdpic'.
19885 shared libraries (i.e., '-fPIC' or '-fpic'), or when an
19887 command line.
19891 Assume a large TLS segment when generating thread-local code.
19896 code.
19901 that is known to be in read-only sections. It's enabled by
19904 4. With '-fPIC' or '-fPIE', it trades 3 instructions for 4, one of
19907 win. If it is not, '-mno-gprel-ro' can be used to disable it.
19911 Link with the (library, not FD) pic libraries. It's implied by
19913 '-mfdpic'. You should never have to use it explicitly.
19918 whenever a stack frame is allocated. This option is enabled by
19919 default and can be disabled with '-mno-linked-fp'.
19924 compilation unit. This allows the functions to be placed anywhere
19925 within the 32-bit address space.
19930 the previous packet. This option only has an effect when VLIW
19931 packing is enabled. It doesn't create new packets; it merely adds
19932 NOPs to existing ones.
19936 Generate position-independent EABI code.
19940 Use only the first four media accumulator registers.
19944 Use all eight media accumulator registers.
19948 Pack VLIW instructions.
19952 Do not pack VLIW instructions.
19956 Do not mark ABI switches in e_flags.
19960 Enable the use of conditional-move instructions (default).
19963 removed in a future version.
19967 Disable the use of conditional-move instructions.
19970 removed in a future version.
19974 Enable the use of conditional set instructions (default).
19977 removed in a future version.
19981 Disable the use of conditional set instructions.
19984 removed in a future version.
19988 Enable the use of conditional execution (default).
19991 removed in a future version.
19995 Disable the use of conditional execution.
19998 removed in a future version.
20002 Run a pass to pack branches into VLIW instructions (default).
20005 removed in a future version.
20009 Do not run a pass to pack branches into VLIW instructions.
20012 removed in a future version.
20017 (default).
20020 removed in a future version.
20024 Disable optimization of '&&' and '||' in conditional execution.
20027 removed in a future version.
20031 Enable nested conditional execution optimizations (default).
20034 removed in a future version.
20038 Disable nested conditional execution optimizations.
20041 removed in a future version.
20046 compiler-generated code. It is enabled by default.
20051 instructions from the generated code.
20055 Cause gas to print out tomcat statistics.
20059 Select the processor type for which to generate code. Possible
20061 'fr400', 'fr300' and 'simple'.
20064 File: gcc.info, Node: GNU/Linux Options, Next: H8/300 Options, Prev: FRV Options, Up: Submodel …
20066 3.19.18 GNU/Linux Options
20072 Use the GNU C library. This is the default except on
20074 targets.
20077 Use uClibc C library. This is the default on '*-*-linux-*uclibc*'
20078 targets.
20081 Use the musl C library. This is the default on '*-*-linux-*musl*'
20082 targets.
20085 Use Bionic C library. This is the default on '*-*-linux-*android*'
20086 targets.
20089 Compile code compatible with Android platform. This is the default
20090 on '*-*-linux-*android*' targets.
20093 '-fno-exceptions' and '-fno-rtti' by default. When linking, this
20095 linker. Finally, this option causes the preprocessor macro
20096 '__ANDROID__' to be defined.
20099 Disable compilation effects of '-mandroid', i.e., do not enable
20100 '-mbionic', '-fPIC', '-fno-exceptions' and '-fno-rtti' by default.
20103 Disable linking effects of '-mandroid', i.e., pass standard Linux
20104 linking options to the linker.
20107 File: gcc.info, Node: H8/300 Options, Next: HPPA Options, Prev: GNU/Linux Options, Up: Submodel…
20109 3.19.19 H8/300 Options
20116 the linker option '-relax'. *Note 'ld' and the H8/300: (ld)H8/300,
20117 for a fuller description.
20120 Generate code for the H8/300H.
20123 Generate code for the H8S.
20126 Generate code for the H8S and H8/300H in the normal mode. This
20127 switch must be used either with '-mh' or '-ms'.
20130 Generate code for the H8S/2600. This switch must be used with
20131 '-ms'.
20135 with monitor attribute. Default option is '-mexr'. This option is
20136 valid only for H8S targets.
20140 function with monitor attribute. Default option is '-mno-exr'.
20141 This option is valid only for H8S targets.
20144 Make 'int' data 32 bits by default.
20148 H8/300. The default for the H8/300H and H8S is to align longs and
20149 floats on 4-byte boundaries. '-malign-300' causes them to be
20150 aligned on 2-byte boundaries. This option has no effect on the
20151 H8/300.
20154 File: gcc.info, Node: HPPA Options, Next: IA-64 Options, Prev: H8/300 Options, Up: Submodel Opt…
20156 3.19.20 HPPA Options
20162 Generate code for the specified architecture. The choices for
20164 for PA 2.0 processors. Refer to '/usr/lib/sched.models' on an
20166 machine. Code compiled for lower numbered architectures runs on
20167 higher numbered architectures, but not the other way around.
20173 respectively.
20176 The caller copies function arguments passed by hidden reference.
20178 the default 32-bit runtime. However, only aggregates larger than
20180 better compatibility with OpenMP.
20184 only.
20187 Prevent floating-point registers from being used in any manner.
20189 switching of floating-point registers. If you use this option and
20190 attempt to perform floating-point operations, the compiler aborts.
20193 Prevent the compiler from using indexing address modes. This
20195 code under MACH.
20198 Generate code that assumes the target has no space registers. This
20200 address modes.
20202 Such code is suitable for level 0 PA systems and kernels.
20205 Generate code that assumes calls never cross space boundaries.
20206 This allows GCC to emit code that performs faster indirect calls.
20209 nested functions.
20212 Generate code treating the given register range as fixed registers.
20213 A fixed register is one that the register allocator cannot use.
20214 This is useful when compiling kernel code. A register range is
20215 specified as two registers separated by a dash. Multiple register
20216 ranges can be specified separated by a comma.
20220 required by the HP-UX 10 linker. This is equivalent to the '+k'
20221 option to the HP compilers.
20225 systems.
20228 Enable the use of assembler directives only GAS understands.
20232 CPU-TYPE. The choices for CPU-TYPE are '700' '7100', '7100LC',
20233 '7200', '7300' and '8000'. Refer to '/usr/lib/sched.models' on an
20235 machine. The default scheduling is '8000'.
20238 Enable the optimization pass in the HP-UX linker. Note this makes
20239 symbolic debugging impossible. It also triggers a bug in the HP-UX
20241 linking some programs.
20244 Generate output containing library calls for floating point.
20246 targets. Normally the facilities of the machine's usual C compiler
20247 are used, but this cannot be done directly in cross-compilation.
20249 functions for cross-compilation.
20253 this option. In particular, you need to compile 'libgcc.a', the
20255 to work.
20258 Generate the predefine, '_SIO', for server IO. The default is
20259 '-mwsio'. This generates the predefines, '__hp9000s700',
20260 '__hp9000s700__' and '_WSIO', for workstation IO. These options
20261 are available under HP-UX and HI-UX.
20264 Use options specific to GNU 'ld'. This passes '-shared' to 'ld'
20265 when building a shared library. It is the default when GCC is
20266 configured, explicitly or implicitly, with the GNU linker. This
20268 parameters are passed to that 'ld'. The 'ld' that is called is
20270 search path, and finally by the user's 'PATH'. The linker used by
20271 GCC can be printed using 'which `gcc -print-prog-name=ld`'. This
20272 option is only available on the 64-bit HP-UX GCC, i.e. configured
20273 with 'hppa*64*-*-hpux*'.
20276 Use options specific to HP 'ld'. This passes '-b' to 'ld' when
20278 on all links. It is the default when GCC is configured, explicitly
20279 or implicitly, with the HP linker. This option does not affect
20281 that 'ld'. The 'ld' that is called is determined by the
20283 finally by the user's 'PATH'. The linker used by GCC can be
20284 printed using 'which `gcc -print-prog-name=ld`'. This option is
20285 only available on the 64-bit HP-UX GCC, i.e. configured with
20286 'hppa*64*-*-hpux*'.
20289 Generate code that uses long call sequences. This ensures that a
20290 call is always able to reach linker generated stubs. The default
20294 used. The limits for normal calls are 7,600,000 and 240,000 bytes,
20295 respectively for the PA 2.0 and PA 1.X architectures. Sibcalls are
20296 always limited at 240,000 bytes.
20301 linker.
20304 performance. However, it may be useful in large applications,
20305 particularly when partial linking is used to build the application.
20308 assembler and linker, and the type of code being generated. The
20310 symbol-difference or pc-relative calls should be relatively small.
20312 and it is quite long.
20316 specified UNIX standard. The choices for UNIX-STD are '93', '95'
20317 and '98'. '93' is supported on all HP-UX versions. '95' is
20318 available on HP-UX 10.10 and later. '98' is available on HP-UX
20319 11.11 and later. The default values are '93' for HP-UX 10.00, '95'
20321 later.
20323 '-munix=93' provides the same predefines as GCC 3.3 and 3.4.
20325 '_XOPEN_SOURCE_EXTENDED', and the startfile 'unix95.o'.
20328 '_INCLUDE_XOPEN_SOURCE_500', and the startfile 'unix98.o'.
20331 for various library routines. It also affects the operational
20332 behavior of the C library. Thus, _extreme_ care is needed in using
20333 this option.
20337 '__xpg4_extended_mask' as appropriate. Most GNU software doesn't
20338 provide this capability.
20341 Suppress the generation of link options to search libdld.sl when
20342 the '-static' option is specified on HP-UX 10 and later.
20346 libdld.sl. There isn't an archive version of libdld.sl. Thus,
20348 needed to resolve this dependency.
20351 link with libdld.sl when the '-static' option is specified. This
20352 causes the resulting binary to be dynamic. On the 64-bit port, the
20353 linkers generate dynamic binaries by default in any case. The
20355 adding these link options.
20359 HP-UX. This option sets flags for both the preprocessor and
20360 linker.
20363 File: gcc.info, Node: IA-64 Options, Next: LM32 Options, Prev: HPPA Options, Up: Submodel Optio…
20365 3.19.21 IA-64 Options
20368 These are the '-m' options defined for the Intel IA-64 architecture.
20371 Generate code for a big-endian target. This is the default for
20372 HP-UX.
20375 Generate code for a little-endian target. This is the default for
20376 AIX5 and GNU/Linux.
20380 Generate (or don't) code for the GNU assembler. This is the
20381 default.
20385 Generate (or don't) code for the GNU linker. This is the default.
20388 Generate code that does not use a global pointer register. The
20390 ABI.
20395 volatile asm statements.
20400 stacked registers. This may make assembler output more readable.
20404 Disable (or enable) optimizations that use the small data section.
20405 This may be useful for working around optimizer bugs.
20408 Generate code that uses a single constant global pointer value.
20409 This is useful when compiling kernel code.
20412 Generate code that is self-relocatable. This implies
20413 '-mconstant-gp'. This is useful when compiling firmware code.
20417 minimum latency algorithm.
20421 maximum throughput algorithm.
20424 Do not generate inline code for divides of floating-point values.
20428 minimum latency algorithm.
20432 maximum throughput algorithm.
20435 Do not generate inline code for divides of integer values.
20439 algorithm.
20443 algorithm.
20446 Do not generate inline code for 'sqrt'.
20451 multiply/subtract instructions. The default is to use these
20452 instructions.
20457 debugging info. This may be useful when not using the GNU
20458 assembler.
20463 instruction that triggered the stop bit. This can improve
20464 instruction scheduling, but does not always do so.
20467 Generate code treating the given register range as fixed registers.
20468 A fixed register is one that the register allocator cannot use.
20469 This is useful when compiling kernel code. A register range is
20470 specified as two registers separated by a dash. Multiple register
20471 ranges can be specified separated by a comma.
20474 Specify bit size of immediate TLS offsets. Valid values are 14,
20475 22, and 64.
20479 are 'itanium', 'itanium1', 'merced', 'itanium2', and 'mckinley'.
20483 Generate code for a 32-bit or 64-bit environment. The 32-bit
20484 environment sets int, long and pointer to 32 bits. The 64-bit
20485 environment sets int to 32 bits and long and pointer to 64 bits.
20486 These are HP-UX specific flags.
20490 (Dis/En)able data speculative scheduling before reload. This
20491 results in generation of 'ld.a' instructions and the corresponding
20492 check instructions ('ld.c' / 'chk.a'). The default setting is
20493 disabled.
20497 (En/Dis)able data speculative scheduling after reload. This
20498 results in generation of 'ld.a' instructions and the corresponding
20499 check instructions ('ld.c' / 'chk.a'). The default setting is
20500 enabled.
20504 (Dis/En)able control speculative scheduling. This feature is
20505 available only during region scheduling (i.e. before reload). This
20506 results in generation of the 'ld.s' instructions and the
20507 corresponding check instructions 'chk.s'. The default setting is
20508 disabled.
20513 dependent on the data speculative loads before reload. This is
20514 effective only with '-msched-br-data-spec' enabled. The default
20515 setting is enabled.
20520 dependent on the data speculative loads after reload. This is
20521 effective only with '-msched-ar-data-spec' enabled. The default
20522 setting is enabled.
20527 dependent on the control speculative loads. This is effective only
20528 with '-msched-control-spec' enabled. The default setting is
20529 enabled.
20534 only if there are no other choices at the moment. This makes the
20535 use of the data speculation much more conservative. The default
20536 setting is disabled.
20541 schedule only if there are no other choices at the moment. This
20542 makes the use of the control speculation much more conservative.
20543 The default setting is disabled.
20548 computation of the instructions priorities. This makes the use of
20549 the speculation a bit more conservative. The default setting is
20550 disabled.
20553 Use a simple data speculation check. This option is on by default.
20556 Use a simple check for control speculation. This option is on by
20557 default.
20560 Place a stop bit after every cycle when scheduling. This option is
20561 on by default.
20565 a conflict when placed into the same instruction group. This
20566 option is disabled by default.
20569 Generate checks for control speculation in selective scheduling.
20570 This flag is disabled by default.
20575 the same instruction group. Frequently useful to prevent cache
20576 bank conflicts. The default value is 1.
20580 limit, disallowing more than that number in an instruction group.
20583 still be scheduled.
20586 File: gcc.info, Node: LM32 Options, Next: M32C Options, Prev: IA-64 Options, Up: Submodel Optio…
20588 3.19.22 LM32 Options
20594 Enable barrel-shift instructions.
20597 Enable divide and modulus instructions.
20600 Enable multiply instructions.
20603 Enable sign extend instructions.
20606 Enable user-defined instructions.
20609 File: gcc.info, Node: M32C Options, Next: M32R/D Options, Prev: LM32 Options, Up: Submodel Opti…
20611 3.19.23 M32C Options
20615 Select the CPU for which code is generated. NAME may be one of
20618 series.
20621 Specifies that the program will be run on the simulator. This
20623 for example, file I/O. You must not use this option when
20626 needed.
20630 during code generation. These pseudo-registers are used like real
20633 memory instead of registers. Note that all modules in a program
20634 must be compiled with the same value for this option. Because of
20636 libraries.
20639 File: gcc.info, Node: M32R/D Options, Next: M680x0 Options, Prev: M32C Options, Up: Submodel Op…
20641 3.19.24 M32R/D Options
20647 Generate code for the M32R/2.
20650 Generate code for the M32R/X.
20653 Generate code for the M32R. This is the default.
20658 all subroutines are reachable with the 'bl' instruction. This is
20659 the default.
20662 'model' attribute.
20668 instruction.
20675 'seth/add3/jl' instruction sequence).
20678 Disable use of the small data area. Variables are put into one of
20679 '.data', '.bss', or '.rodata' (unless the 'section' attribute has
20680 been specified). This is the default.
20682 The small data area consists of sections '.sdata' and '.sbss'.
20684 'section' attribute using one of these sections.
20688 generate special code to reference them.
20692 generate special instructions to reference them.
20697 sections. The default value of NUM is 8. The '-msdata' option
20699 effect.
20701 All modules should be compiled with the same '-G NUM' value.
20704 generated.
20708 statistics that might help in debugging programs.
20711 Align all loops to a 32-byte boundary.
20714 Do not enforce a 32-byte alignment for loops. This is the default.
20717 Issue NUMBER instructions per cycle. NUMBER can only be 1 or 2.
20720 NUMBER can only be 1 or 2. If it is 1 then branches are preferred
20721 over conditional code, if it is 2, then the opposite applies.
20724 Specifies the trap number to use to flush the cache. The default
20725 is 12. Valid numbers are between 0 and 15 inclusive.
20728 Specifies that the cache cannot be flushed by using a trap.
20732 flush the cache. The default is '_flush_cache', but a function
20733 call is only used if a trap is not available.
20736 Indicates that there is no OS function for flushing the cache.
20739 File: gcc.info, Node: M680x0 Options, Next: MCore Options, Prev: M32R/D Options, Up: Submodel O…
20741 3.19.25 M680x0 Options
20744 These are the '-m' options defined for M680x0 and ColdFire processors.
20747 given below.
20751 architecture. Permissible values of ARCH for M680x0 architectures
20753 'cpu32'. ColdFire architectures are selected according to
20755 'isaa', 'isaaplus', 'isab' and 'isac'.
20758 for a ColdFire target. The ARCH in this macro is one of the
20759 '-march' arguments given above.
20763 particular microarchitecture.
20766 Generate code for a specific M680x0 or ColdFire processor. The
20768 '68060', '68302', '68332' and 'cpu32'. The ColdFire CPUs are given
20798 '-mcpu=CPU' overrides '-march=ARCH' if ARCH is compatible with CPU.
20799 Other combinations of '-mcpu' and '-march' are rejected.
20802 selected. It also defines '__mcf_family_FAMILY', where the value
20803 of FAMILY is given by the table above.
20807 constraints set by '-march' and '-mcpu'. The M680x0
20809 '68040', '68060' and 'cpu32'. The ColdFire microarchitectures are:
20810 'cfv1', 'cfv2', 'cfv3', 'cfv4' and 'cfv4e'.
20813 relatively well on 68020, 68030 and 68040 targets.
20814 '-mtune=68020-60' is similar but includes 68060 targets as well.
20816 and '-m68020-60' respectively.
20819 680x0 architecture ARCH. It also defines 'mcARCH' unless either
20820 '-ansi' or a non-GNU '-std' option is used. If GCC is tuning for a
20823 the range.
20827 above.
20831 Generate output for a 68000. This is the default when the compiler
20832 is configured for 68000-based systems. It is equivalent to
20833 '-march=68000'.
20836 including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
20839 Generate output for a 68010. This is the default when the compiler
20840 is configured for 68010-based systems. It is equivalent to
20841 '-march=68010'.
20845 Generate output for a 68020. This is the default when the compiler
20846 is configured for 68020-based systems. It is equivalent to
20847 '-march=68020'.
20850 Generate output for a 68030. This is the default when the compiler
20851 is configured for 68030-based systems. It is equivalent to
20852 '-march=68030'.
20855 Generate output for a 68040. This is the default when the compiler
20856 is configured for 68040-based systems. It is equivalent to
20857 '-march=68040'.
20860 to be emulated by software on the 68040. Use this option if your
20861 68040 does not have code to emulate those instructions.
20864 Generate output for a 68060. This is the default when the compiler
20865 is configured for 68060-based systems. It is equivalent to
20866 '-march=68060'.
20869 that have to be emulated by software on the 68060. Use this option
20870 if your 68060 does not have code to emulate those instructions.
20873 Generate output for a CPU32. This is the default when the compiler
20874 is configured for CPU32-based systems. It is equivalent to
20875 '-march=cpu32'.
20879 68341, 68349 and 68360.
20882 Generate output for a 520X ColdFire CPU. This is the default when
20883 the compiler is configured for 520X-based systems. It is
20885 option.
20888 MCF5202, MCF5203, MCF5204 and MCF5206.
20891 Generate output for a 5206e ColdFire CPU. The option is now
20892 deprecated in favor of the equivalent '-mcpu=5206e'.
20895 Generate output for a member of the ColdFire 528X family. The
20896 option is now deprecated in favor of the equivalent '-mcpu=528x'.
20899 Generate output for a ColdFire 5307 CPU. The option is now
20900 deprecated in favor of the equivalent '-mcpu=5307'.
20903 Generate output for a ColdFire 5407 CPU. The option is now
20904 deprecated in favor of the equivalent '-mcpu=5407'.
20907 Generate output for a ColdFire V4e family CPU (e.g. 547x/548x).
20908 This includes use of hardware floating-point instructions. The
20910 favor of that option.
20914 instructions. This results in code that can run relatively
20915 efficiently on either a 68020/68881 or a 68030 or a 68040. The
20917 the 68040.
20919 The option is equivalent to '-march=68020' '-mtune=68020-40'.
20923 instructions. This results in code that can run relatively
20924 efficiently on either a 68020/68881 or a 68030 or a 68040. The
20926 the 68060.
20928 The option is equivalent to '-march=68020' '-mtune=68020-60'.
20932 Generate floating-point instructions. This is the default for
20933 68020 and above, and for ColdFire devices that have an FPU. It
20935 '__mcffpu__' on ColdFire targets.
20939 instead. This is the default for 68000, 68010, and 68832 targets.
20940 It is also the default for ColdFire devices that have no FPU.
20945 instructions. If '-march' is used without '-mcpu', the default is
20946 "on" for ColdFire architectures and "off" for M680x0 architectures.
20948 default CPU, or the one specified by '-mcpu'). For example, the
20949 default is "off" for '-mcpu=5206' and "on" for '-mcpu=5206e'.
20951 GCC defines the macro '__mcfhwdiv__' when this option is enabled.
20954 Consider type 'int' to be 16 bits wide, like 'short int'.
20957 32-bit.
20960 Do not consider type 'int' to be 16 bits wide. This is the
20961 default.
20965 Do not use the bit-field instructions. The '-m68000', '-mcpu32'
20966 and '-m5200' options imply '-mnobitfield'.
20969 Do use the bit-field instructions. The '-m68020' option implies
20970 '-mbitfield'. This is the default if you use a configuration
20971 designed for a 68020.
20976 instruction, which pops their arguments while returning. This
20978 the arguments there.
20982 compiled with the Unix compiler.
20986 incorrect code is generated for calls to those functions.
20989 function with too many arguments. (Normally, extra arguments are
20990 harmlessly ignored.)
20993 68040, 68060 and CPU32 processors, but not by the 68000 or 5200.
20995 The default is '-mno-rtd'.
21001 ('-malign-int') or a 16-bit boundary ('-mno-align-int'). Aligning
21004 memory.
21008 published application binary interface specifications for the m68k.
21011 of using a global offset table. At present, this option implies
21013 addressing. '-fPIC' is not presently supported with '-mpcrel',
21014 though this could be supported for 68020 and higher processors.
21019 the system.
21023 different area of memory from the text segment. This allows for
21025 management. This option implies '-fPIC'.
21029 segment. This is the default.
21033 method. This allows for execute-in-place and shared libraries in
21034 an environment without virtual memory management. This option
21035 implies '-fPIC'.
21039 being used. This is the default.
21043 being compiled. Specifying a value of 0 generates more compact
21046 than omitting this option.
21051 code that works if the GOT has more than 8192 entries. This code
21052 is larger and slower than code generated without this option. On
21053 M680x0 processors, this option is not needed; '-fPIC' suffices.
21055 GCC normally uses a single instruction to load values from the GOT.
21057 smaller than about 64k. Anything larger causes the linker to
21062 If this happens, you should recompile your code with '-mxgot'. It
21063 should then work with very large GOTs. However, code generated
21065 fetch the value of a global symbol.
21068 can create multiple GOTs and sort GOT entries. If you have such a
21070 single object file that accesses more than 8192 GOT entries. Very
21071 few do.
21074 position-independent code.
21077 Use 32-bit offsets in 'switch' tables. The default is to use
21078 16-bit offsets.
21081 File: gcc.info, Node: MCore Options, Next: MeP Options, Prev: M680x0 Options, Up: Submodel Opti…
21083 3.19.26 MCore Options
21086 These are the '-m' options defined for the Motorola M*Core processors.
21091 instructions or less.
21095 Use the divide instruction. (Enabled by default).
21099 Allow arbitrary-sized immediates in bit operations.
21103 Always treat bit-fields as 'int'-sized.
21107 Force all functions to be aligned to a 4-byte boundary.
21111 Emit callgraph information.
21115 Prefer word access when reading byte quantities.
21119 Generate code for a little-endian target.
21123 Generate code for the 210 processor.
21127 simulator library ('libsim.a)' from the linker command line.
21130 Set the maximum amount for a single stack increment operation.
21134 much. The default value is 0x1000.
21137 File: gcc.info, Node: MeP Options, Next: MicroBlaze Options, Prev: MCore Options, Up: Submodel …
21139 3.19.27 MeP Options
21144 between two registers.
21149 and saturation.
21153 registers.
21156 Variables of size N bytes or smaller are placed in the '.based'
21157 section by default. Based variables use the '$tp' register as a
21158 base register, and there is a 128-byte limit to the '.based'
21159 section.
21164 ('tas').
21167 Selects which section constant data is placed in. NAME may be
21168 'tiny', 'near', or 'far'.
21171 Enables the 'clip' instruction. Note that '-mclip' is not useful
21172 unless you also provide '-mminmax'.
21175 Selects one of the built-in core configurations. Each MeP chip has
21177 of coprocessors, optional instructions, and peripherals. The
21180 as using all the corresponding command-line options. The default
21181 configuration is 'default'.
21184 Enables the coprocessor instructions. By default, this is a 32-bit
21185 coprocessor. Note that the coprocessor is normally enabled via the
21186 '-mconfig=' option.
21189 Enables the 32-bit coprocessor's instructions.
21192 Enables the 64-bit coprocessor's instructions.
21195 Enables IVC2 scheduling. IVC2 is a 64-bit VLIW coprocessor.
21198 Causes constant variables to be placed in the '.near' section.
21201 Enables the 'div' and 'divu' instructions.
21204 Generate big-endian code.
21207 Generate little-endian code.
21211 is to be considered volatile.
21214 Causes variables to be assigned to the '.far' section by default.
21217 Enables the 'leadz' (leading zero) instruction.
21220 Causes variables to be assigned to the '.near' section by default.
21223 Enables the 'min' and 'max' instructions.
21226 Enables the multiplication and multiply-accumulate instructions.
21229 Disables all the optional instructions enabled by '-mall-opts'.
21233 low-overhead looping.
21236 Causes all variables to default to the '.tiny' section. Note that
21237 there is a 65536-byte limit to this section. Accesses to these
21238 variables use the '%gp' base register.
21241 Enables the saturation instructions. Note that the compiler does
21243 for compatibility with other tools, like 'as'.
21247 runtime.
21250 Link the simulator run-time libraries.
21254 for reset and exception vectors and tables.
21257 Causes all functions to default to the '.far' section. Without
21258 this option, functions default to the '.near' section.
21261 Variables that are N bytes or smaller are allocated to the '.tiny'
21262 section. These variables use the '$gp' base register. The default
21264 the '.tiny' section.
21267 File: gcc.info, Node: MicroBlaze Options, Next: MIPS Options, Prev: MeP Options, Up: Submodel O…
21269 3.19.28 MicroBlaze Options
21273 Use software emulation for floating point (default).
21276 Use hardware floating-point instructions.
21279 Do not optimize block moves, use 'memcpy'.
21282 This option is deprecated. Use '-fno-zero-initialized-in-bss'
21283 instead.
21286 Use features of, and schedule code for, the given CPU. Supported
21287 values are in the format 'vX.YY.Z', where X is a major version, YY
21288 is the minor version, and Z is compatibility code. Example values
21289 are 'v3.00.a', 'v4.00.b', 'v5.00.a', 'v5.00.b', 'v6.00.a'.
21292 Use software multiply emulation (default).
21295 Use software emulation for divides (default).
21298 Use the hardware barrel shifter.
21301 Use pattern compare instructions.
21304 Use table lookup optimization for small signed integer divisions.
21307 This option is deprecated. Use '-fstack-check' instead.
21310 Use GP-relative '.sdata'/'.sbss' sections.
21313 Use multiply high instructions for high part of 32x32 multiply.
21316 Use hardware floating-point conversion instructions.
21319 Use hardware floating-point square root instruction.
21322 Generate code for a big-endian target.
21325 Generate code for a little-endian target.
21328 Use reorder instructions (swap and byte reversed load/store).
21331 Select application model APP-MODEL. Valid models are
21333 normal executable (default), uses startup code 'crt0.o'.
21337 segments is fixed at static link time. This allows data to be
21339 since PC-relative addressing is not supported.
21343 software intrusive debug agent called xmdstub. This uses
21344 startup file 'crt1.o' and sets the start address of the
21345 program to 0x800.
21348 for applications that are loaded using a bootloader. This
21349 model uses startup file 'crt2.o' which does not contain a
21350 processor reset vector handler. This is suitable for
21352 rather than the application.
21356 vectors. This option may be useful for applications running
21357 within a monitoring application. This model uses 'crt3.o' as
21358 a startup file.
21361 '-mxl-mode-APP-MODEL'.
21364 File: gcc.info, Node: MIPS Options, Next: MMIX Options, Prev: MicroBlaze Options, Up: Submodel …
21366 3.19.29 MIPS Options
21370 Generate big-endian code.
21373 Generate little-endian code. This is the default for 'mips*el-*-*'
21374 configurations.
21378 MIPS ISA, or the name of a particular processor. The ISA names
21381 'mips64r3', 'mips64r5' and 'mips64r6'. The processor names are:
21394 and 'xlp'. The special value 'from-abi' selects the most
21396 32-bit ABIs and 'mips3' for 64-bit ABIs).
21399 which selects the best architecture option for the host processor.
21401 processor.
21404 example, '-march=r2k'). Prefixes are optional, and 'vr' may be
21405 written 'r'.
21411 ratio of 3:2 with respect to the core. For compatibility reasons,
21413 accepted as synonyms for 'Nf1_1'.
21415 GCC defines two macros based on the value of this option. The
21417 as a string. The second has the form '_MIPS_ARCH_FOO', where FOO
21418 is the capitalized value of '_MIPS_ARCH'. For example,
21420 '_MIPS_ARCH_R2000'.
21423 above. In other words, it has the full prefix and does not
21424 abbreviate '000' as 'k'. In the case of 'from-abi', the macro
21425 names the resolved architecture (either '"mips1"' or '"mips3"').
21426 It names the default architecture when no '-march' option is given.
21429 Optimize for ARCH. Among other things, this option controls the
21431 arithmetic operations. The list of ARCH values is the same as for
21432 '-march'.
21435 specified by '-march'. By using '-march' and '-mtune' together, it
21437 but optimize the code for one particular member of that family.
21440 which work in the same way as the '-march' ones described above.
21443 Equivalent to '-march=mips1'.
21446 Equivalent to '-march=mips2'.
21449 Equivalent to '-march=mips3'.
21452 Equivalent to '-march=mips4'.
21455 Equivalent to '-march=mips32'.
21458 Equivalent to '-march=mips32r3'.
21461 Equivalent to '-march=mips32r5'.
21464 Equivalent to '-march=mips32r6'.
21467 Equivalent to '-march=mips64'.
21470 Equivalent to '-march=mips64r2'.
21473 Equivalent to '-march=mips64r3'.
21476 Equivalent to '-march=mips64r5'.
21479 Equivalent to '-march=mips64r6'.
21483 Generate (do not generate) MIPS16 code. If GCC is targeting a
21484 MIPS32 or MIPS64 architecture, it makes use of the MIPS16e ASE.
21487 basis by means of 'mips16' and 'nomips16' attributes. *Note
21488 Function Attributes::, for more information.
21491 Generate MIPS16 code on alternating functions. This option is
21494 code.
21500 microMIPS code, and vice versa.
21504 an indirect jump. '-minterlink-compressed' therefore disables
21506 compressed.
21511 '-mno-interlink-compressed'. These options predate the microMIPS
21512 ASE and are retained for backwards compatibility.
21519 Generate code for the given ABI.
21521 Note that the EABI has a 32-bit and a 64-bit variant. GCC normally
21523 you can use '-mgp32' to get 32-bit code instead.
21526 <http://gcc.gnu.org/projects/mipso64-abi.html>.
21529 registers are 64 rather than 32 bits wide. You can select this
21530 combination with '-mabi=32' '-mfp64'. This ABI relies on the
21532 for MIPS32R2, MIPS32R3 and MIPS32R5 processors.
21536 rather than a pair of 32-bit registers. For example, scalar
21538 pair. The set of call-saved registers also remains the same in
21539 that the even-numbered double-precision registers are saved.
21542 transition from 32-bit to 64-bit registers. These are FPXX
21543 ('-mfpxx') and FP64A ('-mfp64' '-mno-odd-spreg'). The FPXX
21545 using 32-bit or 64-bit registers. The code can be interlinked with
21546 either FP32 or FP64, but not both. The FP64A extension is similar
21548 single-precision registers. This can be used in conjunction with
21551 changing FPU modes.
21556 dynamic objects. '-mabicalls' is the default for SVR4-based
21557 systems.
21562 and that can therefore be linked into shared libraries. This
21563 option only affects '-mabicalls'.
21566 regardless of options like '-fPIC' and '-fpic'. However, as an
21568 accesses for locally-binding symbols. It can also use shorter GP
21570 locally-defined functions. This mode is selected by '-mno-shared'.
21573 objects that can only be linked by the GNU linker. However, the
21575 affects the ABI of relocatable objects. Using '-mno-shared'
21576 generally makes executables both smaller and quicker.
21578 '-mshared' is the default.
21583 PLTs and copy relocations. This option only affects '-mno-shared
21584 -mabicalls'. For the n64 ABI, this option has no effect without
21585 '-msym32'.
21588 '--with-mips-plt'. The default is '-mno-plt' otherwise.
21593 offset table.
21595 GCC normally uses a single instruction to load values from the GOT.
21597 smaller than about 64k. Anything larger causes the linker to
21602 If this happens, you should recompile your code with '-mxgot'.
21605 a global symbol.
21607 Note that some linkers can create multiple GOTs. If you have such
21609 file accesses more than 64k's worth of GOT entries. Very few do.
21612 independent code.
21615 Assume that general-purpose registers are 32 bits wide.
21618 Assume that general-purpose registers are 64 bits wide.
21621 Assume that floating-point registers are 32 bits wide.
21624 Assume that floating-point registers are 64 bits wide.
21627 Do not assume the width of floating-point registers.
21630 Use floating-point coprocessor instructions.
21633 Do not use floating-point coprocessor instructions. Implement
21634 floating-point calculations using library calls instead.
21639 operations. This option is presently supported only by some
21642 example, the floating-point 'printf' formats). If code compiled
21644 it is likely to suffer a link-time or run-time failure.
21648 single-precision operations.
21652 double-precision operations. This is the default.
21657 registers for the o32 ABI. This is the default for processors that
21658 are known to support these registers. When using the o32 FPXX ABI,
21659 '-mno-odd-spreg' is set by default.
21664 (NaN) IEEE 754 floating-point data with the 'abs.fmt' and 'neg.fmt'
21665 machine instructions.
21668 selected. In this case these instructions are considered
21670 input operand might be a NaN. A longer sequence of instructions
21673 specified.
21675 The '-mabs=2008' option selects the IEEE 754-2008 treatment. In
21678 where the input operand is a NaN. These instructions are therefore
21679 always used for the respective operations.
21684 (NaN) IEEE 754 floating-point data.
21686 The '-mnan=legacy' option selects the legacy encoding. In this
21690 being 1.
21692 The '-mnan=2008' option selects the IEEE 754-2008 encoding. In
21695 bit of their trailing significand field being 0.
21698 '--with-nan=2008'.
21703 atomic memory built-in functions. When neither option is
21705 supports them.
21709 nonstandard ISAs. You can make either option the default by
21711 respectively. '--with-llsc' is the default for some
21712 configurations; see the installation documentation for details.
21716 Use (do not use) revision 1 of the MIPS DSP ASE. *Note MIPS DSP
21717 Built-in Functions::. This option defines the preprocessor macro
21718 '__mips_dsp'. It also defines '__mips_dsp_rev' to 1.
21722 Use (do not use) revision 2 of the MIPS DSP ASE. *Note MIPS DSP
21723 Built-in Functions::. This option defines the preprocessor macros
21724 '__mips_dsp' and '__mips_dspr2'. It also defines '__mips_dsp_rev'
21725 to 2.
21729 Use (do not use) the MIPS SmartMIPS ASE.
21733 Use (do not use) paired-single floating-point instructions. *Note
21734 MIPS Paired-Single Support::. This option requires hardware
21735 floating-point support to be enabled.
21739 Use (do not use) MIPS Digital Media Extension instructions. This
21741 hardware floating-point support to be enabled.
21745 Use (do not use) the MIPS-3D ASE. *Note MIPS-3D Built-in
21746 Functions::. The option '-mips3d' implies '-mpaired-single'.
21750 Generate (do not generate) microMIPS code.
21753 basis by means of 'micromips' and 'nomicromips' attributes. *Note
21754 Function Attributes::, for more information.
21758 Use (do not use) MT Multithreading instructions.
21762 Use (do not use) the MIPS MCU ASE instructions.
21766 Use (do not use) the MIPS Enhanced Virtual Addressing instructions.
21770 Use (do not use) the MIPS Virtualization (VZ) instructions.
21775 instructions.
21780 instructions.
21784 Use (do not use) the MIPS Global INValidate (GINV) instructions.
21789 Instructions (MMI).
21793 Use (do not use) the MIPS Loongson EXTensions (EXT) instructions.
21798 instructions.
21801 Force 'long' types to be 64 bits wide. See '-mlong32' for an
21803 determined.
21806 Force 'long', 'int', and pointer types to be 32 bits wide.
21809 ABI. All the supported ABIs use 32-bit 'int's. The n64 ABI uses
21811 'long's. Pointers are the same size as 'long's, or the same size
21812 as integer registers, whichever is smaller.
21817 regardless of the selected ABI. This option is useful in
21820 addresses.
21824 if that data is no bigger than NUM bytes. GCC can then generate
21825 more efficient accesses to the data; see '-mgpopt' for details.
21827 The default '-G' option depends on the configuration.
21832 to static variables in C. '-mlocal-sdata' is the default for all
21833 configurations.
21837 performance-critical parts with '-mno-local-sdata'. You might also
21839 libraries leave more room for the main program.
21844 data section if the size of that data is within the '-G' limit.
21845 '-mextern-sdata' is the default for all configurations.
21850 section. If VAR is defined by another module, you must either
21852 'section' attribute to VAR's definition. If VAR is common, you
21853 must link the application with a high-enough '-G' setting.
21856 link every module with the same '-G' option. However, you may wish
21858 limits. You can do this by compiling the library with the highest
21861 externally-defined data.
21867 '-mextern-sdata'. '-mgpopt' is the default for all configurations.
21870 hold the value of '_gp'. For example, if the code is part of a
21872 boot monitor routines pass an unknown value in '$gp'. (In such
21874 '-G0'.)
21876 '-mno-gpopt' implies '-mno-local-sdata' and '-mno-extern-sdata'.
21881 then next in the small data section if possible, otherwise in data.
21884 for some embedded systems.
21888 Put uninitialized 'const' variables in the read-only data section.
21890 '-membedded-data'.
21894 sections. There are three possible settings:
21897 Instructions may freely access executable sections. This is
21898 the default setting.
21902 sections, but other instructions must not do so. This option
21904 the Read Inhibit bit set. It is also useful on processors
21907 PC-relative loads to the instruction RAM.
21910 Instructions must not access executable sections. This option
21914 instruction RAM.
21919 relocation operators. This option has been superseded by
21920 '-mexplicit-relocs' but is retained for backwards compatibility.
21925 symbolic addresses. The alternative, selected by
21926 '-mno-explicit-relocs', is to use assembler macros instead.
21929 assembler that supports relocation operators.
21933 Trap (do not trap) on integer division by zero.
21935 The default is '-mcheck-zero-division'.
21940 conditional trap or a break instruction. Using traps results in
21941 smaller code, but is only supported on MIPS II and later. Also,
21943 from generating the proper signal ('SIGFPE'). Use '-mdivide-traps'
21945 '-mdivide-breaks' to force the use of breaks.
21948 at configure time using '--with-divide=breaks'. Divide-by-zero
21949 checks can be completely disabled using '-mno-check-zero-division'.
21954 store instructions to enable load/store bonding. This option is
21956 architecture is known to support bonding.
21961 moves. The default is '-mno-memcpy', which allows GCC to inline
21962 most constant-sized copies.
21966 Disable (do not disable) use of the 'jal' instruction. Calling
21968 callee to be in the same 256 megabyte segment.
21970 This option has no effect on abicalls code. The default is
21971 '-mno-long-calls'.
21976 as provided by the R4650 ISA.
21980 Enable (disable) use of the 'madd' and 'msub' integer instructions.
21983 generate slower code.
21988 instructions, when they are available. The default is
21989 '-mfused-madd'.
21993 not subject to the FCSR Flush to Zero bit. This may be undesirable
21994 in some circumstances. On other processors the result is
21996 multiply, add, subtract and negate instructions.
22000 assembler files (with a '.s' suffix) when assembling them.
22004 Work around the 24K E48 (lost data on stores during refill) errata.
22006 GCC.
22012 if executed immediately after starting an integer division.
22014 if executed while an integer multiplication is in progress.
22016 a delay slot of a taken branch or a jump.
22022 if executed immediately after starting an integer division.
22028 prior to 3.0. They may deadlock on revisions 2.6 and earlier.
22031 branch-likely instructions. '-mfix-r10000' is the default when
22033 otherwise.
22040 there instead. The short loop bug under certain conditions causes
22042 R5900 chip. The workaround is implemented by the assembler rather
22043 than by GCC.
22047 Work around the RM7000 'dmult'/'dmultu' errata. The workarounds
22048 are implemented by the assembler rather than by GCC.
22053 - 'dmultu' does not always produce the correct result.
22055 one of the operands is negative.
22057 in 'libgcc.a'. At present, these functions are only provided by
22058 the 'mips64vr*-elf' configurations.
22061 pairs of instructions. These errata are handled by the assembler,
22062 not by GCC itself.
22065 Work around the VR4130 'mflo'/'mfhi' errata. The workarounds are
22068 'dmacc' and 'dmacchi' instructions are available instead.
22072 Work around certain SB-1 CPU core errata. (This flag currently
22074 errata.)
22078 effects of speculation on R10K processors.
22082 instructions from the "taken" branch. It later aborts these
22083 instructions if the predicted outcome is wrong. However, on the
22084 R10K, even aborted instructions can have side effects.
22087 system, kernel loads. As an example, a speculatively-executed
22089 as dirty, even if the store itself is later aborted. If a DMA
22091 is flushed, the cached data overwrites the DMA-ed data. See the
22093 potential problems.
22097 have side effects even if aborted. '-mr10k-cache-barrier=SETTING'
22098 controls GCC's implementation of this workaround. It assumes that
22102 1. the memory occupied by the current function's stack frame;
22104 2. the memory occupied by an incoming stack argument;
22106 3. the memory occupied by an object with a link-time-constant
22107 address.
22110 accesses to these regions are indeed safe.
22117 to be executed speculatively. GCC honors this restriction for
22118 functions it compiles itself. It expects non-GCC functions (such
22119 as hand-written assembly code) to do the same.
22126 if aborted.
22131 if aborted.
22134 Disable the insertion of cache barriers. This is the default
22135 setting.
22140 not call any such function. If called, the function must take the
22143 the memory range, and the number 3 (to flush both caches). The
22145 is either '_flush_func' or '__cpu_flush'.
22148 Set the cost of branches to roughly NUM "simple" instructions.
22150 consistent results across releases. A zero cost redundantly
22151 selects the default, which is based on the '-mtune' setting.
22156 the default for the selected architecture. By default, Branch
22158 selected architecture. An exception is for the MIPS32 and MIPS64
22162 deprecate their use.
22167 These options control which form of branches will be generated.
22168 The default is '-mcompact-branches=optimal'.
22171 instructions will never be generated.
22174 branch instruction will be generated if available. If a compact
22176 branch will be used instead.
22178 This option is supported from MIPS Release 6 onwards.
22182 delay slot is successfully filled. If the delay slot is not
22183 filled, a compact branch will be chosen if one is available.
22187 Specifies whether FP exceptions are enabled. This affects how FP
22188 instructions are scheduled for some processors. The default is
22189 that FP exceptions are enabled.
22192 are emitting 64-bit code, then we can use both FP pipes.
22193 Otherwise, we can only use one FP pipe.
22198 instructions together if the first one is 8-byte aligned. When
22200 thinks should execute in parallel.
22202 This option only has an effect when optimizing for the VR4130. It
22203 normally makes code faster, but at the expense of making it bigger.
22204 It is enabled by default at optimization level '-O3'.
22209 architectures that support it. The 'synci' instructions (if
22210 enabled) are generated when '__builtin___clear_cache' is compiled.
22213 overridden by configuring GCC with '--with-synci'.
22216 safe to use 'synci'. However, on many multi-core (SMP) systems, it
22218 lead to undefined behavior.
22223 '$25' into direct calls. This is only possible if the linker can
22225 within range for a direct call.
22228 assembler and a linker that support the '.reloc' assembly directive
22229 and '-mexplicit-relocs' is in effect. With '-mno-explicit-relocs',
22231 alone without help from the compiler.
22236 function's return address. When enabled, this option extends the
22238 has type 'intptr_t *' and is passed in register '$12'. '_mcount'
22240 * Returning the new address in register '$31'.
22242 nonnull.
22244 The default is '-mno-mcount-ra-address'.
22248 Enable (disable) frame header optimization in the o32 ABI. When
22250 stack for the called function to write out register arguments.
22252 frame header if it can be determined that it is unused.
22254 This optimization is off by default at all optimization levels.
22259 'swxc1', 'ldxc1', 'sdxc1' instructions. Enabled by default.
22264 'madd.s', 'madd.d' and related instructions. Enabled by default.
22267 File: gcc.info, Node: MMIX Options, Next: MN10300 Options, Prev: MIPS Options, Up: Submodel Opt…
22269 3.19.30 MMIX Options
22277 passing all values in registers, no matter the size.
22282 respect to the 'rE' epsilon register.
22288 opposed to the GNU ABI which uses global registers '$231' and up.
22294 than sign-extending ones.
22299 sign as the divisor. With the default, '-mno-knuthdiv', the sign
22300 of the remainder follows the sign of the dividend. Both methods
22301 are arithmetically valid, the latter being almost exclusively used.
22306 assembly code can be used with the 'PREFIX' assembly directive.
22310 'mmo' format used by the 'mmix' simulator.
22315 branch prediction indicates a probable branch.
22319 Generate (do not generate) code that uses _base addresses_. Using
22322 register. The register is used for one or more base address
22324 register. The generally leads to short and fast code, but the
22325 number of different data items that can be addressed is limited.
22327 '-mno-base-addresses'.
22332 each function.
22335 File: gcc.info, Node: MN10300 Options, Next: Moxie Options, Prev: MMIX Options, Up: Submodel Op…
22337 3.19.31 MN10300 Options
22344 MN10300 processors. This is the default.
22348 the MN10300 processors.
22351 Generate code using features specific to the AM33 processor.
22354 Do not generate code using features specific to the AM33 processor.
22355 This is the default.
22358 Generate code using features specific to the AM33/2.0 processor.
22361 Generate code using features specific to the AM34 processor.
22365 scheduling instructions. This does not change the targeted
22366 processor type. The CPU type must be one of 'mn10300', 'am33',
22367 'am33-2' or 'am34'.
22371 pointer in both 'a0' and 'd0'. Otherwise, the pointer is returned
22373 prototype result in errors. Note that this option is on by
22374 default; use '-mno-return-pointer-on-d0' to disable it.
22377 Do not link in the C run-time initialization object file.
22382 addresses. This option only has an effect when used on the command
22383 line for the final link step.
22385 This option makes symbolic debugging impossible.
22389 if the target is the 'AM33' or later. This is the default. This
22390 option defines the preprocessor macro '__LIW__'.
22394 instructions. This option defines the preprocessor macro
22395 '__NO_LIW__'.
22399 if the target is the 'AM33' or later. This is the default. This
22400 option defines the preprocessor macro '__SETLB__'.
22404 instructions. This option defines the preprocessor macro
22405 '__NO_SETLB__'.
22408 File: gcc.info, Node: Moxie Options, Next: MSP430 Options, Prev: MN10300 Options, Up: Submodel …
22410 3.19.32 Moxie Options
22414 Generate big-endian code. This is the default for 'moxie-*-*'
22415 configurations.
22418 Generate little-endian code.
22420 '-mmul.x'
22421 Generate mul.x and umul.x instructions. This is the default for
22422 'moxiebox-*-*' configurations.
22425 Do not link in the C run-time initialization object file.
22428 File: gcc.info, Node: MSP430 Options, Next: NDS32 Options, Prev: Moxie Options, Up: Submodel Op…
22430 3.19.33 MSP430 Options
22436 Force assembly output to always use hex constants. Normally such
22438 testsuite and/or aesthetic purposes.
22441 Select the MCU to target. This is used to create a C preprocessor
22443 and post-fixed with '__'. This in turn is used by the 'msp430.h'
22444 header file to select an MCU-specific supplementary header file.
22446 The option also sets the ISA to use. If the MCU name is one that
22448 otherwise the 430X ISA is selected. A generic MCU name of 'msp430'
22449 can also be used to select the 430 ISA. Similarly the generic
22450 'msp430x' MCU name selects the 430X ISA.
22453 command line. The script's name is the name of the MCU with '.ld'
22454 appended. Thus specifying '-mmcu=xxx' on the 'gcc' command line
22456 search for a script called 'xxx.ld'.
22459 hard-coded into GCC. However, an external 'devices.csv' file can be
22461 hard-coded.
22463 GCC searches for the 'devices.csv' file using the following methods
22465 precendence over the second which takes precedence over the third.
22468 'devices.csv' will be searched for in each of the directories
22469 specified by include paths and linker library search paths.
22473 containing devices.csv, and GCC will search this directory for
22474 devices.csv. If devices.csv is found, this directory will
22476 path. Header files and linker scripts in this directory can
22478 the command line.
22481 from the toolchain root directory. This directory does not
22483 it and copied 'devices.csv' there, then the MCU data will be
22484 read. As above, this directory will also be registered as an
22485 include path, and linker library path.
22487 If none of the above search methods find 'devices.csv', then the
22488 hard-coded MCU data is used.
22495 '-mhwmult' option. It also toggles warnings about unrecognized MCU
22496 names. This option is on by default.
22499 Specifies the ISA to use. Accepted values are 'msp430', 'msp430x'
22500 and 'msp430xv2'. This option is deprecated. The '-mmcu=' option
22501 should be used to select the ISA.
22504 Link to the simulator runtime libraries and linker script.
22506 option.
22509 Use large-model addressing (20-bit pointers, 32-bit 'size_t').
22512 Use small-model addressing (16-bit pointers, 16-bit 'size_t').
22517 the final link.
22520 Describes the type of hardware multiply supported by the target.
22522 the original 16-bit-only multiply supported by early MCUs. '32bit'
22524 for the 16/32-bit multiply supported by F5-series MCUs. A value of
22525 'auto' can also be given. This tells GCC to deduce the hardware
22527 option. If no '-mmcu' option is specified or if the MCU name is
22528 not recognized then no hardware multiply support is assumed.
22529 'auto' is the default setting.
22532 routine. This saves space in the generated code. When compiling
22534 inline. This makes for bigger, but faster code.
22537 and restore the previous interrupt state when they finish. This
22539 normal code.
22543 initializers or constructors. This is intended for
22544 memory-constrained devices. The compiler includes special symbols
22546 fragments are required.
22549 Enable reduced code size 'printf' and 'puts' library functions.
22551 must be used with caution in multi-threaded applications.
22554 will always be sent to stdout via the 'write' syscall. The string
22555 is not buffered before it is sent to write.
22558 '--enable-newlib-nano-formatted-io'.
22564 attributes. Possible values are 'lower', 'upper', 'either' or
22565 'any'. The first three behave like the corresponding attribute.
22566 The fourth possible value - 'any' - is the default. It leaves
22568 standard sections ('.text', '.data', etc) to the memory regions.
22572 for the named silicon errata.
22576 messages when a silicon errata might need to be applied.
22580 Warn if 'devices.csv' is not found or there are problem parsing it
22581 (default: on).
22584 File: gcc.info, Node: NDS32 Options, Next: Nios II Options, Prev: MSP430 Options, Up: Submodel …
22586 3.19.34 NDS32 Options
22592 Generate code in big-endian mode.
22595 Generate code in little-endian mode.
22598 Use reduced-set registers for register allocation.
22601 Use full-set registers for register allocation.
22604 Generate conditional move instructions.
22607 Do not generate conditional move instructions.
22610 Generate performance extension instructions.
22613 Do not generate performance extension instructions.
22616 Generate performance extension 2 instructions.
22619 Do not generate performance extension 2 instructions.
22622 Generate string extension instructions.
22625 Do not generate string extension instructions.
22628 Generate v3 push25/pop25 instructions.
22631 Do not generate v3 push25/pop25 instructions.
22634 Generate 16-bit instructions.
22637 Do not generate 16-bit instructions.
22640 Specify the size of each interrupt vector, which must be 4 or 16.
22644 between 4 and 512.
22647 Specify the name of the target architecture.
22653 addressing space. The text segment must be within 16MB
22654 addressing space.
22657 segment can be within 4GB addressing space. The text segment
22658 should be still within 16MB addressing space.
22661 space.
22664 Enable constructor/destructor feature.
22667 Guide linker to relax instructions.
22670 File: gcc.info, Node: Nios II Options, Next: Nvidia PTX Options, Prev: NDS32 Options, Up: Submo…
22672 3.19.35 Nios II Options
22675 These are the options defined for the Altera Nios II processor.
22680 sections. The default value of NUM is 8.
22685 Generate (do not generate) GP-relative accesses. The following
22689 Do not generate GP-relative accesses.
22693 not external, weak, or uninitialized common symbols. Also use
22695 placed in a small data section via a 'section' attribute.
22699 small data objects that are external, weak, or common. If you
22702 setting.
22706 program. If you use this option, the entire data and BSS
22709 the addressable range of the global pointer.
22713 as data pointers. If you use this option, the entire text,
22717 pointer.
22720 equivalent to '-mgpopt=none'.
22723 specified to generate position-independent code. Note that the
22725 libraries.
22729 GOT data sections. In this case, the 16-bit offset for GP-relative
22731 small data section.
22735 via GP-relative addressing. It is most useful in conjunction with
22737 Variable Attributes::) and a custom linker script. The REGEXP is a
22738 POSIX Extended Regular Expression.
22741 the specified sections are in addition to the standard '.sdata' and
22742 '.sbss' small-data sections that are recognized by '-mgpopt'.
22747 32-bit address space. It is most useful in conjunction with
22749 Variable Attributes::) and a custom linker script. The REGEXP is a
22750 POSIX Extended Regular Expression.
22755 sections in the low or high areas of memory.
22760 respectively.
22763 This specifies the name of the target Nios II architecture. GCC
22765 when generating assembly code. Permissible names are: 'r1', 'r2'.
22768 with value 1 or 2, indicating the targeted ISA level.
22773 using I/O variants of the instructions. The default is not to
22774 bypass the cache.
22779 the load and store instructions. The default is not to bypass the
22780 cache.
22784 Do not use table-based fast divide for small numbers. The default
22785 is to use the fast divide at '-O3' and above.
22794 instructions by the compiler. The default is to emit 'mul' and not
22795 emit 'div' and 'mulx'.
22802 and CDX (code density) instructions. Enabling these instructions
22803 also requires '-march=r2'. Since these instructions are optional
22804 extensions to the R2 architecture, the default is not to emit them.
22809 with encoding N when generating code that uses INSN. For example,
22812 default behavior of using a library call.
22814 The following values of INSN are supported. Except as otherwise
22818 Builtins::).
22823 Binary arithmetic operations.
22826 Unary negation.
22829 Unary absolute value.
22832 Comparison operations.
22835 Floating-point minimum and maximum. These instructions are
22836 only generated if '-ffinite-math-only' is specified.
22839 Unary square root operation.
22842 Floating-point trigonometric and exponential functions. These
22844 '-funsafe-math-optimizations' is also specified.
22849 Binary arithmetic operations.
22852 Unary negation.
22855 Unary absolute value.
22858 Comparison operations.
22861 Double-precision minimum and maximum. These instructions are
22862 only generated if '-ffinite-math-only' is specified.
22865 Unary square root operation.
22868 Double-precision trigonometric and exponential functions.
22870 '-funsafe-math-optimizations' is also specified.
22874 Conversion from single precision to double precision.
22877 Conversion from double precision to single precision.
22881 types, with truncation towards zero.
22886 zero. This corresponds to the '__builtin_lroundf' function
22887 when '-fno-math-errno' is used.
22891 floating-point types.
22895 double-precision floating-point instructions. Custom instructions
22897 operand in the 64-bit register X. The other operand (or only
22900 and the most significant half in SRC2. A custom instruction that
22903 register Y. GCC automatically generates the necessary code
22905 double-precision floating-point instructions are used.
22909 the most significant half of X.
22912 Write SRC1 into Y.
22916 and store it in DEST.
22919 Read the value of Y and store it into DEST.
22925 Pragmas::).
22930 encodings (see '-mcustom-INSN' above). Currently, the following
22962 the order of the options on the command line.
22967 Specific Option Pragmas::).
22973 Link with HAL BSP. This suppresses linking with the GCC-provided C
22976 alternate startup code provided by the HAL BSP.
22980 than Newlib.
22984 linking. This option is only useful in conjunction with '-mhal'.
22988 low-level system calls required by the C library, e.g. 'read' and
22989 'write'. This option is typically used to link with a library
22990 provided by a HAL BSP.
22993 File: gcc.info, Node: Nvidia PTX Options, Next: OpenRISC Options, Prev: Nios II Options, Up: Su…
22995 3.19.36 Nvidia PTX Options
23002 Generate code for 32-bit or 64-bit ABI.
23005 Generate code for given the specified PTX ISA (e.g. 'sm_35'). ISA
23006 strings must be lower-case. Valid ISA strings include 'sm_30' and
23007 'sm_35'. The default ISA is sm_30.
23010 Link in code for a __main kernel. This is for stand-alone instead
23011 of offloading execution.
23014 Apply partitioned execution optimizations. This is the default
23015 when any level of optimization is selected.
23018 Generate code that does not use '.local' memory directly for stack
23019 storage. Instead, a per-warp stack pointer is maintained
23020 explicitly. This enables variable-length stack allocation (with
23023 variables from other threads, or with atomic instructions. This
23027 OpenMP offloading, use option '-mgomp'.
23033 OpenMP SIMD regions. All atomic operations and calls to runtime
23036 assigned is copied via a shuffle instruction from the master lane.
23038 sees itself as the master. Shared memory array 'int __nvptx_uni[]'
23040 current mode (0 outside of SIMD regions). Each thread can
23041 bitwise-and the bitmask at position 'tid.y' with current lane index
23042 to compute the master lane index.
23047 variant.
23050 File: gcc.info, Node: OpenRISC Options, Next: PDP-11 Options, Prev: Nvidia PTX Options, Up: Sub…
23052 3.19.37 OpenRISC Options
23058 Configure a board specific runtime. This will be passed to the
23059 linker for newlib board library linking. The default is 'or1ksim'.
23062 This option is ignored; it is for compatibility purposes only.
23064 newlib.
23068 Select software or hardware divide ('l.div', 'l.divu')
23069 instructions. This default is hardware divide.
23073 Select software or hardware multiply ('l.mul', 'l.muli')
23074 instructions. This default is hardware multiply.
23078 Select software or hardware for floating point operations. The
23079 default is software.
23083 double-precision floating point instructions. By default functions
23085 operations.
23089 floating point compare and set flag ('lf.sfun*') instructions. By
23091 floating point compare and set flag operations.
23094 Enable generation of conditional move ('l.cmov') instructions. By
23095 default the equivalent will be generated using set and branch.
23098 Enable generation of rotate right ('l.ror') instructions. By
23100 operations.
23103 Enable generation of rotate right with immediate ('l.rori')
23104 instructions. By default functions from 'libgcc' are used to
23105 perform rotate right with immediate operations.
23108 Enable generation of sign extension ('l.ext*') instructions. By
23109 default memory loads are used to perform sign extension.
23112 Enable generation of compare and set flag with immediate ('l.sf*i')
23113 instructions. By default extra instructions will be generated to
23114 store the immediate to a register first.
23117 Enable generation of shift with immediate ('l.srai', 'l.srli',
23118 'l.slli') instructions. By default extra instructions will be
23119 generated to store the immediate to a register first.
23122 File: gcc.info, Node: PDP-11 Options, Next: picoChip Options, Prev: OpenRISC Options, Up: Submo…
23124 3.19.38 PDP-11 Options
23130 Use hardware FPP floating point. This is the default. (FIS
23131 floating point on the PDP-11/40 is not supported.) Implies -m45.
23134 Do not use hardware floating point.
23138 syntax).
23141 Return floating-point results in memory. This is the default.
23144 Generate code for a PDP-11/40. Implies -msoft-float -mno-split.
23147 Generate code for a PDP-11/45. This is the default.
23150 Generate code for a PDP-11/10. Implies -msoft-float -mno-split.
23154 Use 16-bit 'int'. This is the default.
23158 Use 32-bit 'int'.
23161 Target has split instruction and data space. Implies -m45.
23164 Use Unix assembler syntax.
23167 Use DEC assembler syntax.
23170 Use GNU assembler syntax. This is the default.
23173 Use the new LRA register allocator. By default, the old "reload"
23174 allocator is used.
23177 File: gcc.info, Node: picoChip Options, Next: PowerPC Options, Prev: PDP-11 Options, Up: Submod…
23179 3.19.39 picoChip Options
23186 parameters for array element type AE_TYPE. Supported values for
23187 AE_TYPE are 'ANY', 'MUL', and 'MAC'.
23189 '-mae=ANY' selects a completely generic AE type. Code generated
23190 with this option runs on any of the other AE types. The code is
23192 and some types of operation (e.g., multiplication) do not work
23193 properly on all types of AE.
23195 '-mae=MUL' selects a MUL AE type. This is the most useful AE type
23196 for compiled code, and is the default.
23198 '-mae=MAC' selects a DSP-style MAC AE. Code compiled with this
23201 for byte load/stores.
23205 a load/store instruction, without first loading it into a register.
23207 run faster than when the option isn't used. However, the results
23209 rather than being permanently enabled.
23212 Disables warnings about the generation of inefficient code. These
23214 performs byte-level memory operations on the MAC AE type. The MAC
23217 operations. This is inefficient and a warning is generated to
23219 or to target an AE type that has the necessary hardware support.
23220 This option disables these warnings.
23223 File: gcc.info, Node: PowerPC Options, Next: PRU Options, Prev: picoChip Options, Up: Submodel …
23225 3.19.40 PowerPC Options
23228 These are listed under *Note RS/6000 and PowerPC Options::.
23231 File: gcc.info, Node: PRU Options, Next: RISC-V Options, Prev: PowerPC Options, Up: Submodel Op…
23233 3.19.41 PRU Options
23240 initializers and constructors. Using this option can significantly
23241 reduce the size of the final ELF binary. Beware that the compiler
23243 constructors. It is up to the programmer to ensure that the source
23244 program will not use those features.
23247 Specify the PRU MCU variant to use. Check Newlib for the exact
23248 list of supported MCUs.
23252 instead of the '--relax' option.
23255 Allow (or do not allow) GCC to use the LOOP instruction.
23258 Specify the ABI variant to output code for. '-mabi=ti' selects the
23260 copes more naturally with certain GCC assumptions. These are the
23265 whereas GNU supports only 32-bit data and code pointers.
23269 a hidden pointer as the first argument of the function. TI
23271 caller is not using the returned value. GNU always passes and
23272 expects a valid return value pointer.
23275 when any of the above code constructs is detected. As a
23277 omitted when linking with '-mabi=ti'.
23280 using '-mabi=ti'. The TI toolchain does not emit relocations for
23282 shortening adjacent LDI32 pseudo instructions.
23285 File: gcc.info, Node: RISC-V Options, Next: RL78 Options, Prev: PRU Options, Up: Submodel Optio…
23287 3.19.42 RISC-V Options
23293 Set the cost of branches to roughly N instructions.
23297 When generating PIC code, do or don't allow the use of PLTs.
23298 Ignored for non-PIC. The default is '-mplt'.
23301 Specify integer and floating-point calling convention. ABI-STRING
23303 used for floating-point types. For example '-march=rv64ifd
23306 64 bits wide are passed in F registers. Contrast this with
23311 arguments will be passed in registers.
23314 specific calling convention should specify one explicitly. The
23316 'lp64f', and 'lp64d'. Some calling conventions are impossible to
23319 registers, but F registers are only 32 bits wide. There is also
23321 architecture. This ABI is not well specified at present, and is
23322 subject to change.
23327 instructions. This requires the F or D extensions for
23328 floating-point registers. The default is to use them if the
23329 specified architecture has these instructions.
23333 Do or don't use hardware instructions for integer division. This
23334 requires the M extension. The default is to use them if the
23335 specified architecture has these instructions.
23338 Generate code for given RISC-V ISA (e.g. 'rv64im'). ISA strings
23339 must be lower-case. Examples include 'rv64i', 'rv32g', 'rv32e',
23340 and 'rv32imaf'.
23344 microarchitecture name. Permissible values for this option are:
23346 and 'size'.
23348 When '-mtune=' is not specified, the default is 'rocket'.
23350 The 'size' choice is not intended for use by end-users. This is
23351 used when '-Os' is specified. It overrides the instruction cost
23353 info. This helps reduce code size while still giving good
23354 performance.
23358 byte boundary. If '-mpreferred-stack-boundary' is not specified,
23359 the default is 4 (16 bytes or 128-bits).
23362 with the same value, including any libraries. This includes the
23363 system libraries and startup modules.
23367 section (on some targets).
23372 uses library function calls. The default is to use fast inline
23373 prologues and epilogues.
23377 Do not or do generate unaligned memory accesses. The default is
23379 supports fast unaligned access or not.
23382 Generate code for the medium-low code model. The program and its
23384 range and must lie between absolute addresses -2 GiB and +2 GiB.
23385 Programs can be statically or dynamically linked. This is the
23386 default code model.
23389 Generate code for the medium-any code model. The program and its
23391 range. Programs can be statically or dynamically linked.
23396 symbolic addresses. The alternative is to use assembler macros
23397 instead, which may limit optimization.
23402 instructions required to materialize symbol addresses. The default
23403 is to take advantage of linker relaxations.
23408 into ELF objects. This feature requires at least binutils 2.32.
23412 or union types. Supported values for TYPE are 'xlen' which uses x
23414 natural alignment. 'xlen' is the default.
23417 File: gcc.info, Node: RL78 Options, Next: RS/6000 and PowerPC Options, Prev: RISC-V Options, Up…
23419 3.19.43 RL78 Options
23424 simulator.
23432 to be used. The simplest is 'none', which uses software for both
23433 multiplication and division. This is the default. The 'g13' value
23435 RL78/G13 (S2 core) targets. The 'g14' value selects the use of the
23437 (S3 core) parts. The value 'rl78' is an alias for 'g14' and the
23438 value 'mg10' is an alias for 'none'.
23441 setting of this option. Possible values are: '__RL78_MUL_NONE__',
23442 '__RL78_MUL_G13__' or '__RL78_MUL_G14__'.
23448 Specifies the RL78 core to target. The default is the G14 core,
23449 also known as an S3 core or just RL78. The G13 or S2 core does not
23451 peripheral for these operations. The G10 or S1 core does not have
23452 register banks, so it uses a different calling convention.
23456 '-mmul=none' option on the command line. Thus specifying
23459 multiplications altogether.
23464 multiply support. If these options are not specified on the
23466 even though the code targets the RL78 core. This is for backwards
23468 multiply and divide support.
23471 setting of this option. Possible values are: '__RL78_G10__',
23472 '__RL78_G13__' or '__RL78_G14__'.
23478 These are aliases for the corresponding '-mcpu=' option. They are
23479 provided for backwards compatibility.
23482 Allow the compiler to use all of the available registers. By
23483 default registers 'r24..r31' are reserved for use in interrupt
23484 handlers. With this option enabled these registers can be used in
23485 ordinary functions as well.
23490 bits ('-m32bit-doubles') in size. The default is
23491 '-m32bit-doubles'.
23496 registers. This is only necessary if normal code might use the
23498 division operations. The default is to ignore the MDUC registers
23499 as this makes the interrupt handlers faster. The target option
23501 available on the G13 target (S2 core). The MDUC registers will
23503 division operation or it calls another function.
23506 File: gcc.info, Node: RS/6000 and PowerPC Options, Next: RX Options, Prev: RL78 Options, Up: Su…
23508 3.19.44 IBM RS/6000 and PowerPC Options
23531 on the processor you are using. The default value of these options
23532 is determined when configuring GCC. Specifying the
23533 '-mcpu=CPU_TYPE' overrides the specification of these options. We
23535 options listed above.
23539 floating-point square root. Specifying '-mpowerpc-gfxopt' allows
23541 Graphics group, including floating-point select.
23545 other processors that support the PowerPC V2.01 architecture. The
23549 V2.02 architecture. The '-mpopcntd' option allows GCC to generate
23551 other processors that support the PowerPC V2.06 architecture. The
23554 processors that support the PowerPC V2.03 architecture. The
23557 processors that support the PowerPC V2.05 architecture. The
23559 floating-point instructions implemented on some POWER processors.
23563 architecture and to treat GPRs as 64-bit, doubleword quantities.
23564 GCC defaults to '-mno-powerpc64'.
23568 parameters for machine type CPU_TYPE. Supported values for
23576 'powerpc64le', 'rs64', and 'native'.
23582 purposes.
23586 system performing the compilation. '-mcpu=native' has no effect if
23587 GCC does not recognize the processor.
23589 The other options specify a specific processor. Code generated
23591 all on others.
23607 actual hardware's capabilities. If you wish to set an individual
23609 option, like '-mcpu=970 -mno-altivec'.
23613 have full support for these options. You may still enable or
23615 environment.
23620 as '-mcpu=CPU_TYPE' does. The same values for CPU_TYPE are used
23621 for '-mtune' as for '-mcpu'. If both are specified, the code
23623 the scheduling parameters set by '-mtune'.
23627 64k.
23631 static data may be up to a total of 4G in size. This is the
23632 default for 64-bit Linux.
23636 4G in size. Other data and code is only limited by the 64-bit
23637 address space.
23643 access to the AltiVec instruction set. You may also need to set
23645 enhancements.
23649 element order corresponding to the endianness of the target. That
23653 little-endian platform.
23657 Generate VRSAVE instructions when generating AltiVec code.
23660 Generate code that allows 'ld' and 'ld.so' to build executables and
23661 shared libraries with non-executable '.plt' and '.got' sections.
23662 This is a PowerPC 32-bit SYSV ABI option.
23665 Generate code that uses a BSS '.plt' section that 'ld.so' fills in,
23666 and requires '.plt' and '.got' sections that are both writable and
23667 executable. This is a PowerPC 32-bit SYSV ABI option.
23672 instructions.
23678 allow more direct access to the VSX instruction set.
23684 version 2.07 of the PowerPC ISA.
23690 instructions that were added in version 2.07 of the PowerPC ISA.
23696 and later processors.
23701 instructions that were added in version 2.07 of the PowerPC ISA.
23703 access to the vector instructions.
23708 memory instructions. The '-mquad-memory' option requires use of
23709 64-bit mode.
23714 instructions. The '-mquad-memory-atomic' option requires use of
23715 64-bit mode.
23721 point or hardware instructions.
23724 128-bit floating point support. The IEEE 128-bit floating point is
23725 only supported on Linux.
23728 using the VSX instruction set, and disabled on other systems.
23733 floating point instructions. Otherwise, if you do not specify to
23736 software emulation.
23741 __FLOAT128 data type.
23745 systems.
23750 targets (including GNU/Linux). The 32-bit environment sets int,
23752 PowerPC variant. The 64-bit environment sets int to 32 bits and
23754 for '-mpowerpc64'.
23761 for every executable file. The '-mfull-toc' option is selected by
23762 default. In that case, GCC allocates at least one TOC entry for
23763 each unique non-automatic variable reference in your program. GCC
23764 also places floating-point constants in the TOC. However, only
23765 16,384 entries are available in the TOC.
23770 options. '-mno-fp-in-toc' prevents GCC from putting floating-point
23773 instead of putting that sum into the TOC. You may specify one or
23774 both of these options. Each causes GCC to produce very slightly
23775 slower and larger code at the expense of conserving TOC space.
23778 of these options, specify '-mminimal-toc' instead. This option
23779 causes GCC to make only one TOC entry for every file. When you
23781 but which uses extremely little TOC space. You may wish to use
23783 code.
23788 64-bit 'long' type, and the infrastructure needed to support them.
23790 disables the 64-bit ABI and implies '-mno-powerpc64'. GCC defaults
23791 to '-maix32'.
23796 semantics when using AIX-compatible ABI. Pass floating-point
23798 (RSA) on the stack in addition to argument FPRs. Do not assume
23800 properly rounded when comparing values and converting to double.
23801 Use XL symbol names for long double support routines.
23806 declared. IBM XL compilers access floating-point arguments that do
23808 without optimization. Because always storing floating-point
23811 subroutines compiled by IBM XL compilers without optimization.
23814 Support "IBM RS/6000 SP" "Parallel Environment" (PE). Link an
23816 code to enable the application to run. The system must have PE
23817 installed in the standard location ('/usr/lpp/ppe.poe/'), or the
23819 specify the appropriate directory location. The Parallel
23821 '-pthread' option are incompatible.
23828 boundary. The option '-malign-power' instructs GCC to follow the
23829 ABI-specified alignment rules. GCC defaults to the standard
23830 alignment defined in the ABI.
23833 '-malign-power' is not supported.
23838 set. Software floating-point emulation is provided if you use the
23839 '-msoft-float' option, and pass the option to GCC when linking.
23844 instructions and the store multiple word instructions. These
23846 generated on PowerPC systems. Do not use '-mmultiple' on
23848 when the processor is in little-endian mode. The exceptions are
23850 mode.
23856 calculated memory location. These instructions are generated by
23857 default. If you use '-mno-update', there is a small window between
23860 frame across interrupts or signals may get corrupted data.
23865 load or store instructions. These instructions can incur a
23868 boundary. This option is enabled by default when targeting Power6
23869 and disabled otherwise.
23874 and accumulate instructions. These instructions are generated by
23875 default if hardware floating point is used. The machine-dependent
23878 '-ffp-contract=off'.
23884 processors. These instructions are generated by default when
23885 targeting those processors.
23890 instruction on the IBM 405, 440, 464 and 476 processors. This
23892 processors.
23896 On System V.4 and embedded PowerPC systems do not (do) force
23898 base type of the bit-field.
23902 and has a size of 4 bytes. By using '-mno-bit-align', the
23903 structure is aligned to a 1-byte boundary and is 1 byte in size.
23907 On System V.4 and embedded PowerPC systems do not (do) assume that
23908 unaligned memory references are handled by the system.
23913 be relocated to a different address at run time. A simple embedded
23915 '.got2' and 4-byte locations listed in the '.fixup' section, a
23916 table of 32-bit addresses generated by this option. For this to
23918 '-mrelocatable' or '-mrelocatable-lib'. '-mrelocatable' code
23919 aligns the stack to an 8-byte boundary.
23923 Like '-mrelocatable', '-mrelocatable-lib' generates a '.fixup'
23926 '-mrelocatable'. Objects compiled with '-mrelocatable-lib' may be
23928 '-mrelocatable' options.
23932 On System V.4 and embedded PowerPC systems do not (do) assume that
23934 addresses used in the program.
23938 On System V.4 and embedded PowerPC systems compile code for the
23939 processor in little-endian mode. The '-mlittle-endian' option is
23940 the same as '-mlittle'.
23944 On System V.4 and embedded PowerPC systems compile code for the
23945 processor in big-endian mode. The '-mbig-endian' option is the
23946 same as '-mbig'.
23950 relocatable, but that its external references are relocatable. The
23952 libraries.
23956 than loading it in the prologue for each function. The runtime
23958 appropriate value before execution begins.
23962 restricted instructions during the second scheduling pass. The
23965 restricted instructions.
23969 target during instruction scheduling. The argument DEPENDENCE_TYPE
23973 No dependence is costly.
23976 All dependences are costly.
23979 A true dependence from store to load is costly.
23982 Any dependence from store to load is costly.
23986 to NUMBER is costly.
23990 second scheduling pass. The argument SCHEME takes one of the
23994 Don't insert NOPs.
23998 according to the scheduler's grouping.
24002 groups. Insert exactly as many NOPs as needed to force an
24004 grouping.
24008 groups. Insert NUMBER NOPs to force an insn to a new group.
24011 On System V.4 and embedded PowerPC systems compile code using
24014 supplement. This is the default unless you configured GCC using
24015 'powerpc-*-eabiaix'.
24019 Specify both '-mcall-sysv' and '-meabi' options.
24022 Specify both '-mcall-sysv' and '-mno-eabi' options.
24025 On System V.4 and embedded PowerPC systems compile code for the AIX
24026 operating system.
24029 On System V.4 and embedded PowerPC systems compile code for the
24030 Linux-based GNU system.
24033 On System V.4 and embedded PowerPC systems compile code for the
24034 FreeBSD operating system.
24037 On System V.4 and embedded PowerPC systems compile code for the
24038 NetBSD operating system.
24041 On System V.4 and embedded PowerPC systems compile code for the
24042 OpenBSD operating system.
24045 Select the type of traceback table. Valid values for
24046 TRACEBACK_TYPE are 'full', 'part', and 'no'.
24049 Return all structures in memory (as specified by the AIX ABI).
24053 by the SVR4 ABI).
24057 extension. Valid values are: 'altivec', 'no-altivec',
24059 'vec-extabi', 'vec-default'.
24062 Change the current ABI to use IBM extended-precision long double.
24064 extended-precision long double. If you change the long double type
24066 unless you use the '-Wno-psabi' option. Requires
24067 '-mlong-double-128' to be enabled.
24070 Change the current ABI to use IEEE extended-precision long double.
24072 extended-precision long double. If you change the long double type
24074 unless you use the '-Wno-psabi' option. Requires
24075 '-mlong-double-128' to be enabled.
24078 Change the current ABI to use the ELFv1 ABI. This is the default
24079 ABI for big-endian PowerPC 64-bit Linux. Overriding the default
24081 spectacular ways.
24084 Change the current ABI to use the ELFv2 ABI. This is the default
24085 ABI for little-endian PowerPC 64-bit Linux. Overriding the default
24087 spectacular ways.
24091 Emit .gnu_attribute assembly directives to set tag/value pairs in a
24092 .gnu.attributes section that specify ABI variations in function
24093 parameters or return values.
24097 On System V.4 and embedded PowerPC systems assume that all calls to
24098 variable argument functions are properly prototyped. Otherwise,
24103 arguments. With '-mprototype', only calls to prototyped variable
24104 argument functions set or clear the bit.
24108 called 'sim-crt0.o' and that the standard C libraries are
24109 'libsim.a' and 'libc.a'. This is the default for
24110 'powerpc-*-eabisim' configurations.
24114 called 'crt0.o' and the standard C libraries are 'libmvme.a' and
24115 'libc.a'.
24119 called 'crt0.o' and the standard C libraries are 'libads.a' and
24120 'libc.a'.
24124 called 'crt0.o' and the standard C libraries are 'libyk.a' and
24125 'libc.a'.
24128 On System V.4 and embedded PowerPC systems, specify that you are
24129 compiling for a VxWorks system.
24133 header to indicate that 'eabi' extended relocations are used.
24137 On System V.4 and embedded PowerPC systems do (do not) adhere to
24139 of modifications to the System V.4 specifications. Selecting
24143 to point to two separate small data areas. Selecting '-mno-eabi'
24146 option only uses 'r13' to point to a single small data area. The
24148 the 'powerpc*-*-eabi*' options.
24151 On System V.4 and embedded PowerPC systems, put small initialized
24152 'const' global and static data in the '.sdata2' section, which is
24153 pointed to by register 'r2'. Put small initialized non-'const'
24154 global and static data in the '.sdata' section, which is pointed to
24155 by register 'r13'. Put small uninitialized global and static data
24156 in the '.sbss' section, which is adjacent to the '.sdata' section.
24158 option. The '-msdata=eabi' option also sets the '-memb' option.
24161 On System V.4 and embedded PowerPC systems, put small global and
24162 static data in the '.sdata' section, which is pointed to by
24163 register 'r13'. Put small uninitialized global and static data in
24164 the '.sbss' section, which is adjacent to the '.sdata' section.
24166 option.
24170 On System V.4 and embedded PowerPC systems, if '-meabi' is used,
24172 same as '-msdata=sysv'.
24175 On System V.4 and embedded PowerPC systems, put small global data
24176 in the '.sdata' section. Put small uninitialized global data in
24177 the '.sbss' section. Do not use register 'r13' to address small
24178 data however. This is the default behavior unless other '-msdata'
24179 options are used.
24184 data in the '.data' section, and all uninitialized data in the
24185 '.bss' section.
24188 Put read-only objects in the '.sdata' section as well. This is the
24189 default.
24193 copies) less than or equal to NUM bytes. The minimum value for NUM
24194 is 32 bytes on 32-bit targets and 64 bytes on 64-bit targets. The
24195 default value is target-specific.
24200 bytes. If NUM is 0, all inline expansion (non-loop and loop) of
24201 block compare is disabled. The default value is target-specific.
24206 limit for non-loop inline block compare expansion. If the block
24208 'memcmp' is called to compare the remainder of the block. The
24209 default value is target-specific.
24212 Compare at most NUM string bytes with inline code. If the
24215 of the comparison. The default is 64 bytes.
24220 of the normal data or BSS section. By default, NUM is 8. The '-G
24221 NUM' switch is also passed to the linker. All modules should be
24222 compiled with the same '-G NUM' value.
24226 On System V.4 and embedded PowerPC systems do (do not) emit
24228 forms.
24233 more expensive calling sequence is required. This is required for
24235 location. A short call is generated if the compiler knows the call
24236 cannot be that far away. This setting can be overridden by the
24237 'shortcall' function attribute, or by '#pragma longcall(0)'.
24240 generating glue code on the fly. On these systems, long calls are
24241 unnecessary and generate slower code. As of this writing, the AIX
24242 linker can do this, as can the GNU linker for PowerPC/64. It is
24244 systems as well.
24248 sequence (see '-mpltseq'). PowerPC with '-mbss-plt' and PowerPC64
24249 ELFv1 (big-endian) do not support inline PLT calls.
24252 L42', plus a "branch island" (glue code). The two target addresses
24253 represent the callee and the branch island. The Darwin/PPC linker
24256 generates 'bl L42' to call the branch island. The branch island is
24258 32-bit address of the callee and jumps to it.
24262 whether to use or discard it.
24265 linker is known to generate glue.
24271 to functions in dlopen'd shared libraries. Inline PLT calls are
24275 if GCC is configured with '--enable-secureplt'. '-mpltseq' code
24277 linked together.
24282 specifying the function argument. The relocation allows the linker
24285 better schedule the sequence.
24292 root and divide for floating-point arguments. You should use the
24295 '-freciprocal-math' and '-fno-trapping-math'). Note that while the
24298 can be decreased by up to 2 ulp (i.e. the inverse of 1.0 equals
24299 0.99999994) for reciprocal square roots.
24303 used. OPT is a comma-separated list of options, which may be
24307 Enable all estimate instructions.
24310 Enable the default instructions, equivalent to '-mrecip'.
24313 Disable all estimate instructions, equivalent to '-mno-recip'.
24317 single and double precision.
24321 instructions.
24325 instructions.
24329 for both single and double precision.
24333 approximation instructions.
24337 approximation instructions.
24342 double-precision reciprocal square root calculations.
24348 ABI. Selecting '-mcpu=power6', '-mcpu=power7' or '-mcpu=power8'
24349 automatically selects '-mrecip-precision'. The double-precision
24352 converges after three steps.
24356 external library. The only type supported at present is 'mass',
24359 libraries. GCC currently emits calls to 'acosd2', 'acosf4',
24368 'tanhf4' when generating code for power7. Both '-ftree-vectorize'
24369 and '-funsafe-math-optimizations' must also be enabled. The MASS
24370 libraries must be specified at link time.
24377 point. The 'friz' instruction does not return the same value if
24378 the floating-point number is too large to fit in an integer.
24387 'r11'. The '-mpointers-to-nested-functions' is on by default. You
24390 you use '-mno-pointers-to-nested-functions'.
24396 calls through a pointer on AIX and 64-bit Linux systems. If the
24398 call through the pointer. The '-mno-save-toc-indirect' option is
24399 the default.
24405 of GCC.
24407 Older versions of GCC (prior to 4.9.0) incorrectly did not align a
24409 contained a member requiring 128-bit alignment. This is corrected
24410 in more recent versions of GCC. This option may be used to generate
24412 of GCC.
24414 The '-mno-compat-align-parm' option is the default.
24420 Generate stack protection code using canary at GUARD. Supported
24423 later).
24429 what offset from that base register. The default for those is as
24430 specified in the relevant ABI.
24432 symbol reference to a canary in the TLS block.
24436 Generate (do not generate) pc-relative addressing. The '-mpcrel'
24438 prefixed addressing ('-mprefixed') options are enabled.
24443 store instructions. The '-mprefixed' option requires that the
24444 option '-mcpu=power10' (or later) is enabled.
24448 Generate (do not generate) the MMA instructions. The '-mma' option
24449 requires that the option '-mcpu=power10' (or later) is enabled.
24452 File: gcc.info, Node: RX Options, Next: S/390 and zSeries Options, Prev: RS/6000 and PowerPC Opt…
24454 3.19.45 RX Options
24462 bits ('-m32bit-doubles') in size. The default is
24463 '-m32bit-doubles'. _Note_ RX floating-point hardware only works on
24464 32-bit values, which is why the default is '-m32bit-doubles'.
24469 floating-point hardware. The default is enabled for the RX600
24470 series and disabled for the RX200 series.
24474 doubles if the '-m64bit-doubles' option is used.
24477 '-funsafe-math-optimizations' is also enabled automatically. This
24478 is because the RX FPU instructions are themselves unsafe.
24481 Selects the type of RX CPU to be targeted. Currently three types
24483 the specific 'RX610' CPU. The default is 'RX600'.
24486 does not support the 'MVTIPL' instruction.
24489 so '-nofpu' is enabled by default when this type is selected.
24493 Store data (but not code) in the big-endian format. The default is
24494 '-mlittle-endian-data', i.e. to store data in the little-endian
24495 format.
24499 which can be placed into the small data area. Using the small data
24502 not overflow. Also when the small data area is used one of the
24504 area, so it is no longer available for use by the compiler. This
24506 onto the stack instead of being held in this register.
24510 assigned to other sections in the output executable.
24512 The default value is zero, which disables this feature. Note, this
24515 reserving a register. It is up to the programmer to experiment and
24516 discover whether this feature is of benefit to their program. See
24518 actual register to hold the small data area pointer is chosen.
24522 Use the simulator runtime. The default is to use the libgloss
24523 board-specific runtime.
24528 with Renesas's AS100 assembler. This syntax can also be handled by
24530 generated by default.
24534 used as an operand in a RX instruction. Although the RX
24537 instruction. Thus in some circumstances it can be beneficial to
24538 restrict the size of constants that are used in instructions.
24540 and referenced via register indirection.
24542 The value N can be between 0 and 4. A value of 0 (the default) or
24543 4 means that constants of any size are allowed.
24546 Enable linker relaxation. Linker relaxation is a process whereby
24548 shorter versions of various instructions. Disabled by default.
24552 handler functions. The value N can be between 0 and 4. A value of
24554 fast interrupt handlers. A value of 2 reserves 'r13' and 'r12'. A
24556 reserves 'r13' through 'r10'. A value of 0, the default, does not
24557 reserve any registers.
24561 accumulator register. This is only necessary if normal code might
24563 64-bit multiplications. The default is to ignore the accumulator
24564 as this makes the interrupt handlers faster.
24568 Enables the generation of position independent data. When enabled
24570 address held in a register. This allows the location of constant
24573 tight memory constraints. Data that can be modified is not
24574 affected by this option.
24577 the constant data base address. This can result in slower and/or
24578 larger code, especially in complicated functions.
24582 '-mint-register' command-line options are enabled. Starting with
24585 and finally '-msmall-data-limit'. Thus it is possible for the
24587 '-mpid' are specified on the command line.
24589 By default this feature is not enabled. The default can be
24590 restored via the '-mno-pid' command-line option.
24595 one fast interrupt handler when it is compiling a file. The
24597 found, as the RX only supports one such interrupt.
24603 'RMPA' instruction. These instructions may prefetch data, which is
24604 not safe to do if accessing an I/O register. (See section 12.2.7
24605 of the RX62N Group User's Manual for more information).
24610 cannot be disabled automatically. Instead it is reliant upon the
24612 program accesses I/O space.
24616 '__RX_DISALLOW_STRING_INSNS__'.
24620 Use only (or not only) 'JSR' instructions to access functions.
24622 instructions. Note that '-mno-jsr' does not mean to not use 'JSR'
24623 but instead means that any type of branch may be used.
24627 attribute. This attribute indicates a function intended to process fast
24628 interrupts. GCC ensures that it only uses the registers 'r10', 'r11',
24631 '-mint-register' command-line options.
24634 File: gcc.info, Node: S/390 and zSeries Options, Next: Score Options, Prev: RX Options, Up: Sub…
24636 3.19.46 S/390 and zSeries Options
24640 architecture.
24645 registers for floating-point operations. When '-msoft-float' is
24646 specified, functions in 'libgcc.a' are used to perform
24647 floating-point operations. When '-mhard-float' is specified, the
24648 compiler generates IEEE floating-point instructions. This is the
24649 default.
24654 for decimal-floating-point operations. When '-mno-hard-dfp' is
24655 specified, functions in 'libgcc.a' are used to perform
24656 decimal-floating-point operations. When '-mhard-dfp' is specified,
24658 instructions. This is the default for '-march=z9-ec' or higher.
24662 These switches control the size of 'long double' type. A size of
24664 type. This is the default.
24669 pointer into the callee's stack frame. A backchain may be needed
24671 frame information. When '-mno-packed-stack' is in effect, the
24674 topmost word of the 96/160 byte register save area.
24679 binary is built with '-mbackchain'. Note that the combination of
24681 supported. In order to build a linux kernel use '-msoft-float'.
24683 The default is to not maintain the backchain.
24687 Use (do not use) the packed stack layout. When '-mno-packed-stack'
24690 still take up stack space. When '-mpacked-stack' is specified,
24693 more efficient use of the available stack space. However, when
24696 register is always saved two words below the backchain.
24700 '-mno-packed-stack'. Note that some non-FSF releases of GCC 2.95
24702 backchain at run time, not just for debugging purposes. Such code
24703 is not call-compatible with code compiled with '-mpacked-stack'.
24705 and '-mhard-float' is not supported. In order to build a linux
24706 kernel use '-msoft-float'.
24708 The default is to not use the packed stack layout.
24713 do subroutine calls. This only works reliably if the total
24714 executable size does not exceed 64k. The default is to use the
24715 'basr' instruction instead, which does not have this limitation.
24720 for S/390 ABI. When '-m64' is specified, generate code compliant
24721 to the GNU/Linux for zSeries ABI. This allows GCC in particular to
24722 generate 64-bit instructions. For the 's390' targets, the default
24723 is '-m31', while the 's390x' targets default to '-m64'.
24728 available on z/Architecture. When '-mesa' is specified, generate
24729 code using the instructions available on ESA/390. Note that
24730 '-mesa' is not possible with '-m64'. When generating code
24731 compliant to the GNU/Linux for S/390 ABI, the default is '-mesa'.
24733 the default is '-mzarch'.
24740 S/390 System z Built-in Functions::. '-mhtm' is enabled by default
24741 when using '-march=zEC12'.
24747 IBM z13 machine generation. This option changes the ABI for some
24749 conventions. In case vector type values are being used in an
24750 ABI-relevant context a GAS '.gnu_attribute' command will be added
24751 to mark the resulting binary with the ABI used. '-mvx' is enabled
24752 by default when using '-march=z13'.
24758 facility introduced with the IBM z13 machine generation. This
24760 vector type variables and arguments. 'vector' is only available
24761 when GNU extensions are enabled. It will not be expanded when
24762 requesting strict standard compliance e.g. with '-std=c99'. In
24765 like Power and Cell. In order to make use of these builtins the
24766 header file 'vecintrin.h' needs to be included. '-mzvector' is
24767 disabled by default.
24772 perform block moves. When '-mno-mvcle' is specified, use a 'mvc'
24773 loop instead. This is the default unless optimizing for size.
24778 compiling. The default is to not print debug information.
24782 representing a certain processor type. Possible values for
24785 'z13'/'arch11', 'z14'/'arch12', 'z15'/'arch13', and 'native'.
24787 The default is '-march=z900'.
24790 architecture option for the host processor. '-march=native' has no
24791 effect if GCC does not recognize the processor.
24795 except for the ABI and the set of available instructions. The list
24796 of CPU-TYPE values is the same as for '-march'. The default is the
24797 value used for '-march'.
24802 to trace routines in the operating system. This option is off by
24803 default, even when compiling for the TPF OS.
24810 trace entries for the TPF OS. This option is off by default, even
24811 when compiling for the TPF OS and specifying '-mtpf-trace'.
24816 and accumulate instructions. These instructions are generated by
24817 default if hardware floating point is used.
24821 size. Because this is a compile-time check it doesn't need to be a
24822 real problem when the program runs. It is intended to identify
24823 functions that most probably cause a stack overflow. It is useful
24824 to be used in an environment with limited stack size e.g. the linux
24825 kernel.
24829 dynamically-sized arrays. This is generally a bad idea with a
24830 limited stack size.
24837 the stack on S/390 grows downward). If the STACK-GUARD option is
24839 compiled function is chosen. These options are intended to be used
24840 to help debugging stack overflow problems. The additionally
24842 in production-like systems without greater performance degradation.
24844 be greater than STACK-GUARD without exceeding 64k. In order to be
24846 at an address aligned to the value given by STACK-SIZE. The
24847 STACK-GUARD option can only be used in conjunction with STACK-SIZE.
24851 prologue is generated for all functions in the compilation unit.
24853 NOP instructions (PRE-HALFWORDS, maximum 1000000). After the
24855 like instructions the architecture allows (maximum 1000000).
24857 If both arguments are zero, hotpatching is disabled.
24860 'hotpatch' attribute.
24863 File: gcc.info, Node: Score Options, Next: SH Options, Prev: S/390 and zSeries Options, Up: Sub…
24865 3.19.47 Score Options
24871 Compile code for big-endian mode. This is the default.
24874 Compile code for little-endian mode.
24877 Disable generation of 'bcnz' instructions.
24880 Enable generation of unaligned load and store instructions.
24883 Enable the use of multiply-accumulate instructions. Disabled by
24884 default.
24887 Specify the SCORE5 as the target architecture.
24890 Specify the SCORE5U of the target architecture.
24893 Specify the SCORE7 as the target architecture. This is the
24894 default.
24897 Specify the SCORE7D as the target architecture.
24900 File: gcc.info, Node: SH Options, Next: Solaris 2 Options, Prev: Score Options, Up: Submodel Op…
24902 3.19.48 SH Options
24908 Generate code for the SH1.
24911 Generate code for the SH2.
24914 Generate code for the SH2e.
24918 way that the floating-point unit is not used.
24922 double-precision floating-point operations are used.
24926 in single-precision mode by default.
24930 in double-precision mode by default.
24933 Generate code for the SH3.
24936 Generate code for the SH3e.
24939 Generate code for the SH4 without a floating-point unit.
24943 supports single-precision arithmetic.
24947 single-precision mode by default.
24950 Generate code for the SH4.
24953 Generate code for SH4-100.
24957 unit is not used.
24961 single-precision mode by default.
24965 floating-point operations are used.
24968 Generate code for SH4-200.
24972 floating-point unit is not used.
24976 single-precision mode by default.
24980 floating-point operations are used.
24983 Generate code for SH4-300.
24987 floating-point unit is not used.
24991 floating-point operations are used.
24995 floating-point operations are used.
24998 Generate code for SH4-340 (no MMU, no FPU).
25001 Generate code for SH4-500 (no FPU). Passes '-isa=sh4-nofpu' to the
25002 assembler.
25006 the floating-point unit is not used.
25010 floating-point operations are used.
25014 single-precision mode by default.
25017 Generate code for the SH4a.
25021 the assembler. GCC doesn't generate any DSP instructions at the
25022 moment.
25025 Compile code for the processor in big-endian mode.
25028 Compile code for the processor in little-endian mode.
25031 Align doubles at 64-bit boundaries. Note that this changes the
25033 library do not work unless you recompile it first with '-mdalign'.
25037 the linker option '-relax'.
25040 Use 32-bit offsets in 'switch' tables. The default is to use
25041 16-bit offsets.
25044 Enable the use of bit manipulation instructions on SH2A.
25047 Enable the use of the instruction 'fmovd'. Check '-mdalign' for
25048 alignment constraints.
25051 Comply with the calling conventions defined by Renesas.
25055 Renesas conventions were available. This option is the default for
25056 all targets of the SH toolchain.
25060 given.
25066 unordered. By default '-mieee' is implicitly enabled. If
25069 comparisons. The implicit settings can be overridden by specifying
25070 either '-mieee' or '-mno-ieee'.
25074 up nested function trampolines. This option has no effect if
25076 (e.g. '-m4') does not allow the use of the 'icbi' instruction. If
25080 an associative write. This not only requires privileged mode at
25082 the TLB and has become unmapped.
25085 Dump instruction size and location in the assembly code.
25088 This option is deprecated. It pads structures to multiple of 4
25089 bytes, which is incompatible with the SH ABI.
25093 comma separated list. For details on the atomic built-in functions
25094 see *note __atomic Builtins::. The following models and parameters
25099 calls for atomic operations. This is the default if the
25100 target is not 'sh*-*-linux*'.
25104 for the atomic built-in functions. The generated atomic
25107 suitable for SH3* and SH4* single-core systems. This option
25109 SH3* or SH4*. When the target is SH4A, this option also
25110 partially utilizes the hardware atomic instructions 'movli.l'
25111 and 'movco.l' to create more efficient code, unless 'strict'
25112 is specified.
25116 thread control block. This is a variation of the gUSA
25117 sequences which can also be used on SH1* and SH2* targets.
25120 only suitable for single-core systems. When using this model,
25121 the 'gbr-offset=' parameter has to be specified as well.
25125 interrupts by setting 'SR.IMASK = 1111'. This model works
25127 suitable for single-core systems. Additional support from the
25129 required. This model is enabled by default when the target is
25130 'sh*-*-linux*' and SH1* or SH2*.
25133 Generate hardware atomic sequences using the 'movli.l' and
25134 'movco.l' instructions only. This is only available on SH4A
25135 and is suitable for multi-core systems. Since the hardware
25137 or 16 bit variables is emulated with 32 bit accesses. Code
25140 executed on an SH4A system. Additional support from the
25142 required for this model.
25148 been selected. For other models this parameter is ignored.
25150 the range 0-1020.
25155 atomic sequences of the specified model only.
25158 Generate the 'tas.b' opcode for '__atomic_test_and_set'. Notice
25161 operand cache line flushes that are implied by the 'tas.b'
25162 instruction. On multi-core SH4A processors the 'tas.b' instruction
25164 for certain cache configurations.
25169 Table.
25173 Don't allow (allow) the compiler generating privileged mode code.
25175 the inlined code would not work in user mode. '-musermode' is the
25176 default when the target is 'sh*-*-linux*'. If the target is SH1*
25177 or SH2* '-musermode' has no effect, since there is no user mode.
25180 Set the cost to assume for a multiply insn.
25184 operations. STRATEGY can be one of:
25188 instruction 'div1' to perform the operation. Division by zero
25189 calculates an unspecified result and does not trap. This is
25190 the default except for SH4, SH2A and SHcompact.
25194 precision floating point. Division by zero causes a
25195 floating-point exception. This is the default for SHcompact
25196 with FPU. Specifying this for targets that do not have a
25197 double precision FPU defaults to 'call-div1'.
25202 larger divisors. Division by zero calculates an unspecified
25203 result and does not trap. This is the default for SH4.
25205 instructions defaults to 'call-div1'.
25208 strategy is selected based on the current target. For SH2A the
25210 instead of library function calls.
25214 rather than around each call. Generally beneficial for performance
25215 and size. Also needed for unwinding to avoid changing the stack
25216 frame around conditional code.
25220 division to NAME. This only affects the name used in the 'call'
25223 present.
25226 Generate code treating the given register range as fixed registers.
25227 A fixed register is one that the register allocator cannot use.
25228 This is useful when compiling kernel code. A register range is
25229 specified as two registers separated by a dash. Multiple register
25230 ranges can be specified separated by a comma.
25233 Assume NUM to be the cost for a branch instruction. Higher numbers
25235 possible. If not specified the value is selected depending on the
25236 processor type that is being compiled for.
25241 instructions 'bt' and 'bf' are fast. If '-mzdcbranch' is
25243 sequences. This is enabled by default when generating code for SH4
25244 and SH4A. It can be explicitly disabled by specifying
25245 '-mno-zdcbranch'.
25250 be found. By default this option is disabled. It can be enabled
25251 to work around hardware bugs as found in the original SH7055.
25256 and accumulate instructions. These instructions are generated by
25257 default if hardware floating point is used. The machine-dependent
25260 '-ffp-contract=off'.
25265 sine and cosine approximations. The option '-mfsca' must be used
25266 in combination with '-funsafe-math-optimizations'. It is enabled
25267 by default when generating code for SH4A. Using '-mno-fsca'
25269 '-funsafe-math-optimizations' is in effect.
25274 reciprocal square root approximations. The option '-mfsrra' must
25276 '-ffinite-math-only'. It is enabled by default when generating
25277 code for SH4A. Using '-mno-fsrra' disables reciprocal square root
25279 '-ffinite-math-only' are in effect.
25283 instruction patterns. This can result in faster code on the SH4
25284 processor.
25287 Generate code using the FDPIC ABI.
25290 File: gcc.info, Node: Solaris 2 Options, Next: SPARC Options, Prev: SH Options, Up: Submodel Op…
25292 3.19.49 Solaris 2 Options
25299 capabilities generated by the Solaris assembler. This is only
25301 current machine, but check at runtime whether or not to use them.
25305 to not pass '-z text' to the linker when linking a shared object.
25307 shared object.
25310 allocatable but non-writable sections" linker error message.
25312 shared object is not actually shared across processes. Instead of
25314 '-fpic' or '-fPIC'.
25319 This is a synonym for '-pthread'.
25322 File: gcc.info, Node: SPARC Options, Next: System V Options, Prev: Solaris 2 Options, Up: Submo…
25324 3.19.50 SPARC Options
25332 2 through 4, which the SPARC SVR4 ABI reserves for applications.
25335 calls. This is the default.
25338 loss, specify '-mno-app-regs'. You should compile libraries and
25339 system software with this option.
25344 instructions and uses a "flat" or single register window model.
25345 This model is compatible with the regular register window model.
25347 as "call-saved" registers and are saved on the stack as needed.
25350 instructions (except for leaf functions). This is the normal
25351 operating mode.
25355 Generate output containing floating-point instructions. This is
25356 the default.
25360 Generate output containing library calls for floating point.
25362 targets. Normally the facilities of the machine's usual C compiler
25363 are used, but this cannot be done directly in cross-compilation.
25365 functions for cross-compilation. The embedded targets
25367 floating-point support.
25371 this option. In particular, you need to compile 'libgcc.a', the
25373 to work.
25377 instructions.
25381 double) floating-point instructions. The functions called are
25382 those specified in the SPARC ABI. This is the default.
25385 hardware support for the quad-word floating-point instructions.
25387 then the trap handler emulates the effect of the instruction.
25389 calling the ABI library routines. Thus the '-msoft-quad-float'
25390 option is the default.
25394 Assume that doubles have 8-byte alignment. This is the default.
25398 have an absolute address. Otherwise, it assumes they have 4-byte
25399 alignment. Specifying this option avoids some rare compatibility
25400 problems with code generated by other compilers. It is not the
25402 floating-point code.
25406 Do not generate code that can only run in supervisor mode. This is
25408 processor. This is the default.
25413 should have 8-byte alignment. This enables the use of pairs of
25415 place of twice as many 'ld' and 'st' pairs. However, the use of
25416 this changed alignment directly violates the SPARC ABI. Thus, it's
25419 the ABI.
25425 between the two sides of function calls, as per the 32-bit ABI.
25427 The default is '-mno-std-struct-return'. This option has no effect
25428 in 64-bit mode.
25432 Enable Local Register Allocation. This is the default for SPARC
25433 since GCC 7 so '-mno-lra' needs to be passed to get old Reload.
25437 parameters for machine type CPU_TYPE. Supported values for
25442 'niagara7' and 'm8'.
25446 processor. '-mcpu=native' has no effect if GCC does not recognize
25447 the processor.
25450 select an architecture and not an implementation. These are 'v7',
25451 'v8', 'sparclite', 'sparclet', 'v9'.
25454 implementations.
25473 the V7 variant of the SPARC architecture. With '-mcpu=cypress',
25475 chip, as used in the SPARCStation/SPARCServer 3xx series. This is
25476 also appropriate for the older SPARCStation 1, 2, IPX etc.
25479 architecture. The only difference from V7 code is that the
25481 which exist in SPARC-V8 but not in SPARC-V7. With
25484 series.
25487 variant of the SPARC architecture. This adds the integer multiply,
25489 SPARClite but not in SPARC-V7. With '-mcpu=f930', the compiler
25491 the original SPARClite, with no FPU. With '-mcpu=f934', the
25493 which is the more recent SPARClite with FPU.
25496 of the SPARC architecture. This adds the integer multiply,
25498 instructions which exist in SPARClet but not in SPARC-V7. With
25500 TEMIC SPARClet chip.
25503 architecture. This adds 64-bit integer and floating-point move
25505 and conditional move instructions. With '-mcpu=ultrasparc', the
25507 chips. With '-mcpu=ultrasparc3', the compiler additionally
25509 chips. With '-mcpu=niagara', the compiler additionally optimizes
25510 it for Sun UltraSPARC T1 chips. With '-mcpu=niagara2', the
25511 compiler additionally optimizes it for Sun UltraSPARC T2 chips.
25513 Sun UltraSPARC T3 chips. With '-mcpu=niagara4', the compiler
25514 additionally optimizes it for Sun UltraSPARC T4 chips. With
25516 SPARC M7 chips. With '-mcpu=m8', the compiler additionally
25517 optimizes it for Oracle M8 chips.
25522 the option '-mcpu=CPU_TYPE' does.
25526 a particular CPU implementation. Those are 'cypress',
25530 'niagara7' and 'm8'. With native Solaris and GNU/Linux toolchains,
25531 'native' can also be used.
25535 With '-mv8plus', GCC generates code for the SPARC-V8+ ABI. The
25537 considered 64 bits wide. This is enabled by default on Solaris in
25538 32-bit mode for all SPARC-V9 processors.
25543 UltraSPARC Visual Instruction Set extensions. The default is
25544 '-mno-vis'.
25549 2.0 of the UltraSPARC Visual Instruction Set extensions. The
25551 instructions, such as UltraSPARC-III and later. Setting '-mvis2'
25552 also sets '-mvis'.
25557 3.0 of the UltraSPARC Visual Instruction Set extensions. The
25559 instructions, such as niagara-3 and later. Setting '-mvis3' also
25560 sets '-mvis2' and '-mvis'.
25565 4.0 of the UltraSPARC Visual Instruction Set extensions. The
25567 instructions, such as niagara-7 and later. Setting '-mvis4' also
25568 sets '-mvis3', '-mvis2' and '-mvis'.
25575 Architecture 2017. The default is '-mvis4b' when targeting a cpu
25576 that supports such instructions, such as m8 and later. Setting
25577 '-mvis4b' also sets '-mvis4', '-mvis3', '-mvis2' and '-mvis'.
25582 UltraSPARC Compare-and-Branch-on-Condition instructions. The
25584 instructions, such as Niagara-4 and later.
25589 UltraSPARC Fused Multiply-Add Floating-point instructions. The
25591 instructions, such as Niagara-3 and later.
25596 Floating-point Multiply Single to Double (FsMULd) instruction. The
25598 architecture versions V8 or V9 with FPU except '-mcpu=leon'.
25603 UltraSPARC Population Count instruction. The default is '-mpopc'
25605 Niagara-2 and later.
25610 UltraSPARC Subtract-Extended-with-Carry instruction. The default
25612 instruction, such as Niagara-7 and later.
25617 AT697E processor).
25621 the data cache nullify errata of the UT699 processor.
25625 of the UT699E/UT700 processor.
25629 of the GR712RC processor.
25636 Generate code for a 32-bit or 64-bit environment. The 32-bit
25637 environment sets int, long and pointer to 32 bits. The 64-bit
25638 environment sets int to 32 bits and long and pointer to 64 bits.
25645 linked in the low 32 bits of memory. Programs can be
25646 statically or dynamically linked.
25652 must be located within 2GB of the text segment.
25658 within 2GB of the text segment.
25664 time). The global register %g4 points to the base of the data
25665 segment. Programs are statically linked and PIC is not
25666 supported.
25673 system.
25688 SPARC-V9 architecture manual, as set in the processor's 'PSTATE.MM'
25689 field.
25695 when making stack frame references. This is the default in 64-bit
25696 mode. Otherwise, assume no such offset is present.
25699 File: gcc.info, Node: System V Options, Next: TILE-Gx Options, Prev: SPARC Options, Up: Submode…
25701 3.19.51 Options for System V
25708 Create a shared object. It is recommended that '-symbolic' or
25709 '-shared' be used instead.
25713 '.ident' assembler directive in the output.
25716 Refrain from adding '.ident' directives to the output file (this is
25717 the default).
25721 with '-l'.
25724 Look in the directory DIR to find the M4 preprocessor. The
25725 assembler uses this option.
25728 File: gcc.info, Node: TILE-Gx Options, Next: TILEPro Options, Prev: System V Options, Up: Submo…
25730 3.19.52 TILE-Gx Options
25736 Generate code for the small model. The distance for direct calls
25737 is limited to 500M in either direction. PC-relative addresses are
25738 32 bits. Absolute addresses support the full address range.
25741 Generate code for the large model. There is no limitation on call
25742 distance, pc-relative addresses, or absolute addresses.
25745 Selects the type of CPU to be targeted. Currently the only
25746 supported type is 'tilegx'.
25750 Generate code for a 32-bit or 64-bit environment. The 32-bit
25751 environment sets int, long, and pointer to 32 bits. The 64-bit
25752 environment sets int to 32 bits and long and pointer to 64 bits.
25756 Generate code in big/little endian mode, respectively.
25759 File: gcc.info, Node: TILEPro Options, Next: V850 Options, Prev: TILE-Gx Options, Up: Submodel …
25761 3.19.53 TILEPro Options
25767 Selects the type of CPU to be targeted. Currently the only
25768 supported type is 'tilepro'.
25772 pointer to 32 bits. This is the only supported behavior so the
25773 flag is essentially ignored.
25776 File: gcc.info, Node: V850 Options, Next: VAX Options, Prev: TILEPro Options, Up: Submodel Opti…
25778 3.19.54 V850 Options
25785 Treat all calls as being far away (near). If calls are assumed to
25787 a register, and calls indirect through the pointer.
25793 use the shorter 'sld' and 'sst' instructions. The '-mep' option is
25794 on by default if you optimize.
25799 registers at the prologue and epilogue of a function. The external
25801 function saves the same number of registers. The
25802 '-mprolog-function' option is on by default if you optimize.
25805 Try to make the code as small as possible. At present, this just
25806 turns on the '-mep' and '-mprolog-function' options.
25810 the tiny data area that register 'ep' points to. The tiny data
25812 references).
25816 the small data area that register 'gp' points to. The small data
25817 area can hold up to 64 kilobytes.
25821 the first 32 kilobytes of memory.
25824 Specify that the target processor is the V850.
25827 Specify that the target processor is the V850E3V5. The
25829 used.
25832 Specify that the target processor is the V850E3V5. This is an
25833 alias for the '-mv850e3v5' option.
25836 Specify that the target processor is the V850E2V3. The
25838 used.
25841 Specify that the target processor is the V850E2. The preprocessor
25842 constant '__v850e2__' is defined if this option is used.
25845 Specify that the target processor is the V850E1. The preprocessor
25847 is used.
25850 Specify that the target processor is the V850ES. This is an alias
25851 for the '-mv850e1' option.
25854 Specify that the target processor is the V850E. The preprocessor
25855 constant '__v850e__' is defined if this option is used.
25860 constant is defined.
25863 defined, regardless of which processor variant is the target.
25869 v850 architecture.
25872 '-mrh850-abi'), and disabled by default when the GCC ABI is in use.
25874 symbol '__V850_CALLT__' is defined.
25879 the assembler.
25884 instructions.
25889 instructions. This option is only significant when the target
25890 architecture is 'V850E2V3' or higher. If hardware floating point
25893 defined.
25896 Enables the use of the e3v5 LOOP instruction. The use of this
25898 selected because its use is still experimental.
25902 Enables support for the RH850 version of the V850 ABI. This is the
25903 default. With this version of the ABI the following rules apply:
25906 pointer rather than a register.
25909 passed by value.
25911 * Functions are aligned to 16-bit boundaries.
25913 * The '-m8byte-align' command-line option is supported.
25916 default. The '-mno-disable-callt' command-line option is not
25917 supported.
25920 '__V850_RH850_ABI__' is defined.
25923 Enables support for the old GCC version of the V850 ABI. With this
25927 'r10'.
25930 passed by reference.
25933 for size.
25935 * The '-m8byte-align' command-line option is not supported.
25938 enabled by default.
25941 '__V850_GCC_ABI__' is defined.
25946 8-byte boundaries. The default is to restrict the alignment of all
25947 objects to at most 4-bytes. When '-m8byte-align' is in effect the
25948 C preprocessor symbol '__V850_8BYTE_ALIGN__' is defined.
25951 Generate code suitable for big switch tables. Use this option only
25953 a switch table.
25957 the compiler. This setting is the default.
25960 This option causes r2 and r5 to be treated as fixed registers.
25963 File: gcc.info, Node: VAX Options, Next: Visium Options, Prev: V850 Options, Up: Submodel Optio…
25965 3.19.55 VAX Options
25972 the Unix assembler for the VAX cannot handle across long ranges.
25976 assembler is being used.
25980 D-format.
25983 File: gcc.info, Node: Visium Options, Next: VMS Options, Prev: VAX Options, Up: Submodel Options
25985 3.19.56 Visium Options
25990 target should be linked with this option. It causes the libraries
25991 libc.a and libdebug.a to be linked. The program should be run on
25992 the target under the control of the GDB remote debugging stub.
25996 simulator should be linked with option. This causes libraries
25997 libc.a and libsim.a to be linked.
26001 Generate code containing floating-point instructions. This is the
26002 default.
26006 Generate code containing library calls for floating-point.
26010 this option. In particular, you need to compile 'libgcc.a', the
26012 to work.
26016 parameters for machine type CPU_TYPE. Supported values for
26017 CPU_TYPE are 'mcm', 'gr5' and 'gr6'.
26019 'mcm' is a synonym of 'gr5' present for backward compatibility.
26022 the GR5 variant of the Visium architecture.
26025 Visium architecture. The only difference from GR5 code is that the
26026 compiler will generate block move instructions.
26031 the option '-mcpu=CPU_TYPE' would.
26035 restrictions on the access to general registers. This is the
26036 default.
26042 affected.
26045 File: gcc.info, Node: VMS Options, Next: VxWorks Options, Prev: Visium Options, Up: Submodel Op…
26047 3.19.57 VMS Options
26053 Return VMS condition codes from 'main'. The default is to return
26054 POSIX-style condition (e.g. error) codes.
26058 routine for the debugger.
26061 Default to 64-bit memory allocation routines.
26064 Set the default size of pointers. Possible options for SIZE are
26066 pointers, and 'no' for supporting only 32 bit pointers. The later
26067 option disables 'pragma pointer_size'.
26070 File: gcc.info, Node: VxWorks Options, Next: x86 Options, Prev: VMS Options, Up: Submodel Optio…
26072 3.19.58 VxWorks Options
26075 The options in this section are defined for all VxWorks targets.
26077 options for that target.
26081 processes (RTPs). This option switches from the former to the
26082 latter. It also defines the preprocessor macro '__RTP__'.
26086 libraries. The options '-static' and '-shared' can also be used
26087 for RTPs (*note Link Options::); '-static' is the default.
26091 These options are passed down to the linker. They are defined for
26092 compatibility with Diab.
26095 Enable lazy binding of function calls. This option is equivalent
26096 to '-Wl,-z,now' and is defined for compatibility with Diab.
26099 Disable lazy binding of function calls. This option is the default
26100 and is defined for compatibility with Diab.
26103 File: gcc.info, Node: x86 Options, Next: x86 Windows Options, Prev: VxWorks Options, Up: Submod…
26105 3.19.59 x86 Options
26108 These '-m' options are defined for the x86 family of computers.
26111 Generate instructions for the machine type CPU-TYPE. In contrast
26114 that may not run at all on processors other than the one indicated.
26115 Specifying '-march=CPU-TYPE' implies '-mtune=CPU-TYPE'.
26121 by determining the processor type of the compiling machine.
26124 on different machines). Using '-mtune=native' produces code
26126 selected instruction set.
26129 A generic CPU with 64-bit extensions.
26132 Original Intel i386 CPU.
26135 Intel i486 CPU. (No scheduling is implemented for this chip.)
26139 Intel Pentium CPU with no MMX support.
26142 Intel Lakemont MCU, based on Intel Pentium CPU.
26146 instruction set support.
26149 Intel Pentium Pro CPU.
26153 used, so the code runs on all i686 family chips. When used
26154 with '-mtune', it has the same meaning as 'generic'.
26158 instruction set support.
26163 SSE instruction set support.
26167 with MMX, SSE and SSE2 instruction set support. Used by
26168 Centrino notebooks.
26173 support.
26177 and SSE3 instruction set support.
26181 extensions, MMX, SSE, SSE2 and SSE3 instruction set support.
26185 and SSSE3 instruction set support.
26189 SSE3, SSSE3, SSE4.1, SSE4.2 and POPCNT instruction set
26190 support.
26194 SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES and PCLMUL
26195 instruction set support.
26199 SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES and PCLMUL
26200 instruction set support.
26204 SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL,
26205 FSGSBASE, RDRND and F16C instruction set support.
26209 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
26211 set support.
26215 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
26217 PREFETCHW instruction set support.
26221 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
26224 support.
26228 SSE2, SSE3 and SSSE3 instruction set support.
26232 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
26233 PCLMUL and RDRND instruction set support.
26237 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
26239 instruction set support.
26243 SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
26246 support.
26250 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
26253 CLDEMOTE and WAITPKG instruction set support.
26257 SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2,
26260 AVX512CD instruction set support.
26264 SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2,
26268 instruction set support.
26272 SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX,
26276 set support.
26280 MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX,
26284 AVX512IFMA, SHA and UMIP instruction set support.
26288 SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX,
26294 instruction set support.
26298 SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX,
26304 PCONFIG and WBNOINVD instruction set support.
26308 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2,
26312 instruction set support.
26316 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2,
26320 AVX512BF16 instruction set support.
26324 SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2,
26331 KEYLOCKER instruction set support.
26334 AMD K6 CPU with MMX instruction set support.
26339 instruction set support.
26344 prefetch instructions support.
26350 full SSE instruction set support.
26358 64 FX processors. (This supersets MMX, SSE, SSE2, 3DNow!,
26359 enhanced 3DNow! and 64-bit instruction set extensions.)
26365 support.
26370 support. (This supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!,
26371 enhanced 3DNow!, ABM and 64-bit instruction set extensions.)
26375 support. (This supersets FMA4, AVX, XOP, LWP, AES, PCLMUL,
26376 CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM
26377 and 64-bit instruction set extensions.)
26381 support. (This supersets BMI, TBM, F16C, FMA, FMA4, AVX, XOP,
26383 SSE4.1, SSE4.2, ABM and 64-bit instruction set extensions.)
26387 support. (This supersets BMI, TBM, F16C, FMA, FMA4, FSGSBASE,
26389 SSSE3, SSE4.1, SSE4.2, ABM and 64-bit instruction set
26390 extensions.)
26394 support. (This supersets BMI, BMI2, TBM, F16C, FMA, FMA4,
26396 SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and 64-bit
26397 instruction set extensions.)
26401 support. (This supersets BMI, BMI2, F16C, FMA, FSGSBASE, AVX,
26403 MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2,
26405 instruction set extensions.)
26409 support. (This supersets BMI, BMI2, CLWB, F16C, FMA,
26412 SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT,
26413 RDPID, WBNOINVD, and 64-bit instruction set extensions.)
26417 support. (This supersets BMI, BMI2, CLWB, F16C, FMA,
26420 SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT,
26422 set extensions.)
26426 support. (This supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A,
26427 CX16, ABM and 64-bit instruction set extensions.)
26431 support. This includes MOVBE, F16C, BMI, AVX, PCLMUL, AES,
26432 SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX
26433 and 64-bit instruction set extensions.
26437 MMX instruction set support.
26441 MMX and 3DNow! instruction set support.
26444 VIA C3 CPU with MMX and 3DNow! instruction set support. (No
26445 scheduling is implemented for this chip.)
26449 support. (No scheduling is implemented for this chip.)
26453 set support. (No scheduling is implemented for this chip.)
26457 support. (No scheduling is implemented for this chip.)
26461 support. (No scheduling is implemented for this chip.)
26465 set support. (No scheduling is implemented for this chip.)
26469 instruction set support. (No scheduling is implemented for
26470 this chip.)
26474 SSE4.1, SSE4.2, AVX and AVX2 instruction set support. (No
26475 scheduling is implemented for this chip.)
26479 SSSE3 instruction set support. (No scheduling is implemented
26480 for this chip.)
26484 instruction set support. (No scheduling is implemented for
26485 this chip.)
26489 instruction set support. (No scheduling is implemented for
26490 this chip.)
26494 SSE4.1 instruction set support. (No scheduling is implemented
26495 for this chip.)
26499 SSSE3 and SSE4.1 instruction set support. (No scheduling is
26500 implemented for this chip.)
26504 SSSE3 and SSE4.1 instruction set support. (No scheduling is
26505 implemented for this chip.)
26509 set support.
26513 except for the ABI and the set of available instructions. While
26517 '-march=CPU-TYPE' option. For example, if GCC is configured for
26519 tuned for Pentium 4 but still runs on i686 machines.
26521 The choices for CPU-TYPE are the same as for '-march'. In
26526 processors. If you know the CPU on which your code will run,
26528 option instead of '-mtune=generic'. But, if you do not know
26530 should use this option.
26533 behavior of this option will change. Therefore, if you
26536 most common at the time that version of GCC is released.
26540 generic instruction set applicable to all processors. In
26542 collection of processors) for which the code is optimized.
26546 which are Haswell and Silvermont for this version of GCC. If
26549 '-mtune=intel'. But, if you want your application performs
26551 this option.
26554 behavior of this option will change. Therefore, if you
26557 processors at the time that version of GCC is released.
26561 common instruction set applicable to all processors. In
26563 collection of processors) for which the code is optimized.
26566 A deprecated synonym for '-mtune'.
26569 Generate floating-point arithmetic for selected unit UNIT. The
26574 majority of chips and emulated otherwise. Code compiled with
26575 this option runs almost everywhere. The temporary results are
26578 compared to most of other chips. See '-ffloat-store' for more
26579 detailed description.
26581 This is the default choice for non-Darwin x86-32 targets.
26585 instruction set. This instruction set is supported by Pentium
26587 XP and Athlon MP chips. The earlier version of the SSE
26590 done using 387. A later version, present only in Pentium 4
26592 too.
26596 this option effective. For the x86-64 compiler, these
26597 extensions are enabled by default.
26602 temporaries to be 80 bits.
26606 the SSE2 instruction set when '-ffast-math' is enabled.
26611 Attempt to utilize both instruction sets at once. This
26614 execution resources too. Use this option with care, as it is
26617 unstable performance.
26620 Output assembly instructions using selected DIALECT. Also affects
26622 extended 'asm' (*note Extended Asm::). Supported choices (in
26623 dialect order) are 'att' or 'intel'. The default is 'att'. Darwin
26624 does not support 'intel'.
26629 comparisons. These correctly handle the case where the result of a
26630 comparison is unordered.
26634 Generate output containing 80387 instructions for floating point.
26638 Generate output containing library calls for floating point.
26640 *Warning:* the requisite libraries are not part of GCC. Normally
26642 cannot be done directly in cross-compilation. You must make your
26644 cross-compilation.
26648 even if '-msoft-float' is used.
26651 Do not use the FPU registers for return values of functions.
26654 'float' and 'double' in an FPU register, even if there is no FPU.
26655 The idea is that the operating system should emulate an FPU.
26658 in ordinary CPU registers instead.
26662 instructions for the 387. Specify this option to avoid generating
26663 those instructions. This option is overridden when '-march'
26665 instruction does not need emulation. These instructions are not
26667 switch.
26672 variables on a two-word boundary or a one-word boundary. Aligning
26674 somewhat faster on a Pentium at the expense of more memory.
26676 On x86-64, '-malign-double' is enabled by default.
26682 compiled without that switch.
26686 These switches control the size of 'long double' type. The x86-32
26688 '-m96bit-long-double' is the default in 32-bit mode.
26691 aligned to an 8- or 16-byte boundary. In arrays or structures
26692 conforming to the ABI, this is not possible. So specifying
26694 by padding the 'long double' with an additional 32-bit zero.
26698 16-byte boundary.
26701 over the x87 standard of 80 bits for a 'long double'.
26706 convention for functions taking 'long double'. Hence they are not
26707 binary-compatible with code compiled without that switch.
26712 These switches control the size of 'long double' type. A size of
26714 type. This is the default for 32-bit Bionic C library. A size of
26716 '__float128' type. This is the default for 64-bit Bionic C
26717 library.
26722 convention for functions taking 'long double'. Hence they are not
26723 binary-compatible with code compiled without that switch.
26726 Control how GCC aligns variables. Supported values for TYPE are
26730 size. 'compat' is the default.
26734 THRESHOLD are placed in the large data section. This value must be
26736 65535.
26741 instruction, which pops their arguments while returning. This
26743 the arguments there.
26746 calling sequence with the function attribute 'stdcall'. You can
26748 'cdecl'. *Note Function Attributes::.
26752 libraries compiled with the Unix compiler.
26756 incorrect code is generated for calls to those functions.
26759 function with too many arguments. (Normally, extra arguments are
26760 harmlessly ignored.)
26763 Control how many registers are used to pass integer arguments. By
26765 registers can be used. You can control this behavior for a
26766 specific function by using the function attribute 'regparm'. *Note
26767 Function Attributes::.
26771 libraries. This includes the system libraries and startup modules.
26775 and return values. You can control this behavior for a specific
26776 function by using the function attribute 'sseregparm'. *Note
26777 Function Attributes::.
26780 with the same value, including any libraries. This includes the
26781 system libraries and startup modules.
26784 Return 8-byte vectors in memory instead of MMX registers. This is
26786 until version 12. _Only_ use this option if you need to remain
26788 versions or older versions of GCC.
26794 Set 80387 floating-point precision to 32, 64 or 80 bits. When
26801 default. When this option is used, floating-point operations in
26803 setting the FPU control word explicitly.
26806 default 80 bits can speed some programs by 2% or more. Note that
26811 used to set the precision to less than extended precision.
26814 Realign the stack at entry. On the x86, the '-mstackrealign'
26816 the run-time stack if necessary. This supports mixing legacy codes
26818 16-byte stack alignment for SSE compatibility. See also the
26820 functions.
26824 byte boundary. If '-mpreferred-stack-boundary' is not specified,
26825 the default is 4 (16 bytes or 128 bits).
26829 to keep the stack boundary aligned to 8 byte boundary. Since
26832 where stack space is important limitation. This option leads to
26835 misaligned stack. In this case, SSE instructions may lead to
26836 misaligned memory access traps. In addition, variable arguments
26838 long double and __int128), leading to wrong results. You must
26840 any libraries. This includes the system libraries and startup
26841 modules.
26845 boundary. If '-mincoming-stack-boundary' is not specified, the one
26846 specified by '-mpreferred-stack-boundary' is used.
26850 suffer significant run time performance penalties. On Pentium III,
26852 properly if it is not 16-byte aligned.
26856 the stack. Further, every function must be generated such that it
26857 keeps the stack aligned. Thus calling a function compiled with a
26859 lower preferred stack boundary most likely misaligns the stack. It
26861 default setting.
26864 increases code size. Code that is sensitive to stack space usage,
26866 reduce the preferred alignment to '-mpreferred-stack-boundary=2'.
26875 '-msse4.1'
26876 '-msse4.2'
26944 SSE2, SSE3, SSSE3, SSE4, SSE4A, SSE4.1, SSE4.2, AVX, AVX2, AVX512F,
26954 instruction sets. Each has a corresponding '-mno-' option to
26955 disable use of these instructions.
26959 enabled and disabled by these switches.
26962 code (as opposed to 387 instructions), see '-mfpmath=sse'.
26964 GCC depresses SSEx instructions when '-mavx' is used. Instead, it
26966 instructions when needed.
26969 generated code, even without '-mfpmath=sse'. Applications that
26971 supported architecture, using the appropriate flags. In
26973 compiled without these options.
26977 tuning features and default settings. The names can be used in
26978 '-mtune-ctrl=FEATURE-LIST'.
26982 features. FEATURE-LIST is a comma separated list of FEATURE names.
26983 See also '-mdump-tune-features'. When specified, the FEATURE is
26985 off. '-mtune-ctrl=FEATURE-LIST' is intended to be used by GCC
26986 developers. Using it may lead to code paths not covered by testing
26987 and can potentially result in compiler ICEs or runtime errors.
26990 This option instructs GCC to turn off all tunable features. See
26991 also '-mtune-ctrl=FEATURE-LIST' and '-mdump-tune-features'.
26995 prologue of functions that use string instructions. String
26997 or autodecrement mode. While the ABI specifies the DF flag to be
27000 dispatchers. The exception handler can be invoked with the DF flag
27002 are used. This option can be enabled by default on 32-bit x86
27004 option. Generation of 'cld' instructions can be suppressed with
27005 the '-mno-cld' compiler option in this case.
27011 intrinsics.
27015 of 256-bit AVX instructions in the auto-vectorizer.
27019 instructions instead of default on the selected platform.
27023 selected platform.
27026 Prefer 128-bit vector width for instructions.
27029 Prefer 256-bit vector width for instructions.
27032 Prefer 512-bit vector width for instructions.
27037 aligned 128-bit objects. This is useful for atomic updates of data
27038 structures exceeding one machine word in size. The compiler uses
27039 this instruction to implement *note __sync Builtins::. However,
27041 library call is always used.
27045 code. Early Intel Pentium 4 CPUs with Intel 64 support, prior to
27047 'LAHF' and 'SAHF' instructions which are supported by AMD64. These
27049 flags. In 64-bit mode, the 'SAHF' instruction is used to optimize
27051 Builtins:: for details.
27055 '__builtin_bswap32' and '__builtin_bswap64'.
27059 x86 Control-flow Enforcement Technology (CET).
27065 instruction.
27072 floating-point arguments. These instructions are generated only
27074 '-ffinite-math-only' and '-fno-trapping-math'. Note that while the
27077 decreased by up to 2 ulp (i.e. the inverse of 1.0 equals
27078 0.99999994).
27082 combination), and doesn't need '-mrecip'.
27087 option combination), and doesn't need '-mrecip'.
27091 used. OPT is a comma-separated list of options, which may be
27095 Enable all estimate instructions.
27098 Enable the default instructions, equivalent to '-mrecip'.
27101 Disable all estimate instructions, equivalent to '-mno-recip'.
27104 Enable the approximation for scalar division.
27107 Enable the approximation for vectorized division.
27110 Enable the approximation for scalar square root.
27113 Enable the approximation for vectorized square root.
27116 approximations, except for square root.
27120 external library. Supported values for TYPE are 'svml' for the
27122 library. To use this option, both '-ftree-vectorize' and
27124 ACML ABI-compatible library must be specified at link time.
27138 corresponding function type when '-mveclibabi=acml' is used.
27141 Generate code for the specified calling convention. Permissible
27143 and 'ms' for the Microsoft ABI. The default is to use the Microsoft
27145 systems. You can control this behavior for specific functions by
27146 using the function attributes 'ms_abi' and 'sysv_abi'. *Note
27147 Function Attributes::.
27150 Force all calls to functions to be indirect. This is useful when
27152 information for function calls.
27156 function attribute. This is useful when used with the option
27158 entry.
27163 clobbered. By default, the code for saving and restoring these
27165 and epilogues. Using '-mcall-ms2sysv-xlogues' emits prologues and
27168 of a few extra instructions.
27172 'gnu2' conventions. 'gnu' is the conservative default; 'gnu2' is
27174 that cannot be satisfied on all systems.
27178 Use PUSH operations to store outgoing parameters. This method is
27180 and is enabled by default. In some cases disabling it may improve
27182 dependencies.
27186 arguments is computed in the function prologue. This is faster on
27189 boundary is not equal to 2. The drawback is a notable increase in
27190 code size. This switch implies '-mno-push-args'.
27193 Support thread-safe exception handling on MinGW. Programs that rely
27195 with the '-mthreads' option. When compiling, '-mthreads' defines
27197 '-lmingwthrd' which cleans up per-thread exception-handling data.
27203 Microsoft Windows compiler.
27207 than the way GCC normally does. Particularly when moving packed
27210 necessary to access either format.
27212 This option is enabled by default for Microsoft Windows targets.
27214 type attributes. For more information, see *note x86 Variable
27215 Attributes:: and *note x86 Type Attributes::.
27218 exception of the bit-field packing. The padding and alignment of
27222 1. Structure members are stored sequentially in the order in
27224 memory address and the last member the highest.
27226 2. Every data object has an alignment requirement. The alignment
27230 pragma), whichever is less. For structures, unions, and
27232 requirement of its members. Every object is allocated an
27237 3. Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte
27241 requirements of the bit-fields.
27245 1. If a zero-length bit-field is inserted between two bit-fields
27246 that are normally coalesced, the bit-fields are not coalesced.
27257 The size of 't1' is 8 bytes with the zero-length bit-field.
27259 be 4 bytes.
27261 2. If a zero-length bit-field is inserted after a bit-field,
27264 aligned as the type of the zero-length bit-field.
27282 For 't2', 'bar' is placed at offset 2, rather than offset 1.
27283 Accordingly, the size of 't2' is 4. For 't3', the zero-length
27285 result, the size of the structure.
27290 1. If a zero-length bit-field follows a normal bit-field,
27292 alignment of the structure as whole. For example, 't2'
27294 follows a normal bit-field, and is of type short.
27296 2. Even if a zero-length bit-field is not followed by a
27306 Here, 't4' takes up 4 bytes.
27308 3. Zero-length bit-fields following non-bit-field members are
27318 Here, 't5' takes up 2 bytes.
27321 Do not align the destination of inlined string operations. This
27323 destination is already aligned, but GCC doesn't know about it.
27327 is known to be aligned to least a 4-byte boundary. This enables
27330 lengths. The option enables inline expansion of 'strlen' for all
27331 pointer alignments.
27335 inline code for small blocks and a library call for large blocks.
27339 algorithm to use for inlining string operations. The allowed
27345 Expand using i386 'rep' prefix of the specified size.
27350 Expand into an inline loop.
27353 Always use a library call.
27358 use when the expected size of the copy operation is known.
27360 triplets. ALG is specified in '-mstringop-strategy', MAX_SIZE
27362 allowed. For the last triplet, the MAX_SIZE must be '-1'. The
27364 increasing order. The minimal byte size for ALG is '0' for the
27365 first triplet and 'MAX_SIZE + 1' of the preceding range.
27369 control '__builtin_memset' expansion.
27372 Don't keep the frame pointer in a register for leaf functions.
27374 pointers and makes an extra register available in leaf functions.
27376 for leaf functions, which might make debugging harder.
27382 whether the thread base pointer must be added. Whether or not this
27384 segment to cover the entire TLS area.
27386 For systems that use the GNU C Library, the default is on.
27391 prefix. The option '-mavx' turns this on by default.
27396 before the prologue. Note: On x86 architectures the attribute
27398 '-pg'.
27403 that contains pointers to each profiling call. This is useful for
27404 automatically patching and out calls.
27409 functions as NOPs. This is useful when they should be patched in
27410 later dynamically. This is likely only useful together with
27411 '-mrecord-mcount'.
27415 with call to specified function. This only instruments true
27416 returns ending with ret, but not sibling calls ending with jump.
27418 __return__, or NOP5 to generate a 5 byte nop.
27423 instrumentation code.
27427 -mfentry functions.
27431 __mcount_loc).
27438 vector registers.
27443 misbehave or jump to a random location. GCC 4.4 or newer don't
27444 have those issues, regardless the RAX register value.
27449 is much faster than 32-bit/64-bit integer divide. This option
27450 generates a run-time check. If both dividend and divisor are
27452 instead of 32-bit/64-bit integer divide.
27456 Split 32-byte AVX unaligned load and store.
27461 Generate stack protection code using canary at GUARD. Supported
27463 canary in the TLS block (the default). This option has effect only
27464 when '-fstack-protector' or '-fstack-protector-all' is specified.
27470 reading the canary, and from what offset from that base register.
27471 The default for those is as specified in the relevant ABI.
27474 Generate code that uses only the general-purpose registers. This
27476 bound registers.
27479 Convert indirect call and jump with CHOICE. The default is 'keep',
27480 which keeps indirect call and jump unmodified. 'thunk' converts
27481 indirect call and jump to call and return thunk. 'thunk-inline'
27482 converts indirect call and jump to inlined call and return thunk.
27484 return thunk provided in a separate object file. You can control
27486 attribute 'indirect_branch'. *Note Function Attributes::.
27491 model.
27495 enable control-flow check.
27498 Convert function return with CHOICE. The default is 'keep', which
27499 keeps function return unmodified. 'thunk' converts function return
27500 to call and return thunk. 'thunk-inline' converts function return
27501 to inlined call and return thunk. 'thunk-extern' converts function
27503 object file. You can control this behavior for a specific function
27504 by using the function attribute 'function_return'. *Note Function
27505 Attributes::.
27509 enable control-flow check.
27514 model.
27517 Force indirect call and jump via register.
27520 processors in 64-bit environments.
27527 Generate code for a 16-bit, 32-bit or 64-bit environment. The
27529 generates code that runs in 32-bit mode.
27532 types to 64 bits, and generates code for the x86-64 architecture.
27534 '-mdynamic-no-pic' options.
27537 bits, and generates code for the x86-64 architecture.
27540 the '.code16gcc' assembly directive at the beginning of the
27541 assembly output so that the binary can run in 16-bit mode.
27544 psABI. It requires the '-m32' option to be turned on.
27547 Do not use a so-called "red zone" for x86-64 code. The red zone is
27551 without adjusting the stack pointer. The flag '-mno-red-zone'
27552 disables this red zone.
27556 must be linked in the lower 2 GB of the address space. Pointers
27557 are 64 bits. Programs can be statically or dynamically linked.
27558 This is the default code model.
27561 Generate code for the kernel code model. The kernel runs in the
27562 negative 2 GB of the address space. This model has to be used for
27563 Linux kernel code.
27567 lower 2 GB of the address space. Small symbols are also placed
27568 there. Symbols with sizes larger than '-mlarge-data-threshold' are
27569 put into large data or BSS sections and can be located above 2GB.
27570 Programs can be statically or dynamically linked.
27573 Generate code for the large model. This model makes no assumptions
27574 about addresses and sizes of sections.
27577 Generate code for long address mode. This is only supported for
27578 64-bit and x32 environments. It is the default address mode for
27579 64-bit environments.
27582 Generate code for short address mode. This is only supported for
27583 32-bit and x32 environments. It is the default address mode for
27584 32-bit and x32 environments.
27587 File: gcc.info, Node: x86 Windows Options, Next: Xstormy16 Options, Prev: x86 Options, Up: Subm…
27589 3.19.60 x86 Windows Options
27597 type required for console applications. This option is available
27599 targets.
27602 This option is available for Cygwin and MinGW targets. It
27605 entry point.
27608 This option is available for Cygwin and MinGW targets. It
27609 specifies that the 'dllimport' attribute should be ignored.
27612 This option is available for MinGW targets. It specifies that
27613 MinGW-specific thread support is to be used.
27616 This option is available for MinGW-w64 targets. It causes the
27618 Unicode-capable runtime startup code.
27621 This option is available for Cygwin and MinGW targets. It
27624 of runtime library/startup code.
27627 This option is available for Cygwin and MinGW targets. It
27629 the linker to set the PE header subsystem type appropriately.
27632 This option is available for MinGW targets. It specifies that the
27633 executable flag for the stack used by nested functions isn't set.
27636 privileges, isn't available.
27639 This option is available for MinGW and Cygwin targets. It
27641 '.data' section. This is a necessary for older runtimes not
27642 supporting modification of '.rdata' sections for pseudo-relocation.
27645 This option is available for Cygwin and MinGW targets. It
27648 generating code. It is enabled by default if GCC detects that the
27649 target assembler found during configuration supports the feature.
27651 See also under *note x86 Options:: for standard options.
27654 File: gcc.info, Node: Xstormy16 Options, Next: Xtensa Options, Prev: x86 Windows Options, Up: S…
27656 3.19.61 Xstormy16 Options
27662 Choose startup files and linker script suitable for the simulator.
27665 File: gcc.info, Node: Xtensa Options, Next: zSeries Options, Prev: Xstormy16 Options, Up: Submo…
27667 3.19.62 Xtensa Options
27675 constant values. The 'CONST16' instruction is currently not a
27676 standard option from Tensilica. When enabled, 'CONST16'
27678 instructions. The use of 'CONST16' is enabled by default only if
27679 the 'L32R' instruction is not available.
27684 instructions in the floating-point option. This has no effect if
27685 the floating-point option is not also enabled. Disabling fused
27688 operations. This may be desirable in some cases where strict IEEE
27692 the IEEE standard. Disabling fused multiply add/subtract
27695 operations.
27700 'volatile' memory references to guarantee sequential consistency.
27701 The default is '-mserialize-volatile'. Use
27702 '-mno-serialize-volatile' to omit the 'MEMW' instructions.
27707 compiling kernel code.
27711 These options control the treatment of literal pools. The default
27713 separate section in the output file. This allows the literal pool
27716 redundant literals and improve code size. With
27719 references. This may be necessary for large assembly files.
27720 Literals for each function are placed right before that function.
27724 These options control the treatment of literal pools. The default
27727 used. With '-mauto-litpools' the literals are interspersed in the
27728 text section by the assembler. Compiler does not produce explicit
27729 '.literal' directives and loads literals into registers with 'MOVI'
27731 and place literals as necessary. This option allows assembler to
27734 '-mtext-section-literals'.
27740 expense of some code density. The assembler attempts to widen
27742 following call instructions. If there are not enough preceding
27744 performed. The default is '-mtarget-align'. These options do not
27747 instructions or by inserting NOP instructions.
27754 call instruction. This translation typically occurs for calls to
27755 functions in other source files. Specifically, the assembler
27757 'CALLX' instruction. The default is '-mno-longcalls'. This option
27759 out of range. This option is implemented in the assembler, not the
27762 actual instructions. Note that the assembler uses an indirect call
27764 range.
27767 File: gcc.info, Node: zSeries Options, Prev: Xtensa Options, Up: Submodel Options
27769 3.19.63 zSeries Options
27772 These are listed under *Note S/390 and zSeries Options::.
27775 File: gcc.info, Node: Spec Files, Next: Environment Variables, Prev: Submodel Options, Up: Invo…
27780 'gcc' is a driver program. It performs its job by invoking a sequence
27781 of other programs to do the work of compiling, assembling and linking.
27784 to place on their command lines. This behavior is controlled by "spec
27785 strings". In most cases there is one spec string for each program that
27787 their behavior. The spec strings built into GCC can be overridden by
27788 using the '-specs=' command-line switch to specify a spec file.
27791 strings. They consist of a sequence of directives separated by blank
27792 lines. The type of directive is determined by the first non-whitespace
27796 Issues a COMMAND to the spec file processor. The commands that can
27801 the specs file.
27805 the include file cannot be found.
27808 Rename the spec string OLD_NAME to NEW_NAME.
27812 spec string. All lines after this directive up to the next
27814 string. If this results in an empty string then the spec is
27815 deleted. (Or, if the spec did not exist, then nothing happens.)
27817 created. If the spec does exist then its contents are overridden
27820 the spec.
27823 Creates a new '[SUFFIX] spec' pair. All lines after this directive
27825 up the spec string for the indicated suffix. When the compiler
27827 spec string in order to work out how to compile that file. For
27830 .ZZ:
27833 This says that any input file whose name ends in '.ZZ' should be
27836 '%i' substitution. (See below.)
27842 This says that the suffix is an alias for a known LANGUAGE.
27844 to specify a language explicitly. For example:
27846 .ZZ:
27849 Says that .ZZ files are, in fact, C++ source files.
27854 NAME compiler not installed on this system.
27856 GCC already has an extensive list of suffixes built into it. This
27860 technique.
27862 GCC has the following spec strings built into it. Spec files can
27863 override these strings or create their own. Note that individual
27864 targets can also add their own spec strings to this list.
27889 overrides the previous definition of 'lib' with a new one. The new
27891 text of the old definition.
27894 corresponding program. In addition, the spec strings can contain
27896 insert text into the command line. Using these constructs it is
27897 possible to generate quite complex command lines.
27899 Here is a table of all defined '%'-sequences for spec strings. Note
27901 expanding these sequences. Therefore you can concatenate them together
27902 or combine them with constant text in a single argument.
27905 Substitute one '%' into the program name or argument.
27908 Substitute the name of the input file being processed.
27911 Substitute the basename of the input file being processed. This is
27913 including the directory.
27917 the last period).
27921 file name, so that that file is deleted if GCC exits successfully.
27922 Unlike '%g', this contributes no text to the argument.
27926 per compilation, and mark the argument in the same way as '%d'. To
27929 file names are known. For example, '%g.s ... %g.o ... %g.s' might
27930 turn into 'ccUVUUAU.s ccXYAXZ12.o ccUVUUAU.s'. SUFFIX matches the
27931 regexp '[.A-Za-z]*' or the special string '%O', which is treated
27932 exactly as if '%O' had been preprocessed. Previously, '%g' was
27936 succeed.
27940 appears instead of once per compilation.
27944 generating a new one if there is no such last file name. In the
27946 they don't share the same suffix _space_, so '%g.s ... %U.s ...
27947 %g.s ... %U.s' involves the generation of two distinct file names,
27948 one for each '%g.s' and another for each '%U.s'. Previously, '%U'
27950 '%u', without regard to any appended suffix.
27955 the name of a temporary file, just like '%u'. This temporary file
27957 junk disposal mechanism.
27961 Like '%g', except if '-pipe' is in effect. In that case '%|'
27962 substitutes a single dash and '%m' substitutes nothing at all.
27964 should read from standard input or write to standard output. If
27966 construct: see for example 'gcc/fortran/lang-specs.h'.
27968 '%.SUFFIX'
27969 Substitutes .SUFFIX for the suffixes of a matched switch's args
27970 when it is subsequently output with '%*'. SUFFIX is terminated by
27971 the next space or %.
27975 designated output file of this compilation. This puts the argument
27976 into the sequence of arguments that '%o' substitutes.
27980 automatically placed around them. You should write spaces around
27981 the '%o' as well or the results are undefined. '%o' is for use in
27982 the specs for running the linker. Input files whose names have no
27984 among the output files, so they are linked.
27987 Substitutes the suffix for object files. Note that this is handled
27989 the need for those to form complete file names. The handling is
27993 for example, '.o'.
27997 target machine. Use this when running 'cpp'.
28002 '_L', where L is an uppercase letter. This is for ISO C.
28007 'COMPILER_PATH' and '-B' options) and '-imultilib' as necessary.
28011 sort. Search for that file in a standard list of directories and
28012 substitute the full name found. The current working directory is
28013 included in the list of directories scanned.
28016 Current argument is the name of a linker script. Search for that
28017 file in the current list of directories to scan for libraries. If
28019 line followed by the full path name found. If the file is not
28020 found then generate an error message. Note: the current working
28021 directory is not searched.
28024 Print STR as an error message. STR is terminated by a newline.
28025 Use this when inconsistent options are detected.
28028 Substitute the contents of spec string NAME at this point.
28031 Accumulate an option for '%X'.
28035 string.
28038 Output the accumulated assembler options specified by '-Wa'.
28041 Output the accumulated preprocessor options specified by '-Wp'.
28044 Process the 'asm' spec. This is used to compute the switches to be
28045 passed to the assembler.
28048 Process the 'asm_final' spec. This is a spec string for passing
28050 needed.
28053 Process the 'link' spec. This is the spec for computing the
28054 command line passed to the linker. Typically it makes use of the
28055 '%L %G %S %D and %E' sequences.
28059 contain startup files. If the target supports multilibs then the
28060 current multilib directory is prepended to each of these paths.
28063 Process the 'lib' spec. This is a spec string for deciding which
28064 libraries are included on the command line to the linker.
28067 Process the 'libgcc' spec. This is a spec string for deciding
28069 linker.
28072 Process the 'startfile' spec. This is a spec for deciding which
28073 object files are the first ones passed to the linker. Typically
28074 this might be a file named 'crt0.o'.
28077 Process the 'endfile' spec. This is a spec string that specifies
28078 the last object files that are passed to the linker.
28081 Process the 'cpp' spec. This is used to construct the arguments to
28082 be passed to the C preprocessor.
28085 Process the 'cc1' spec. This is used to construct the options to
28086 be passed to the actual C compiler ('cc1').
28089 Process the 'cc1plus' spec. This is used to construct the options
28090 to be passed to the actual C++ compiler ('cc1plus').
28093 Substitute the variable part of a matched option. See below. Note
28095 space.
28098 Remove all occurrences of '-S' from the command line. Note--this
28099 command is position dependent. '%' commands in the spec string
28101 this one do not.
28104 Call the named function FUNCTION, passing it ARGS. ARGS is first
28106 vector in the usual fashion. The function returns a string which
28108 spec.
28114 variable name and a string. If the environment variable is
28115 not defined, a fatal error is issued. Otherwise, the return
28117 with the string. For example, if 'TOPDIR' is defined as
28122 expands to '/path/to/top/include'.
28126 pathname to a file. If the file exists, 'if-exists' returns
28127 the pathname. Here is a small example of its usage:
28134 'if-exists' spec function, except that it takes two arguments.
28135 The first argument is an absolute pathname to a file. If the
28136 file exists, 'if-exists-else' returns the pathname. If it
28137 does not exist, it returns the second argument. This way,
28139 based on the existence of the first. Here is a small example
28147 The 'replace-outfile' spec function takes two arguments. It
28149 replaces it with the second argument. Here is a small example
28155 The 'remove-outfile' spec function takes one argument. It
28157 it. Here is a small example its usage:
28163 arguments. It finds any '-l' options and any non-options
28164 ending in '.a' (which it assumes are the names of linker input
28167 and joined by spaces. This list is intended to be passed to
28168 the LTO linker plugin.
28179 Use "-Wa,OPTION" to pass "OPTION" to the assembler.
28182 in the '--target-help' output.
28185 Substitutes the '-S' switch, if that switch is given to GCC. If
28186 that switch is not specified, this substitutes nothing. Note that
28188 automatically inserted if the substitution is performed. Thus the
28190 outputs the command-line option '-foo'.
28194 deleted on failure.
28198 with '-S', but which also take an argument. This is used for
28199 switches like '-o', '-D', '-I', etc. GCC considers '-o foo' as
28200 being one switch whose name starts with 'o'. %{o*} substitutes
28201 this text, including the space. Thus two arguments are generated.
28205 of 'S' and 'T' in the spec is not significant). There can be any
28207 optional. Useful for CPP as '%{D*&U*&A*}'.
28210 Substitutes 'X', if the '-S' switch is given to GCC.
28213 Substitutes 'X', if the '-S' switch is _not_ given to GCC.
28217 are specified to GCC. Normally 'X' is substituted only once, no
28218 matter how many such switches appeared. However, if '%*' appears
28221 the '*'.
28224 added after the end of the last substitution. If there is more
28225 text in the sequence, however, then a space is not generated. This
28226 allows the '%*' substitution to be used as part of a larger string.
28229 %{mcu=*:--script=%*/memory.ld}
28233 --script=newchip/memory.ld
28235 '%{.S:X}'
28236 Substitutes 'X', if processing a file with suffix 'S'.
28238 '%{!.S:X}'
28239 Substitutes 'X', if _not_ processing a file with suffix 'S'.
28242 Substitutes 'X', if processing a file for language 'S'.
28245 Substitutes 'X', if not processing a file for language 'S'.
28248 Substitutes 'X' if either '-S' or '-P' is given to GCC. This may
28249 be combined with '!', '.', ',', and '*' sequences as well, although
28250 they have a stronger binding than the '|'. If '%*' appears in 'X',
28252 matching alternative is substituted.
28256 %{.c:-foo} %{!.c:-bar} %{.c|d:-baz} %{!.c|d:-boggle}
28261 fred.c -foo -baz
28262 jim.d -bar -boggle
28263 -d fred.c -foo -baz -boggle
28264 -d jim.d -bar -baz -boggle
28269 GCC, substitutes 'Y'; else substitutes 'D'. There can be as many
28270 clauses as you need. This may be combined with '.', ',', '!', '|',
28271 and '*' as needed.
28276 otherwise specially treated. For example, '%{std=iso9899\:1999:X}'
28277 substitutes 'X' if the '-std=iso9899:1999' option is given.
28280 other nested '%' constructs or spaces, or even newlines. They are
28281 processed as usual, as described above. Trailing white space in 'X' is
28282 ignored. White space may also appear anywhere on the left side of the
28283 colon in these constructs, except between '.' or '*' and the
28284 corresponding word.
28287 these constructs. If another value of '-O' or the negated form of a
28290 one letter, which passes all matching options.
28294 only if '-pipe' is specified.
28296 It is built into GCC which switches take arguments and which do not.
28298 compiler's spec to say which switches take arguments. But this cannot
28299 be done in a consistent fashion. GCC cannot even decide which input
28302 compilers to run).
28306 proper position among the other output files.
28309 File: gcc.info, Node: Environment Variables, Next: Precompiled Headers, Prev: Spec Files, Up: I…
28315 operates. Some of them work by specifying directories or prefixes to
28316 use when searching for various kinds of files. Some are used to specify
28317 other aspects of the compilation environment.
28320 '-B', '-I' and '-L' (*note Directory Options::). These take precedence
28322 precedence over those specified by the configuration of GCC. *Note
28323 Controlling the Compilation Driver 'gcc': (gccint)Driver.
28331 national conventions. GCC inspects the locale categories
28332 'LC_CTYPE' and 'LC_MESSAGES' if it has been configured to do so.
28334 installation. A typical value is 'en_GB.UTF-8' for English in the
28335 United Kingdom encoded in UTF-8.
28338 classification. GCC uses it to determine the character boundaries
28341 as a string end or escape.
28344 use in diagnostic messages.
28349 variable. If none of these variables are set, GCC defaults to
28350 traditional C English behavior.
28354 files. GCC uses temporary files to hold the output of one stage of
28357 compiler proper.
28361 '-fcompare-debug' to the compiler driver. See the documentation of
28362 this option for more details.
28366 names of the subprograms executed by the compiler. No slash is
28368 but you can specify a prefix that ends with a slash if you wish.
28371 appropriate prefix to use based on the pathname it is invoked with.
28374 tries looking in the usual places for the subprogram.
28377 PREFIX is the prefix to the installed compiler. In many cases
28379 script.
28382 prefix.
28384 This prefix is also used for finding files such as 'crt0.o' that
28385 are used for linking.
28388 directories to search for header files. For each of the standard
28392 alternate directory name. Thus, with '-Bfoo/', GCC searches
28394 '/usr/local/lib/bar'. If a standard directory begins with the
28396 'GCC_EXEC_PREFIX' when looking for header files.
28400 directories, much like 'PATH'. GCC tries the directories thus
28402 subprograms using 'GCC_EXEC_PREFIX'.
28406 directories, much like 'PATH'. When configured as a native
28409 'GCC_EXEC_PREFIX'. Linking using GCC also uses these directories
28411 directories specified with '-L' come first).
28414 This variable is used to pass locale information to the compiler.
28417 and comments are parsed in C and C++. When the compiler is
28422 Recognize JIS characters.
28424 Recognize SJIS characters.
28426 Recognize EUCJP characters.
28430 to recognize and translate multibyte characters.
28433 preprocessor.
28441 files. The special character, 'PATH_SEPARATOR', is
28442 target-dependent and determined at GCC build time. For Microsoft
28444 targets it is a colon.
28448 the command line. This environment variable is used regardless of
28449 which language is being preprocessed.
28452 the particular language indicated. Each specifies a list of
28454 after any paths given with '-isystem' options on the command line.
28457 search its current working directory. Empty elements can appear at
28458 the beginning or end of a path. For instance, if the value of
28460 '-I. -I/special/include'.
28465 processed by the compiler. System header files are ignored in the
28466 dependency output.
28470 target name from the source file name. Or the value can have the
28472 FILE using TARGET as the target name.
28476 Options::), with an optional '-MT' switch too.
28481 rather than '-MM'. However, the dependence on the main input file
28482 is omitted. *Note Preprocessor Options::.
28488 reproducible.
28494 extension in the 'date' command.
28498 process.
28501 File: gcc.info, Node: Precompiled Headers, Prev: Environment Variables, Up: Invoking GCC
28507 source file. The time the compiler takes to process these header files
28509 build the project. To make builds faster, GCC allows you to
28510 "precompile" a header file.
28514 it as a C or C++ header file. You may want to use a tool like 'make' to
28516 change.
28519 the compilation. As it searches for the included file (*note Search
28520 Path: (cpp)Search Path.) the compiler looks for a precompiled header in
28522 directory. The name searched for is the name specified in the
28523 '#include' with '.gch' appended. If the precompiled header file cannot
28524 be used, it is ignored.
28526 For instance, if you have '#include "all.h"', and you have 'all.h.gch'
28527 in the same directory as 'all.h', then the precompiled header file is
28528 used if possible, and the original header is used otherwise.
28532 instead of) the directory containing the original header. Then, if you
28535 containing an '#error' command.
28537 This also works with '-include'. So yet another way to use precompiled
28541 '-include' the precompiled header. If the header files have guards
28543 been included (in the precompiled header).
28547 like 'all.h.gch', and put each precompiled header in the directory,
28548 perhaps using '-o'. It doesn't matter what you call the files in the
28549 directory; every precompiled header in the directory is considered. The
28551 this compilation is used; they're searched in no particular order.
28554 good sense, and the constraints of your build system.
28559 compilation.
28561 * A precompiled header cannot be used once the first C token is seen.
28563 you cannot include a precompiled header from inside another header.
28566 as the current compilation. You cannot use a C precompiled header
28567 for a C++ compilation.
28570 compiler binary as the current compilation is using.
28576 all.
28579 header is included; using a '#define' can also do it. There are
28581 '-Wdeprecated'; the same rule applies to macros defined this way.
28586 header. However, a precompiled header built using '-g' can be used
28587 in a compilation when no debugging information is being output.
28590 using the precompiled header. *Note Submodel Options::, for any
28591 cases where this rule is relaxed.
28600 generated. At present, it's not clear which options are safe to
28602 same options when generating and using the precompiled header. The
28611 identical PCH files. If you rely on stable PCH file contents
28612 disable ASLR when generating PCH files.
28615 the precompiled header if the conditions aren't met. If you find an
28618 Bugs::.
28622 the options. For instance, if you use '-g' to generate the precompiled
28624 information for routines in the precompiled header.
28627 File: gcc.info, Node: C Implementation, Next: C++ Implementation, Prev: Invoking GCC, Up: Top
28634 defined". The following lists all such areas, along with the section
28636 9899:2011 standards. Some areas are only implementation-defined in one
28637 version of the standard.
28641 listed as "determined by ABI" below. *Note Binary Compatibility:
28642 Compatibility, and <http://gcc.gnu.org/readings.html>. Some choices are
28643 documented in the preprocessor manual. *Note Implementation-defined
28644 behavior: (cpp)Implementation-defined behavior. Some choices are made
28647 details.
28669 File: gcc.info, Node: Translation implementation, Next: Environment implementation, Up: C Implem…
28675 C99 and C11 5.1.1.3).'
28677 Diagnostics consist of all the output sent to stderr by GCC.
28681 translation phase 3 (C90, C99 and C11 5.1.1.2).'
28684 behavior.
28687 File: gcc.info, Node: Environment implementation, Next: Identifiers implementation, Prev: Transl…
28693 of the C library, and are not defined by GCC itself.
28697 5.1.1.2).'
28700 behavior.
28703 File: gcc.info, Node: Identifiers implementation, Next: Characters implementation, Prev: Environ…
28710 6.4.2).'
28713 behavior.
28716 6.1.2, C90, C99 and C11 5.2.4.1, C99 and C11 6.4.2).'
28718 For internal names, all characters are significant. For external
28720 linker; for almost all targets, all characters are significant.
28723 external linkage (C90 6.1.2).'
28725 This is a property of the linker. C99 and C11 require that case
28727 linkage and systems without this property are not supported by GCC.
28730 File: gcc.info, Node: Characters implementation, Next: Integers implementation, Prev: Identifier…
28735 * 'The number of bits in a byte (C90 3.4, C99 and C11 3.6).'
28737 Determined by ABI.
28740 and C11 5.2.1).'
28742 Determined by ABI.
28746 C99 and C11 5.2.2).'
28748 Determined by ABI.
28752 (C90 6.1.2.5, C99 and C11 6.2.5).'
28754 Determined by ABI.
28757 representation, and behavior as "plain" 'char' (C90 6.1.2.5, C90
28758 6.2.1.1, C99 and C11 6.2.5, C99 and C11 6.3.1.1).'
28760 Determined by ABI. The options '-funsigned-char' and
28761 '-fsigned-char' change the default. *Note Options Controlling C
28762 Dialect: C Dialect Options.
28766 character set (C90 6.1.3.4, C99 and C11 6.4.4.4, C90, C99 and C11
28767 5.1.1.2).'
28769 Determined by ABI.
28773 does not map to a single-byte execution character (C90 6.1.3.4, C99
28774 and C11 6.4.4.4).'
28777 behavior.
28783 in the extended execution character set (C90 6.1.3.4, C99 and C11
28784 6.4.4.4).'
28787 behavior.
28792 character code (C90 6.1.3.4, C99 and C11 6.4.4.4).'
28795 behavior.
28799 character sequence (C11 6.4.5).'
28801 Such tokens may not be concatenated.
28804 corresponding wide character codes (C90 6.1.4, C99 and C11 6.4.5).'
28807 behavior.
28811 6.1.4, C99 and C11 6.4.5).'
28814 behavior.
28819 6.10.8.2).'
28822 behavior. 'char16_t' and 'char32_t' literals are always encoded in
28823 UTF-16 and UTF-32 respectively.
28826 File: gcc.info, Node: Integers implementation, Next: Floating point implementation, Prev: Charac…
28832 and C11 6.2.5).'
28834 GCC does not support any extended integer types.
28839 (C99 and C11 6.2.6.2).'
28842 patterns are ordinary values.
28845 integer type with the same precision (C99 and C11 6.3.1.1).'
28847 GCC does not support any extended integer types.
28851 object of that type (C90 6.2.1.2, C99 and C11 6.3.1.3).'
28854 2^N to be within range of the type; no signal is raised.
28857 6.3, C99 and C11 6.5).'
28861 immediately above the highest-value value bit. Signed '>>' acts on
28862 negative numbers by sign extension.
28866 as undefined. However, '-fsanitize=shift' (and
28867 '-fsanitize=undefined') will diagnose such cases. They are also
28868 diagnosed where constant expressions are required.
28870 * 'The sign of the remainder on integer division (C90 6.3.5).'
28873 division is truncated towards zero.
28876 File: gcc.info, Node: Floating point implementation, Next: Arrays and pointers implementation, P…
28882 functions in '<math.h>' and '<complex.h>' that return
28883 floating-point results (C90, C99 and C11 5.2.4.2.2).'
28885 The accuracy is unknown.
28888 'FLT_ROUNDS' (C90, C99 and C11 5.2.4.2.2).'
28890 GCC does not use such values.
28893 values of 'FLT_EVAL_METHOD' (C99 and C11 5.2.4.2.2).'
28895 GCC does not use such values.
28899 value (C90 6.2.1.3, C99 and C11 6.3.1.4).'
28901 C99 Annex F is followed.
28904 converted to a narrower floating-point number (C90 6.2.1.4, C99 and
28905 C11 6.3.1.5).'
28907 C99 Annex F is followed.
28912 6.1.3.1, C99 and C11 6.4.4.2).'
28914 C99 Annex F is followed.
28917 disallowed by the 'FP_CONTRACT' pragma (C99 and C11 6.5).'
28920 '-funsafe-math-optimizations' or '-ffast-math' are used. This is
28921 subject to change.
28924 7.6.1).'
28927 '-frounding-math' is used in which case it is "on".
28931 C11 7.6, C99 and C11 7.12).'
28934 not defined by GCC itself.
28937 7.12.2).'
28939 This pragma is not implemented. Expressions are currently only
28941 or '-ffast-math' are used. This is subject to change.
28945 an IEC 60559 conformant implementation (C99 F.9).'
28948 not defined by GCC itself.
28952 conformant implementation (C99 F.9).'
28955 not defined by GCC itself.
28958 File: gcc.info, Node: Arrays and pointers implementation, Next: Hints implementation, Prev: Floa…
28964 (C90 6.3.4, C99 and C11 6.3.2.3).'
28969 integer type, otherwise the bits are unchanged.
28975 the bits are unchanged.
28979 otherwise the behavior is undefined. That is, one may not use
28981 arithmetic as proscribed in C99 and C11 6.5.6/8.
28984 the same array (C90 6.3.6, C99 and C11 6.5.6).'
28987 determined by the ABI.
28992 'ptr_extend' pattern. Do not rely on sign extension.
28995 File: gcc.info, Node: Hints implementation, Next: Structures unions enumerations and bit-fields i…
29001 storage-class specifier are effective (C90 6.5.1, C99 and C11
29002 6.7.1).'
29008 *note Explicit Register Variables::.
29014 indicate and may never be placed in memory.
29017 in all circumstances. In those cases, GCC doesn't allocate
29018 any variables in registers unless they are marked 'register'.
29021 specifier are effective (C99 and C11 6.7.4).'
29024 used or if '-O0' is used. Otherwise, GCC may still be unable to
29026 used to determine if a function has not been inlined and why not.
29029 File: gcc.info, Node: Structures unions enumerations and bit-fields implementation, Next: Qualifi…
29035 different type (C90 6.3.2.3).'
29038 as an object of the type used for the access. *Note
29039 Type-punning::. This may be a trap representation.
29042 bit-field or as an 'unsigned int' bit-field (C90 6.5.2, C90
29043 6.5.2.1, C99 and C11 6.7.2, C99 and C11 6.7.2.1).'
29046 the '-funsigned-bitfields' option.
29049 'unsigned int' (C99 and C11 6.7.2.1).'
29052 permitted even in strictly conforming mode.
29054 * 'Whether atomic types are permitted for bit-fields (C11 6.7.2.1).'
29056 Atomic types are not permitted for bit-fields.
29059 6.5.2.1, C99 and C11 6.7.2.1).'
29061 Determined by ABI.
29063 * 'The order of allocation of bit-fields within a unit (C90 6.5.2.1,
29064 C99 and C11 6.7.2.1).'
29066 Determined by ABI.
29068 * 'The alignment of non-bit-field members of structures (C90 6.5.2.1,
29069 C99 and C11 6.7.2.1).'
29071 Determined by ABI.
29074 6.5.2.2, C99 and C11 6.7.2.2).'
29077 values in the enumeration, otherwise 'int'. If '-fshort-enums' is
29081 'unsigned int' that can represent all the values.
29084 by the ABI.
29087 File: gcc.info, Node: Qualifiers implementation, Next: Declarators implementation, Prev: Structu…
29093 volatile-qualified type (C90 6.5.3, C99 and C11 6.7.3).'
29096 accessing hardware. In most expressions, it is intuitively obvious
29097 what is a read and what is a write. For example
29104 store the value into the volatile object pointed to by DST. There
29106 for objects larger than 'int'.
29110 less obvious. For example
29116 type is the unqualified version of its original type, i.e. 'int'.
29119 side effects depends on this type.
29125 expression is only evaluated for its side effects.
29130 is performed as if the object's declared type were 'volatile S'.
29133 File: gcc.info, Node: Declarators implementation, Next: Statements implementation, Prev: Qualifi…
29139 structure or union type (C90 6.5.4).'
29141 GCC is only limited by available memory.
29144 File: gcc.info, Node: Statements implementation, Next: Preprocessing directives implementation, …
29150 6.6.4.2).'
29152 GCC is only limited by available memory.
29155 File: gcc.info, Node: Preprocessing directives implementation, Next: Library functions implementa…
29162 behavior.
29165 preprocessing tokens are recognized (C11 6.4, C11 6.4.7).'
29168 or external source file names (C90 6.1.7, C99 and C11 6.4.7).'
29172 character constant in the execution character set (C90 6.8.1, C99
29173 and C11 6.10.1).'
29177 negative value (C90 6.8.1, C99 and C11 6.10.1).'
29181 identified (C90 6.8.2, C99 and C11 6.10.2).'
29184 delimited header (C90 6.8.2, C99 and C11 6.10.2).'
29188 header name (C90 6.8.2, C99 and C11 6.10.2).'
29190 * 'The nesting limit for '#include' processing (C90 6.8.2, C99 and
29191 C11 6.10.2).'
29195 constant or string literal (C99 and C11 6.10.3.2).'
29198 6.8.6, C99 and C11 6.10.6).'
29201 on all targets. *Note Pragmas Accepted by GCC: Pragmas, for
29202 details of target-specific pragmas.
29205 the date and time of translation are not available (C90 6.8.8, C99
29206 6.10.8, C11 6.10.8.1).'
29209 File: gcc.info, Node: Library functions implementation, Next: Architecture implementation, Prev:…
29215 of the C library, and are not defined by GCC itself.
29218 7.1.6, C99 7.17, C11 7.19).'
29220 In '<stddef.h>', 'NULL' expands to '((void *)0)'. GCC does not
29222 implementations may use other definitions in those headers.
29225 File: gcc.info, Node: Architecture implementation, Next: Locale-specific behavior implementation,…
29231 headers '<float.h>', '<limits.h>', and '<stdint.h>' (C90, C99 and
29232 C11 5.2.4.2, C99 7.18.2, C99 7.18.3, C11 7.20.2, C11 7.20.3).'
29234 Determined by ABI.
29238 one with which it is associated (C11 6.2.4).'
29242 to any object.
29246 6.2.6.1).'
29248 Determined by ABI.
29251 which they are supported (C11 6.2.8).'
29254 of automatic storage duration. Alignments supported for objects of
29255 static and thread storage duration are determined by the ABI.
29258 expression for fundamental types, if any (C11 6.2.8).'
29260 Valid alignments are powers of 2 up to and including 2^{28}.
29263 (C90 6.3.3.4, C99 and C11 6.5.3.4).'
29265 Determined by ABI.
29268 File: gcc.info, Node: Locale-specific behavior implementation, Prev: Architecture implementation,…
29274 C library, and are not defined by GCC itself.
29277 File: gcc.info, Node: C++ Implementation, Next: C Extensions, Prev: C Implementation, Up: Top
29284 "implementation defined". The following lists all such areas, along
29286 14882:2003 standards. Some areas are only implementation-defined in one
29287 version of the standard.
29291 listed as "determined by ABI" below. *Note Binary Compatibility:
29292 Compatibility, and <http://gcc.gnu.org/readings.html>. Some choices are
29293 documented in the preprocessor manual. *Note Implementation-defined
29294 behavior: (cpp)Implementation-defined behavior. Some choices are
29295 documented in the corresponding document for the C language. *Note C
29296 Implementation::. Some choices are made by the library and operating
29298 environment); refer to their documentation for details.
29306 File: gcc.info, Node: Conditionally-supported behavior, Next: Exception handling, Up: C++ Implem…
29313 1.4).'
29316 constructor or destructor can be passed to ... (C++0x 5.2.2).'
29320 arguments of such types.
29323 File: gcc.info, Node: Exception handling, Prev: Conditionally-supported behavior, Up: C++ Implem…
29330 std::terminate() is called (C++98 15.5.1).'
29332 The stack is not unwound before std::terminate is called.
29334 c Copyright (C) 1988-2020 Free Software Foundation, Inc.
29337 File: gcc.info, Node: C Extensions, Next: C++ Extensions, Prev: C++ Implementation, Up: Top
29342 GNU C provides several language features not found in ISO standard C.
29344 these features is used.) To test for the availability of these features
29346 which is always defined under GCC.
29348 These extensions are available in C and Objective-C. Most of them are
29349 also available in C++. *Note Extensions to the C++ Language: C++
29350 Extensions, for extensions that apply _only_ to C++.
29353 extensions, accepted by GCC in C90 mode and in C++.
29357 * Statement Exprs:: Putting statements and declarations inside expressions.
29358 * Local Labels:: Labels local to a block.
29359 * Labels as Values:: Getting pointers to labels, and computed gotos.
29360 * Nested Functions:: Nested function in GNU C.
29361 * Nonlocal Gotos:: Nonlocal gotos.
29362 * Constructing Calls:: Dispatching a call to another function.
29363 * Typeof:: 'typeof': referring to the type of an expression.
29364 * Conditionals:: Omitting the middle operand of a '?:' expression.
29365 * __int128:: 128-bit integers--'__int128'.
29366 * Long Long:: Double-word integers--'long long int'.
29367 * Complex:: Data types for complex numbers.
29368 * Floating Types:: Additional Floating Types.
29369 * Half-Precision:: Half-Precision Floating Point.
29370 * Decimal Float:: Decimal Floating Types.
29371 * Hex Floats:: Hexadecimal floating-point constants.
29372 * Fixed-Point:: Fixed-Point Types.
29373 * Named Address Spaces::Named address spaces.
29374 * Zero Length:: Zero-length arrays.
29375 * Empty Structures:: Structures with no members.
29376 * Variable Length:: Arrays whose length is computed at run time.
29377 * Variadic Macros:: Macros with a variable number of arguments.
29378 * Escaped Newlines:: Slightly looser rules for escaped newlines.
29379 * Subscripting:: Any array can be subscripted, even if not an lvalue.
29380 * Pointer Arith:: Arithmetic on 'void'-pointers and function pointers.
29381 * Variadic Pointer Args:: Pointer arguments to variadic functions.
29382 * Pointers to Arrays:: Pointers to arrays with qualifiers work as expected.
29383 * Initializers:: Non-constant initializers.
29385 or arrays as values.
29386 * Designated Inits:: Labeling elements of initializers.
29387 * Case Ranges:: 'case 1 ... 9' and such.
29388 * Cast to Union:: Casting to union type from any member of the union.
29389 * Mixed Declarations:: Mixing declarations and code.
29391 or that they can never return.
29392 * Variable Attributes:: Specifying attributes of variables.
29393 * Type Attributes:: Specifying attributes of types.
29394 * Label Attributes:: Specifying attributes on labels.
29395 * Enumerator Attributes:: Specifying attributes on enumerators.
29396 * Statement Attributes:: Specifying attributes on statements.
29397 * Attribute Syntax:: Formal syntax for attributes.
29398 * Function Prototypes:: Prototype declarations and old-style definitions.
29399 * C++ Comments:: C++ comments are recognized.
29400 * Dollar Signs:: Dollar sign is allowed in identifiers.
29401 * Character Escapes:: '\e' stands for the character <ESC>.
29402 * Alignment:: Determining the alignment of a function, type or variable.
29403 * Inline:: Defining inline functions (as fast as macros).
29404 * Volatiles:: What constitutes an access to a volatile object.
29405 * Using Assembly Language with C:: Instructions and extensions for interfacing C with assembler.
29406 * Alternate Keywords:: '__const__', '__asm__', etc., for header files.
29407 * Incomplete Enums:: 'enum foo;', with details to follow.
29409 function.
29410 * Return Address:: Getting the return or frame address of a function.
29411 * Vector Extensions:: Using vector instructions through built-in functions.
29412 * Offsetof:: Special syntax for implementing 'offsetof'.
29413 * __sync Builtins:: Legacy built-in functions for atomic memory access.
29414 * __atomic Builtins:: Atomic built-in functions with memory model.
29416 arithmetic overflow checking.
29417 * x86 specific memory model extensions for transactional memory:: x86 memory models.
29419 checking.
29420 * Other Builtins:: Other built-in functions.
29421 * Target Builtins:: Built-in functions specific to particular targets.
29422 * Target Format Checks:: Format checks specific to particular targets.
29423 * Pragmas:: Pragmas accepted by GCC.
29424 * Unnamed Fields:: Unnamed struct/union fields within structs/unions.
29425 * Thread-Local:: Per-thread variables.
29426 * Binary constants:: Binary constants using the '0b' prefix.
29429 File: gcc.info, Node: Statement Exprs, Next: Local Labels, Up: C Extensions
29435 in GNU C. This allows you to use loops, switches, and local variables
29436 within an expression.
29439 by braces; in this construct, parentheses go around the braces. For
29448 the absolute value of 'foo ()'.
29452 value of the entire construct. (If you use some other kind of statement
29454 effectively no value.)
29457 (so that they evaluate each operand exactly once). For example, the
29464 the operand has side effects. In GNU C, if you know the type of the
29488 initial value of a static variable.
29491 you must use 'typeof' or '__auto_type' (*note Typeof::).
29495 expression. For instance, if 'A' is a class, then
29499 ({a;}).Foo ()
29502 expression, and that is used to invoke 'Foo'. Therefore the 'this'
29503 pointer observed by 'Foo' is not the address of 'a'.
29506 are destroyed at that statement's end. This makes statement expressions
29507 inside macros slightly different from function calls. In the latter
29509 the end of the statement that includes the function call. In the
29511 expression. For instance,
29522 has different places where temporaries are destroyed. For the 'macro'
29524 'b'. In the 'function' case that temporary is destroyed when the
29525 function returns.
29529 work with C++. (Note that some versions of the GNU C Library contained
29531 bug.)
29535 label inside the statement expression is not permitted. Jumping into a
29537 has undefined behavior. Jumping out of a statement expression is
29542 statement expression. A 'break' or 'continue' statement inside of a
29547 or init or increment expression it appears. In any case, as with a
29550 expression. For example,
29555 'bar2'. If 'bar2' is called, it is called after 'foo' and before
29556 'bar1'.
29559 File: gcc.info, Node: Local Labels, Next: Labels as Values, Prev: Statement Exprs, Up: C Extens…
29564 GCC allows you to declare "local labels" in any nested block scope. A
29567 in which it is declared.
29575 __label__ LABEL1, LABEL2, /* ... */;
29578 before any ordinary declarations or statements.
29581 label itself. You must do this in the usual way, with 'LABEL:', within
29582 the statements of the statement expression.
29584 The local label feature is useful for complex macros. If a macro
29585 contains nested loops, a 'goto' can be useful for breaking out of them.
29588 label is multiply defined in that function. A local label avoids this
29589 problem. For example:
29625 nested functions, if there are any. *Note Nested Functions::, for
29626 details.
29629 File: gcc.info, Node: Labels as Values, Next: Nested Functions, Prev: Local Labels, Up: C Exten…
29635 containing function) with the unary operator '&&'. The value has type
29636 'void *'. This value is a constant and can be used wherever a constant
29637 of that type is valid. For example:
29640 /* ... */
29643 To use these values, you need to be able to jump to one. This is done
29644 with the computed goto statement(1), 'goto *EXP;'. For example,
29648 Any expression of type 'void *' is allowed.
29660 indexing in C never does that.
29663 'switch' statement. The 'switch' statement is cleaner, so use that
29665 statement very well.
29667 Another use of label values is in an interpreter for threaded code.
29669 code for super-fast dispatching.
29671 You may not use this mechanism to jump to code in a different function.
29672 If you do that, totally unpredictable things happen. The best way to
29674 never pass it as an argument.
29684 allows the data to be read-only. This alternative with label
29686 approach for AVR programs.
29689 if the containing function is inlined or cloned. If a program relies on
29691 should be used to prevent inlining and cloning. If '&&foo' is used in a
29692 static variable initializer, inlining and cloning is forbidden.
29698 store label addresses in label variables.
29701 File: gcc.info, Node: Nested Functions, Next: Nonlocal Gotos, Prev: Labels as Values, Up: C Ext…
29706 A "nested function" is a function defined inside another function.
29708 supported by GNU C++.
29710 The nested function's name is local to the block where it is defined.
29722 function that are visible at the point of its definition. This is
29723 called "lexical scoping". For example, here we show a nested function
29731 /* ... */
29733 /* ... */ access (array, i) /* ... */
29738 mixed with the other declarations and statements in the block.
29753 argument. If 'intermediate' calls 'store', the arguments given to
29754 'store' are used to store into 'array'. But this technique works only
29756 exit.
29759 containing function exits, all hell breaks loose. If you try to call it
29762 wise to take the risk. If, however, the nested function does not refer
29763 to anything that has gone out of scope, you should be safe.
29766 technique called "trampolines". This technique was described in
29767 'Lexical Closures for C++' (Thomas M. Breuel, USENIX C++ Conference
29768 Proceedings, October 17-21, 1988).
29772 function (*note Local Labels::). Such a jump returns instantly to the
29774 any intermediate functions as well. Here is an example:
29786 /* ... */
29788 /* ... */ access (array, i) /* ... */
29789 /* ... */
29793 if it detects an error. */
29798 A nested function always has no linkage. Declaring one with 'extern'
29799 or 'static' is erroneous. If you need to declare the nested function
29801 function declarations).
29807 /* ... */
29814 /* ... */
29818 File: gcc.info, Node: Nonlocal Gotos, Next: Constructing Calls, Prev: Nested Functions, Up: C E…
29825 the C library functions 'setjmp' and 'longjmp'. The built-in versions
29827 on some targets. You should use the standard C library functions
29828 declared in '<setjmp.h>' in user code instead of the builtins.
29831 save and restore registers using the stack on function entry and exit.
29834 values.
29837 registers known to the specific architecture variant being compiled for.
29841 full register set.
29846 #include <stdint.h>
29850 This function saves the current stack context in BUF.
29852 returning from '__builtin_longjmp' using the same BUF.
29856 previous call to '__builtin_setjmp'. After '__builtin_longjmp' is
29858 '__builtin_setjmp' returns the value VAL, which must be 1.
29862 the same function calling '__builtin_setjmp' to initialize BUF. It
29864 from the function calling '__builtin_setjmp'.
29867 File: gcc.info, Node: Constructing Calls, Next: Typeof, Prev: Nonlocal Gotos, Up: C Extensions
29874 arguments, without knowing the number or types of the arguments.
29878 return (as long as your caller expects that data type).
29881 sophisticated features or other extensions of the language. It is,
29883 acting as mere forwarders for their arguments.
29888 function.
29892 a function into a block of memory allocated on the stack. Then it
29893 returns the address of that block.
29898 parameters described by ARGUMENTS and SIZE.
29901 '__builtin_apply_args'. The argument SIZE specifies the size of
29902 the stack argument data, in bytes.
29905 whatever value is returned by FUNCTION. The data is saved in a
29906 block of memory allocated on the stack.
29908 It is not always simple to compute the proper value for SIZE. The
29911 argument area.
29915 the containing function. You should specify, for RESULT, a value
29916 returned by '__builtin_apply'.
29920 inline function. It can be used only in inline functions that are
29923 ((__gnu_inline__))' extern inline functions. It must be only
29925 arguments. This is useful for writing small wrapper inlines for
29927 undesirable. For example:
29928 extern int myprintf (FILE *f, const char *format, ...);
29930 myprintf (FILE *f, const char *format, ...)
29943 an inline function. It can be used only in inline functions that
29946 ((__gnu_inline__))' extern inline functions. For example following
29951 myopen (const char *path, int oflag, ...)
29974 File: gcc.info, Node: Typeof, Next: Conditionals, Prev: Constructing Calls, Up: C Extensions
29979 Another way to refer to the type of an expression is with 'typeof'. The
29981 acts semantically like a type name defined with 'typedef'.
29984 expression or with a type. Here is an example with an expression:
29989 described is that of the values of the functions.
29995 Here the type described is that of pointers to 'int'.
29998 programs, write '__typeof__' instead of 'typeof'. *Note Alternate
29999 Keywords::.
30001 A 'typeof' construct can be used anywhere a typedef name can be used.
30003 'sizeof' or 'typeof'.
30007 type.
30010 (*note Statement Exprs::). Here is how the two together can be used to
30021 the expressions that are substituted for 'a' and 'b'. Eventually we
30024 will be a more reliable way to prevent such conflicts.
30028 * This declares 'y' with the type of what 'x' points to.
30032 * This declares 'y' as an array of such values.
30055 pointers to 'char'.
30058 as '__auto_type'. In that case, the declaration must declare only one
30062 initializer. (In C++, you should use C++11 'auto' for this purpose.)
30073 the macro. This prevents the size of the macro expansion growing
30075 of such macros.
30079 is used.
30082 File: gcc.info, Node: Conditionals, Next: __int128, Prev: Typeof, Up: C Extensions
30087 The middle operand in a conditional expression may be omitted. Then if
30089 expression.
30095 has the value of 'x' if that is nonzero; otherwise, the value of 'y'.
30102 especially useful. When it becomes useful is when the first operand
30103 does, or may (if it is a macro argument), contain a side effect. Then
30104 repeating the operand in the middle would perform the side effect twice.
30106 undesirable effects of recomputing it.
30109 File: gcc.info, Node: __int128, Next: Long Long, Prev: Conditionals, Up: C Extensions
30115 targets which have an integer mode wide enough to hold 128 bits. Simply
30117 for an unsigned 128-bit integer. There is no support in GCC for
30119 long' integer less than 128 bits wide.
30122 File: gcc.info, Node: Long Long, Next: Complex, Prev: __int128, Up: C Extensions
30129 modes. Simply write 'long long int' for a signed integer, or 'unsigned
30130 long long int' for an unsigned integer. To make an integer constant of
30131 type 'long long int', add the suffix 'LL' to the integer. To make an
30133 to the integer.
30135 You can use these types in arithmetic like any other integer types.
30137 open-coded on all types of machines. Multiplication is open-coded if
30139 instruction. Division and shifts are open-coded only on machines that
30140 provide special support. The operations that are not open-coded use
30141 special library routines that come with GCC.
30144 arguments without function prototypes. If a function expects type 'int'
30147 the number of bytes for the argument. Likewise, if the function expects
30148 'long long int' and you pass 'int'. The best way to avoid such problems
30149 is to use prototypes.
30152 File: gcc.info, Node: Complex, Next: Floating Types, Prev: Long Long, Up: C Extensions
30158 supports them in C90 mode and in C++. GCC also supports complex integer
30159 data types which are not part of ISO C99. You can declare complex types
30160 using the keyword '_Complex'. As an extension, the older GNU keyword
30161 '__complex__' is also supported.
30164 part and imaginary part are both of type 'double'. '_Complex short int
30167 types is complete.
30170 (either one; they are equivalent). For example, '2.5fi' has type
30171 '_Complex float' and '3i' has type '_Complex int'. Such a constant
30173 you like by adding one to a real constant. This is a GNU extension; if
30176 include '<complex.h>' and use the macros 'I' or '_Complex_I' instead.
30179 includes the '<complex>' header cannot use 'i' for the GNU extension.
30180 The 'j' suffix still has the GNU meaning.
30183 '__real__ EXP'. Likewise, use '__imag__' to extract the imaginary part.
30186 'cimagl', declared in '<complex.h>' and also provided as built-in
30187 functions by GCC.
30190 a complex type. This is a GNU extension; for values of floating type,
30192 declared in '<complex.h>' and also provided as built-in functions by
30193 GCC.
30197 the imaginary part is on the stack (or vice versa). Only the DWARF
30198 debug info format can represent this, so use of DWARF is recommended.
30201 noncomplex type. If the variable's actual name is 'foo', the two
30202 fictitious variables are named 'foo$real' and 'foo$imag'. You can
30203 examine and set these two fictitious variables with your debugger.
30206 File: gcc.info, Node: Floating Types, Next: Half-Precision, Prev: Complex, Up: C Extensions
30213 types supported depends on the target architecture. These types are not
30214 supported when compiling C++. Constants with these types use suffixes
30215 'fN' or 'FN' and 'fNx' or 'FNx'. These type names can be used together
30216 with '_Complex' to declare complex types.
30219 which are not supported by all targets.
30222 scalar (VSX) instruction set. '__float128' supports the 128-bit
30223 floating type. On i386, x86_64, PowerPC, and IA-64 other than
30224 HP-UX, '__float128' is an alias for '_Float128'. On hppa and IA-64
30225 HP-UX, '__float128' is an alias for 'long double'.
30228 and supports the 80-bit ('XFmode') floating type. It is an alias
30229 for the type name '_Float64x' on these targets.
30233 'long double'. When 'long double' transitions to '__float128' on
30235 conversions between the two types.
30240 other floating types. Use a suffix 'w' or 'W' in a literal constant of
30241 type '__float80' or type '__ibm128'. Use a suffix 'q' or 'Q' for
30242 '_float128'.
30245 Linux systems, you must use the '-mfloat128' option. It is expected in
30247 automatically.
30250 supported or where 'long double' has the IEEE binary128 format. The
30252 supported. The '_Float32' type is supported on all systems supporting
30254 systems supporting IEEE binary64. The '_Float16' type is supported on
30256 16-bit floating-point types is selected with '-mfp16-format=ieee'. GCC
30257 does not currently support '_Float128x' on any systems.
30274 File: gcc.info, Node: Half-Precision, Next: Decimal Float, Prev: Floating Types, Up: C Extensio…
30281 Extensions. On ARM systems, you must enable this type explicitly with
30282 the '-mfp16-format' command-line option in order to use it.
30285 floating-point values. You must choose one of the representations and
30286 use it consistently in your program.
30288 Specifying '-mfp16-format=ieee' selects the IEEE 754-2008 format. This
30289 format can represent normalized values in the range of 2^{-14} to 65504.
30291 digits.
30294 format. This representation is similar to the IEEE format, but does not
30295 support infinities or NaNs. Instead, the range of exponents is
30297 range of 2^{-14} to 131008.
30300 does not require use of the '-mfp16-format' command-line option.
30303 in '<arm_fp16.h>', or as a storage format. For purposes of arithmetic
30305 automatically promoted to 'float'.
30310 between '__fp16' and 'double' values. GCC generates code using these
30314 format.
30317 whether GCC generates code using hardware floating-point instructions.
30319 conversions between '__fp16' and other types as library calls.
30322 ISO/IEC TS 18661-3:2015. *Note Floating Types::.
30325 File: gcc.info, Node: Decimal Float, Next: Hex Floats, Prev: Half-Precision, Up: C Extensions
30331 N1312 draft of ISO/IEC WDTR24732. Support for decimal floating types in
30332 GCC will evolve as the draft technical report changes. Calling
30333 conventions for any target might also change. Not all targets support
30334 decimal floating types.
30337 '_Decimal128'. They use a radix of ten, unlike the floating types
30339 C standard but is usually two.
30344 other floating types. Use a suffix 'df' or 'DF' in a literal constant
30346 for '_Decimal128'.
30354 technical report.
30357 'math.h', 'fenv.h', 'stdio.h', 'stdlib.h', and 'wchar.h', which
30358 must come from a separate C library implementation. Because of
30360 indicate that the implementation conforms to the technical report.
30363 the DWARF debug information format.
30366 File: gcc.info, Node: Hex Floats, Next: Fixed-Point, Prev: Decimal Float, Up: C Extensions
30373 '0x1.fp3' written in hexadecimal format. As a GNU extension, GCC
30375 conforming) and in C++98, C++11 and C++14 modes. In that format the
30376 '0x' hex introducer and the 'p' or 'P' exponent field are mandatory.
30378 the significant part is multiplied. Thus '0x1.f' is 1 15/16, 'p3'
30379 multiplies it by 8, and the value of '0x1.fp3' is the same as '1.55e1'.
30382 is always required in the hexadecimal notation. Otherwise the compiler
30383 would not be able to resolve the ambiguity of, e.g., '0x1.f'. This
30385 floating-point constants of type 'float'.
30388 File: gcc.info, Node: Fixed-Point, Next: Named Address Spaces, Prev: Hex Floats, Up: C Extensio…
30394 N1169 draft of ISO/IEC DTR 18037. Support for fixed-point types in GCC
30395 will evolve as the draft technical report changes. Calling conventions
30396 for any target might also change. Not all targets support fixed-point
30397 types.
30409 unsigned long _Accum', '_Sat unsigned long long _Accum'.
30411 Fixed-point data values contain fractional and optional integral parts.
30412 The format of fixed-point data varies and depends on the target machine.
30453 implemented.
30455 Fixed-point types are supported by the DWARF debug information format.
30458 File: gcc.info, Node: Named Address Spaces, Next: Zero Length, Prev: Fixed-Point, Up: C Extensi…
30464 N1275 draft of ISO/IEC DTR 18037. Support for named address spaces in
30465 GCC will evolve as the draft technical report changes. Calling
30466 conventions for any target might also change. At present, only the AVR,
30468 generic address space.
30471 qualifier (e.g., 'const' or 'volatile'). See the N1275 document for
30472 more details.
30474 6.17.1 AVR Named Address Spaces
30480 flash.
30484 the RAM address space. There is _no need_ for language extensions like
30485 '__flash' or attribute *note 'progmem': AVR Variable Attributes. The
30487 feature and '.rodata' stays in flash: The compiler just generates 'LD*'
30489 '.rodata' symbols: '0x4000' in the case of 'avrtiny' and '0x8000' in the
30490 case of 'avrxmega3'. See *note AVR Options:: for a list of respective
30491 devices.
30495 flash memory is not visible in the RAM address space. In order to
30498 special address spaces are needed.
30501 The '__flash' qualifier locates data in the '.progmem.data'
30502 section. Data is read using the 'LPM' instruction. Pointers to
30503 this address space are 16 bits wide.
30511 '.progmemN.data' where N refers to address space '__flashN'. The
30513 reading data by means of the 'ELPM' instruction.
30518 lower two bytes as RAM address. If the high bit of the address is
30520 high byte of the address. *Note '__builtin_avr_flash_segment': AVR
30521 Built-in Functions.
30523 Objects in this address space are located in '.progmemx.data'.
30529 /* p is a pointer to RAM that points to a pointer to flash.
30532 flash address. */
30549 named but uppercase built-in macro defined. The purpose is to
30561 #include <avr/pgmspace.h> /* From AVR-LibC */
30571 Notice that attribute *note 'progmem': AVR Variable Attributes. locates
30573 space, i.e. from RAM, so that you need special accessors like
30574 'pgm_read_byte' from AVR-LibC (http://nongnu.org/avr-libc/user-manual/)
30575 together with attribute 'progmem'.
30580 '__flashN' address spaces shows undefined behavior. The only
30582 boundaries is '__memx'.
30585 your linker script to locate the '.progmemN.data' sections
30586 according to your needs.
30589 qualified as 'const', i.e. as read-only data. This still applies
30592 load time by, say, a boot loader. In this case the right
30595 operands of instructions.
30603 supported. Just use vanilla C / C++ code without overhead as
30604 outlined above. Attribute 'progmem' is supported but works
30605 differently, see *note AVR Variable Attributes::.
30607 6.17.2 M32C Named Address Spaces
30612 access memory beyond the first 64 Ki bytes. If '__far' is used with the
30613 M32CM or M32C CPU variants, it has no effect.
30615 6.17.3 RL78 Named Address Spaces
30620 addresses. Non-far variables are assumed to appear in the topmost
30621 64 KiB of the address space.
30623 6.17.4 x86 Named Address Spaces
30627 '%fs' or '%gs' segments.
30631 The object is accessed with the respective segment override prefix.
30634 the operating system. Rather than require an expensive system call
30636 considered to be subspaces of the generic (flat) address space.
30638 between these address spaces and the generic address space. In
30640 segment base offset that it installed previously.
30643 these address spaces are supported.
30646 File: gcc.info, Node: Zero Length, Next: Empty Structures, Prev: Named Address Spaces, Up: C Ex…
30651 Declaring zero-length arrays is allowed in GNU C as an extension. A
30666 tail padding. The offset of a zero-length array member from the
30668 array with one or more elements of the same type. The alignment of a
30669 zero-length array is the same as the alignment of its elements.
30672 members of structure objects or as non-member objects, is discouraged.
30674 undefined and may be diagnosed.
30678 have a single element. Unlike a zero-length array which only
30681 a single object of the type. Although using one-element arrays this way
30683 members analogously to zero-length arrays.
30689 * Flexible array members are written as 'contents[]' without the '0'.
30692 operator may not be applied. As a quirk of the original
30693 implementation of zero-length arrays, 'sizeof' evaluates to zero.
30696 'struct' that is otherwise non-empty.
30700 member of a structure or an element of an array. (However, these
30701 uses are permitted by GCC as extensions.)
30706 excess elements (all of them, in this case) are ignored.
30708 GCC allows static initialization of flexible array members. This is
30710 followed by an array of sufficient size to contain the data. E.g. in
30711 the following, 'f1' is constructed as if it were declared like 'f2'.
30722 eliminating the need to consistently refer to 'f2.f1'.
30725 unknown size is also written with '[]'.
30729 at subsequent offsets. To avoid undue complication and confusion with
30731 initialization except when the structure is the top-level object. For
30737 struct foo a = { 1, { 2, 3, 4 } }; // Valid.
30738 struct bar b = { { 1, { 2, 3, 4 } } }; // Invalid.
30739 struct bar c = { { 1, { } } }; // Valid.
30740 struct foo d[1] = { { 1, { 2, 3, 4 } } }; // Invalid.
30743 File: gcc.info, Node: Empty Structures, Next: Variable Length, Prev: Zero Length, Up: C Extensi…
30753 The structure has size zero. In C++, empty structures are part of the
30754 language. G++ treats empty structures as if they had a single member of
30755 type 'char'.
30758 File: gcc.info, Node: Variable Length, Next: Variadic Macros, Prev: Empty Structures, Up: C Ext…
30764 extension GCC accepts them in C90 mode and in C++. These arrays are
30766 a constant expression. The storage is allocated at the point of
30768 declaration exits. For example:
30780 storage. Jumping into the scope is not allowed; you get an error
30781 message for it.
30784 structure or a union. For example:
30793 variable-length arrays. The function 'alloca' is available in many
30794 other C implementations (but not in all). On the other hand,
30795 variable-length arrays are more elegant.
30797 There are other differences between these two methods. Space allocated
30798 with 'alloca' exists until the containing _function_ returns. The space
30800 scope ends, unless you also use 'alloca' in this scope.
30807 /* ... */
30812 'sizeof'.
30815 use a forward declaration in the parameter list--another GNU extension.
30820 /* ... */
30825 when the declaration of 'data' is parsed.
30828 parameter list. They can be separated by commas or semicolons, but the
30830 parameter declarations. Each forward declaration must match a "real"
30831 declaration in parameter name and data type. ISO C99 does not support
30832 parameter forward declarations.
30835 File: gcc.info, Node: Variadic Macros, Next: Escaped Newlines, Prev: Variable Length, Up: C Ext…
30837 6.21 Macros with a Variable Number of Arguments.
30841 variable number of arguments much as a function can. The syntax for
30842 defining the macro is similar to that of a function. Here is an
30845 #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
30847 Here '...' is a "variable argument". In the invocation of such a macro,
30849 ends the invocation, including any commas. This set of tokens replaces
30850 the identifier '__VA_ARGS__' in the macro body wherever it appears. See
30851 the CPP manual for more information.
30855 other argument. Here is an example:
30857 #define debug(format, args...) fprintf (stderr, format, args)
30860 more readable and descriptive.
30863 be used with either of the above forms of macro definition.
30866 entirely; but you are allowed to pass an empty argument. For example,
30873 way. In the above examples, the compiler would complain, though since
30875 string.
30878 arguments used with the token paste operator, '##'. If instead you
30881 #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
30884 causes the preprocessor to remove the comma before it. If you do
30887 arguments after the comma. Just like any other pasted macro argument,
30888 these arguments are not macro expanded.
30891 File: gcc.info, Node: Escaped Newlines, Next: Subscripting, Prev: Variadic Macros, Up: C Extens…
30898 follow a backslash. GCC's implementation allows whitespace in the form
30900 backslash and the subsequent newline. The preprocessor issues a
30902 lines to form a single logical line. This works within comments and
30903 tokens, as well as between tokens. Comments are _not_ treated as
30905 been replaced with spaces.
30908 File: gcc.info, Node: Subscripting, Next: Pointer Arith, Prev: Escaped Newlines, Up: C Extensio…
30915 sequence point and the unary '&' operator may not be applied to them.
30917 though otherwise they do not decay to pointers outside C99 mode. For
30926 return f().a[index];
30930 File: gcc.info, Node: Pointer Arith, Next: Variadic Pointer Args, Prev: Subscripting, Up: C Ext…
30936 to 'void' and on pointers to functions. This is done by treating the
30937 size of a 'void' or of a function as 1.
30940 function types, and returns 1.
30943 used.
30946 File: gcc.info, Node: Variadic Pointer Args, Next: Pointers to Arrays, Prev: Pointer Arith, Up:…
30954 other a pointer to a character type. GNU C implements the POSIX XSI
30956 type to receive arguments of any other pointer type.
30959 consume an argument of any pointer type.
30962 File: gcc.info, Node: Pointers to Arrays, Next: Initializers, Prev: Variadic Pointer Args, Up: …
30968 other qualified types. For example, a value of type 'int (*)[5]' can be
30969 used to initialize a variable of type 'const int (*)[5]'. These types
30971 attached to the element type of the array and not the array itself.
30977 ...
30981 File: gcc.info, Node: Initializers, Next: Compound Literals, Prev: Pointers to Arrays, Up: C Ex…
30988 GNU C. Here is an example of an initializer with run-time varying
30994 /* ... */
30998 File: gcc.info, Node: Compound Literals, Next: Designated Inits, Prev: Initializers, Up: C Exte…
31004 initializer list. Its value is an object of the type specified in the
31005 cast, containing the elements specified in the initializer. Unlike the
31006 result of a cast, a compound literal is an lvalue. ISO C99 and later
31007 support compound literals. As an extension, GCC supports compound
31009 C++ semantics are somewhat different.
31011 Usually, the specified type of a compound literal is a structure.
31029 explained below. If all the elements of the compound literal are (made
31037 Compound literals for scalar types and union types are also allowed.
31040 compound literal.
31046 because the initializer is not a constant). It is handled as if the
31048 of the compound literal and the object match. The elements of the
31049 compound literal must be constant. If the object being initialized has
31051 compound literal.
31063 automatic storage duration. In C++, a compound literal designates a
31064 temporary object that only lives until the end of its full-expression.
31067 conversion of a temporary array to a pointer. For instance, if the
31070 lifetime of the array ends after the declaration of 'foo'.
31074 'const'-qualified type. If 'foo' and its initializer had elements of
31076 variable, the array would have static storage duration. But it is
31078 code.
31081 File: gcc.info, Node: Designated Inits, Next: Case Ranges, Prev: Compound Literals, Up: C Exten…
31088 structure being initialized.
31092 an extension in C90 mode as well. This extension is not implemented in
31093 GNU C++.
31095 To specify an array index, write '[INDEX] =' before the element value.
31105 initialized is automatic.
31109 no '='.
31111 To initialize a range of elements to the same value, write '[FIRST ...
31112 LAST] = VALUE'. This is a GNU extension. For example,
31114 int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
31117 not for each initialized field by the range initializer.
31120 one.
31123 with '.FIELDNAME =' before the element value. For example, given the
31130 struct point p = { .y = yvalue, .x = xvalue };
31142 have static storage duration.
31144 The '[INDEX]' or '.FIELDNAME' is known as a "designator". You can also
31146 union, to specify which element of the union should be used. For
31151 union foo f = { .d = 4 };
31154 element. By contrast, casting 4 to type 'union foo' stores it into the
31155 union as the integer 'i', since it is an integer. *Note Cast to
31156 Union::.
31159 initialization of successive elements. Each initializer element that
31161 the array or structure. For example,
31170 the indices are characters or belong to an 'enum' type. For example:
31176 You can also write a series of '.FIELDNAME' and '[INDEX]' designators
31179 brace pair. For example, with the 'struct point' declaration above:
31181 struct point ptarray[10] = { [2].y = yv2, [2].x = xv2, [0].x = xv0 };
31185 used. When a field of a union is itself a structure, the entire
31186 structure from the last field initialized is used. If any previous
31188 happens or not. Currently, GCC discards the side-effecting initializer
31189 expressions and issues a warning.
31192 File: gcc.info, Node: Case Ranges, Next: Cast to Union, Prev: Designated Inits, Up: C Extensions
31200 case LOW ... HIGH:
31203 labels, one for each integer value from LOW to HIGH, inclusive.
31207 case 'A' ... 'Z':
31209 *Be careful:* Write spaces around the '...', for otherwise it may be
31210 parsed wrong when you use it with integer values. For example, write
31213 case 1 ... 5:
31217 case 1...5:
31220 File: gcc.info, Node: Cast to Union, Next: Mixed Declarations, Prev: Case Ranges, Up: C Extensi…
31225 A cast to a union type is a C extension not available in C++. It looks
31227 a union type. You can specify the type either with the 'union' keyword
31228 or with a 'typedef' name that refers to a union. The result of a cast
31231 operand. The effect of a cast to a union is similar to a compound
31232 literal except that it yields an rvalue like standard casts do. *Note
31233 Compound Literals::.
31236 matches at least one of the members of the union. Thus, given the
31249 z = (union foo) { .i = x };
31250 z = (union foo) { .d = y };
31253 has no member of type 'float'.
31260 /* ... */
31261 u = (union foo) x == u.i = x
31262 u = (union foo) y == u.d = y
31267 /* ... */
31271 File: gcc.info, Node: Mixed Declarations, Next: Function Attributes, Prev: Cast to Union, Up: C…
31277 within compound statements. As an extension, GNU C also allows this in
31278 C90 mode. For example, you could do:
31281 /* ... */
31286 the enclosing block.
31289 File: gcc.info, Node: Function Attributes, Next: Variable Attributes, Prev: Mixed Declarations, …
31296 code more carefully for correctness. For example, you can use
31299 or has 'printf'-style arguments ('format').
31303 annotated. Many of these attributes are target-specific. For example,
31306 conventions. Such attributes are described in the subsection for each
31307 target. However, a considerable number of attributes are supported by
31308 most, if not all targets. Those are described in the *note Common
31309 Function Attributes:: section.
31313 enclosed in double parentheses. You can specify multiple attributes in
31315 or by immediately following one attribute specification with another.
31317 placement. Compatible attribute specifications on distinct declarations
31318 of the same function are merged. An attribute specification that is not
31320 function is ignored with a warning.
31324 list. Such attribute arguments are referred to as "positional
31325 arguments". Unless specified otherwise, positional arguments that
31328 functions, and of parameters of reference to a pointer type. For
31330 list. In C++ non-static member functions, position one refers to the
31331 implicit 'this' pointer. The same restrictions and effects apply to
31333 functions.
31338 types (*note Type Attributes::).
31341 (*note Pragmas Accepted by GCC: Pragmas.). It has been found convenient
31345 form part of the grammar.
31348 their own attributes.
31390 File: gcc.info, Node: Common Function Attributes, Next: AArch64 Function Attributes, Up: Functio…
31392 6.33.1 Common Function Attributes
31395 The following attributes are supported on most targets.
31403 as write-only accesses to objects that are never read from. Such
31405 '-Wstringop-overflow', '-Wuninitialized', '-Wunused', and others.
31409 referenced object according to ACCESS-MODE. The ACCESS-MODE
31411 'read_write', or 'write_only'. The remaining two are positional
31412 arguments.
31416 the access. The same pointer argument can be referenced by at most
31417 one distinct 'access' attribute.
31421 access. The size is the number of elements of the type referenced
31423 'void*'. When no SIZE-INDEX argument is specified, the pointer
31426 (this implies that a past-the-end pointer is not a valid argument).
31427 The actual size of the access may be less but it must not be more.
31430 applies is used to read the referenced object but not write to it.
31432 SIZE-INDEX is zero, the referenced object must be initialized. The
31435 object from being modified. Examples of the use of the 'read_only'
31437 and third arguments to the 'memcpy' function.
31443 without the 'const' qualifier. It specifies that the pointer to
31445 object. Unless the argument specifying the size of the access
31447 must be initialized. An example of the use of the 'read_write'
31448 access mode is the first argument to the 'strcat' function.
31453 without the 'const' qualifier. It specifies that the pointer to
31455 read from it. The object referenced by the pointer need not be
31456 initialized. An example of the use of the 'write_only' access mode
31458 arguments to the 'fgets' function.
31467 alignment. Declaring an alias with a different type than the
31468 target is undefined and may be diagnosed. As an example, the
31471 void __f () { /* Do something. */; }
31474 define 'f' to be a weak alias for '__f'. In C++, the mangled name
31475 for the target must be used. It is an error if '__f' is not
31476 defined in the same translation unit.
31479 not be available on all targets.
31484 instruction of the function, measured in bytes. When specified,
31485 ALIGNMENT must be an integer constant power of 2. Specifying no
31486 ALIGNMENT argument implies the ideal alignment for the target. The
31488 Alignment::). The attribute has no effect when a definition for
31489 the function is not provided in the same translation unit.
31493 only to increase it. Attempts to do otherwise are diagnosed. Some
31495 greater than 1. On such targets, specifying a less restrictive
31496 alignment is silently ignored. Using the attribute overrides the
31498 for this function.
31502 format. On some systems, the linker is only able to arrange for
31503 functions to be aligned up to a certain maximum alignment. (For
31505 small.) See your linker documentation for further information.
31508 (*note Variable Attributes::.)
31513 enumerated type. It indicates that the returned pointer is aligned
31514 on a boundary given by the function argument at POSITION.
31515 Meaningful alignments are powers of 2 greater than one. GCC uses
31516 this information to improve pointer alignment analysis.
31520 argument of the attribute. Argument numbering starts at one.
31527 given by parameter 1.
31533 enumerated type. It indicates that the returned pointer points to
31535 or by the product of the arguments at POSITION-1 and POSITION-2.
31536 Meaningful sizes are positive values less than 'PTRDIFF_MAX'. GCC
31538 '__builtin_object_size'.
31541 by one or two integer arguments supplied to the attribute. The
31543 specified or the product of the two function arguments specified.
31545 for C++ non-static member functions.
31554 of the size given by parameter 2.
31558 specified. For functions declared inline, this attribute inlines
31560 to inlining. Failure to inline such a function is diagnosed as an
31561 error. Note that if such a function is called indirectly the
31564 diagnosed.
31568 should appear during debugging as a unit. Depending on the debug
31571 body.
31576 returns a pointer. It indicates that the returned pointer is
31577 aligned on a boundary given by ALIGNMENT. If the attribute has two
31578 arguments, the second argument is misalignment OFFSET. Meaningful
31579 values of ALIGNMENT are powers of 2 greater than one. Meaningful
31580 values of OFFSET are greater than zero and less than ALIGNMENT.
31588 'my_alloc2' returns a pointer whose value modulo 32 is equal to 8.
31592 that the function is unlikely to be executed. The function is
31596 non-cold parts of program. The paths leading to calls of cold
31598 prediction mechanism. It is thus useful to mark functions used to
31601 occasions.
31604 functions are automatically detected and this attribute is ignored.
31611 elimination. Declaring such functions with the 'const' attribute
31613 the function with the same argument values.
31621 regardless of the statements in between.
31624 that affect its return value between successive invocations.
31627 constants.
31630 definition than the similar 'pure' attribute. Declaring the same
31632 diagnosed. Because a const function cannot have any observable
31633 side effects it does not make sense for it to return 'void'.
31634 Declaring such a function is diagnosed.
31638 data might change between successive invocations of the function.
31641 pointer or, in C++, reference arguments. Likewise, a function that
31642 calls a non-const function usually must not be const itself.
31649 automatically before execution enters 'main ()'. Similarly, the
31651 automatically after 'main ()' completes or 'exit ()' is called.
31653 that is used implicitly during the execution of the program.
31657 destructor functions are run. A constructor with a smaller
31659 number; the opposite relationship holds for destructors. So, if
31662 the same priority. The priorities for constructor and destructor
31664 objects (*note C++ Attributes::). However, at present, the order
31667 unspecified. In mixed declarations, attribute 'init_priority' can
31668 be used to impose a specific ordering.
31672 rejected with an error.
31678 which the attribute is applied. The attribute is designed for
31680 expected to specify the same set of attributes as their targets.
31682 types. However, the kind of symbol to which the attribute is
31684 to which the argument refers. The 'copy' attribute copies only
31687 'weak'. The 'deprecated' and 'target_clones' attribute are also
31688 not copied. *Note Common Type Attributes::. *Note Common Variable
31689 Attributes::.
31693 ALLOCATE declared with attributes ALLOC_SIZE, MALLOC, and NOTHROW.
31695 the target function. As a result of the 'copy' attribute the alias
31696 also shares the same attributes as the target.
31709 used anywhere in the source file. This is useful when identifying
31711 program. The warning also includes the location of the declaration
31714 should do instead. Note that the warnings only occurs for uses:
31720 results in a warning on line 3 but not line 2. The optional MSG
31722 present.
31725 (*note Variable Attributes::, *note Type Attributes::.)
31728 the '-fmessage-length' option.
31735 (respectively) that includes MESSAGE is diagnosed. This is useful
31739 [(condition) ? 1 : -1];' tricks.
31743 '.gnu.warning*' section), when using these attributes the problem
31746 information.
31751 so the object remains visible outside the current compilation unit.
31757 resolution file produced by 'gold'. For other linkers that cannot
31759 are still necessary.
31762 Generally, inlining into a function is limited. For a function
31764 inlined, if possible. Functions declared with attribute 'noinline'
31765 and similar are not inlined. Whether the function itself is
31767 inlining parameters.
31772 type-checked against a format string. For example, the
31776 my_printf (void *my_object, const char *my_format, ...)
31781 'my_format'.
31785 'gnu_printf', 'gnu_scanf', 'gnu_strftime' or 'strfmon'. (You can
31787 '__strfmon__'.) On MinGW targets, 'ms_printf', 'ms_scanf', and
31788 'ms_strftime' are also present. ARCHETYPE values such as 'printf'
31791 accepted by the GNU C Library. On Microsoft Windows targets,
31793 'msvcrt.dll' library. The parameter STRING-INDEX specifies which
31796 the format string. For functions where the arguments are not
31798 parameter as zero. In this case the compiler only checks the
31799 format string for consistency. For 'strftime' formats, the third
31800 parameter is required to be zero. Since non-static C++ methods
31803 STRING-INDEX and FIRST-TO-CHECK.
31808 format attribute are 2 and 3.
31812 calls to these functions for errors. The compiler always (unless
31817 so there is no need to modify the header file 'stdio.h'. In C99
31819 and 'vsscanf' are also checked. Except in strictly conforming C
31821 are 'printf_unlocked' and 'fprintf_unlocked'. *Note Options
31822 Controlling C Dialect: C Dialect Options.
31825 recognized in the same context. Declarations including these
31828 carried out by this version of the compiler.
31830 The target may also provide additional types of format checks.
31832 Format Checks.
31841 have been for the unmodified string). Multiple 'format_arg'
31843 distinct parameter as a format string. For example, the
31853 with the format string argument 'my_format'. If the 'format_arg'
31858 without the attribute.
31863 designated by the attributes. This capability is designed to
31864 support the GNU 'ngettext' family of functions.
31867 string argument (starting from one). Since non-static C++ methods
31869 should be counted from two.
31874 whose operands are a call to one of your own function. The
31878 '-fno-builtin' is used. *Note Options Controlling C Dialect: C
31879 Dialect Options.
31883 attribute above.
31886 attributes. *Note Format Checks Specific to Particular Target
31887 Machines: Target Format Checks.
31891 with the 'inline' keyword. It directs GCC to treat the function as
31893 gnu99 mode.
31896 function is used only for inlining. In no case is the function
31898 explicitly. Such an address becomes an external reference, as if
31899 you had only declared the function, and had not defined it. This
31900 has almost the effect of a macro. The way to use this is to put a
31902 another copy of the function, without 'extern', in a library file.
31904 to be inlined. If any uses of the function remain, they refer to
31905 the single copy in the library. Note that the two definitions of
31907 not have the same effect your program may behave oddly.
31911 inlined where possible.
31913 This is how GCC traditionally handled functions declared 'inline'.
31916 useful feature in its own right. This attribute is available in
31917 GCC 4.1.3 and later. It is available if either of the preprocessor
31918 macros '__GNUC_GNU_INLINE__' or '__GNUC_STDC_INLINE__' are defined.
31919 *Note An Inline Function is As Fast As a Macro: Inline.
31923 behavior.
31927 that the function is a hot spot of the compiled program. The
31930 functions appear close together, improving locality.
31933 functions are automatically detected and this attribute is ignored.
31938 standard. This allows the resolution of the symbol value to be
31941 system characteristics determined then. To use this attribute,
31944 function. The implementation functions' declarations must match
31945 the API of the function being implemented. The resolver should be
31947 pointer to a function of the same type as the implementation. For
31952 ...
31967 of the actual implementation. Finally, the indirect function needs
31975 name of the resolver function. A C++ resolver for a non-static
31979 function. G++ checks the signatures of the two functions and
31980 issues a '-Wattribute-alias' warning for mismatches. To suppress a
31983 function use the '-Wno-pmf-conversions' option. For example:
31999 int S::debug_impl (int) { /* ... */ }
32000 int S::optimized_impl (int) { /* ... */ }
32007 // Cast triggers -Wno-pmf-conversions.
32013 Indirect functions cannot be weak. Binutils version 2.20.1 or
32014 higher and GNU C Library version 2.11.1 are required to use this
32015 feature.
32022 regular functions. The exact syntax and behavior are
32023 target-specific; refer to the following subsections for details.
32027 current compilation unit only by return or by exception handling.
32030 call functions exported by the unit, or 'longjmp' into the unit.
32033 contain no function calls at all.
32036 analysis. The compiler takes the hint that any data not escaping
32038 function. For example, the 'sin' function is a leaf function, but
32039 'qsort' is not.
32042 defined in the current compilation unit that uses static variables.
32046 and uses static variables. There is no standard-compliant way to
32049 attribute or mark all such static variables 'volatile'. Lastly,
32054 an inadvertent callback would be added.
32057 compilation unit. This is to allow easy merging of multiple
32059 optimization. For this reason the attribute is not allowed on
32060 types to annotate indirect calls.
32063 This tells the compiler that a function is 'malloc'-like, i.e.,
32066 to valid objects occur in any storage addressed by P. In addition,
32068 most cases.
32071 on the aliasing property it implies. Functions like 'malloc' and
32073 uninitialized or zeroed-out, newly obtained storage. However,
32075 return pointers to storage containing pointers to existing objects.
32078 assumption.
32082 another semantically equivalent function.
32087 user-compiled functions. Functions with this attribute are not so
32088 instrumented.
32093 feedback based optimization code instrumentation.
32097 each other or top level assembler statements the executable. The
32098 actual order in the program will depend on the linker command line.
32099 Static variables marked like this are also not removed. This has a
32101 applies to the marked symbols.
32106 in SANITIZE_OPTION. A list of values acceptable by the
32107 '-fsanitize' option can be provided.
32110 f () { /* Do something. */; }
32112 g () { /* Do something. */; }
32118 function when compiling with the '-fsanitize=address' option. The
32121 'no_sanitize_address'.
32126 function when compiling with the '-fsanitize=thread' option.
32132 option.
32136 decides whether to split the stack. Functions with the
32138 run with only a small amount of stack space available.
32143 disabling stack limit checking in the function it applies to.
32149 constant propagation.
32153 for inlining. If the function does not have side effects, there
32155 be optimized away, although the function call is live. To keep
32160 special side effect.
32166 unavailable when optimizing the body. This attribute implies
32167 'noinline', 'noclone' and 'no_icf' attributes. However, this
32172 individually. This attribute is supported mainly for the purpose
32173 of testing the compiler.
32176 'nonnull (ARG-INDEX, ...)'
32178 least one argument of a pointer type. It indicates that the
32179 referenced arguments must be non-null pointers. For instance, the
32187 arguments DEST and SRC are non-null. If the compiler determines
32190 issued. *Note Warning Options::. Unless disabled by the
32193 arguments cannot be null. In addition, the
32196 into traps. *Note Optimize Options::.
32199 arguments are marked as non-null. To illustrate, the following
32207 The 'noplt' attribute is the counterpart to option '-fno-plt'.
32209 position-independent code do not use the PLT.
32211 /* Externally defined function foo. */
32215 main (/* ... */)
32217 /* ... */
32219 /* ... */
32224 call to 'foo' must avoid the PLT in position-independent code.
32228 instead.
32232 cannot return. GCC knows this automatically. Some programs define
32233 their own functions that never return. You can declare them
32234 'noreturn' to tell the compiler this fact. For example,
32239 fatal (/* ... */)
32241 /* ... */ /* Print error message. */ /* ... */
32246 cannot return. It can then optimize without regard to what would
32247 happen if 'fatal' ever did return. This makes slightly better
32248 code. More importantly, it helps avoid spurious warnings of
32249 uninitialized variables.
32253 caller by throwing an exception or calling 'longjmp'.
32256 'noreturn' functions into tail calls.
32259 restored before calling the 'noreturn' function.
32262 type other than 'void'.
32266 function cannot throw an exception. For example, most functions in
32269 function pointer arguments.
32271 'optimize (LEVEL, ...)'
32272 'optimize (STRING, ...)'
32275 the command line. Valid arguments are constant non-negative
32276 integers and strings. Each numeric argument specifies an
32277 optimization LEVEL. Each STRING argument consists of one or more
32278 comma-separated substrings. Each substring that begins with the
32279 letter 'O' refers to an optimization option such as '-O0' or '-Os'.
32281 forming the name of an optimization option. *Note Optimize
32282 Options::.
32285 more than one function. *Note Function Specific Option Pragmas::,
32286 for details about the pragma.
32290 suffixes with a comma (',') within a single string. Spaces are not
32291 permitted within the strings.
32295 function. The 'optimize' attribute should be used for debugging
32296 purposes only. It is not suitable in production code.
32301 be used to provide a universal tool for instrumentation.
32304 change the number of NOPs to any desired value. The two-value
32307 function entry point before the Mth NOP instruction. M defaults to
32308 0 if omitted e.g. function entry point is before the first NOP.
32314 'patchable_function_entry (0)' to prevent recursion.
32320 optimizations such as common subexpression elimination. Declaring
32323 the same argument values.
32327 the function's return value. However, functions declared with the
32330 return value or the observable state of the program.
32339 the contents of the array itself, does not change in between. Even
32342 the program may depend on. However, the caller may safely change
32344 (doing so disables the optimization). The restriction also applies
32346 non-static member functions.
32348 Some common examples of pure functions are 'strlen' or 'memcmp'.
32352 function in a multithreading environment).
32357 between successive invocations of the function. Declaring the same
32359 diagnosed. Because a pure function cannot have any observable side
32361 'void'. Declaring such a function is diagnosed.
32365 value should be a non-null pointer. For instance, the declaration:
32371 return value will never be null.
32375 may return more than one time. The compiler ensures that all
32378 return from the function. Examples of such functions are 'setjmp'
32379 and 'vfork'. The 'longjmp'-like counterpart of such function, if
32380 any, might need to be marked with the 'noreturn' attribute.
32384 section. Sometimes, however, you need additional sections, or you
32385 need certain particular functions to appear in special sections.
32387 particular section. For example, the declaration:
32391 puts the function 'foobar' in the 'bar' section.
32394 'section' attribute is not available on all platforms. If you need
32396 consider using the facilities of the linker instead.
32401 function is expected to be an explicit 'NULL'. The attribute is
32402 only valid on variadic functions. By default, the sentinel is
32403 expected to be the last argument of the function call. If the
32406 end of the argument list.
32413 built-in functions 'execl' and 'execlp'. The built-in function
32414 'execle' has the attribute set with a position of 1.
32417 pointer type. If your system defines the 'NULL' macro with an
32418 integer type then you need to add an explicit cast. During
32419 installation GCC replaces the system '<stddef.h>' header with a
32420 copy that redefines NULL appropriately.
32423 '-Wformat'.
32429 single invocation. Specifying this attribute allows compiler to
32431 the same or another translation unit). Generated versions are
32433 document. For x86_64 target this document can be found
32434 … here (https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt).
32438 masked clones correspondingly. By default, all clones are
32439 generated.
32443 switch is specified, then the attribute is ignored.
32448 '-fstack-protector-explicit' are set.
32450 'target (STRING, ...)'
32453 options than specified on the command line. One or more strings
32454 can be provided as arguments. Each string consists of one or more
32456 name of a machine-dependent option. *Note Machine-Dependent
32457 Options: Submodel Options.
32461 the default. '#pragma GCC target' can be used to specify
32462 target-specific options for more than one function. *Note Function
32463 Specific Option Pragmas::, for details about the pragma.
32466 'target("sse4.1,arch=core2")' attribute and another with
32467 'target("sse4a,arch=amdfam10")'. This is equivalent to compiling
32468 the first function with '-msse4.1' and '-march=core2' options, and
32469 the second function with '-msse4a' and '-march=amdfam10' options.
32473 architecture family are used).
32480 suffixes with a comma (',') within a single string. Spaces are not
32481 permitted within the strings.
32487 Function Attributes:: for details.
32490 On ELF targets this attribute creates a symbol version. The NAME2
32492 will be externally referenced. The 'nodename' portion should be
32494 linker when building a shared library. Versioned symbol must be
32495 defined and must be exported with default visibility.
32502 Will produce a '.symver foo_v1, foo@VERS_1' directive in the
32503 assembler output.
32505 It's an error to define multiple version of a given symbol. In
32506 such case an alias can be used.
32513 'symver_foo_v1' which will be version 'VERS_2' of 'foo'.
32517 version will be also used to resolve NAME2 by the linker.
32522 options than specified on the command line. The supported options
32523 and restrictions are the same as for 'target' attribute.
32526 'target_clones("sse4.1,avx")'. GCC creates two function clones,
32527 one compiled with '-msse4.1' and another with '-mavx'.
32530 'target_clones("cpu=power9,default")'. GCC will create two
32532 the default options. GCC must be configured to use GLIBC 2.23 or
32533 newer in order to use the 'target_clones' attribute.
32537 architecture. The resolver is created only if there is a usage of
32538 a function with 'target_clones' attribute.
32542 clone) of the called function. If you want to enforce such
32548 meant to be possibly unused. GCC does not produce a warning for
32549 this function.
32554 not referenced. This is useful, for example, when the function is
32555 referenced only in inline assembly.
32559 itself is instantiated.
32563 is attached. It can be applied to variables (*note Common Variable
32565 functions.
32568 protected or internal visibility.
32571 f () { /* Do something. */; }
32575 settings in the ELF gABI.
32579 format. This value is available for the visibility attribute
32581 visibility of entities.
32585 the declared entity may be overridden.
32588 visible to other modules.
32591 language.
32595 form of linkage, which we call "hidden linkage". Two
32597 same object if they are in the same shared object.
32601 additional processor specific semantics. Unless otherwise
32603 mean that a function is _never_ called from another module.
32606 indirectly via function pointers. By indicating that a
32609 that the calling function loaded the correct value.
32614 the definition in that module. That is, the declared entity
32615 cannot be overridden by another module.
32618 (supported when the assembler supports the '.visibility'
32619 pseudo-op). Default visibility is supported everywhere. Hidden
32620 visibility is supported on Darwin targets.
32623 that would otherwise have external linkage. The attribute should
32625 declared with different settings of the attribute.
32628 functions and objects, because in C++ types have linkage. A class
32631 their class. Also, a declaration without explicit visibility is
32632 limited to the visibility of its type.
32635 of a class with the visibility attribute. This is useful if you
32638 rest of the class has default visibility. Care must be taken to
32641 whole class as hidden.
32643 A C++ namespace declaration can also have the visibility attribute.
32646 { /* Do something. */; }
32651 definition (*note Visibility Pragmas::).
32654 restriction is implicitly propagated to the template instantiation.
32656 the visibility of their template.
32659 the visibility from the template is used.
32664 return value. This is useful for functions where not checking the
32666 'realloc'.
32676 results in warning on line 5.
32680 be emitted as a weak symbol rather than a global. This is
32683 non-function declarations. The overriding symbol must have the
32684 same type as the weak symbol. In addition, if it designates a
32686 symbol. Weak symbols are supported for ELF targets, and also for
32687 a.out targets when using the GNU assembler and linker.
32691 The 'weakref' attribute marks a declaration as a weak reference.
32693 naming the target symbol. Alternatively, TARGET may be given as an
32695 alias. The TARGET must have the same type as the declaration. In
32697 size and alignment as the declaration. In either form of the
32699 'weak'. Without a TARGET given as an argument to 'weakref' or to
32701 declaration may be 'extern').
32706 /* the following... */
32709 /* is equivalent to... */
32712 /* or, alternatively, to... */
32717 definition to be given for the target symbol. If the target symbol
32719 'weak' undefined symbol. If it is directly referenced, however,
32721 for the symbol, not necessarily in the same translation unit.
32727 (i.e. 'ld -r') on them.
32730 with a named 'target' must be 'static'.
32733 File: gcc.info, Node: AArch64 Function Attributes, Next: AMD GCN Function Attributes, Prev: Comm…
32735 6.33.2 AArch64 Function Attributes
32739 AArch64 target. For the most part, these options mirror the behavior of
32741 per-function basis.
32745 be used when generating code for this function. If the function
32747 error. This is the same behavior as that of the command-line
32748 option '-mgeneral-regs-only'.
32752 should be applied to this function. To explicitly disable the
32754 'no-fix-cortex-a53-835769'. This corresponds to the behavior of
32756 '-mno-fix-cortex-a53-835769'.
32760 for this function. The behavior and permissible arguments are the
32761 same as for the command line option '-mcmodel='.
32766 unaligned memory references are handled by the system. To allow
32769 specified. The behavior is same as for the command-line option
32770 '-mstrict-align' and '-mno-strict-align'.
32774 function call. To keep the frame pointer, the inverse attribute
32775 'no-omit-leaf-frame-pointer' can be specified. These attributes
32777 '-momit-leaf-frame-pointer' and '-mno-omit-leaf-frame-pointer'.
32780 Specifies the TLS dialect to use for this function. The behavior
32782 option '-mtls-dialect='.
32786 use for this function. The behavior and permissible arguments are
32787 the same as for the '-march=' command-line option.
32791 function. The behavior and permissible arguments are the same as
32792 for the '-mtune=' command-line option.
32796 function and also whose architectural features to use. The
32798 command-line option.
32802 applied. The behavior and permissible arguments are the same as
32803 for the command-line option '-msign-return-address='. The default
32804 value is 'none'. This attribute is deprecated. The
32805 'branch-protection' attribute should be used instead.
32809 applied. The behavior and permissible arguments are the same as
32810 for the command-line option '-mbranch-protection='. The default
32811 value is 'none'.
32815 operations. This corresponds to the behavior of the command line
32816 options '-moutline-atomics' and '-mno-outline-atomics'.
32827 where 'ATTR-STRING' is one of the attribute strings specified above.
32830 its own. This can be used to turn on and off particular architectural
32832 or core. Example:
32843 modifying an existing '-march=' or '-mcpu' option.
32846 with a comma. For example:
32855 'crypto' extensions and tunes it for 'cortex-a53'.
32857 6.33.2.1 Inlining rules
32858 .......................
32866 features available to the caller. For example: A function 'foo'
32870 function 'bar' requires are available to function 'foo'. Conversely,
32871 function 'bar' cannot inline function 'foo'.
32874 function compiled without '-mstrict-align' is not allowed. However,
32876 compiled with '-mstrict-align' is allowed.
32881 feature rules specified above.
32884 File: gcc.info, Node: AMD GCN Function Attributes, Next: ARC Function Attributes, Prev: AArch64 …
32886 6.33.3 AMD GCN Function Attributes
32894 invoked from the host via the HSA runtime library. By default
32895 functions are only callable only from other GCN functions.
32898 using default parameters.
32901 to a conventional place within the HSA "kernargs" region.
32904 kernel function by the GPU drivers, via the initial register state.
32905 Some values are used by the compiler, and therefore forced on.
32907 run-time libraries.
32910 Set 'enable_sgpr_private_segment_buffer' flag. Always on
32911 (required to locate the stack).
32914 Set 'enable_sgpr_dispatch_ptr' flag. Always on (required to
32915 locate the launch dimensions).
32918 Set 'enable_sgpr_queue_ptr' flag. Always on (required to
32919 convert address spaces).
32922 Set 'enable_sgpr_kernarg_segment_ptr' flag. Always on
32923 (required to locate the kernel arguments, "kernargs").
32926 Set 'enable_sgpr_dispatch_id' flag.
32929 Set 'enable_sgpr_flat_scratch_init' flag.
32932 Set 'enable_sgpr_private_segment_size' flag.
32935 Set 'enable_sgpr_grid_workgroup_count_x' flag. Always on
32936 (required to use OpenACC/OpenMP).
32939 Set 'enable_sgpr_grid_workgroup_count_y' flag.
32942 Set 'enable_sgpr_grid_workgroup_count_z' flag.
32945 Set 'enable_sgpr_workgroup_id_x' flag.
32948 Set 'enable_sgpr_workgroup_id_y' flag.
32951 Set 'enable_sgpr_workgroup_id_z' flag.
32954 Set 'enable_sgpr_workgroup_info' flag.
32957 Set 'enable_sgpr_private_segment_wave_byte_offset' flag.
32958 Always on (required to locate the stack).
32961 Set 'enable_vgpr_workitem_id' parameter. Always on (can't be
32962 disabled).
32965 Set 'enable_vgpr_workitem_id' parameter. Always on (required
32966 to enable vectorization.)
32969 Set 'enable_vgpr_workitem_id' parameter. Always on (required
32970 to use OpenACC/OpenMP).
32973 File: gcc.info, Node: ARC Function Attributes, Next: ARM Function Attributes, Prev: AMD GCN Func…
32975 6.33.4 ARC Function Attributes
32982 interrupt handler. The compiler generates function entry and exit
32984 attribute is present.
32993 architecture.
32998 These attributes specify how a particular function is called.
33001 long_calls' settings.
33006 32-bit address space. A function marked with the 'medium_call'
33009 offset from the call site. A function marked with the 'short_call'
33012 from the call site.
33015 Forces a particular function to be called using 'jli' instruction.
33016 The 'jli' instruction makes use of a table stored into '.jlitab'
33018 addressed using this instruction.
33022 the 'jli' table is known and given as an attribute parameter.
33026 callable from normal mode. The location of the secure call
33027 function into the 'sjli' table needs to be passed as argument.
33032 assembly code. The specified function will not have
33033 prologue/epilogue sequences generated by the compiler. Only basic
33035 Basic Asm::). While using extended 'asm' or a mixture of basic
33037 to work reliably and are not supported.
33040 File: gcc.info, Node: ARM Function Attributes, Next: AVR Function Attributes, Prev: ARC Function…
33042 6.33.5 ARM Function Attributes
33049 be used when generating code for this function. If the function
33051 error. This is the same behavior as that of the command-line
33052 option '-mgeneral-regs-only'.
33056 interrupt handler. The compiler generates function entry and exit
33058 attribute is present.
33066 'ABORT' and 'UNDEF'.
33069 the function may be called with a word-aligned stack pointer.
33072 Use this attribute on ARM to write Interrupt Service Routines.
33073 This is an alias to the 'interrupt' attribute above.
33077 These attributes specify how a particular function is called.
33079 command-line switch and '#pragma long_calls' settings. For ARM,
33082 calling sequence. The 'short_call' attribute always places the
33084 directly.
33089 assembly code. The specified function will not have
33090 prologue/epilogue sequences generated by the compiler. Only basic
33092 Basic Asm::). While using extended 'asm' or a mixture of basic
33094 to work reliably and are not supported.
33099 used for a function on ARM. The attribute takes an argument that
33100 specifies the calling convention to use.
33103 values for the argument are '"aapcs"' and '"aapcs-vfp"'. In order
33105 permitted to use the appropriate co-processor registers (i.e., the
33106 VFP registers must be available in order to use '"aapcs-vfp"').
33109 /* Argument passed in r0, and result returned in r0+r1. */
33113 the compiler rejects attempts to specify an alternative.
33117 allows specification of target-specific compilation options.
33123 the architecture level.
33126 Force code generation in the ARM (A32) ISA.
33129 mode.
33133 function. The behavior and permissible arguments are the same
33134 as for the '-mfpu=' command-line option.
33138 extensions to use for this function. The behavior and
33140 command-line option.
33152 specified on its own. This can be used to turn on and off
33154 a particular architecture version or core. Example:
33166 option.
33169 File: gcc.info, Node: AVR Function Attributes, Next: Blackfin Function Attributes, Prev: ARM Fun…
33171 6.33.6 AVR Function Attributes
33178 interrupt handler. The compiler generates function entry and exit
33180 attribute is present.
33183 interrupt is executed. The first instruction of an interrupt
33185 re-enable interrupts. See also the 'signal' function attribute
33186 that does not insert a 'SEI' instruction. If both 'signal' and
33188 silently ignored.
33193 assembly code. The specified function will not have
33194 prologue/epilogue sequences generated by the compiler. Only basic
33196 Basic Asm::). While using extended 'asm' or a mixture of basic
33198 to work reliably and are not supported.
33202 'interrupt' or 'signal' attribute aka. interrupt service routine
33203 (ISR). Use this attribute if the preamble of the ISR prologue
33212 not. Situations where you might want to use this attribute
33215 'I'-flag by writing to the memory location of 'SREG'.
33218 outlined above to be present.
33220 there is option '-mno-gas-isr-prologues', *note AVR Options::.
33225 save/restore any call-saved register in their prologue/epilogue.
33228 interrupts are disabled at the time when the function is entered.
33230 set up a frame for local variables.
33234 entered like for, e.g. task functions in a multi-threading
33235 operating system. In that case, changing the stack pointer
33237 enable flag.
33242 return instruction.
33245 needed.
33249 function is an interrupt handler. The compiler generates function
33251 when this attribute is present.
33253 See also the 'interrupt' function attribute.
33256 executed. Interrupt handler functions defined with the 'signal'
33257 attribute do not re-enable interrupts. It is save to enable
33258 interrupts in a 'signal' handler. This "save" only applies to the
33260 application which is responsibility of the application.
33263 function, 'signal' is silently ignored.
33266 File: gcc.info, Node: Blackfin Function Attributes, Next: BPF Function Attributes, Prev: AVR Fun…
33268 6.33.7 Blackfin Function Attributes
33275 function is an exception handler. The compiler generates function
33277 when this attribute is present.
33281 interrupt handler. The compiler generates function entry and exit
33283 attribute is present.
33288 USP register in the function prologue.
33292 Instruction SRAM. The function is put into a specific section
33293 named '.l1.text'. With '-mfdpic', function calls with a such
33294 function as the callee or caller uses inlined PLT.
33297 This attribute specifies a function to be placed into L2 SRAM. The
33298 function is put into a specific section named '.l2.text'. With
33299 '-mfdpic', callers of such functions use an inlined PLT.
33305 calling sequence. The 'shortcall' attribute indicates that the
33307 be used. These attributes override the '-mlongcall' switch.
33312 entry code should enable nested interrupts or exceptions.
33316 function is an NMI handler. The compiler generates function entry
33318 attribute is present.
33323 are used or not.
33326 File: gcc.info, Node: BPF Function Attributes, Next: CR16 Function Attributes, Prev: Blackfin Fu…
33328 6.33.8 BPF Function Attributes
33335 is a kernel helper. The helper function is passed as an argument
33336 to the attribute. Example:
33342 File: gcc.info, Node: CR16 Function Attributes, Next: C-SKY Function Attributes, Prev: BPF Funct…
33344 6.33.9 CR16 Function Attributes
33351 interrupt handler. The compiler generates function entry and exit
33353 attribute is present.
33356 File: gcc.info, Node: C-SKY Function Attributes, Next: Epiphany Function Attributes, Prev: CR16 …
33358 6.33.10 C-SKY Function Attributes
33366 interrupt handler. The compiler generates function entry and exit
33368 these attributes are present.
33371 enable support for the necessary interrupt stack instructions.
33372 They are ignored with a warning otherwise. *Note C-SKY Options::.
33377 assembly code. The specified function will not have
33378 prologue/epilogue sequences generated by the compiler. Only basic
33380 Basic Asm::). While using extended 'asm' or a mixture of basic
33382 to work reliably and are not supported.
33385 File: gcc.info, Node: Epiphany Function Attributes, Next: H8/300 Function Attributes, Prev: C-SK…
33387 6.33.11 Epiphany Function Attributes
33394 interrupts for the duration of the given function.
33397 This attribute modifies the behavior of an interrupt handler. The
33400 transfer control. The single parameter identifies the section
33401 where the trampoline is placed.
33405 interrupt handler. The compiler generates function entry and exit
33407 attribute is present. It may also generate a special section with
33408 code to initialize the interrupt vector table.
33417 'dma0', 'dma1', 'wand' and 'swi'. Multiple parameters indicate
33419 initialized for this function, i.e. for each parameter NAME, a jump
33420 to the function is emitted in the section ivt_entry_NAME. The
33422 vector table entry is provided.
33425 'disinterrupt' attribute is also specified.
33441 These attributes specify how a particular function is called.
33444 settings.
33447 File: gcc.info, Node: H8/300 Function Attributes, Next: IA-64 Function Attributes, Prev: Epiphan…
33449 6.33.12 H8/300 Function Attributes
33457 vector. Calling a function through the function vector reduces
33460 and shares space with the interrupt vector.
33464 the specified function is an interrupt handler. The compiler
33466 interrupt handler when this attribute is present.
33471 prologue regardless of whether they are used or not.
33474 File: gcc.info, Node: IA-64 Function Attributes, Next: M32C Function Attributes, Prev: H8/300 Fu…
33476 6.33.13 IA-64 Function Attributes
33483 marking all input registers as live at all function exits. This
33485 without having to save/restore the input registers. This also
33486 prevents kernel data from leaking into application code.
33491 allowing for function level versioning. HP-UX system header files
33492 may use function level versioning for some system calls.
33496 Calls to 'foo' are mapped to calls to 'foo{20040821}'.
33499 File: gcc.info, Node: M32C Function Attributes, Next: M32R/D Function Attributes, Prev: IA-64 Fu…
33501 6.33.14 M32C Function Attributes
33509 registers rather than saving them on the stack.
33513 function is a fast interrupt handler. This is just like the
33515 instead of 'reit'.
33519 special page subroutine call function. Use of this attribute
33521 subroutine. The argument to the attribute is the vector number
33523 low-order bits of the subroutine's entry address. Each vector
33525 instructions. Jump addresses of the routines are generated by
33527 M32C targets), to the 2-byte addresses set in the vector table.
33530 0x0FFFFF (for M16C) and 0xFF0000 to 0xFFFFFF (for M32C).
33533 function 'foo'.
33546 file, then be sure to write this declaration in both files.
33548 This attribute is ignored for R8C target.
33552 interrupt handler. The compiler generates function entry and exit
33554 attribute is present.
33557 File: gcc.info, Node: M32R/D Function Attributes, Next: m68k Function Attributes, Prev: M32C Fun…
33559 6.33.15 M32R/D Function Attributes
33566 interrupt handler. The compiler generates function entry and exit
33568 attribute is present.
33573 object, and of the code generated for a function. The identifier
33575 each of the code models.
33579 callable with the 'bl' instruction.
33583 addresses), and are callable with the 'bl' instruction.
33589 sequence).
33592 File: gcc.info, Node: m68k Function Attributes, Next: MCORE Function Attributes, Prev: M32R/D Fu…
33594 6.33.16 m68k Function Attributes
33602 interrupt handler. The compiler generates function entry and exit
33604 attribute is present. Either name may be used.
33609 is designed to run as a thread. The compiler omits generate
33611 with a 'sleep' instruction. This attribute is available only on
33612 fido.
33615 File: gcc.info, Node: MCORE Function Attributes, Next: MeP Function Attributes, Prev: m68k Funct…
33617 6.33.17 MCORE Function Attributes
33625 assembly code. The specified function will not have
33626 prologue/epilogue sequences generated by the compiler. Only basic
33628 Basic Asm::). While using extended 'asm' or a mixture of basic
33630 to work reliably and are not supported.
33633 File: gcc.info, Node: MeP Function Attributes, Next: MicroBlaze Function Attributes, Prev: MCORE…
33635 6.33.18 MeP Function Attributes
33643 function.
33647 interrupt handler. The compiler generates function entry and exit
33649 attribute is present.
33654 '-mtf' command-line option.
33659 addressing modes.
33663 VLIW mode instead of core mode. Note that this attribute is not
33665 through command-line options.
33668 File: gcc.info, Node: MicroBlaze Function Attributes, Next: Microsoft Windows Function Attributes…
33670 6.33.19 MicroBlaze Function Attributes
33677 handler. All volatile registers (in addition to non-volatile
33678 registers) are saved in the function prologue. If the function is
33679 a leaf function, only volatiles used by the function are saved. A
33681 interrupt.
33685 break handler. The compiler generates function entry and exit
33687 is present. The return from 'break_handler' is done through the
33688 'rtbd' instead of 'rtsd'.
33695 interrupt handler. Use the 'fast_interrupt' attribute to indicate
33698 handlers. In both cases, GCC emits appropriate prologue code and
33699 generates a return from the handler using 'rtid' instead of 'rtsd'.
33702 File: gcc.info, Node: Microsoft Windows Function Attributes, Next: MIPS Function Attributes, Pre…
33704 6.33.20 Microsoft Windows Function Attributes
33708 OS targets.
33714 attribute. On Microsoft Windows targets, the pointer name is
33715 formed by combining '_imp__' and the function or variable name.
33718 ((dllexport))' for compatibility with other compilers.
33721 also implies "default" visibility. It is an error to explicitly
33722 specify any other visibility.
33725 'dllexport' attribute. Since this can cause object file-size
33728 '-fkeep-inline-functions' flag is used instead.
33730 The attribute is ignored for undefined symbols.
33733 non-inlined member functions and static data members as exports.
33735 also defined out-of-class.
33739 '.def' file with an 'EXPORTS' section or, with GNU ld, using the
33740 '--export-all' linker flag.
33746 exporting the symbol. The attribute implies 'extern'. On
33748 '_imp__' and the function or variable name.
33751 ((dllimport))' for compatibility with other compilers.
33754 also implies "default" visibility. It is an error to explicitly
33755 specify any other visibility.
33757 Currently, the attribute is ignored for inlined functions. If the
33759 reported. If a symbol previously declared 'dllimport' is later
33761 warning is emitted. The attribute is also overridden by a
33762 subsequent declaration as 'dllexport'.
33765 functions and static data members as imports. However, the
33767 vtables using thunks.
33771 information for a class to be exported. This happens when the
33775 that is defined in the current translation unit.
33779 benefit by eliminating a thunk in the DLL. The use of the
33781 passing the '--enable-auto-import' switch to the GNU linker. As
33783 thunk in the DLL.
33787 address. However, a pointer to a _function_ with the 'dllimport'
33789 address of a stub function in the import lib is referenced. On
33791 functions by setting the '-mnop-fun-dllimport' flag.
33794 File: gcc.info, Node: MIPS Function Attributes, Next: MSP430 Function Attributes, Prev: Microsof…
33796 6.33.21 MIPS Function Attributes
33803 interrupt handler. The compiler generates function entry and exit
33805 attribute is present. An optional argument is supported for the
33807 described. By default GCC assumes the external interrupt
33809 'eic'. When interrupts are non-masked then the requested Interrupt
33811 effect of only enabling higher priority interrupts. To use
33816 interrupt vector.
33822 the main general-purpose registers. An optional argument
33824 set contains a valid stack pointer.
33827 Keep interrupts masked for the whole function. Without this
33829 function as it can.
33832 Return using the 'deret' instruction. Interrupt handlers that
33833 don't have this attribute return using 'eret' instead.
33857 MIPS. The attributes override the '-mlong-calls' (*note MIPS
33858 Options::) command-line switch. The 'long_call' and 'far'
33861 using the contents of that register. The 'short_call' and 'near'
33864 instruction.
33870 attributes to locally select or turn off MIPS16 code generation. A
33873 'nomips16' attribute. These attributes override the '-mips16' and
33874 '-mno-mips16' options on the command line (*note MIPS Options::).
33878 command line, not that within individual functions. Mixed MIPS16
33880 such as '__builtin_apply' (*note Constructing Calls::).
33887 generation. A function with the 'micromips' attribute is emitted
33889 functions with the 'nomicromips' attribute. These attributes
33891 command line (*note MIPS Options::).
33895 setting on the command line, not that within individual functions.
33898 Calls::).
33902 to locally turn off MIPS16 and microMIPS code generation. This
33904 command line (*note MIPS Options::).
33907 File: gcc.info, Node: MSP430 Function Attributes, Next: NDS32 Function Attributes, Prev: MIPS Fu…
33909 6.33.22 MSP430 Function Attributes
33916 previous interrupt state upon exit. Critical functions cannot also
33917 have the 'naked', 'reentrant' or 'interrupt' attributes.
33921 on exit. The 'critical' attribute is therefore redundant on
33922 'interrupt' functions.
33926 interrupt handler. The compiler generates function entry and exit
33928 attribute is present.
33931 specifies a name or number. If the argument is a number it
33933 this handler should be assigned. If the argument is a name it is
33934 treated as a symbolic name for the vector slot. These names should
33935 match up with appropriate entries in the linker script. By default
33937 for vector 31 are recognized.
33942 assembly code. The specified function will not have
33943 prologue/epilogue sequences generated by the compiler. Only basic
33945 Basic Asm::). While using extended 'asm' or a mixture of basic
33947 to work reliably and are not supported.
33951 upon exit. Reentrant functions cannot also have the 'naked' or
33952 'critical' attributes. They can have the 'interrupt' attribute.
33955 This attribute only applies to interrupt functions. It is silently
33956 ignored if applied to a non-interrupt function. A wakeup interrupt
33958 might be in when the function exits.
33966 decide. The attributes are only significant if compiling for the
33967 MSP430X architecture in the large memory model.
33970 been augmented to specify where to place sections with a '.lower'
33971 and a '.upper' prefix. So, for example, as well as placing the
33972 '.data' section, the script also specifies the placement of a
33973 '.lower.data' and a '.upper.data' section. The intention is that
33976 slower to access, region.
33978 The 'either' attribute is special. It tells the linker to place
33980 for it. If there is insufficient room then the object is placed
33981 into the corresponding 'upper' section instead. Note that the
33982 placement algorithm is not very sophisticated. It does not attempt
33983 to find an optimal packing of the 'lower' sections. It just makes
33984 one pass over the objects and does the best that it can. Using the
33987 to pack regions.
33990 File: gcc.info, Node: NDS32 Function Attributes, Next: Nios II Function Attributes, Prev: MSP430…
33992 6.33.23 NDS32 Function Attributes
33999 specified function is an exception handler. The compiler will
34000 generate corresponding sections for use in an exception handler.
34004 function is an interrupt handler. The compiler generates
34005 corresponding sections for use in an interrupt handler. You can
34008 This interrupt service routine is interruptible.
34010 This interrupt service routine is not interruptible.
34013 'PSW.GIE' (global interrupt enable) is set. This allows
34015 before enabling interrupts.
34018 entering interrupt handler.
34021 entering interrupt handler.
34026 assembly code. The specified function will not have
34027 prologue/epilogue sequences generated by the compiler. Only basic
34029 Basic Asm::). While using extended 'asm' or a mixture of basic
34031 to work reliably and are not supported.
34035 specified function is a reset handler. The compiler will generate
34036 corresponding sections for use in a reset handler. You can use the
34039 Provide a user-defined function to handle NMI exception.
34042 exception.
34045 File: gcc.info, Node: Nios II Function Attributes, Next: Nvidia PTX Function Attributes, Prev: N…
34047 6.33.24 Nios II Function Attributes
34054 allows specification of target-specific compilation options.
34062 INSN. Similarly, 'no-custom-INSN' locally inhibits use of the
34063 custom instruction INSN. These target attributes correspond
34065 options, and support the same set of INSN keywords. *Note
34066 Nios II Options::, for more information.
34071 instructions named NAME. *Note Nios II Options::, for more
34072 information.
34075 File: gcc.info, Node: Nvidia PTX Function Attributes, Next: PowerPC Function Attributes, Prev: N…
34077 6.33.25 Nvidia PTX Function Attributes
34085 via the CUDA RT library. By default functions are only callable
34086 only from other PTX functions.
34088 Kernel functions must have 'void' return type.
34091 File: gcc.info, Node: PowerPC Function Attributes, Next: RISC-V Function Attributes, Prev: Nvidi…
34093 6.33.26 PowerPC Function Attributes
34102 calling sequence. The 'shortcall' attribute indicates that the
34104 be used. These attributes override both the '-mlongcall' switch
34105 and the '#pragma longcall' setting.
34108 whether long calls are necessary.
34112 allows specification of target-specific compilation options.
34118 Generate code that uses (does not use) AltiVec instructions.
34120 '-mabi=altivec' is used on the command line.
34126 processors that support the PowerPC V2.05 architecture.
34132 processors. This instruction is generated by default when
34133 targeting those processors.
34139 processors that support the PowerPC V2.03 architecture.
34145 processors.
34149 Generate code that uses (does not use) ISEL instruction.
34155 and other processors that support the PowerPC V2.01
34156 architecture.
34162 and 476 processors. These instructions are generated by
34163 default when targeting those processors.
34168 instructions and the store multiple word instructions.
34174 the calculated memory location.
34181 support the PowerPC V2.02 architecture.
34187 processors that support the PowerPC V2.06 architecture.
34193 floating-point select.
34199 including floating-point square root.
34205 mandated by the PowerPC ABI.
34211 multiple registers and do small block moves.
34217 that allow more direct access to the VSX instruction set. In
34219 unless '-mabi=altivec' is used on the command line.
34226 floating point. The 'friz' instruction does not return the
34228 an integer.
34233 indexed load or store instructions.
34238 PAIRED simd instructions.
34244 is required.
34248 the function. If you select the 'target("cpu=power7")'
34251 '-mabi=altivec' option on the command line.
34255 function. If you do not specify the 'target("tune=TUNE")'
34258 the default tuning specified on the command line.
34262 subset of the target options of the caller.
34265 File: gcc.info, Node: RISC-V Function Attributes, Next: RL78 Function Attributes, Prev: PowerPC …
34267 6.33.27 RISC-V Function Attributes
34275 assembly code. The specified function will not have
34276 prologue/epilogue sequences generated by the compiler. Only basic
34278 Basic Asm::). While using extended 'asm' or a mixture of basic
34280 to work reliably and are not supported.
34284 interrupt handler. The compiler generates function entry and exit
34286 attribute is present.
34294 'machine'. If there is no parameter, then it defaults to
34295 'machine'.
34298 File: gcc.info, Node: RL78 Function Attributes, Next: RX Function Attributes, Prev: RISC-V Funct…
34300 6.33.28 RL78 Function Attributes
34308 interrupt handler. The compiler generates function entry and exit
34310 attribute is present.
34313 be used with the 'BRK' opcode (i.e. those that must end with 'RETB'
34314 instead of 'RETI').
34319 assembly code. The specified function will not have
34320 prologue/epilogue sequences generated by the compiler. Only basic
34322 Basic Asm::). While using extended 'asm' or a mixture of basic
34324 to work reliably and are not supported.
34327 File: gcc.info, Node: RX Function Attributes, Next: S/390 Function Attributes, Prev: RL78 Functi…
34329 6.33.29 RX Function Attributes
34336 function is a fast interrupt handler. This is just like the
34338 instead of 'reit'.
34342 interrupt handler. The compiler generates function entry and exit
34344 attribute is present.
34348 name. Parameters are handled sequentially, so one handler can be
34349 assigned to multiple entries in multiple tables. One may also pass
34351 for any unfilled slots in the current table.
34367 assembly code. The specified function will not have
34368 prologue/epilogue sequences generated by the compiler. Only basic
34370 Basic Asm::). While using extended 'asm' or a mixture of basic
34372 to work reliably and are not supported.
34377 interrupt-handler type function (i.e. it retains the normal C
34378 function calling ABI). See the 'interrupt' attribute for a
34379 description of its arguments.
34382 File: gcc.info, Node: S/390 Function Attributes, Next: SH Function Attributes, Prev: RX Function…
34384 6.33.30 S/390 Function Attributes
34392 make GCC generate a "hot-patching" function prologue. If the
34394 'hotpatch' attribute takes precedence. The first of the two
34396 function label. A second argument can be used to specify the
34397 number of halfwords to be added after the function label. For both
34398 arguments the maximum allowed value is 1000000.
34400 If both arguments are zero, hotpatching is disabled.
34404 allows specification of target-specific compilation options.
34435 any feature macros. For example,
34439 does not undefine the '__VEC__' macro.
34442 File: gcc.info, Node: SH Function Attributes, Next: Symbian OS Function Attributes, Prev: S/390 …
34444 6.33.31 SH Function Attributes
34451 using the TBR relative addressing mode. The argument to this
34453 table containing all the TBR relative addressable functions. For
34456 are invoked. Usually a good place to do the initialization is the
34457 startup routine. The TBR relative vector table can have at max 256
34458 function entries. The jumps to these functions are generated using
34459 a SH2A specific, non delayed branch instruction JSR/N @(disp8,TBR).
34461 this attribute to work correctly.
34466 of these calls.
34470 interrupt handler. The compiler generates function entry and exit
34472 attribute is present.
34477 R0..R7. This can be used on SH3* and SH4* targets that have a
34478 second R0..R7 register bank for non-reentrant interrupt handlers.
34482 follows the Renesas ABI.
34487 'interrupt_handler' routines. Saving to the bank is performed
34489 register bank.
34493 and the vector table address offset are saved into a register bank.
34494 Register banks are stacked in first-in last-out (FILO) sequence.
34496 instruction.
34500 function should switch to an alternate stack. It expects a string
34502 alternate stack.
34510 using 'trapa' instead of 'rte'. This attribute expects an integer
34511 argument specifying the trap number to be used.
34515 'interrupt_handler' but it does not save and restore all registers.
34518 File: gcc.info, Node: Symbian OS Function Attributes, Next: V850 Function Attributes, Prev: SH F…
34520 6.33.32 Symbian OS Function Attributes
34524 'dllexport' and 'dllimport' attributes.
34527 File: gcc.info, Node: V850 Function Attributes, Next: Visium Function Attributes, Prev: Symbian …
34529 6.33.33 V850 Function Attributes
34537 interrupt handler. The compiler generates function entry and exit
34539 attribute is present.
34542 File: gcc.info, Node: Visium Function Attributes, Next: x86 Function Attributes, Prev: V850 Func…
34544 6.33.34 Visium Function Attributes
34551 interrupt handler. The compiler generates function entry and exit
34553 attribute is present.
34556 File: gcc.info, Node: x86 Function Attributes, Next: Xstormy16 Function Attributes, Prev: Visium…
34558 6.33.35 x86 Function Attributes
34566 pass arguments. This is useful to override the effects of the
34567 '-mrtd' switch.
34572 and the second argument (if of integral type) in the register EDX.
34573 Subsequent and other typed arguments are passed on the stack. The
34574 called function pops the arguments off the stack. If the number of
34575 arguments is variable all arguments are pushed on the stack.
34579 pass the first argument (if of integral type) in the register ECX.
34580 Subsequent and other typed arguments are passed on the stack. The
34581 called function pops the arguments off the stack. If the number of
34582 arguments is variable all arguments are pushed on the stack. The
34584 functions. As a GCC extension, this calling convention can be used
34585 for C functions and for static member methods.
34591 indicate which calling convention should be used for a function.
34594 used on GNU/Linux and other systems. The default is to use the
34595 Microsoft ABI when targeting Windows. On all other systems, the
34596 default is the x86/AMD ABI.
34599 currently requires the '-maccumulate-outgoing-args' option.
34604 aggregates are returned in memory. If the caller is responsible
34606 arguments, specify NUMBER equal to zero. If callee is responsible
34607 for popping the hidden pointer, specify NUMBER equal to one.
34610 hidden pointer. However, on x86-32 Microsoft Windows targets, the
34611 compiler assumes that the caller pops the stack for hidden pointer.
34618 and newer.
34623 assembly code. The specified function will not have
34624 prologue/epilogue sequences generated by the compiler. Only basic
34626 Basic Asm::). While using extended 'asm' or a mixture of basic
34628 to work reliably and are not supported.
34633 registers EAX, EDX, and ECX instead of on the stack. Functions
34635 of their arguments on the stack.
34639 the default). Lazy binding sends the first call via resolving code
34641 clobbered, as per the standard calling conventions. Solaris 8 is
34642 affected by this. Systems with the GNU C Library version 2.1 or
34644 save EAX, EDX and ECX. (Lazy binding can be disabled with the
34645 linker or the loader if desired, to avoid the problem.)
34650 registers instead of on the stack. Functions that take a variable
34652 arguments on the stack.
34658 necessary. This supports mixing legacy codes that run with a
34660 for SSE compatibility.
34665 pass arguments, unless it takes a variable number of arguments.
34669 caller-saved registers. That is, all registers are callee-saved.
34671 an interrupt handler. The compiler generates proper function entry
34673 except for the EFLAGS register. Since GCC doesn't preserve SSE,
34676 attribute.
34681 passed to the function, explained further). The compiler generates
34683 handler when this attribute is present. The 'IRET' instruction,
34685 handlers. All registers, except for the EFLAGS register which is
34686 restored by the 'IRET' instruction, are preserved by the compiler.
34689 exception handlers.
34693 the hardware design, touch the red zone.
34707 processor's manual.
34710 system pushes an error code on the stack. An exception handler
34712 different mandatory function signature. The compiler arranges to
34713 pop the error code off the stack before the 'IRET' instruction.
34727 ...
34731 error code; you should use an interrupt handler in other cases.
34732 The system will crash if the wrong kind of handler is used.
34736 allows specification of target-specific compilation options.
34741 Enable/disable the generation of the 3DNow! instructions.
34746 instructions.
34751 instructions.
34755 Enable/disable the generation of the ADX instructions.
34759 Enable/disable the generation of the AES instructions.
34763 Enable/disable the generation of the AVX instructions.
34767 Enable/disable the generation of the AVX2 instructions.
34772 instructions.
34777 instructions.
34782 instructions.
34786 Enable/disable the generation of the AVX512BW instructions.
34790 Enable/disable the generation of the AVX512CD instructions.
34794 Enable/disable the generation of the AVX512DQ instructions.
34798 Enable/disable the generation of the AVX512ER instructions.
34802 Enable/disable the generation of the AVX512F instructions.
34806 Enable/disable the generation of the AVX512IFMA instructions.
34810 Enable/disable the generation of the AVX512PF instructions.
34814 Enable/disable the generation of the AVX512VBMI instructions.
34818 Enable/disable the generation of the AVX512VBMI2 instructions.
34822 Enable/disable the generation of the AVX512VL instructions.
34826 Enable/disable the generation of the AVX512VNNI instructions.
34831 instructions.
34835 Enable/disable the generation of the BMI instructions.
34839 Enable/disable the generation of the BMI2 instructions.
34843 Enable/disable the generation of the CLDEMOTE instructions.
34847 Enable/disable the generation of the CLFLUSHOPT instructions.
34851 Enable/disable the generation of the CLWB instructions.
34855 Enable/disable the generation of the CLZERO instructions.
34859 Enable/disable the generation of the CRC32 instructions.
34863 Enable/disable the generation of the CMPXCHG16B instructions.
34867 the default function version.
34871 Enable/disable the generation of the F16C instructions.
34875 Enable/disable the generation of the FMA instructions.
34879 Enable/disable the generation of the FMA4 instructions.
34883 Enable/disable the generation of the FSGSBASE instructions.
34887 Enable/disable the generation of the FXSR instructions.
34891 Enable/disable the generation of the GFNI instructions.
34895 Enable/disable the generation of the HLE instruction prefixes.
34899 Enable/disable the generation of the LWP instructions.
34903 Enable/disable the generation of the LZCNT instructions.
34907 Enable/disable the generation of the MMX instructions.
34911 Enable/disable the generation of the MOVBE instructions.
34915 Enable/disable the generation of the MOVDIR64B instructions.
34919 Enable/disable the generation of the MOVDIRI instructions.
34923 Enable/disable the generation of the MWAITX instructions.
34927 Enable/disable the generation of the PCLMUL instructions.
34931 Enable/disable the generation of the PCONFIG instructions.
34935 Enable/disable the generation of the PKU instructions.
34939 Enable/disable the generation of the POPCNT instruction.
34943 Enable/disable the generation of the PREFETCHWT1 instructions.
34947 Enable/disable the generation of the PREFETCHW instruction.
34951 Enable/disable the generation of the PTWRITE instructions.
34955 Enable/disable the generation of the RDPID instructions.
34959 Enable/disable the generation of the RDRND instructions.
34963 Enable/disable the generation of the RDSEED instructions.
34967 Enable/disable the generation of the RTM instructions.
34971 Enable/disable the generation of the SAHF instructions.
34975 Enable/disable the generation of the SGX instructions.
34979 Enable/disable the generation of the SHA instructions.
34983 Enable/disable the shadow stack built-in functions from CET.
34987 Enable/disable the generation of the SSE instructions.
34991 Enable/disable the generation of the SSE2 instructions.
34995 Enable/disable the generation of the SSE3 instructions.
35000 SSE4.1 and SSE4.2).
35002 'sse4.1'
35003 'no-sse4.1'
35004 Enable/disable the generation of the sse4.1 instructions.
35006 'sse4.2'
35007 'no-sse4.2'
35008 Enable/disable the generation of the sse4.2 instructions.
35012 Enable/disable the generation of the SSE4A instructions.
35016 Enable/disable the generation of the SSSE3 instructions.
35020 Enable/disable the generation of the TBM instructions.
35024 Enable/disable the generation of the VAES instructions.
35028 Enable/disable the generation of the VPCLMULQDQ instructions.
35032 Enable/disable the generation of the WAITPKG instructions.
35036 Enable/disable the generation of the WBNOINVD instructions.
35040 Enable/disable the generation of the XOP instructions.
35044 Enable/disable the generation of the XSAVE instructions.
35048 Enable/disable the generation of the XSAVEC instructions.
35052 Enable/disable the generation of the XSAVEOPT instructions.
35056 Enable/disable the generation of the XSAVES instructions.
35060 Enable/disable the generation of the CLD before string moves.
35065 instructions on the 387 floating-point unit.
35070 on IEEE arithmetic.
35074 Enable/disable inlining of string operations.
35080 operations.
35084 Do/do not align destination of inlined string operations.
35090 step instead of doing a floating-point division.
35094 function.
35098 function.
35101 Specify which floating-point unit to use. You must specify
35104 different options.
35108 compiler to convert indirect call and jump with CHOICE.
35109 'keep' keeps indirect call and jump unmodified. 'thunk'
35110 converts indirect call and jump to call and return thunk.
35112 and return thunk. 'thunk-extern' converts indirect call and
35114 object file.
35118 compiler to convert function return with CHOICE. 'keep' keeps
35119 function return unmodified. 'thunk' converts function return
35120 to call and return thunk. 'thunk-inline' converts function
35121 return to inlined call and return thunk. 'thunk-extern'
35123 provided in a separate object file.
35129 option. The compiler assumes that the function's address is a
35130 valid target for a control-flow transfer.
35135 '-fcf-protection=branch' option. The compiler assumes that
35137 a control-flow transfer. A direct function call through a
35139 are not instrumented by the compiler.
35141 The 'nocf_check' attribute is applied to an object's type. In
35145 unchanged. The compiler checks for 'nocf_check' attribute
35146 mismatch and reports a warning in case of mismatch.
35153 /* foo's address is assumed to be valid. */
35158 validity. */
35161 /* A warning is issued about attribute mismatch. */
35164 /* This call site is still not checked. */
35167 /* This call site is checked. */
35170 /* A warning is issued about attribute mismatch. */
35173 /* This call site is still checked. */
35183 function entry when '-fcf-protection=branch' is enabled.
35189 compiler that the function may return via indirect branch.
35194 enabled with '-pg -mfentry'. When NAME is nop then a 5 byte
35195 nop sequence is generated.
35204 subset of the target options of the caller. For example a function
35206 'target("sse2")', since '-msse3' implies '-msse2'.
35209 File: gcc.info, Node: Xstormy16 Function Attributes, Prev: x86 Function Attributes, Up: Function…
35211 6.33.36 Xstormy16 Function Attributes
35218 interrupt handler. The compiler generates function entry and exit
35220 attribute is present.
35223 File: gcc.info, Node: Variable Attributes, Next: Type Attributes, Prev: Function Attributes, Up…
35230 members. This '__attribute__' keyword is followed by an attribute
35231 specification enclosed in double parentheses. Some attributes are
35232 currently defined generically for variables. Other attributes are
35233 defined for variables on particular target systems. Other attributes
35237 Attributes::). Other front ends might define more attributes (*note
35238 Extensions to the C++ Language: C++ Extensions.).
35241 attributes.
35263 File: gcc.info, Node: Common Variable Attributes, Next: ARC Variable Attributes, Up: Variable At…
35265 6.34.1 Common Variable Attributes
35268 The following attributes are supported on most targets.
35272 as an alias for another symbol known as an "alias target". Except
35274 as the alias. For instance, the following
35279 defines 'var_alias' to be an alias for the 'var_target' variable.
35282 translation unit as the alias.
35285 declarations with external linkage denote distinct objects. Using
35288 with the attribute.
35291 not be available on all targets.
35296 variable or structure field, measured in bytes. When specified,
35297 ALIGNMENT must be an integer constant power of 2. Specifying no
35299 which is often, but by no means always, 8 or 16 bytes.
35306 16-byte boundary. On a 68040, this could be used in conjunction
35308 requires 16-byte aligned operands.
35310 You can also specify the alignment of structure fields. For
35317 which forces the union to be double-word aligned.
35321 variable or structure field. Alternatively, you can leave out the
35324 compiling for. The default alignment is sufficient for all scalar
35326 supports vector operations. The default alignment is fixed for a
35327 particular target ABI.
35331 target machine you are compiling for. For example, you could
35337 variable or field to '__BIGGEST_ALIGNMENT__'. Doing this can often
35341 aligned this way. Note that the value of '__BIGGEST_ALIGNMENT__'
35342 may change depending on command-line options.
35346 'packed' attribute must be specified as well. When used as part of
35349 warning.
35353 linker and/or object file format. On some systems, the linker is
35355 maximum alignment. (For some linkers, the maximum supported
35356 alignment may be very very small.) If your linker is only able to
35359 you with 8-byte alignment. See your linker documentation for
35360 further information.
35363 properly align them on any target.
35366 Common Function Attributes::.)
35370 measured in bytes. If the structure field is aligned below the
35371 threshold, a warning will be issued. For example, the declaration:
35381 'warning: alignment 8 of 'struct foo' is less than 16'. The
35393 This warning can be disabled by '-Wno-if-not-aligned'. The
35395 Common Type Attributes::.)
35401 takes at least one argument of an integer type. It indicates that
35404 at POSITION-1 and POSITION-2. Meaningful sizes are positive values
35405 less than 'PTRDIFF_MAX'. Other sizes are disagnosed when detected.
35407 '__builtin_object_size'.
35420 object whose size is given by argument 1 to the function.
35424 of scope. This attribute can only be applied to auto function
35426 with static storage duration. The function must take one
35427 parameter, a pointer to a type compatible with the variable. The
35428 return value of the function (if any) is ignored.
35432 exception. Note that the 'cleanup' attribute does not allow the
35433 exception to be caught, only to perform an action. It is undefined
35434 what happens if CLEANUP_FUNCTION does not return normally.
35439 storage. The 'nocommon' attribute requests the opposite--to
35440 allocate space for it directly.
35443 and '-fcommon' flags respectively.
35449 which the attribute is applied. The attribute is designed for
35451 set of attributes as the aliased symbols. The 'copy' attribute can
35452 be used with variables, functions or types. However, the kind of
35455 refers. The 'copy' attribute copies only syntactic and semantic
35457 visibility such as 'alias', 'visibility', or 'weak'. The
35458 'deprecated' attribute is also not copied. *Note Common Function
35459 Attributes::. *Note Common Type Attributes::.
35464 used anywhere in the source file. This is useful when identifying
35466 program. The warning also includes the location of the declaration
35469 should do instead. Note that the warning only occurs for uses:
35475 results in a warning on line 3 but not line 2. The optional MSG
35477 present.
35481 Attributes::).
35484 the '-fmessage-length' option.
35488 declaration--whichever type corresponds to the mode MODE. This in
35490 to its width.
35493 for MODE. You may also specify a mode of 'byte' or '__byte__' to
35496 '__pointer__' for the mode used to represent pointers.
35503 'NUL'. This is useful in detecting uses of such arrays or pointers
35506 bounded string manipulation function such as 'strncpy'. For
35509 appending the terminating 'NUL' character. Using the attribute
35510 makes it possible to suppress the warning. However, when the array
35513 the call is undefined. To copy, compare, of search non-string
35515 functions that operate on arrays of bytes. In addition, calling
35517 suitable bound is specified, and not diagnosed.
35527 ...
35535 'aligned' attribute. The attribute does not apply to non-member
35536 objects.
35548 attribute on bit-fields of type 'char'. This has been fixed in GCC
35549 4.4 but the change can lead to differences in the structure layout.
35551 information.
35555 like 'data' and 'bss'. Sometimes, however, you need additional
35557 special sections, for example to map to special hardware. The
35559 in a particular section. For example, this small program uses
35581 variables, as shown in the example.
35587 multiply "defined". Using the 'section' attribute changes what
35589 error if an uninitialized variable has multiple definitions. You
35591 or the 'nocommon' attribute.
35594 'section' attribute is not available on all platforms. If you need
35596 consider using the facilities of the linker instead.
35601 '-ftls-model=' command-line switch on a per-variable basis. The
35603 'local-dynamic', 'initial-exec' or 'local-exec'.
35605 Not all targets support this attribute.
35609 meant to be possibly unused. GCC does not produce a warning for
35610 this variable.
35615 variable is not referenced.
35619 itself is instantiated.
35623 declared variable, measured in bytes. The type to which it applies
35624 is known as the "base type". The BYTES argument must be a positive
35625 power-of-two multiple of the base type size. For example, the
35631 divided into 'int' sized units. Assuming a 32-bit 'int', 'foo''s
35633 corresponding mode of 'foo' is 'V4SI'. *Note Vector Extensions::,
35634 for details of manipulating vector variables.
35638 in conjunction with this construct.
35641 same size as a corresponding scalar. For example, the declaration:
35647 size of the 'int'.
35651 is attached. The 'visibility' attribute is described in *note
35652 Common Function Attributes::.
35656 Attributes::.
35660 C runtime startup code, or the program loader. Not initializing
35661 data in this way can reduce program startup times. This attribute
35666 File: gcc.info, Node: ARC Variable Attributes, Next: AVR Variable Attributes, Prev: Common Varia…
35668 6.34.2 ARC Variable Attributes
35673 register space from C. The auxilirary register number is given via
35674 attribute argument.
35677 File: gcc.info, Node: AVR Variable Attributes, Next: Blackfin Variable Attributes, Prev: ARC Var…
35679 6.34.3 AVR Variable Attributes
35684 in the non-volatile program memory (flash). The 'progmem'
35686 section whose name starts with '.progmem'.
35689 additional checking.
35693 data is accessed. In order to read data located with the
35694 'progmem' attribute (inline) assembler must be used.
35695 /* Use custom macros from AVR-LibC (http://nongnu.org/avr-libc/user-manual/) */
35696 #include <avr/pgmspace.h>
35703 /* Access var[] by accessor macro from avr/pgmspace.h */
35708 data normally resides in the data memory (RAM).
35711 alternate way to locate and access data in flash memory.
35715 *note '__flash': AVR Named Address Spaces. qualifier at all.
35716 Just use standard C / C++. The compiler will generate 'LD*'
35717 instructions. As flash memory is visible in the RAM address
35719 '.rodata' in RAM, no special features are needed in order not
35720 to waste RAM for read-only data or to read from flash. You
35722 'progmem' and '__flash'. This applies to devices from
35724 for an overview.
35729 memory, namely in section '.progmem.data'. The offset is
35731 space starting at address '0x4000'.
35734 no special functions or macros are needed.
35745 'progmem' at all.
35750 peripherals in the io address range. If an address is specified,
35752 as an address in the data address space. Example:
35756 The address specified in the address in the data address range.
35761 range. Example:
35769 allowing the use of 'cbi', 'sbi', 'sbic' and 'sbis' instructions.
35775 range.
35782 addresses.
35785 like ATtiny40.
35788 address range '0x40'...'0xbf' accessible by 'LDS' and 'STS'.
35790 file.
35795 'module.c:(.text+0x1c): warning: internal error: out of
35798 See also the '-mabsdata' *note command-line option: AVR Options.
35801 File: gcc.info, Node: Blackfin Variable Attributes, Next: H8/300 Variable Attributes, Prev: AVR …
35803 6.34.4 Blackfin Variable Attributes
35806 Three attributes are currently defined for the Blackfin.
35812 Data SRAM. Variables with 'l1_data' attribute are put into the
35813 specific section named '.l1.data'. Those with 'l1_data_A'
35814 attribute are put into the specific section named '.l1.data.A'.
35816 named '.l1.data.B'.
35820 SRAM. Variables with 'l2' attribute are put into the specific
35821 section named '.l2.data'.
35824 File: gcc.info, Node: H8/300 Variable Attributes, Next: IA-64 Variable Attributes, Prev: Blackfi…
35826 6.34.5 H8/300 Variable Attributes
35834 section. The compiler generates more efficient code for certain
35835 operations on data in the eight-bit data area. Note the eight-bit
35836 data area is limited to 256 bytes of data.
35839 this attribute to work correctly.
35843 specified variable should be placed into the tiny data section.
35845 data in the tiny data section. Note the tiny data area is limited
35846 to slightly under 32KB of data.
35849 File: gcc.info, Node: IA-64 Variable Attributes, Next: M32R/D Variable Attributes, Prev: H8/300 …
35851 6.34.6 IA-64 Variable Attributes
35859 object. At present, the only supported identifier for MODEL-NAME
35862 instruction). Caveat: such addressing is by definition not
35864 objects defined by shared libraries.
35867 File: gcc.info, Node: M32R/D Variable Attributes, Next: MeP Variable Attributes, Prev: IA-64 Var…
35869 6.34.7 M32R/D Variable Attributes
35872 One attribute is currently defined for the M32R/D.
35876 object. The identifier MODEL-NAME is one of 'small', 'medium', or
35877 'large', representing each of the code models.
35880 addresses can be loaded with the 'ld24' instruction).
35884 load their addresses).
35887 File: gcc.info, Node: MeP Variable Attributes, Next: Microsoft Windows Variable Attributes, Prev…
35889 6.34.8 MeP Variable Attributes
35892 The MeP target has a number of addressing modes and busses. The 'near'
35893 space spans the standard memory space's first 16 megabytes (24 bits).
35894 The 'far' space spans the entire 32-bit memory space. The 'based' space
35896 the '$tp' register. The 'tiny' space is a 65536-byte region relative to
35897 the '$gp' register. In addition to these memory regions, the MeP target
35899 attributes.
35902 Any variable with the 'based' attribute is assigned to the '.based'
35903 section, and is accessed with relative to the '$tp' register.
35906 Likewise, the 'tiny' attribute assigned variables to the '.tiny'
35907 section, relative to the '$gp' register.
35911 that fit in a 24-bit addressing mode. This is the default for
35913 override '-mtiny=' for small variables, or override '-ml'.
35917 32-bit address. Since this covers the entire memory space, this
35919 be stored.
35924 peripherals. If an address is specified, the variable is assigned
35926 some other module assigns an address). Example:
35933 bus, using special instructions. 'addr' indicates the control bus
35934 address. Example:
35939 File: gcc.info, Node: Microsoft Windows Variable Attributes, Next: MSP430 Variable Attributes, P…
35941 6.34.9 Microsoft Windows Variable Attributes
35944 You can use these attributes on Microsoft Windows targets. *note x86
35946 available on all x86 targets.
35951 Microsoft Windows Function Attributes::.
35955 have link-once semantics. When multiple definitions of the
35957 the remainder are discarded. Following usage by the Microsoft
35959 differences of the multiple definitions.
35963 initialized by a constructor. In this case, the static
35967 variable.
35970 targets. You can use '__declspec (selectany)' as a synonym for
35972 compilers.
35977 running copies of an executable or DLL. For example, this small
35986 /* Read and write foo. All running
35987 copies see the same value. */
35993 way linkers work. See 'section' attribute for more information.
35995 The 'shared' attribute is only available on Microsoft Windows.
35998 File: gcc.info, Node: MSP430 Variable Attributes, Next: Nvidia PTX Variable Attributes, Prev: Mi…
36000 6.34.10 MSP430 Variable Attributes
36005 C runtime startup code, or the program loader. Not initialising
36006 data in this way can reduce program startup times.
36010 initialised by the C runtime startup code. Instead its value will
36013 restarts. Persistent data is intended to be placed into FLASH RAM,
36014 where its value will be retained across resets. The linker script
36016 data is correctly placed.
36021 the same name (*note MSP430 Function Attributes::).
36026 but it has some additional functionality.
36030 generate 430X instructions to handle it. This is because the
36032 upper memory region (above address 0xFFFF). Marking the variable
36035 instructions to handle it.
36038 be used, and the '.lower' prefix will not be added.
36041 File: gcc.info, Node: Nvidia PTX Variable Attributes, Next: PowerPC Variable Attributes, Prev: M…
36043 6.34.11 Nvidia PTX Variable Attributes
36049 Use this attribute to place a variable in the '.shared' memory
36050 space. This memory space is private to each cooperative thread
36052 instance of the variable. The runtime does not initialize
36053 variables in this memory space.
36056 File: gcc.info, Node: PowerPC Variable Attributes, Next: RL78 Variable Attributes, Prev: Nvidia …
36058 6.34.12 PowerPC Variable Attributes
36062 'altivec', 'ms_struct' and 'gcc_struct'.
36065 documentation in *note x86 Variable Attributes::.
36068 in *note PowerPC Type Attributes::.
36071 File: gcc.info, Node: RL78 Variable Attributes, Next: V850 Variable Attributes, Prev: PowerPC Va…
36073 6.34.13 RL78 Variable Attributes
36076 The RL78 back end supports the 'saddr' variable attribute. This
36078 which can be accessed more efficiently than the default memory region.
36081 File: gcc.info, Node: V850 Variable Attributes, Next: x86 Variable Attributes, Prev: RL78 Variab…
36083 6.34.14 V850 Variable Attributes
36090 area, which can hold up to 64 kilobytes.
36094 area, which can hold up to 256 bytes in total.
36098 kilobytes of memory.
36101 File: gcc.info, Node: x86 Variable Attributes, Next: Xstormy16 Variable Attributes, Prev: V850 V…
36103 6.34.15 x86 Variable Attributes
36107 and 'gcc_struct'.
36114 than the way GCC normally does. Particularly when moving packed
36117 necessary to access either format.
36122 layout is affected. *Note x86 Type Attributes::, for information
36123 about the corresponding attributes on types.
36126 File: gcc.info, Node: Xstormy16 Variable Attributes, Prev: x86 Variable Attributes, Up: Variable…
36128 6.34.16 Xstormy16 Variable Attributes
36132 'below100'.
36138 and use special opcodes to access it. Such variables are placed in
36139 either the '.bss_below100' section or the '.data_below100' section.
36142 File: gcc.info, Node: Type Attributes, Next: Label Attributes, Prev: Variable Attributes, Up: C…
36148 properties of types. Some type attributes apply only to structure and
36150 type defined via a 'typedef' declaration. Unless otherwise specified,
36153 constructors, destructors, or a copy assignment.
36158 for variables (*note Variable Attributes::).
36161 enclosed in double parentheses.
36165 'struct', 'union' or 'enum' keyword. You can also place them just past
36167 because logically the type should be fully defined at the closing brace.
36169 You can also include type attributes in a 'typedef' declaration. *Note
36171 attributes.
36183 File: gcc.info, Node: Common Type Attributes, Next: ARC Type Attributes, Up: Type Attributes
36185 6.35.1 Common Type Attributes
36188 The following type attributes are supported on most targets.
36193 for variables of the specified type. When specified, ALIGNMENT
36194 must be a power of 2. Specifying no ALIGNMENT argument implies the
36196 always, 8 or 16 bytes. For example, the declarations:
36203 aligned _at least_ on a 8-byte boundary. On a SPARC, having all
36207 another, thus improving run-time efficiency.
36212 of the 'struct' or 'union' in question. This means that you _can_
36217 adjust the alignment of an entire 'struct' or 'union' type.
36221 'struct' or 'union' type. Alternatively, you can leave out the
36224 for. For example, you could write:
36231 for any data type on the target machine you are compiling for.
36235 types that you have aligned this way.
36238 the size of the entire 'struct S' type is 6 bytes. The smallest
36241 bytes.
36248 (efficiently aligned) type. If you declare or use arrays of
36254 than for other types.
36257 by inherent limitations in your linker. On many systems, the
36259 certain maximum alignment. (For some linkers, the maximum
36260 supported alignment may be very very small.) If your linker is
36263 provides you with 8-byte alignment. See your linker documentation
36264 for further information.
36268 'packed' attribute must be specified as well. When used as part of
36271 warning.
36275 measured in bytes. If the structure field is aligned below the
36276 threshold, a warning will be issued. For example, the declaration:
36289 'warning: alignment 4 of 'struct foo' is less than 8'. It is used
36292 '__u64' is aligned at either 4 or 8 bytes. Align 'struct foo' to 8
36302 silences the warning. The compiler also issues a warning, like
36314 This warning can be disabled by '-Wno-if-not-aligned'.
36320 argument of an integer type. It indicates that the returned
36323 POSITION-1 and POSITION-2. Meaningful sizes are positive values
36324 less than 'PTRDIFF_MAX'. Other sizes are disagnosed when detected.
36326 '__builtin_object_size'.
36339 given by argument 1 to the function.
36345 type to which the attribute is applied. The attribute is designed
36347 same set of attributes as the aliased symbols. The 'copy'
36348 attribute can be used with types, variables, or functions.
36351 the argument refers. The 'copy' attribute copies only syntactic
36353 linkage or visibility such as 'alias', 'visibility', or 'weak'.
36354 The 'deprecated' attribute is also not copied. *Note Common
36355 Function Attributes::. *Note Common Variable Attributes::.
36360 due to attribute 'packed'. Specifying the 'copy' attribute on the
36363 expression to 'struct B'.
36366 A { /* ... */ };
36367 struct __attribute__ ((copy ( (struct A *)0)) B { /* ... */ };
36372 anywhere in the source file. This is useful when identifying types
36373 that are expected to be removed in a future version of a program.
36377 should do instead. Note that the warnings only occur for uses and
36379 is not being declared as deprecated.
36388 results in a warning on line 2 and 3 but not lines 4, 5, or 6. No
36390 deprecated. Line 5 has no warning because T3 is explicitly
36391 deprecated. Similarly for line 6. The optional MSG argument,
36392 which must be a string, is printed in the warning if present.
36395 default value) then any newline characters will be ignored.
36399 Attributes::.)
36402 the '-fmessage-length' option.
36405 This attribute may only be applied to structure types. It
36407 use designated initializers rather than positional initializers.
36410 positional initialization will result in future breakage.
36413 '-Wno-designated-init' to suppress them.
36418 able to alias any other type of objects. In the context of section
36421 type. See '-fstrict-aliasing' for more information on aliasing
36422 issues. This extension exists to support some vector APIs, in
36424 to a different vector type.
36427 special semantics.
36449 '-fstrict-aliasing', which is on by default at '-O2' or above.
36453 declaration--whichever type corresponds to the mode MODE. This in
36455 to its width.
36458 for MODE. You may also specify a mode of 'byte' or '__byte__' to
36461 '__pointer__' for the mode used to represent pointers.
36466 zero-width bit-fields) is placed to minimize the memory required.
36468 the members.
36471 indicates that the smallest integral type should be used.
36474 definitions.
36479 packed too.
36496 not also define the enumerated type, structure, union, or class.
36501 well as the array fields whose component is scalar. The supported
36502 endiannesses are 'big-endian' and 'little-endian'. The attribute
36506 than the enclosing type.
36509 default scalar storage order (fortunately, most of them), i.e.
36511 little-endian.
36519 and yields an error.
36523 '-Wno-scalar-storage-order' is specified.
36525 scalar storage order is permitted.
36530 address generally does not work. The second case is nevertheless
36531 allowed to be able to perform a block copy from or to the array.
36536 storage order to it.
36542 that function to be treated in a special way.
36545 be of any type in the union; no cast is required. Also, if the
36549 be any pointer expression. If the union member type is a pointer,
36551 just as with normal pointer conversions.
36555 calling conventions of the union itself. All members of the union
36557 this argument passing to work properly.
36560 multiple interfaces for compatibility reasons. For example,
36563 comply with the 4.1BSD interface. If 'wait''s parameter were 'void
36566 checking less useful. Instead, '<sys/wait.h>' might define the
36578 be passed, using the 'int *' calling convention. The program can
36588 return waitpid (-1, p.__ip, 0);
36594 possibly unused. GCC does not produce a warning for any variables
36595 of that type, even if the variable appears to do nothing. This is
36598 destructors that have nontrivial bookkeeping functions.
36602 bytes. The type to which it applies is known as the "base type".
36604 base type size. For example, the following declarations:
36611 sized units. With 'int' having a size of 4 bytes, the type defines
36612 a vector of eight units, four bytes each. The mode of variables of
36613 type 'int_vec32_t' is 'V8SI'. 'int_vec32_ptr_t' is then defined to
36615 array of three such vectors. *Note Vector Extensions::, for
36616 details of manipulating objects of vector types.
36619 types. In function declarations the attribute applies to the
36620 function return type.
36625 vector with the base type 'float'.
36629 be applied to class, struct, union and enum types. Unlike other
36632 of the type.
36635 associated with the class (vtable, typeinfo node, etc.). In
36638 visibility. Otherwise the two shared objects are unable to use the
36639 same typeinfo node and exception handling will break.
36643 packed))'.
36646 File: gcc.info, Node: ARC Type Attributes, Next: ARM Type Attributes, Prev: Common Type Attribut…
36648 6.35.2 ARC Type Attributes
36653 involving the additional semantic implications of 'volatile'. The '.di'
36655 'uncached'.
36658 File: gcc.info, Node: ARM Type Attributes, Next: MeP Type Attributes, Prev: ARC Type Attributes,…
36660 6.35.3 ARM Type Attributes
36665 other similar data for a class should not be exported from a DLL. For
36678 table for 'C' is not exported. (You can use '__attribute__' instead of
36679 '__declspec' if you prefer, but most Symbian OS code uses '__declspec'.)
36682 File: gcc.info, Node: MeP Type Attributes, Next: PowerPC Type Attributes, Prev: ARM Type Attribu…
36684 6.35.4 MeP Type Attributes
36687 Many of the MeP variable attributes may be applied to types as well.
36689 applied to either. The 'io' and 'cb' attributes may not be applied to
36690 types.
36693 File: gcc.info, Node: PowerPC Type Attributes, Next: x86 Type Attributes, Prev: MeP Type Attribu…
36695 6.35.5 PowerPC Type Attributes
36699 'altivec', 'ms_struct' and 'gcc_struct'.
36702 please see the documentation in *note x86 Type Attributes::.
36705 supported by the AltiVec Programming Interface Manual. The attribute
36708 followed by unsigned).
36715 '__pixel', and '__bool' AltiVec keywords.
36718 File: gcc.info, Node: x86 Type Attributes, Prev: PowerPC Type Attributes, Up: Type Attributes
36720 6.35.6 x86 Type Attributes
36724 and 'gcc_struct'.
36731 normally packs them. Particularly when moving packed data between
36734 necessary to access either format.
36739 layout is affected. *Note x86 Variable Attributes::, for
36740 information about the corresponding attributes on variables.
36743 File: gcc.info, Node: Label Attributes, Next: Enumerator Attributes, Prev: Type Attributes, Up:…
36748 GCC allows attributes to be set on C labels. *Note Attribute Syntax::,
36749 for details of the exact syntax for using attributes. Other attributes
36753 (*note Type Attributes::).
36774 contain unused labels, but which is compiled with '-Wall'. It is
36777 contained within an '#ifdef' conditional.
36782 so annotated. This attribute is used in cases where
36784 or 'asm goto'.
36788 the path following the label is unlikely to be executed. This
36790 for instance with computed goto or 'asm goto'.
36793 File: gcc.info, Node: Enumerator Attributes, Next: Statement Attributes, Prev: Label Attributes,…
36798 GCC allows attributes to be set on enumerators. *Note Attribute
36799 Syntax::, for details of the exact syntax for using attributes. Other
36803 (*note Type Attributes::).
36821 is used anywhere in the source file. This is useful when
36823 version of a program. The warning also includes the location of
36826 deprecated, or what they should do instead. Note that the warnings
36827 only occurs for uses.
36830 File: gcc.info, Node: Statement Attributes, Next: Attribute Syntax, Prev: Enumerator Attributes,…
36835 GCC allows attributes to be set on null statements. *Note Attribute
36836 Syntax::, for details of the exact syntax for using attributes. Other
36840 types (*note Type Attributes::).
36851 ...
36856 fallthrough statement. It hints to the compiler that a statement
36859 '-Wimplicit-fallthrough' warning must not trigger. The fallthrough
36861 not be mixed with other attributes. It can only be used in a
36864 label, or user-defined label.
36867 File: gcc.info, Node: Attribute Syntax, Next: Function Prototypes, Prev: Statement Attributes, …
36874 language. Some details may vary for C++ and Objective-C. Because of
36876 may not be successfully parsed in all cases.
36878 There are some problems with the semantics of attributes in C++. For
36881 conjunction with templates or overloading. Similarly, 'typeid' does not
36882 distinguish between types with different attributes. Support for
36884 declarations only, but not on nested declarators.
36887 applying to functions. *Note Variable Attributes::, for details of the
36888 semantics of attributes applying to variables. *Note Type Attributes::,
36890 and enumerated types. *Note Label Attributes::, for details of the
36891 semantics of attributes applying to labels. *Note Enumerator
36893 enumerators. *Note Statement Attributes::, for details of the semantics
36894 of attributes applying to statements.
36897 ((ATTRIBUTE-LIST))'. An "attribute list" is a possibly empty
36901 * Empty. Empty attributes are ignored.
36904 a reserved word such as 'const').
36907 for the attribute. These parameters take one of the following
36910 * An identifier. For example, 'mode' attributes use this form.
36913 comma-separated list of expressions. For example, 'format'
36914 attributes use this form.
36916 * A possibly empty comma-separated list of expressions. For
36920 constant.
36923 specifiers, not separated by any other tokens.
36926 following the name. This allows you to use them in header files without
36927 being concerned about a possible macro of the same name. For example,
36928 you may use the attribute name '__noreturn__' instead of 'noreturn'.
36931 ................
36934 following a label, other than a 'case' or 'default' label. GNU C++ only
36936 followed by a semicolon (i.e., the label applies to an empty statement).
36939 list, to be labelled in C++. Declarations cannot be labelled in C90 or
36940 C99, so the ambiguity does not arise there.
36943 .....................
36946 enumerator. The attribute goes after the enumeration constant, before
36947 '=', if present. The optional attribute in the enumerator appertains to
36948 the enumeration constant. It is not possible to place the attribute
36949 after the constant expression, if present.
36952 ....................
36955 statement. The attribute goes before the semicolon.
36958 ...............
36961 'enum' specifier. It may go either immediately after the 'struct',
36962 'union' or 'enum' keyword, or after the closing brace. The former
36963 syntax is preferred. Where attribute specifiers follow the closing
36967 the attribute specifiers.
36970 ....................
36976 declarator within a declaration. Where an attribute specifier is
36980 implemented.
36984 context contain storage class specifiers. (Some attributes, however,
36987 'section'.) There is one necessary limitation to this syntax: the first
36991 implemented in this case). In some other cases, attribute specifiers
36992 are permitted by this grammar but not yet supported by the compiler.
36994 whole. In the obsolescent usage where a type of 'int' is implied by the
36996 be an attribute specifier list with no other specifiers or qualifiers.
37001 x))', but is subject to change. At present, if the parentheses of a
37004 parameter of type int, but this is subject to change.
37009 specifiers and qualifiers. Such attribute specifiers apply only to the
37010 identifier before whose declarator they appear. For example, in
37013 __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
37017 'format' attribute only applies to 'd1'.
37021 a function definition. Such attribute specifiers apply to the declared
37022 object or function. Where an assembler name for an object or function
37024 specification.
37028 parameter declarations or the function body).
37033 implicitly converted. Such attribute specifiers apply to the pointer,
37035 ignored.
37038 declarator. At present, there are some limitations in this usage: the
37040 attributes the semantics this implies are not implemented. When
37042 mixed with any type qualifiers present. The following describes the
37043 formal semantics of this syntax. It makes the most sense if you are
37045 standard.
37047 Consider (as in C99 subclause 6.7.5 paragraph 4) a declaration 'T D1',
37049 as 'int') and 'D1' is a declarator that contains an identifier IDENT.
37051 include an attribute specifier is as in the ISO C standard.
37056 ATTRIBUTE-SPECIFIER-LIST TYPE" for IDENT.
37062 TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-LIST pointer to TYPE" for IDENT.
37069 non-returning function returning 'void'". As another example,
37073 specifies the type "pointer to 8-byte-aligned pointer to 'char'". Note
37076 supported.
37080 allowed in the placing of attributes. If an attribute that only applies
37082 type of that declaration. If an attribute that only applies to
37088 type is treated as applying to the array type. If an attribute that
37093 type.
37096 File: gcc.info, Node: Function Prototypes, Next: C++ Comments, Prev: Attribute Syntax, Up: C Ex…
37102 old-style non-prototype definition. Consider the following example:
37104 /* Use prototypes unless the compiler is old-fashioned. */
37111 /* Prototype function declaration. */
37114 /* Old-style function definition. */
37122 Suppose the type 'uid_t' happens to be 'short'. ISO C does not allow
37124 definitions are promoted. Therefore in this example the function
37126 prototype argument type of 'short'.
37130 the 'uid_t' type is 'short', 'int', or 'long'. Therefore, in cases like
37131 these GNU C allows a prototype to override a later old-style definition.
37134 former type is the same as the latter type before promotion. Thus in
37146 extension is irrelevant.
37149 File: gcc.info, Node: C++ Comments, Next: Dollar Signs, Prev: Function Prototypes, Up: C Extens…
37155 continue until the end of the line. Many other C implementations allow
37156 such comments, and they are included in the 1999 C standard. However,
37159 '-std=c90').
37162 File: gcc.info, Node: Dollar Signs, Next: Character Escapes, Prev: C++ Comments, Up: C Extensio…
37167 In GNU C, you may normally use dollar signs in identifier names. This
37168 is because many traditional C implementations allow such identifiers.
37170 machines, typically because the target assembler does not allow them.
37173 File: gcc.info, Node: Character Escapes, Next: Alignment, Prev: Dollar Signs, Up: C Extensions
37179 for the ASCII character <ESC>.
37182 File: gcc.info, Node: Alignment, Next: Inline, Prev: Character Escapes, Up: C Extensions
37189 by a type. Its syntax is just like 'sizeof' and C11 '_Alignof'.
37192 aligned on an 8-byte boundary, then '__alignof__ (double)' is 8. This
37193 is true on many RISC machines. On more traditional machine designs,
37194 '__alignof__ (double)' is 4 or even 2.
37197 to any data type even at an odd address. For these machines,
37199 type, usually as mandated by the target ABI.
37204 Variable Attributes::). For example, after this declaration:
37208 the value of '__alignof__ (foo1.y)' is 1, even though its actual
37209 alignment is probably 2 or 4, the same as '__alignof__ (int)'. It is an
37210 error to ask for the alignment of an incomplete type other than 'void'.
37214 specified by attribute 'aligned' (*note Common Function Attributes::).
37217 File: gcc.info, Node: Inline, Next: Volatiles, Prev: Alignment, Up: C Extensions
37223 function faster. One way GCC can achieve this is to integrate that
37224 function's code into the code for its callers. This makes execution
37228 code needs to be included. The effect on code size is less predictable;
37230 on the particular case. You can also direct GCC to try to integrate all
37232 '-finline-functions'.
37235 inline. One is available with '-std=gnu89' or '-fgnu89-inline' or when
37238 (without '-fgnu89-inline'), and the third is used when compiling C++.
37250 write '__inline__' instead of 'inline'. *Note Alternate Keywords::.
37265 had not used the 'inline' keyword, except for its speed.
37269 never used, then the function's own assembler code is never referenced.
37271 function, unless you specify the option '-fkeep-inline-functions'. If
37273 assembler code as usual. The function must also be compiled as usual if
37274 the program refers to its address, because that cannot be inlined.
37277 unsuitable for inline substitution. Among these usages are: variadic
37281 '__builtin_apply_args'. Using '-Winline' warns when a function marked
37282 'inline' could not be substituted, and gives the reason for the failure.
37286 declared with the 'inline' keyword. You can override this with
37288 Dialect Options.
37293 /* Prototype. */
37296 The remainder of this section is specific to GNU C90 inlining.
37302 integrated. Therefore, a non-'static' inline function is always
37303 compiled on its own in the usual fashion.
37306 then the definition is used only for inlining. In no case is the
37308 explicitly. Such an address becomes an external reference, as if you
37309 had only declared the function, and had not defined it.
37312 macro. The way to use it is to put a function definition in a header
37314 (lacking 'inline' and 'extern') in a library file. The definition in
37315 the header file causes most calls to the function to be inlined. If any
37317 library.
37320 File: gcc.info, Node: Volatiles, Next: Using Assembly Language with C, Prev: Inline, Up: C Exte…
37325 C has the concept of volatile objects. These are normally accessed by
37326 pointers and used for accessing hardware or inter-thread communication.
37329 defined as to what constitutes a volatile access. The minimum
37332 occurred. Thus an implementation is free to reorder and combine
37334 for accesses across a sequence point. The use of volatile does not
37336 between two sequence points.
37339 volatile accesses. You cannot use a volatile object as a memory barrier
37340 to order a sequence of writes to non-volatile memory. For instance:
37348 to *PTR occurs by the time the update of VOBJ happens. If you need this
37363 volatile object being pointed to.
37365 Assignments are also expressions and have an rvalue. However when
37367 regardless of whether the assignment expression's rvalue is used or not.
37369 volatile object. For instance, there is no read of VOBJ in all the
37381 sequence point.
37385 accessed. Bit-field operations may be optimized such that adjacent
37387 boundary. For these reasons it is unwise to use volatile bit-fields to
37388 access hardware.
37391 File: gcc.info, Node: Using Assembly Language with C, Next: Alternate Keywords, Prev: Volatiles,…
37397 code. GCC provides two forms of inline 'asm' statements. A "basic
37400 operands. The extended form is preferred for mixing C and assembly
37402 level you must use basic 'asm'.
37405 C symbol, or to place a C variable in a specific register.
37409 * Basic Asm:: Inline assembler without operands.
37410 * Extended Asm:: Inline assembler with operands.
37412 * Asm Labels:: Specifying the assembler name to use for a C symbol.
37414 registers.
37415 * Size of an asm:: How GCC calculates the size of an 'asm' block.
37418 File: gcc.info, Node: Basic Asm, Next: Extended Asm, Up: Using Assembly Language with C
37420 6.47.1 Basic Asm -- Assembler Instructions Without Operands
37427 The 'asm' keyword is a GNU extension. When writing code that can be
37429 instead of 'asm' (*note Alternate Keywords::).
37432 ..........
37435 The optional 'volatile' qualifier has no effect. All basic 'asm'
37436 blocks are implicitly volatile.
37441 (*note Size of an asm::).
37444 ..........
37447 This is a literal string that specifies the assembler code. The
37449 including directives. GCC does not parse the assembler
37451 whether they are valid assembler input.
37455 code for the system. A combination that works in most places is a
37457 '\n\t'). Some assemblers allow semicolons as a line separator.
37459 a comment.
37462 .......
37466 solution than basic 'asm'. However, there are two situations where only
37471 of C functions, you must use basic 'asm'. You can use this
37474 functions in assembly language. Basic 'asm' statements outside of
37475 functions may not use any qualifiers.
37478 'asm' (*note Function Attributes::).
37481 complex than it may appear. To access C data, it is better to use
37482 extended 'asm'.
37485 consecutive after compilation. If certain instructions need to remain
37487 statement. Note that GCC's optimizers can move 'asm' statements
37488 relative to other code, including across jumps.
37490 'asm' statements may not perform jumps into other 'asm' statements.
37492 of them when deciding how to optimize. Jumps from 'asm' to C labels are
37493 only supported in extended 'asm'.
37496 of) your assembly code when optimizing. This can lead to unexpected
37498 symbols or labels.
37501 it a potential source of incompatibilities between compilers. These
37502 incompatibilities may not produce compiler warnings/errors.
37506 them. GCC has no visibility of symbols in the 'asm' and may discard
37507 them as unreferenced. It also does not know about side effects of the
37508 assembler code, such as modifications to memory or registers. Unlike
37510 occur. This assumption may change in a future release.
37514 with extended 'asm'. See How to convert from basic asm to extended asm
37515 (https://gcc.gnu.org/wiki/ConvertBasicAsmToExtended) for information
37516 about how to perform this conversion.
37521 'asm'. This results in minor differences between basic 'asm' strings
37522 and extended 'asm' templates. For example, to refer to registers you
37523 might use '%eax' in basic 'asm' and '%%eax' in extended 'asm'.
37527 command-line option (*note x86 Options::). Basic 'asm' provides no
37528 mechanism to provide different assembler strings for different dialects.
37532 may read or write any globally accessible variable.
37540 File: gcc.info, Node: Extended Asm, Next: Constraints, Prev: Basic Asm, Up: Using Assembly Lang…
37542 6.47.2 Extended Asm - Assembler Instructions with C Expression Operands
37546 and perform jumps from assembler code to C labels. Extended 'asm'
37561 first form, not).
37563 The 'asm' keyword is a GNU extension. When writing code that can be
37565 instead of 'asm' (*note Alternate Keywords::).
37568 ..........
37572 values to produce output values. However, your 'asm' statements
37573 may also produce side effects. If so, you may need to use the
37574 'volatile' qualifier to disable certain optimizations. *Note
37575 Volatile::.
37580 (*note Size of an asm::).
37584 perform a jump to one of the labels listed in the GOTOLABELS.
37585 *Note GotoLabels::.
37588 ..........
37592 code. It is a combination of fixed text and tokens that refer to
37593 the input, output, and goto parameters. *Note AssemblerTemplate::.
37597 instructions in the ASSEMBLERTEMPLATE. An empty list is permitted.
37598 *Note OutputOperands::.
37602 the ASSEMBLERTEMPLATE. An empty list is permitted. *Note
37603 InputOperands::.
37607 ASSEMBLERTEMPLATE, beyond those listed as outputs. An empty list
37608 is permitted. *Note Clobbers and Scratch Registers::.
37613 may jump. *Note GotoLabels::.
37616 only to the listed GOTOLABELS. GCC's optimizers do not know about
37618 deciding how to optimize.
37620 The total number of input + output + goto operands is limited to 30.
37623 .......
37626 within C code. This may help you to maximize performance in
37628 readily available to C programs.
37630 Note that extended 'asm' statements must be inside a function. Only
37631 basic 'asm' may be outside functions (*note Basic Asm::). Functions
37633 Function Attributes::).
37637 parameters to output parameters. So a simple (if not particularly
37650 This code copies 'src' to 'dst' and add 1 to 'dst'.
37652 6.47.2.1 Volatile
37653 .................
37656 there is no need for the output variables. Also, the optimizers may
37658 the same result (i.e. none of its input values change between calls).
37659 Using the 'volatile' qualifier disables these optimizations. 'asm'
37661 statements, are implicitly volatile.
37664 'volatile' qualifier. If it is performing assertion checking, this code
37665 uses 'asm' to perform the validation. Otherwise, 'dwRes' is
37666 unreferenced by any code. As a result, the optimizers can discard the
37668 routine. By omitting the 'volatile' qualifier when it isn't needed you
37669 allow the optimizers to produce the most efficient code possible.
37675 // Assumes dwSomeValue is not zero.
37687 more efficient code. Again, using the 'volatile' qualifier disables
37688 this type of optimization.
37696 // Assumes dwSomeValue is not zero.
37707 'volatile' qualifier. It uses the x86 'rdtsc' instruction, which reads
37708 the computer's time-stamp counter. Without the 'volatile' qualifier,
37710 same value and therefore optimize away the second call.
37714 asm volatile ( "rdtsc\n\t" // Returns the time in EDX:EAX.
37715 "shl $32, %%rdx\n\t" // Shift the upper bits left.
37716 "or %%rdx, %0" // 'Or' in the lower bits.
37723 // Do other work...
37726 asm volatile ( "rdtsc\n\t" // Returns the time in EDX:EAX.
37727 "shl $32, %%rdx\n\t" // Shift the upper bits left.
37728 "or %%rdx, %0" // 'Or' in the lower bits.
37736 the earlier examples. They do not move it out of loops or omit it on
37737 the assumption that the result from a previous call is still valid.
37740 relative to other code, including across jump instructions. For
37742 rounding mode of floating-point operations. Setting it with a 'volatile
37744 reliably.
37750 statement. To make it work as expected, add an artificial dependency to
37757 of) your assembly code when optimizing. This can lead to unexpected
37759 symbols or labels. Using '%=' (*note AssemblerTemplate::) may help
37760 resolve this problem.
37762 6.47.2.2 Assembler Template
37763 ...........................
37766 instructions. The compiler replaces tokens in the template that refer
37768 string to the assembler. The string can contain any instructions
37769 recognized by the assembler, including directives. GCC does not parse
37771 or even whether they are valid assembler input. However, it does count
37772 the statements (*note Size of an asm::).
37776 for the system. A combination that works in most places is a newline to
37778 (written as '\n\t'). Some assemblers allow semicolons as a line
37779 separator. However, note that some assembler dialects use semicolons to
37780 start a comment.
37784 qualifier. If certain instructions need to remain consecutive in the
37785 output, put them in a single multi-instruction 'asm' statement.
37789 may not work as expected. Similarly, calling functions directly from an
37791 assembler and ABI.
37794 of any symbols it references. This may result in GCC discarding those
37796 goto operands.
37799 ......................
37805 Outputs a single '%' into the assembler code.
37809 statement in the entire compilation. This option is useful when
37811 single template that generates multiple assembler instructions.
37817 assembler code. When unescaped, these characters have special
37819 below.
37822 ..............................................
37824 On targets such as x86, GCC supports multiple assembler dialects. The
37826 assembler. The target-specific documentation for the '-masm' option
37828 if the option is not specified. This information may be important to
37830 using one dialect will likely fail if compiled using another. *Note x86
37831 Options::.
37837 { dialect0 | dialect1 | dialect2... }
37840 code, 'dialect1' for dialect #1, etc. If there are fewer alternatives
37842 construct outputs nothing.
37863 There is no support for nesting dialect alternatives.
37865 6.47.2.3 Output Operands
37866 ........................
37869 of C variables modified by the assembler code.
37876 __asm__ ("btsl %2,%1\n\t" // Turn on zero-based bit #Offset in Base.
37877 "sbb %0,%0" // Use the CF to calculate old.
37884 Operands are separated by commas. Each operand has this format:
37889 Specifies a symbolic name for the operand. Reference the name in
37890 the assembler template by enclosing it in square brackets (i.e.
37891 '%[Value]'). The scope of the name is the 'asm' statement that
37892 contains the definition. Any valid C variable name is acceptable,
37893 including names already defined in the surrounding code. No two
37895 name.
37898 the operand in the list of operands in the assembler template. For
37901 the third.
37905 operand; *Note Constraints::, for details.
37908 overwriting an existing value) or '+' (when reading and writing).
37911 input; *note Input Operands: InputOperands.
37914 (*note Constraints::) that describe where the value resides.
37915 Common constraints include 'r' for register and 'm' for memory.
37918 current context. If you list as many alternates as the 'asm'
37920 possible code. If you must use a specific register, but your
37923 solution (*note Local Register Variables::).
37927 variable name. The enclosing parentheses are a required part of
37928 the syntax.
37932 and Scratch Registers::).
37934 Output operand expressions must be lvalues. The compiler cannot check
37936 instruction being executed. For output expressions that are not
37938 allow a register. In that case, GCC uses the register as the output of
37939 the 'asm', and then stores that register into the output.
37943 per 'asm' statement.
37946 operands that must not overlap an input. Otherwise, GCC may allocate
37949 producing outputs. This assumption may be false if the assembler code
37950 actually consists of more than one instruction.
37954 constraint. The code generated by GCC to access the memory address in B
37956 those registers to be inputs to the asm. As above, GCC assumes that
37957 such input registers are consumed before any outputs are written. This
37959 writes to A before using B. Combining the '&' modifier with the
37961 address referenced by B. Otherwise, the location of B is undefined if A
37962 is modified before using B.
37965 of simply '%2'). Typically these qualifiers are hardware dependent.
37967 modifiers: x86Operandmodifiers.
37972 Volatile::).
37974 This code makes no use of the optional ASMSYMBOLICNAME. Therefore it
37976 would be '%1', etc). The number of the first input operand is one
37977 greater than that of the last output operand. In this i386 example,
37989 register ('r'). Using the generic 'r' constraint instead of a
37991 register to use, which can result in more efficient code. This may not
37992 be possible if an assembler instruction requires a specific register.
37994 The following i386 example uses the ASMSYMBOLICNAME syntax. It
37997 necessary when adding or removing operands. The names 'aIndex' and
37999 where. It is acceptable to reuse the names 'Index' and 'Mask'.
38009 Here are some more examples of output operands.
38019 Here, 'd' may either be in a register or in memory. Since the compiler
38022 for 'd' by specifying both constraints.
38024 6.47.2.4 Flag Output Operands
38025 .............................
38028 result of an operation or comparison. Normally, the contents of that
38030 considered to clobber the contents.
38033 conditions in the flags register may be outputs of the asm. The set of
38035 the output variable must be a scalar integer, and the value is boolean.
38037 '__GCC_ASM_FLAG_OUTPUTS__'.
38040 constraint may not include alternatives.
38043 implied operand of many instructions. In this case, the operand should
38045 no corresponding text in the assembly language.
38051 the ARM ARM for 'ConditionHolds'.
38084 The flag output constraints are not supported in thumb1 mode.
38089 the ISA manual for 'jCC' or 'setCC'.
38134 6.47.2.5 Input Operands
38135 .......................
38138 the assembly code.
38140 Operands are separated by commas. Each operand has this format:
38145 Specifies a symbolic name for the operand. Reference the name in
38146 the assembler template by enclosing it in square brackets (i.e.
38147 '%[Value]'). The scope of the name is the 'asm' statement that
38148 contains the definition. Any valid C variable name is acceptable,
38149 including names already defined in the surrounding code. No two
38151 name.
38154 the operand in the list of operands in the assembler template. For
38157 second, and '%4' for the third.
38161 operand; *Note Constraints::, for details.
38163 Input constraint strings may not begin with either '=' or '+'.
38166 current context. If you must use a specific register, but your
38169 solution (*note Local Register Variables::).
38171 Input constraints can also be digits (for example, '"0"'). This
38174 constraint list. When using ASMSYMBOLICNAME syntax for the output
38176 instead of digits.
38180 statement as input. The enclosing parentheses are a required part
38181 of the syntax.
38185 and Scratch Registers::).
38191 : /* No outputs. */
38195 for inputs tied to outputs). The compiler assumes that on exit from the
38197 before executing the statement. It is _not_ possible to use clobbers to
38198 inform the compiler that the values in these inputs are changing. One
38200 variable that never gets used. Note, however, that if the code that
38203 *note Volatile::).
38206 of simply '%2'). Typically these qualifiers are hardware dependent.
38208 modifiers: x86Operandmodifiers.
38212 location as output operand 0. Only input operands may use numbers in
38213 constraints, and they must each refer to an output operand. Only a
38215 that one operand is in the same place as another. The mere fact that
38217 are in the same place in the generated assembler code.
38223 Here is an example using symbolic names.
38229 6.47.2.6 Clobbers and Scratch Registers
38230 .......................................
38233 operands, the inline 'asm' code may modify more than just the outputs.
38236 assembler instruction. In order to inform the compiler of these
38237 changes, list them in the clobber list. Clobber list items are either
38238 register names or the special clobbers (listed below). Each clobber
38240 by commas.
38243 operand. For example, you may not have an operand describing a register
38244 class with one member when listing that register in the clobber list.
38247 have no part mentioned in the clobber description. In particular, there
38249 specifying them as output operands.
38252 output operands, it does not use any of the clobbered registers. As a
38254 code.
38257 stack pointer register. This is because the compiler requires the value
38259 on entry to the statement. However, previous versions of GCC did not
38261 with unclear semantics. This behavior is deprecated and listing the
38262 stack pointer may become an error in future versions of GCC.
38268 : /* No outputs. */
38276 flags register. On some machines, GCC represents the condition
38278 register. On other machines, condition code handling is different,
38279 and specifying '"cc"' has no effect. But it is valid no matter
38280 what the target.
38286 pointed to by one of the input parameters). To ensure memory
38288 values to memory before executing the 'asm'. Further, the compiler
38290 remain unchanged after that 'asm'; it reloads them as needed.
38292 barrier for the compiler.
38295 speculative reads past the 'asm' statement. To prevent that, you
38296 need processor-specific fence instructions.
38299 issue for time-sensitive code. You can provide better information to
38300 GCC to avoid this, as shown in the following examples. At a minimum,
38302 flushed.
38306 point register output. Notice that 'x', and 'y' both appear twice in
38308 specify a base register used by the 'asm'. You won't normally be
38310 both purposes. However, it would be foolish to use both '%1' and '%3'
38311 for 'x' in this 'asm' and expect them to be the same. In fact, '%3' may
38312 well not be a register. It might be a symbolic memory reference to the
38313 object pointed to by 'x'.
38319 Here is a fictitious '*z++ = *x++ * *y++' instruction. Notice that the
38321 because the 'asm' modifies them.
38327 An x86 example where the string memory argument is of unknown length.
38334 could instead use a memory input like: '"m" (*(const char (*)[10]) p)'.
38338 offset registers that are unchanged by the 'asm'.
38355 below. This gives the compiler register allocator more freedom. You
38357 with 'a0' and 'a1', tied respectively to 'ap' and 'lda'. Of course,
38359 the output register since they are one and the same register. What's
38362 could prove they had the same value on entry to the 'asm'. This is why
38363 'a1' has an early-clobber. Its tied input, 'lda' might conceivably be
38365 register as '%11'. On the other hand, 'ap' can't be the same as any of
38366 the other inputs, so an early-clobber on 'a0' is not needed. It is also
38367 not desirable in this case. An early-clobber on 'a0' would cause GCC to
38369 input. Note that tying an input to an output is the way to set up an
38370 initialized temporary register modified by an 'asm' statement. An input
38373 following code if the value 16 happened to be needed. You can even use
38375 same register are consumed before the scratch is used. The VSX
38377 technique except for GCC's limit on the number of 'asm' parameters.
38416 6.47.2.7 Goto Labels
38417 ....................
38419 'asm goto' allows assembly code to jump to one or more C labels. The
38421 list of all C labels to which the assembler code may jump. GCC assumes
38424 'asm' statement). Optimization of 'asm goto' may be improved by using
38425 the 'hot' and 'cold' label attributes (*note Label Attributes::).
38427 An 'asm goto' statement cannot have outputs. This is due to an
38429 cannot have outputs. If the assembler code does modify anything, use
38431 values to memory and reload them if necessary after the 'asm' statement.
38434 volatile.
38438 the number of input operands. For example, if the 'asm' has three
38440 the second as '%l4').
38443 enclosed in brackets. For example, to reference a label named 'carry',
38444 you can use '%l[carry]'. The label must still be listed in the
38445 GOTOLABELS section when using this approach.
38452 : /* No outputs. */
38462 The following example shows an 'asm goto' that uses a memory clobber.
38468 : /* No outputs. */
38477 6.47.2.8 x86 Operand Modifiers
38478 ..............................
38482 operands are formatted in the code output to the assembler. For
38493 purposes.
38502 : /* No outputs. */
38504 : /* No clobbers. */
38515 '%3' '$.L3' 'OFFSET
38516 FLAT:.L3'
38519 effects.
38523 'A' Print an absolute memory reference. '%A0' '*%rax' 'rax'
38524 'b' Print the QImode name of the register. '%b0' '%al' 'al'
38526 constant expression with no punctuation.
38529 64-bit. Otherwise mode is unspecified
38530 (VOIDmode).
38532 register.
38534 reference. Useful when accessing the high
38535 8 bytes of SSE values. For a memref in
38537 'k' Print the SImode name of the register. '%k0' '%eax' 'eax'
38538 'l' Print the label name with no punctuation. '%l3' '.L3' '.L3'
38540 syntax-specific prefixes).
38542 suffix and generate PIC code. For
38544 for the function foo(). If used for a
38546 prefixes and issue the bare constant. See
38547 'p' above.
38548 'q' Print the DImode name of the register. '%q0' '%rax' 'rax'
38549 'w' Print the HImode name of the register. '%w0' '%ax' 'ax'
38552 'b'/'w'/'l'/'q').
38555 register without '%'.
38557 6.47.2.9 x86 Floating-Point 'asm' Operands
38558 ..........................................
38561 registers in the operands of an 'asm'. These rules apply only to the
38564 1. Given a set of input registers that die in an 'asm', it is
38566 which must be explicitly popped by GCC.
38570 operand.
38572 2. For any input register that is implicitly popped by an 'asm', it is
38574 pop. If any non-popped input is closer to the top of the reg-stack
38577 stack "slides up".
38580 the reg-stack than any input that is not implicitly popped.
38583 might use the input register for an output reload. Consider this
38589 the 'asm' pushes a result onto the reg-stack, i.e., the stack is
38590 one deeper after the 'asm' than it was before. But, it is possible
38592 the input and the output.
38596 early-clobber modifier.
38602 3. Some operands need to be in particular places on the stack. All
38605 the constraints.
38608 appears in after an 'asm'. '=f' is not allowed: the operand
38609 constraints must select a class with a single register.
38611 4. Output operands may not be "inserted" between existing stack
38612 registers. Since no 387 opcode uses a read/write operand, all
38614 'asm'. It makes no sense to push anywhere but the top of the
38615 reg-stack.
38618 operands may not "skip" a register.
38620 5. Some 'asm' statements may need extra stack space for internal
38621 calculations. This can be guaranteed by clobbering stack registers
38622 unrelated to the inputs and outputs.
38625 two outputs.
38630 and replaces them with one output. The 'st(1)' clobber is necessary for
38631 the compiler to know that 'fyl2xp1' pops both inputs.
38636 File: gcc.info, Node: Constraints, Next: Asm Labels, Prev: Extended Asm, Up: Using Assembly Lan…
38638 6.47.3 Constraints for 'asm' Operands
38642 'asm' operands. Constraints can say whether an operand may be in a
38645 an immediate constant, and which possible values it may have.
38646 Constraints can also require two operands to match. Side-effects aren't
38649 exactly once in an instruction that can update the addressing register.
38653 * Simple Constraints:: Basic use of constraints.
38654 * Multi-Alternative:: When an insn has two alternative constraint-patterns.
38655 * Modifiers:: More precise control over effects of constraints.
38656 * Machine Constraints:: Special constraints for some particular machines.
38659 File: gcc.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
38661 6.47.3.1 Simple Constraints
38662 ...........................
38665 which describes one kind of operand that is permitted. Here are the
38670 position except the first. This enables each alternative for
38673 modifiers.
38677 machine supports in general. Note that the letter used for the
38679 'TARGET_MEM_CONSTRAINT' macro.
38683 "offsettable". This means that adding a small integer (actually,
38686 memory address.
38692 autodecrement address is not offsettable. More complicated
38694 on the other addressing modes that the machine supports.
38699 '>' (if the target machine has preincrement addressing).
38702 A memory operand that is not offsettable. In other words, anything
38703 that would fit the 'm' constraint but not the 'o' constraint.
38707 or postdecrement) is allowed. In inline 'asm' this constraint is
38709 that can handle the side effects. Not using an operand with '<' in
38712 wouldn't be performed or would be performed more than once.
38715 '%U0' instruction suffix on PowerPC or '%P0' on IA-64.
38719 or postincrement) is allowed. In inline 'asm' the same
38720 restrictions as for '<' apply.
38724 register.
38727 An immediate integer operand (one with constant value) is allowed.
38729 assembly time or later.
38732 An immediate integer operand with a known numeric value is allowed.
38734 less than a word wide. Constraints for these operands should use
38735 'n' rather than 'i'.
38737 'I', 'J', 'K', ... 'P'
38740 explicit integer values in specified ranges. For example, on the
38741 68000, 'I' is defined to stand for the range of values 1 to 8.
38743 instructions.
38748 as that of the host machine (on which the compiler is running).
38752 'const_vector') is allowed.
38756 immediate floating operands in particular ranges of values.
38760 is allowed.
38764 known value. So why use 's' instead of 'i'? Sometimes it allows
38765 better code to be generated.
38770 register and using the register. This is because the load into the
38771 register can be done with a 'moveq' instruction. We arrange for
38774 operand constraints.
38778 except for registers that are not general registers.
38781 Any operand whatsoever is allowed.
38783 '0', '1', '2', ... '9'
38784 An operand that matches the specified operand number is allowed.
38786 alternative, the digit should come last.
38788 This number is allowed to be more than a single digit. If multiple
38790 single decimal integer. There is scant chance for ambiguity, since
38792 matching either operand 1 _or_ operand 0. Should this be desired,
38793 one can use multiple alternatives instead.
38797 which 'asm' distinguishes. For example, an add instruction uses
38804 Matching constraints are used in these circumstances. More
38806 operand and one output-only operand. Moreover, the digit must be a
38808 constraint.
38811 An operand that is a valid memory address is allowed. This is for
38812 "load address" and "push address" instructions.
38815 the predicate in the 'match_operand'. This predicate interprets
38817 reference for which the address would be valid.
38822 types. 'd', 'a' and 'f' are defined on the 68000/68020 to stand
38823 for data, address and floating point registers.
38826 File: gcc.info, Node: Multi-Alternative, Next: Modifiers, Prev: Simple Constraints, Up: Constra…
38828 6.47.3.2 Multiple Alternative Constraints
38829 .........................................
38832 operands. For example, on the 68000, a logical-or instruction can
38835 location into another.
38837 These constraints are represented as multiple alternatives. An
38838 alternative can be described by a series of letters for each operand.
38842 alternative. All operands for a single instruction must have the same
38843 number of alternatives.
38846 '"+m" (output) : "ir" (input)'. The second could be '"+r" (output):
38847 "irm" (input)'. However, the fact that two memory locations cannot be
38849 "irm" (input)'. Using multi-alternatives, this might be written as
38850 '"+m,r" (output) : "ir,irm" (input)'. This describes all the available
38852 one for the current conditions.
38855 chosen. However you may be able to wrap your 'asm' statements with
38856 builtins such as '__builtin_constant_p' to achieve the desired results.
38859 File: gcc.info, Node: Modifiers, Next: Machine Constraints, Prev: Multi-Alternative, Up: Constr…
38861 6.47.3.3 Constraint Modifier Characters
38862 .......................................
38864 Here are constraint modifier characters.
38868 previous value is discarded and replaced by new data.
38872 instruction.
38876 which are written by it. '=' identifies an operand which is only
38878 all other operands are assumed to only be read.
38881 character of the constraint string.
38886 finished using the input operands. Therefore, this operand may not
38888 memory address.
38890 '&' applies only to the alternative in which it is written. In
38892 requires '&' while others do not. See, for example, the 'movdf'
38893 insn of the 68000.
38897 early result is written. Adding alternatives of this form often
38899 operands can be affected by the earlyclobber. See, for example,
38900 the 'mulsi3' insn of the ARM.
38903 operand, then that operand is written only after it's used.
38905 '&' does not obviate the need to write '=' or '+'. As
38908 compiler.
38912 following operand. This means that the compiler may interchange
38914 fit the constraints. '%' applies to all alternatives and must
38915 appear as the first character in the constraint. Only read-only
38916 operands can use '%'.
38919 more, the compiler may fail. Note that you need not use the
38921 only waste time in the reload pass.
38924 File: gcc.info, Node: Machine Constraints, Prev: Modifiers, Up: Constraints
38926 6.47.3.4 Constraints for Particular Machines
38927 ............................................
38931 people reading your code. Failing that, use the constraint letters that
38932 usually have very similar meanings across architectures. The most
38936 format.
38938 Each architecture defines additional constraints. These constraints
38941 particularly useful for 'asm'. Here is a summary of some of the
38944 aren't. The compiler source file mentioned in the table heading for
38946 architecture's constraints.
38948 _AArch64 family--'config/aarch64/constraints.md'_
38957 Like 'w', but restricted to registers 0 to 15 inclusive.
38960 Like 'w', but restricted to registers 0 to 7 inclusive.
38986 32-bit 'MOV' pseudo instruction. The 'MOV' may be assembled
39015 _AMD GCN --'config/gcn/constraints.md'_
39030 encoding: integer -16..64, or float 0.0, +/-0.5, +/-1.0,
39038 Immediate 32-bit integer in range -16..4294967295 (i.e.
39117 _ARC --'config/arc/constraints.md'_
39120 'r12'-'r15'. This constraint can only match when the '-mq'
39121 option is in effect.
39125 16-bit memory instructions: 'r0'-'r3', 'r12'-'r15', 'sp'.
39127 effect.
39129 ARC FPX (dpfp) 64-bit registers. 'D0', 'D1'.
39132 A signed 12-bit integer constant.
39135 constant for arithmetic/logical operations. This might be any
39137 or linker without involving a PIC relocation.
39140 A 3-bit unsigned integer constant.
39143 A 6-bit unsigned integer constant.
39146 One's complement of a 6-bit unsigned integer constant.
39149 Two's complement of a 6-bit unsigned integer constant.
39152 A 5-bit unsigned integer constant.
39155 A 7-bit unsigned integer constant.
39158 A 8-bit unsigned integer constant.
39161 Any const_double value.
39163 _ARM family--'config/arm/constraints.md'_
39166 In Thumb state, the core registers 'r8'-'r15'.
39169 The stack pointer register.
39172 In Thumb State the core registers 'r0'-'r7'. In ARM state
39173 this is an alias for the 'r' constraint.
39176 VFP floating-point registers 's0'-'s31'. Used for 32 bit
39177 values.
39181 subset 'd0'-'d15' based on command line options. Used for 64
39182 bit values only. Not valid for Thumb1.
39185 The iWMMX co-processor registers.
39188 The iWMMX GR registers.
39195 processing instruction. That is, an integer in the range 0 to
39228 instructions.
39231 A memory reference suitable for the ARMv4 ldrsb instruction.
39233 _AVR family--'config/avr/constraints.md'_
39244 Registers from r24 to r31. These registers can be used in
39296 A memory address based on Y or Z pointer with displacement.
39298 _Blackfin family--'config/bfin/constraints.md'_
39306 A call clobbered P register.
39309 A single register. If N is in the range 0 to 7, the
39310 corresponding D register. If it is 'A', then the register P0.
39319 Accumulator register.
39322 Even-numbered accumulator register.
39325 Odd-numbered accumulator register.
39337 Registers used for circular buffering, i.e. I, B, or L
39338 registers.
39341 The CC register.
39344 LT0 or LT1.
39347 LC0 or LC1.
39350 LB0 or LB1.
39353 Any D, P, B, M, I or L register.
39358 USP.
39361 Any register except accumulators or CC.
39389 to 4.
39393 suitable for use with either accumulator.
39397 suitable for use only with accumulator A1.
39400 Constant 255.
39403 Constant 65535.
39406 An integer constant with exactly a single bit set.
39409 An integer constant with all bits set except exactly one.
39414 Any SYMBOL_REF.
39416 _CR16 Architecture--'config/cr16/cr16.h'_
39448 _C-SKY--'config/csky/constraints.md'_
39451 The mini registers r0 - r7.
39454 The low registers r0 - r15.
39457 C register.
39460 HI and LO registers.
39463 LO register.
39466 HI register.
39469 Vector registers.
39472 Stack pointer register (SP).
39474 _Epiphany--'config/epiphany/constraints.md'_
39476 An unsigned 16-bit constant.
39479 An unsigned 5-bit constant.
39482 A signed 11-bit constant.
39485 A signed 11-bit constant added to -1. Can only match when the
39486 '-m1reg-REG' option is active.
39489 Left-shift of -1, i.e., a bit mask with a block of leading
39490 ones, the rest being a block of trailing zeroes. Can only
39491 match when the '-m1reg-REG' option is active.
39494 Right-shift of -1, i.e., a bit mask with a trailing block of
39495 ones, the rest being zeroes. Or to put it another way, one
39496 less than a power of two. Can only match when the
39497 '-m1reg-REG' option is active.
39500 Constant for arithmetic/logical operations. This is like 'i',
39502 expressions needing relocations are allowed.
39505 Symbolic constant for call/jump instruction.
39508 The register class usable in short insns. This is a register
39509 class constraint, and can thus drive register allocation.
39511 is in effect.
39515 sibcall call address. I.e., a caller-saved register.
39518 Core control register class.
39521 The register group usable in short insns. This constraint
39524 allocation.
39528 register.
39531 Matches the integer condition code register.
39534 Matches the return address if it is in a stack slot.
39538 encapsulated in 'UNSPEC_FP_MODE'.
39540 _FRV--'config/frv/frv.h'_
39542 Register in the class 'ACC_REGS' ('acc0' to 'acc7').
39545 Register in the class 'EVEN_ACC_REGS' ('acc0' to 'acc7').
39549 to 'icc3').
39552 Register in the class 'GPR_REGS' ('gr0' to 'gr63').
39555 Register in the class 'EVEN_REGS' ('gr0' to 'gr63'). Odd
39557 a machine mode larger than 4 bytes.
39560 Register in the class 'FPR_REGS' ('fr0' to 'fr63').
39563 Register in the class 'FEVEN_REGS' ('fr0' to 'fr63'). Odd
39565 a machine mode larger than 4 bytes.
39568 Register in the class 'LR_REG' (the 'lr' register).
39571 Register in the class 'QUAD_REGS' ('gr2' to 'gr63'). Register
39573 through the use of a machine mode larger than 8 bytes.
39576 Register in the class 'ICC_REGS' ('icc0' to 'icc3').
39579 Register in the class 'FCC_REGS' ('fcc0' to 'fcc3').
39582 Register in the class 'ICR_REGS' ('cc4' to 'cc7').
39585 Register in the class 'FCR_REGS' ('cc0' to 'cc3').
39588 Register in the class 'QUAD_FPR_REGS' ('fr0' to 'fr63').
39591 bytes.
39594 Register in the class 'SPR_REGS' ('lcr' and 'lr').
39597 Register in the class 'QUAD_ACC_REGS' ('acc0' to 'acc7').
39600 Register in the class 'ACCG_REGS' ('accg0' to 'accg7').
39603 Register in the class 'CR_REGS' ('cc0' to 'cc7').
39621 12-bit signed integer constant that is negative--i.e. in the
39628 12-bit signed integer constant that is greater than zero--i.e.
39629 in the range of 1 to 2047.
39631 _FT32--'config/ft32/constraints.md'_
39642 An offset address.
39645 An offset address.
39651 A 16-bit signed constant (-32768 ... 32767)
39660 A 16-bit unsigned constant, multiple of 4 (0 ... 65532)
39663 A 20-bit signed constant (-524288 ... 524287)
39666 A constant for a bitfield width (1 ... 16)
39669 A 10-bit signed constant (-512 ... 511)
39671 _Hewlett-Packard PA-RISC--'config/pa/pa.h'_
39742 _Intel IA-64--'config/ia64/ia64.h'_
39762 Memory operand. If used together with '<' or '>', the operand
39764 printing with '%Pn' on IA-64.
39801 Memory operand except postincrement and postdecrement. This
39803 or '>'.
39805 _M32C--'config/m32c/m32c.c'_
39809 '$sp', '$fb', '$sb'.
39816 Any control register, when they're 24 bits wide.
39822 $r0, $r1, $r2, $r3.
39825 $r0 or $r2, or $r2r0 for 32 bit values.
39828 $r1 or $r3, or $r3r1 for 32 bit values.
39831 A register that can hold a 64 bit value.
39843 Address registers when they're 16 bits wide.
39846 Address registers when they're 24 bits wide.
39849 Registers that can hold QI values.
39852 Registers that can be used with displacements ($a0, $a1, $sb).
39855 Registers that can hold 32 bit values.
39858 Registers that can hold 16 bit values.
39862 registers.
39865 $r0 through R1, plus $a0 and $a1.
39868 The flags register.
39871 The memory-based pseudo-registers $mem0 through $mem15.
39875 m16c; 24 bit registers for m32cm, m32c).
39879 register. Used to match function return values.
39882 -8 ... 7
39885 -128 ... 127
39888 -32768 ... 32767
39891 0 ... 65535
39894 -8 ... -1 or 1 ... 8
39897 -16 ... -1 or 1 ... 16
39900 -32 ... -1 or 1 ... 32
39903 -65536 ... -1
39906 An 8 bit value with exactly one bit set.
39909 A 16 bit value with exactly one bit set.
39912 The common src/dest memory addressing modes.
39915 Memory addressed using $a0 or $a1.
39918 Memory addressed with immediate addresses.
39921 Memory addressed using the stack pointer ($sp).
39924 Memory addressed using the frame base register ($fb).
39927 Memory addressed using the small base register ($sb).
39932 _MicroBlaze--'config/microblaze/constraints.md'_
39934 A general register ('r0' to 'r31').
39937 A status register ('rmsr', '$fcc1' to '$fcc7').
39939 _MIPS--'config/mips/constraints.md'_
39941 A general-purpose register. This is equivalent to 'r' unless
39943 is used.
39946 A floating-point register (if available).
39949 Formerly the 'hi' register. This constraint is no longer
39950 supported.
39953 The 'lo' register. Use this register to store values that are
39954 no bigger than a word.
39957 The concatenated 'hi' and 'lo' registers. Use this register
39958 to store doubleword values.
39961 A register suitable for use in an indirect jump. This will
39962 always be '$25' for '-mabicalls'.
39965 Register '$3'. Do not use this constraint in new code; it is
39966 retained only for compatibility with glibc.
39969 Equivalent to 'r'; retained for backwards compatibility.
39972 A floating-point condition code register.
39975 A signed 16-bit constant (for arithmetic instructions).
39978 Integer zero.
39981 An unsigned 16-bit constant (for logic instructions).
39984 A signed 32-bit constant in which the lower 16 bits are zero.
39985 Such constants can be loaded using 'lui'.
39989 'ori'.
39992 A constant in the range -65535 to -1 (inclusive).
39995 A signed 15-bit constant.
39998 A constant in the range 1 to 65535 (inclusive).
40001 Floating-point zero.
40004 An address that can be used in a non-macro load or store.
40009 same addressing mode as 'll' and 'sc'.
40013 other instruction with the same addressing mode as 'prefetch'.
40015 _Motorola 680x0--'config/m68k/constraints.md'_
40100 _Moxie--'config/moxie/constraints.md'_
40111 A constant in the range of 0 to 255.
40114 A constant in the range of 0 to -255.
40116 _MSP430-'config/msp430/constraints.md'_
40119 Register R12.
40122 Register R13.
40125 Integer constant 1.
40128 Integer constant -1^20..1^19.
40131 Integer constant 1-4.
40135 instruction.
40138 Memory reference, labels only.
40141 Memory reference, stack only.
40143 _NDS32--'config/nds32/constraints.md'_
40145 LOW register class $r0 to $r7 constraint for V3/V3M ISA.
40147 LOW register class $r0 to $r7.
40149 MIDDLE register class $r0 to $r11, $r16 to $r19.
40151 HIGH register class $r12 to $r14, $r20 to $r31.
40153 Temporary assist register $ta (i.e. $r15).
40155 Stack register $sp.
40157 Unsigned immediate 3-bit value.
40159 Negative immediate 3-bit value in the range of -7-0.
40161 Unsigned immediate 4-bit value.
40163 Signed immediate 5-bit value.
40165 Unsigned immediate 5-bit value.
40167 Negative immediate 5-bit value in the range of -31-0.
40170 range 16-47.
40172 Unsigned immediate 6-bit value constraint for addri36.sp
40173 instruction.
40175 Unsigned immediate 8-bit value.
40177 Unsigned immediate 9-bit value.
40179 Signed immediate 10-bit value.
40181 Signed immediate 11-bit value.
40183 Signed immediate 15-bit value.
40185 Unsigned immediate 15-bit value.
40188 instruction.
40191 instruction.
40194 instruction.
40197 and ok for bitci instruction.
40199 Signed immediate 16-bit value.
40201 Signed immediate 17-bit value.
40203 Signed immediate 19-bit value.
40205 Signed immediate 20-bit value.
40207 The immediate value that can be simply set high 20-bit.
40209 The immediate value 0xff.
40211 The immediate value 0xffff.
40213 The immediate value 0x01.
40215 The immediate value 0x7ff.
40217 The immediate value with power of 2.
40219 The immediate value with power of 2 minus 1.
40221 Memory constraint for 333 format.
40223 Memory constraint for 45 format.
40225 Memory constraint for 37 format.
40227 _Nios II family--'config/nios2/constraints.md'_
40231 instruction taking a signed 16-bit number. Range -32768 to
40232 32767.
40236 instruction taking an unsigned 16-bit number. Range 0 to
40237 65535.
40241 instruction taking only the upper 16-bits of a 32-bit number.
40242 Range 32-bit numbers with the lower 16-bits being 0.
40246 instruction. Range 0 to 31.
40250 value 0. Can be used in conjunction with the format modifier
40251 'z' to use 'r0' instead of '0' in the assembly output.
40255 instruction opcode. Range 0 to 255.
40258 An immediate operand for R2 andchi/andci instructions.
40263 immediate to re-create their 32-bit value.
40267 cache instructions.
40271 instructions.
40275 instructions.
40277 _OpenRISC--'config/or1k/constraints.md'_
40280 instruction taking a signed 16-bit number. Range -32768 to
40281 32767.
40285 instruction taking an unsigned 16-bit number. Range 0 to
40286 65535.
40289 Signed 16-bit constant shifted left 16 bits. (Used with
40290 'l.movhi')
40295 _PDP-11--'config/pdp11/constraints.md'_
40297 Floating point registers AC0 through AC3. These can be loaded
40298 from/to memory with a single instruction.
40301 Odd numbered general registers (R1, R3, R5). These are used
40302 for 16-bit multiply operations.
40306 auto-increment or auto-decrement.
40309 Any of the floating point registers (AC0 through AC5).
40312 Floating point constant 0.
40315 Floating point registers AC4 and AC5. These cannot be loaded
40316 from/to memory with a single instruction.
40319 An integer constant that fits in 16 bits.
40322 An integer constant whose low order 16 bits are zero.
40326 codes 'I' or 'J'.
40329 The integer constant 1.
40332 The integer constant -1.
40335 The integer constant 0.
40340 variable-length shift.
40344 or offset) after the opcode.
40347 A memory reference that is encoded within the opcode.
40349 _PowerPC and IBM RS6000--'config/rs6000/constraints.md'_
40351 A general purpose register (GPR), 'r0'...'r31'.
40354 A base register. Like 'r', but 'r0' is not allowed, so
40355 'r1'...'r31'.
40358 A floating point register (FPR), 'f0'...'f31'.
40361 A floating point register. This is the same as 'f' nowadays;
40363 double-precision floating point.
40366 An Altivec vector register (VR), 'v0'...'v31'.
40369 A VSX register (VSR), 'vs0'...'vs63'. This is either an FPR
40370 ('vs0'...'vs31' are 'f0'...'f31') or a VR ('vs32'...'vs63' are
40371 'v0'...'v31').
40374 that the correct register number is printed. For example:
40387 The count register, 'ctr'.
40390 The link register, 'lr'.
40393 Condition register field 0, 'cr0'.
40396 Any condition register field, 'cr0'...'cr7'.
40399 A signed 16-bit constant.
40403 instead for 'SImode' constants).
40406 An unsigned 16-bit constant.
40409 A signed 16-bit constant shifted left 16 bits.
40413 supported.
40416 A memory operand. Normally, 'm' does not allow addresses that
40417 update the base register. If the '<' or '>' constraint is
40421 once. The 'asm' statement must also use '%U<OPNO>' as a
40423 store instruction. For example:
40431 is not.
40434 A memory operand addressed by just a base register.
40437 A memory operand accessed with indexed or indirect addressing.
40440 An indexed or indirect address.
40442 _PRU--'config/pru/constraints.md'_
40444 An unsigned 8-bit integer constant.
40447 An unsigned 16-bit integer constant.
40450 An unsigned 5-bit integer constant (for shift counts).
40453 A text segment (program memory) constant label.
40456 Integer constant zero.
40458 _RL78--'config/rl78/constraints.md'_
40461 An integer constant in the range 1 ... 7.
40463 An integer constant in the range 0 ... 255.
40465 An integer constant in the range -255 ... 0
40467 The integer constant 1.
40469 The integer constant -1.
40471 The integer constant 0.
40473 The integer constant 2.
40475 The integer constant -2.
40477 An integer constant in the range 1 ... 15.
40479 The built-in compare types-eq, ne, gtu, ltu, geu, and leu.
40481 The synthetic compare types-gt, lt, ge, and le.
40483 A memory reference with an absolute address.
40486 optional offset.
40489 address, for calls.
40492 address, for calls.
40495 optional offset.
40498 offset.
40500 Any memory reference to an address in the far address space.
40503 optional one-byte offset.
40506 'C' as the index register.
40509 offset.
40512 optional one-byte offset.
40514 Any memory reference to an address in the near address space.
40516 The 'AX' register.
40518 The 'BC' register.
40520 The 'DE' register.
40522 'A' through 'L' registers.
40524 The 'SP' register.
40526 The 'HL' register.
40528 The 16-bit 'R8' register.
40530 The 16-bit 'R10' register.
40532 The registers reserved for interrupts ('R24' to 'R31').
40534 The 'A' register.
40536 The 'B' register.
40538 The 'C' register.
40540 The 'D' register.
40542 The 'E' register.
40544 The 'H' register.
40546 The 'L' register.
40548 The virtual registers.
40550 The 'PSW' register.
40552 The 'X' register.
40554 _RISC-V--'config/riscv/constraints.md'_
40557 A floating-point register (if available).
40560 An I-type 12-bit signed immediate.
40563 Integer zero.
40566 A 5-bit unsigned immediate for CSR access instructions.
40569 An address that is held in a general-purpose register.
40571 _RX--'config/rx/constraints.md'_
40574 or pre/post increment/decrement addressing.
40577 A symbol reference.
40580 A constant in the range -256 to 255, inclusive.
40583 A constant in the range -128 to 127, inclusive.
40586 A constant in the range -32768 to 32767, inclusive.
40589 A constant in the range -8388608 to 8388607, inclusive.
40592 A constant in the range 0 to 15, inclusive.
40594 _S/390 and zSeries--'config/s390/s390.h'_
40617 Value appropriate as displacement.
40618 '(0..4095)'
40620 '(-524288..524287)'
40624 Constant integer with a value of 0x7fffffff.
40627 Multiple letter constraint followed by 4 parameter letters.
40628 '0..9:'
40638 a value different from its other parts.
40642 displacement.
40645 Memory reference with index register and short displacement.
40649 displacement.
40652 Memory reference with index register and long displacement.
40655 Pointer with short displacement.
40658 Pointer with long displacement.
40661 Shift count operand.
40663 _SPARC--'config/sparc/sparc.h'_
40666 floating-point register on the SPARC-V9 architecture.
40669 Floating-point register. It is equivalent to 'f' on the
40671 floating-point registers on the SPARC-V9 architecture.
40674 Floating-point condition code register.
40677 Lower floating-point register. It is only valid on the
40679 available.
40682 Floating-point register. It is only valid on the SPARC-V9
40683 architecture when the Visual Instruction Set is available.
40686 64-bit global or out register for the SPARC-V8+ architecture.
40689 The constant all-ones, for floating-point.
40717 the lower 32-bit range are all zero. Must be used instead of
40761 _TI C6X family--'config/c6x/constraints.md'_
40763 Register file A (A0-A31).
40766 Register file B (B0-B31).
40770 higher, A1 and A2 otherwise).
40773 Predicate registers in register file B (B0-B2).
40776 A call-used register in register file B (B0-B9, B16-B31).
40780 A0 if not C64X or higher).
40783 Register file B, excluding predicate registers (B3-B31).
40786 Integer constant in the range 0 ... 15.
40789 Integer constant in the range 0 ... 31.
40792 Integer constant in the range -31 ... 0.
40795 Integer constant in the range -16 ... 15.
40799 insn.
40802 Integer constant in the range 0 ... 65535.
40805 Integer constant in the range -32768 ... 32767.
40808 Integer constant in the range -2^{20} ... 2^{20} - 1.
40811 Integer constant that is a valid mask for the clr instruction.
40814 Integer constant that is a valid mask for the set instruction.
40817 Memory location with A base register.
40820 Memory location with B base register.
40823 Register B14 (aka DP).
40825 _TILE-Gx--'config/tilegx/constraints.md'_
40838 individual register, from r0 to r10.
40841 Signed 8-bit integer constant.
40844 Signed 16-bit integer constant.
40847 Unsigned 16-bit integer constant.
40851 by one (-129 ... 126).
40854 Memory operand. If used together with '<' or '>', the operand
40856 '%in' on TILE-Gx. For example:
40861 A bit mask suitable for the BFINS instruction.
40864 Integer constant that is a byte tiled out eight times.
40867 The integer zero constant.
40871 four shorts.
40875 (-129 ... 126), but excluding -1.
40879 at bit 0.
40882 A 16-bit fragment of a got, tls, or pc-relative reference.
40885 Memory operand except postincrement. This is roughly the same
40886 as 'm' when not used together with '<' or '>'.
40889 An 8-element vector constant with identical elements.
40892 A 4-element vector constant with identical elements.
40895 The integer constant 0xffffffff.
40898 The integer constant 0xffffffff00000000.
40900 _TILEPro--'config/tilepro/constraints.md'_
40913 individual register, from r0 to r10.
40916 Signed 8-bit integer constant.
40919 Signed 16-bit integer constant.
40922 Nonzero integer constant with low 16 bits zero.
40926 by one (-129 ... 126).
40929 Memory operand. If used together with '<' or '>', the operand
40931 '%in' on TILEPro. For example:
40936 A bit mask suitable for the MM instruction.
40939 Integer constant that is a byte tiled out four times.
40942 The integer zero constant.
40946 shorts.
40950 (-129 ... 126), but excluding -1.
40954 pc-relative reference.
40957 Memory operand except postincrement. This is roughly the same
40958 as 'm' when not used together with '<' or '>'.
40961 A 4-element vector constant with identical elements.
40964 A 2-element vector constant with identical elements.
40966 _Visium--'config/visium/constraints.md'_
40992 Integer constant in the range 0 .. 65535 (16-bit immediate)
40995 Integer constant in the range 1 .. 31 (5-bit immediate)
40998 Integer constant in the range -65535 .. -1 (16-bit negative
41010 _x86 family--'config/i386/constraints.md'_
41013 i386 processors ('a', 'b', 'c', 'd', 'si', 'di', 'bp', 'sp').
41016 Any register accessible as 'Rl'. In 32-bit mode, 'a', 'b',
41017 'c', and 'd'; in 64-bit mode, any integer register.
41020 Any register accessible as 'Rh': 'a', 'b', 'c', and 'd'.
41023 The 'a' register.
41026 The 'b' register.
41029 The 'c' register.
41032 The 'd' register.
41035 The 'si' register.
41038 The 'di' register.
41041 The 'a' and 'd' registers. This class is used for
41043 register pair. Single word values will be allocated either in
41044 'ax' or 'dx'. For example on i386 the following implements
41055 either 'ax' or 'dx'. You have to use the following variant
41066 The call-clobbered integer registers.
41069 Any 80387 floating-point (stack) register.
41072 Top of 80387 floating-point stack ('%st(0)').
41075 Second from top of 80387 floating-point stack ('%st(1)').
41078 Any MMX register.
41081 Any SSE register.
41084 Any EVEX encodable SSE register ('%xmm0-%xmm31').
41087 First SSE register ('%xmm0').
41090 Integer constant in the range 0 ... 31, for 32-bit shifts.
41093 Integer constant in the range 0 ... 63, for 64-bit shifts.
41096 Signed 8-bit integer constant.
41099 '0xFF' or '0xFFFF', for andsi as a zero-extending move.
41102 0, 1, 2, or 3 (shifts for the 'lea' instruction).
41106 instructions).
41109 Standard 80387 floating point constant.
41112 SSE constant zero operand.
41117 x86-64 instructions).
41122 that require non-'VOIDmode' immediate operands).
41127 operations that require non-'VOIDmode' immediate operands).
41131 word satisfy the 'e' constraint.
41136 zero-extending x86-64 instructions).
41139 VSIB address operand.
41142 Address operand without segment register.
41144 _Xstormy16--'config/stormy16/stormy16.h'_
41146 Register r0.
41149 Register r1.
41152 Register r2.
41155 Register r8.
41158 Registers r0 through r7.
41161 Registers r0 and r1.
41164 The carry register.
41167 Registers r8 and r9.
41170 A constant between 0 and 3 inclusive.
41173 A constant that has exactly one bit set.
41176 A constant that has exactly one bit clear.
41179 A constant between 0 and 255 inclusive.
41182 A constant between -255 and 0 inclusive.
41185 A constant between -3 and 0 inclusive.
41188 A constant between 1 and 4 inclusive.
41191 A constant between -4 and -1 inclusive.
41194 A memory reference that is a stack push.
41197 A memory reference that is a stack pop.
41201 value.
41204 The register indicated by Rx (not implemented yet).
41207 A constant that is not between 2 and 15 inclusive.
41210 The constant 0.
41212 _Xtensa--'config/xtensa/constraints.md'_
41235 File: gcc.info, Node: Asm Labels, Next: Explicit Register Variables, Prev: Constraints, Up: Usi…
41237 6.47.4 Controlling Names Used in Assembler Code
41242 the declarator. It is up to you to make sure that the assembler names
41244 reference registers.
41247 .........................
41254 assembler code should be 'myfoo' rather than the usual '_foo'.
41258 not start with an underscore.
41261 variable since such variables do not have assembler names. If you are
41263 Register Variables::.
41266 ..............................
41275 /* ... */
41278 assembler code should be 'MYFUNC'.
41281 File: gcc.info, Node: Explicit Register Variables, Next: Size of an asm, Prev: Asm Labels, Up: …
41283 6.47.5 Variables in Specified Registers
41287 variables. In almost all cases, allowing the compiler to assign
41288 registers produces the best code. However under certain unusual
41290 required.
41292 Both global and local variables can be associated with a register. The
41294 the two, as explained in the sections below.
41298 * Global Register Variables:: Variables declared at global scope.
41299 * Local Register Variables:: Variables declared within a function.
41302 File: gcc.info, Node: Global Register Variables, Next: Local Register Variables, Up: Explicit Re…
41304 6.47.5.1 Defining Global Register Variables
41305 ...........................................
41312 Here 'r12' is the name of the register that should be used. Note that
41314 for a global variable the declaration appears outside a function. The
41315 'register' keyword is required, and cannot be combined with 'static'.
41316 The register name must be a valid register name for the target platform.
41319 outcome may be contrary to expectations. In particular, using the
41321 accesses to the register.
41324 compiler to manage their usage usually results in the best code.
41326 globally. For example this may be useful in programs such as
41328 that are accessed very often.
41335 the variable has been assigned. Therefore, functions cannot safely
41336 return to callers that assume standard ABI.
41339 variable. Such calls may be created by the compiler even if none
41341 functions are used to make up for unavailable instructions.
41344 provided that observable values of the variable are not affected.
41347 Constraints::). Accesses from basic asms are not supported.
41350 definition. The behavior of code that is merely linked in (for example
41351 code from libraries) is not affected.
41356 declaration to their source code. It suffices to specify the compiler
41357 option '-ffixed-REG' (*note Code Gen Options::) to reserve the register.
41360 ......................
41363 executable file has no means to supply initial contents for a register.
41366 restored by function calls on your machine. This ensures that code
41368 restore it before returning.
41371 that is not affected magically by the function call mechanism.
41374 ..................
41377 if those routines call back into code which uses them. As an example,
41380 registers) it will restore them before returning. However it will _not_
41381 restore them before calling 'qsort''s comparison function. As a result,
41383 unless the 'qsort' function itself is rebuilt.
41386 signal handlers or from more than one thread of control. Unless you
41388 routines may temporarily use the register for other things.
41391 unrelated temporary values residing in the register.
41394 the value it had at the time of the 'setjmp'. On some machines,
41396 variables. To be portable, the function that called 'setjmp' should
41398 variables, and to restore them in a 'longjmp'. This way, the same thing
41399 happens regardless of what 'longjmp' does.
41402 File: gcc.info, Node: Local Register Variables, Prev: Global Register Variables, Up: Explicit Re…
41404 6.47.5.2 Specifying Registers for Local Variables
41405 .................................................
41412 Here 'r12' is the name of the register that should be used. Note that
41414 for a local variable the declaration appears within a function. The
41415 'register' keyword is required, and cannot be combined with 'static'.
41416 The register name must be a valid register name for the target platform.
41419 outcome may be contrary to expectations. In particular, when the
41422 operand to appear in a different register.
41426 machine, so that calls to library routines will not clobber it.
41430 Asm::). This may be necessary if the constraints for a particular
41431 machine don't provide sufficient control to select the desired register.
41433 the register name after the variable's declaration. Then use the local
41437 register int *p1 asm ("r0") = ...;
41438 register int *p2 asm ("r1") = ...;
41445 example the initialization of 'p2'). In this case, use temporary
41448 int t1 = ...;
41449 register int *p1 asm ("r0") = ...;
41454 Defining a register variable does not reserve the register. Other than
41456 are not guaranteed. For this reason, the following uses are explicitly
41457 _not_ supported. If they appear to work, it is only happenstance, and
41464 output operands.
41466 other languages) using non-standard calling conventions.
41469 gcc's allocation of registers, especially in large functions. In this
41470 case the register name is essentially a hint to the register allocator.
41472 subject to the whims of the allocator/optimizers. Since there are no
41474 Register Variables is discouraged.
41478 specifics for MIPS targets: (gccint)MIPS Coprocessors.).
41481 File: gcc.info, Node: Size of an asm, Prev: Explicit Register Variables, Up: Using Assembly Lang…
41483 6.47.6 Size of an 'asm'
41487 order to generate correct code. Because the final length of the code
41489 make an estimate as to how big it will be. It does this by counting the
41491 by the length of the longest instruction supported by that processor.
41495 instruction.)
41501 space in the object file than is needed for a single instruction. If
41503 label is unreachable.
41505 This size is also used for inlining decisions. If you use 'asm inline'
41508 is.
41511 File: gcc.info, Node: Alternate Keywords, Next: Incomplete Enums, Prev: Using Assembly Language …
41516 '-ansi' and the various '-std' options disable certain keywords. This
41519 including ISO C programs. The keywords 'asm', 'typeof' and 'inline' are
41522 standard). The ISO C99 keyword 'restrict' is only available when
41525 version, is used.
41528 of each problematical keyword. For example, use '__asm__' instead of
41529 'asm', and '__inline__' instead of 'inline'.
41533 as macros to replace them with the customary keywords. It looks like
41540 '-pedantic' and other options cause warnings for many GNU C extensions.
41542 '__extension__' before the expression. '__extension__' has no effect
41543 aside from this.
41546 File: gcc.info, Node: Incomplete Enums, Next: Function Names, Prev: Alternate Keywords, Up: C E…
41551 You can define an 'enum' tag without specifying its possible values.
41553 'struct foo' without describing the elements. A later declaration that
41554 does specify the possible values completes the type.
41557 incomplete. However, you can work with pointers to that type.
41560 'enum' more consistent with the way 'struct' and 'union' are handled.
41562 This extension is not supported by GNU C++.
41565 File: gcc.info, Node: Function Names, Next: Return Address, Prev: Incomplete Enums, Up: C Exten…
41571 function as a string. In C++11 and later modes, all three are treated
41572 as constant expressions and can be used in 'constexpr' constexts. The
41583 function. This name is the unadorned name of the function. As an
41585 to the empty string.
41588 compatibility with old versions of GCC.
41592 string '"top level"'. In addition, in C++, '__PRETTY_FUNCTION__'
41593 contains the signature of the function as well as its bare name. For
41596 extern "C" int printf (const char *, ...);
41611 ax.sub (0);
41622 literals.
41625 File: gcc.info, Node: Return Address, Next: Vector Extensions, Prev: Function Names, Up: C Exte…
41631 function.
41636 or of one of its callers. The LEVEL argument is number of frames
41637 to scan up the call stack. A value of '0' yields the return
41639 address of the caller of the current function, and so forth. When
41641 address of the function that is returned to. To work around this
41642 behavior use the 'noinline' function attribute.
41644 The LEVEL argument must be a constant integer.
41649 returns an unspecified value. In addition,
41651 the stack has been reached.
41654 '__builtin_extract_return_addr'.
41657 different from the address returned by '__builtin_return_address'.
41660 '__builtin_return_address' is not.
41663 unpredictable effects, including crashing the calling program. As
41665 '-Wframe-address' option is in effect. Such calls should only be
41666 made in debugging situations.
41670 gives the code address where the current function would return.
41672 interfaces that work with code addresses.
41676 be fed through this function to get the actual encoded address.
41679 true next instruction to be executed.
41681 If no fixup is needed, this function simply passes through ADDR.
41684 This function does the reverse of '__builtin_extract_return_addr'.
41690 address of the function. Calling '__builtin_frame_address' with a
41693 function, and so forth.
41696 saved registers. The frame address is normally the address of the
41697 first word pushed on to the stack by the function. However, the
41699 convention. If the processor has a dedicated frame pointer
41702 register.
41708 the startup code.
41711 unpredictable effects, including crashing the calling program. As
41713 '-Wframe-address' option is in effect. Such calls should only be
41714 made in debugging situations.
41717 File: gcc.info, Node: Vector Extensions, Next: Offsetof, Prev: Return Address, Up: C Extensions
41724 same time. For example, on the x86 the MMX, 3DNow! and SSE extensions
41725 can be used this way.
41728 data types. This should be done using an appropriate 'typedef':
41733 the vector size for the variable, measured in bytes. For example, the
41735 type to be 16 bytes wide and divided into 'int' sized units. For a
41737 corresponding mode of 'foo' is V4SI.
41741 allowed in conjunction with this construct. Only sizes that are
41743 allowed.
41746 and as unsigned: 'char', 'short', 'int', 'long', 'long long'. In
41748 vector types.
41751 causes GCC to synthesize the instructions using a narrower mode. For
41754 4 'SIs'.
41757 operations. Currently, GCC allows using the following operators on
41758 these types: '+, -, *, /, unary minus, ^, |, &, ~, %'.
41760 The operations behave like C++ 'valarrays'. Addition is defined as the
41761 addition of the corresponding elements of the operands. For example, in
41763 corresponding 4 elements in B and the resulting vector is stored in C.
41772 operate in a similar manner. Likewise, the result of using the unary
41775 elements in the operand.
41778 vectors. The operation is defined as following: '{a0, a1, ..., an} >>
41779 {b0, b1, ..., bn} == {a0 >> b0, a1 >> b1, ..., an >> bn}'. Vector
41780 operands must have the same number of elements.
41783 one operand is a scalar. In that case the compiler transforms the
41785 operation. The transformation happens only if the scalar could be
41786 safely converted to the vector-element type. Consider the following
41787 code.
41797 a = l + a; /* Error, cannot convert long to int. */
41800 number of elements and base type. Out of bound accesses invoke
41801 undefined behavior at run time. Warnings for out of bound accesses for
41802 vector subscription can be enabled with '-Warray-bounds'.
41805 !=, <, <=, >, >='. Comparison operands can be vector expressions of
41806 integer-type or real-type. Comparison between integer-type vectors and
41807 real-type vectors are not supported. The result of the comparison is a
41809 operands with a signed integral element type.
41813 otherwise. Consider the following example.
41824 In C++, the ternary operator '?:' is available. 'a?b:c', where 'b' and
41828 ...}'. Note that unlike in OpenCL, 'a' is thus interpreted as 'a != 0'
41829 and not 'a < 0'. As in the case of binary operations, this syntax is
41831 transformed into a vector. If both 'b' and 'c' are scalars and the type
41834 with the same number of elements as 'a'.
41836 In C++, the logic operators '!, &&, ||' are available for vectors.
41838 and 'a || b' is equivalent to 'a!=0 | b!=0'. For mixed operations
41841 to 'v!=0 & (s?-1:0)'.
41844 mask)' and '__builtin_shuffle (vec0, vec1, mask)'. Both functions
41846 vector of the same type as the input vector(s). The MASK is an integral
41848 vector.
41851 VEC0 beginning at 0 and VEC1 beginning at N. The elements of MASK are
41853 two-operand case.
41869 with the OpenCL 'shuffle' and 'shuffle2' functions.
41872 as well as in assignments and some casts. You can specify a vector type
41873 as a return type for a function. Vector types can also be used as
41874 function arguments. It is possible to cast from one vector type to
41876 vectors to and from other datatypes of the same size).
41879 signedness without a cast.
41882 vectype)' function. VEC must be an expression with integral or floating
41884 same number of elements. The result has VECTYPE type and value of a C
41885 cast of every element of VEC to the element type of VECTYPE.
41894 v4sf b = {1.5f,-2.5f,3.f,7.f};
41896 v4sf d = __builtin_convertvector (a, v4sf); /* d is {1.f,-2.f,3.f,-4.f} */
41899 v4df e = __builtin_convertvector (a, v4df); /* e is {1.,-2.,3.,-4.} */
41900 v4df f = __builtin_convertvector (b, v4df); /* f is {1.5,-2.5,3.,7.} */
41906 access vector instructions that are not exposed via generic built-ins).
41910 other vector types. In C, you can make use of a 'union' type:
41911 #include <immintrin.h>
41927 y.u8 += 0x80;
41928 x.mm = _mm_adds_epu8 (x.mm, y.mm);
41929 x.u32 &= 0xffffff;
41934 x = foo ((v128) {_mm_adds_epu8 (x.mm, y.mm)});
41937 File: gcc.info, Node: Offsetof, Next: __sync Builtins, Prev: Vector Extensions, Up: C Extensions
41943 'offsetof' macro.
41950 | offsetof_member_designator "." identifier
41957 is a suitable definition of the 'offsetof' macro. In C++, TYPE may be
41958 dependent. In either case, MEMBER may consist of a single identifier,
41959 or a sequence of member accesses and array references.
41962 File: gcc.info, Node: __sync Builtins, Next: __atomic Builtins, Prev: Offsetof, Up: C Extensions
41969 Binary Interface', section 7.4. As such, they depart from normal GCC
41971 overloaded so that they work on multiple types.
41974 of the types 'int', 'long', 'long long' or their unsigned counterparts.
41976 the C type '_Bool' or the C++ type 'bool'. Operations on pointer
41977 arguments are performed as if the operands were of the 'uintptr_t' type.
41979 pointer points.
41982 (*note __atomic Builtins::). They should not be used for new code which
41983 should use the '__atomic' builtins instead.
41985 Not all operations are supported by all target processors. If a
41987 warning is generated and a call to an external function is generated.
41989 with an additional suffix '_N' where N is the size of the data type.
41992 barrier". That is, no memory operand is moved across the operation,
41993 either forward or backward. Further, instructions are issued as
41995 operation and from queuing stores after the operation.
41998 "an optional list of variables protected by the memory barrier". It's
42001 to be protected. The list is ignored by GCC which treats it as empty.
42003 variables should be protected.
42005 'TYPE __sync_fetch_and_add (TYPE *ptr, TYPE value, ...)'
42006 'TYPE __sync_fetch_and_sub (TYPE *ptr, TYPE value, ...)'
42007 'TYPE __sync_fetch_and_or (TYPE *ptr, TYPE value, ...)'
42008 'TYPE __sync_fetch_and_and (TYPE *ptr, TYPE value, ...)'
42009 'TYPE __sync_fetch_and_xor (TYPE *ptr, TYPE value, ...)'
42010 'TYPE __sync_fetch_and_nand (TYPE *ptr, TYPE value, ...)'
42012 name, and returns the value that had previously been in memory.
42014 semantics. Operations on pointer arguments are performed as if the
42015 operands were of the 'uintptr_t' type. That is, they are not
42016 scaled by the size of the type to which the pointer points.
42022 pointer type. It must not be a boolean type.
42025 '*ptr = ~(tmp & value)' instead of '*ptr = ~tmp & value'.
42027 'TYPE __sync_add_and_fetch (TYPE *ptr, TYPE value, ...)'
42028 'TYPE __sync_sub_and_fetch (TYPE *ptr, TYPE value, ...)'
42029 'TYPE __sync_or_and_fetch (TYPE *ptr, TYPE value, ...)'
42030 'TYPE __sync_and_and_fetch (TYPE *ptr, TYPE value, ...)'
42031 'TYPE __sync_xor_and_fetch (TYPE *ptr, TYPE value, ...)'
42032 'TYPE __sync_nand_and_fetch (TYPE *ptr, TYPE value, ...)'
42034 name, and return the new value. That is, operations on integer
42035 operands have the following semantics. Operations on pointer
42036 operands are performed as if the operand's type were 'uintptr_t'.
42042 '__sync_op_and_fetch' built-in functions.
42045 '*ptr = ~(*ptr & value)' instead of '*ptr = ~*ptr & value'.
42047 'bool __sync_bool_compare_and_swap (TYPE *ptr, TYPE oldval, TYPE newval, ...)'
42048 'TYPE __sync_val_compare_and_swap (TYPE *ptr, TYPE oldval, TYPE newval, ...)'
42049 These built-in functions perform an atomic compare and swap. That
42051 into '*PTR'.
42054 and NEWVAL is written. The "val" version returns the contents of
42055 '*PTR' before the operation.
42057 '__sync_synchronize (...)'
42058 This built-in function issues a full memory barrier.
42060 'TYPE __sync_lock_test_and_set (TYPE *ptr, TYPE value, ...)'
42062 test-and-set operation, but rather an atomic exchange operation.
42064 '*PTR'.
42067 support a full exchange operation. In this case, a target may
42069 to store is the immediate constant 1. The exact value actually
42070 stored in '*PTR' is implementation defined.
42073 "acquire barrier". This means that references after the operation
42076 previous memory loads may not yet be satisfied.
42078 'void __sync_lock_release (TYPE *ptr, ...)'
42080 '__sync_lock_test_and_set'. Normally this means writing the
42081 constant 0 to '*PTR'.
42084 barrier". This means that all previous memory stores are globally
42087 before the barrier.
42090 File: gcc.info, Node: __atomic Builtins, Next: Integer Overflow Builtins, Prev: __sync Builtins,…
42096 for the C++11 memory model. They are all identified by being prefixed
42098 types.
42100 These functions are intended to replace the legacy '__sync' builtins.
42102 parameter to the functions. New code should always use the '__atomic'
42103 builtins rather than the '__sync' builtins.
42106 the C++11 memory model. In particular, they assume that programs are
42107 free of data races. See the C++11 standard for detailed requirements.
42110 type that is 1, 2, 4, or 8 bytes in length. 16-byte integral types are
42112 architecture.
42115 compare_exchange) all have a generic version as well. This generic
42116 version works on any data type. It uses the lock-free built-in function
42118 external call is left to be resolved at run time. This external call is
42120 the first parameter indicating the size of the object being pointed to.
42121 All objects must be the same size.
42123 There are 6 different memory orders that can be specified. These map
42126 (http://gcc.gnu.org/wiki/Atomic/GCCMM/AtomicSync) for detailed
42127 definitions. Individual targets may also support additional memory
42128 orders for use on specific architectures. Refer to the target
42129 documentation for details of these.
42132 hardware instructions for synchronization between threads (e.g., a
42133 fence). To which extent this happens is controlled by the memory
42135 strength. The description of each memory order is only meant to roughly
42137 model for precise semantics.
42140 Implies no inter-thread ordering constraints.
42144 'memory_order_consume'.
42147 (or stronger) semantic store to this acquire load. Can prevent
42148 hoisting of code to before the operation.
42151 stronger) semantic loads that read from this release store. Can
42152 prevent sinking of code to after the operation.
42155 '__ATOMIC_RELEASE'.
42158 operations.
42160 Note that in the C++11 memory model, _fences_ (e.g.,
42162 operations on specific memory locations (e.g., atomic loads); operations
42164 in the same way.
42167 each of the atomic built-in functions. If no target is provided, the
42170 order to achieve the proper behavior. Execution in this case is subject
42171 to the same restrictions as those built-in functions.
42175 to be resolved at run time.
42179 most restrictive '__ATOMIC_SEQ_CST' memory order. Any of the other
42182 implementation of the relaxed requirements.
42185 be determined at run time rather than at compile time. These built-in
42187 invoke a runtime library call or inline a switch statement. This is
42188 standard compliant, safe, and the simplest approach for now.
42191 are reserved for the memory order. The remainder of the signed int is
42192 reserved for target use and should be 0. Use of the predefined atomic
42193 values ensures proper usage.
42196 This built-in function implements an atomic load operation. It
42197 returns the contents of '*PTR'.
42200 '__ATOMIC_SEQ_CST', '__ATOMIC_ACQUIRE', and '__ATOMIC_CONSUME'.
42204 This is the generic version of an atomic load. It returns the
42205 contents of '*PTR' in '*RET'.
42209 This built-in function implements an atomic store operation. It
42210 writes 'VAL' into '*PTR'.
42213 '__ATOMIC_SEQ_CST', and '__ATOMIC_RELEASE'.
42217 This is the generic version of an atomic store. It stores the
42218 value of '*VAL' into '*PTR'.
42222 This built-in function implements an atomic exchange operation. It
42224 '*PTR'.
42228 '__ATOMIC_ACQ_REL'.
42232 This is the generic version of an atomic exchange. It stores the
42233 contents of '*VAL' into '*PTR'. The original value of '*PTR' is
42234 copied into '*RET'.
42240 operation. This compares the contents of '*PTR' with the contents
42241 of '*EXPECTED'. If equal, the operation is a _read-modify-write_
42242 operation that writes DESIRED into '*PTR'. If they are not equal,
42244 written into '*EXPECTED'. WEAK is 'true' for weak
42246 strong variation, which never fails spuriously. Many targets only
42247 offer the strong variation and ignore the parameter. When in
42248 doubt, use the strong variation.
42252 SUCCESS_MEMORDER. There are no restrictions on what memory order
42253 can be used here.
42256 FAILURE_MEMORDER. This memory order cannot be '__ATOMIC_RELEASE'
42257 nor '__ATOMIC_ACQ_REL'. It also cannot be a stronger order than
42258 that specified by SUCCESS_MEMORDER.
42264 '__atomic_compare_exchange'. The function is virtually identical
42266 a pointer.
42281 name, and return the result of the operation. Operations on
42283 'uintptr_t' type. That is, they are not scaled by the size of the
42284 type to which the pointer points.
42290 pointer type. It must not be a boolean type. All memory orders
42291 are valid.
42306 name, and return the value that had previously been in '*PTR'.
42308 were of the 'uintptr_t' type. That is, they are not scaled by the
42309 size of the type to which the pointer points.
42315 '__atomic_op_fetch' built-in functions. All memory orders are
42316 valid.
42322 the byte at '*PTR'. The byte is set to some implementation defined
42324 the previous contents were "set". It should be only used for
42325 operands of type 'bool' or 'char'. For other types only part of
42326 the value may be set.
42328 All memory orders are valid.
42333 '*PTR'. After the operation, '*PTR' contains 0. It should be only
42335 '__atomic_test_and_set'. For other types it may only clear
42336 partially. If the type is not 'bool' prefer using
42337 '__atomic_store'.
42340 '__ATOMIC_SEQ_CST', and '__ATOMIC_RELEASE'.
42345 threads based on the specified memory order.
42347 All memory orders are valid.
42352 thread and signal handlers based in the same thread.
42354 All memory orders are valid.
42361 architecture. SIZE must resolve to a compile-time constant and the
42362 result also resolves to a compile-time constant.
42365 determine alignment. A value of 0 indicates typical alignment
42366 should be used. The compiler may also ignore this parameter.
42375 architecture. If the built-in function is not known to be
42377 '__atomic_is_lock_free'.
42380 determine alignment. A value of 0 indicates typical alignment
42381 should be used. The compiler may also ignore this parameter.
42384 File: gcc.info, Node: Integer Overflow Builtins, Next: x86 specific memory model extensions for t…
42390 operations together with checking whether the operations overflowed.
42410 promoted operands. The result is then cast to the type the third
42411 pointer argument points to and stored there. If the stored result
42413 return 'false', otherwise they return 'true'. As the addition is
42415 have fully defined behavior for all argument values.
42420 functions have explicit integer types.
42424 overflow after addition, conditional jump on carry etc.
42444 the second argument from the first one, instead of addition.
42464 instead of addition.
42467 operation would overflow.
42480 integral type other than enumerated or boolean type.
42484 operands. The result is then cast to the type of the third
42485 argument. If the cast result is equal to the infinite precision
42487 return 'true'. The value of the third argument is ignored, just
42489 integral argument promotions are performed on the last argument.
42492 rather than precision and signedness of the underlying type.
42497 and not to trigger a '-Woverflow' warning.
42510 overflow after addition, conditional jump on carry etc.
42513 File: gcc.info, Node: x86 specific memory model extensions for transactional memory, Next: Object…
42519 critical sections for hardware lock elision. These must be specified in
42520 addition to an existing memory order to atomic intrinsics.
42523 Start lock elision on a lock variable. Memory order must be
42524 '__ATOMIC_ACQUIRE' or stronger.
42526 End lock elision on a lock variable. Memory order must be
42527 '__ATOMIC_RELEASE' or stronger.
42530 the transaction quickly. This can be done with a '_mm_pause'.
42532 #include <immintrin.h> // For _mm_pause
42539 ...
42544 File: gcc.info, Node: Object Size Checking, Next: Other Builtins, Prev: x86 specific memory mode…
42552 the size isn't sufficient. The built-in functions described below yield
42553 the best results when used together and when optimization is enabled.
42556 various optimization passes enabled with '-O2'. However, to a limited
42557 extent, they can be used without optimization as well.
42563 at compile time). To determine the sizes of dynamically allocated
42566 (*note Common Function Attributes::). '__builtin_object_size'
42567 never evaluates its arguments for side effects. If there are any
42569 '(size_t) 0' for TYPE 2 or 3. If there are multiple objects PTR
42572 objects if TYPE & 2 is 0 and minimum if nonzero. If it is not
42575 and '(size_t) 0' for TYPE 2 or 3.
42577 TYPE is an integer constant from 0 to 3. If the least significant
42579 surrounding subobject is considered the object a pointer points to.
42581 is computed.
42584 char *p = &var.buf1[1], *q = &var.b;
42586 /* Here the object p points to is var. */
42588 /* The subobject p points to is var.buf1. */
42589 assert (__builtin_object_size (p, 1) == sizeof (var.buf1) - 1);
42590 /* The object q points to is var. */
42592 == (char *) (&var + 1) - (char *) &var.b);
42593 /* The subobject q points to is var.b. */
42594 assert (__builtin_object_size (q, 1) == sizeof (var.b));
42597 functions, e.g., for 'memcpy' '__builtin___memcpy_chk' built-in is
42598 provided. This built-in has an additional last argument, which is the
42600 '(size_t) -1' if the size is not known.
42604 compile time that the destination object will not be overflowed. If the
42606 overflowed, it issues a warning.
42608 The intended use can be e.g.
42618 into plain memcpy - no checking is possible. */
42620 /* Destination is known and length too. It is known at compile
42621 time there will be no overflow. */
42623 /* Destination is known, but the length is not known at compile time.
42625 at run time. */
42628 be overflow. There will be a warning and __memcpy_chk call that
42629 will abort the program at run time. */
42634 'strncat'.
42637 functions.
42638 int __builtin___sprintf_chk (char *s, int flag, size_t os, const char *fmt, ...);
42640 const char *fmt, ...);
42646 The added FLAG argument is passed unchanged to '__sprintf_chk' etc.
42649 handling '%n' differently.
42652 built-in functions. There is a small difference in the behavior though,
42655 function is called with OS argument set to '(size_t) -1'.
42659 '__builtin___fprintf_chk' and '__builtin___vfprintf_chk'. These have
42660 just one additional argument, FLAG, right before format string FMT. If
42661 the compiler is able to optimize them to 'fputc' etc. functions, it
42663 passed to it.
42666 File: gcc.info, Node: Other Builtins, Next: Target Builtins, Prev: Object Size Checking, Up: C …
42672 mentioned above. Some of these are for internal use in the processing
42675 general use of these functions.
42677 The remaining functions are provided for optimization purposes.
42683 obtained. Attempting to use them in an expression other than a function
42684 call results in a compile-time error.
42687 C library. These functions come in two forms: one whose names start
42688 with the '__builtin_' prefix, and the other without. Both forms have
42691 if you specify the '-fno-builtin' option *note C Dialect Options::).
42694 emitted.
42710 functions. All these functions have corresponding versions prefixed
42711 with '__builtin_', which may be used even in strict C90 mode.
42740 '-std=c90').
42750 purpose to which ISO C99 puts them. All these functions have
42751 corresponding versions prefixed with '__builtin_'.
42757 '_FloatNx'.
42760 'clog10l' which names are reserved by ISO C99 for future use. All these
42761 functions have versions prefixed with '__builtin_'.
42766 except in strict ISO C90 mode ('-ansi' or '-std=c90').
42780 is specified for an individual function). All of these functions have
42781 corresponding versions prefixed with '__builtin_'.
42784 macros that avoid raising exceptions for unordered operands. They have
42787 '__builtin_' prefixed. We intend for a library implementor to be able
42788 to simply '#define' each standard macro to its built-in equivalent. In
42790 'isnormal' and 'signbit' built-ins used with '__builtin_' prefixed. The
42792 '__builtin_' prefix.
42795 The '__builtin_alloca' function must be called at block scope. The
42797 calling function. The object is aligned on the default stack
42799 '__BIGGEST_ALIGNMENT__' macro. The '__builtin_alloca' function
42800 returns a pointer to the first byte of the allocated object. The
42802 function returns to its caller. This is so even when
42803 '__builtin_alloca' is called within a nested block.
42807 elements of the array 'a'. It then passes the array to function
42809 array elements.
42822 doesn't cause it to exceed the stack size limit. The
42825 be computed at run time. Since C99 Variable Length Arrays offer
42828 programs where GCC provides them as an extension. *Note Variable
42829 Length::, for details.
42834 scope. The function allocates an object SIZE bytes large on the
42835 stack of the calling function. The allocated object is aligned on
42837 given in bits (not bytes). The SIZE argument must be positive and
42838 not exceed the stack size limit. The ALIGNMENT argument must be a
42840 than or equal to 'CHAR_BIT' and less than some unspecified maximum.
42842 the valid bounds. The function returns a pointer to the first byte
42843 of the allocated object. The lifetime of the allocated object ends
42844 at the end of the block in which the function was called. The
42847 the block in which the function was called.
42852 the 'if' statement in which it was called.
42867 sure the argument doesn't cause it to exceed the stack size limit.
42870 an upper bound that may be computed at run time. Since C99
42874 extension. *Note Variable Length::, for details.
42881 '-Wstack-usage' and '-Walloca-larger-than'. MAX_SIZE must be a
42883 and no attempt is made to check its compatibility with SIZE.
42890 with the ATTRIBUTE referenced by the second argument. For an
42893 type of the argument. Neither argument is evaluated. The
42895 the argument to 'typeof' (*note Typeof::). The ATTRIBUTE argument
42897 of arguments enclosed in parentheses. Both forms of attribute
42899 underscores--are recognized. *Note Attribute Syntax::, for
42900 details. When no attribute arguments are specified for an
42903 regardless of the attribute argument values. Arguments provided
42905 the provided number. The function returns 'true' if all provided
42906 arguments match. For example, the first call to the function below
42909 declared 'aligned (8)' and not 'aligned (4)'.
42918 one. The function is also not supported with labels, and in C with
42919 enumerators.
42924 recognized in such contexts.
42930 speculative execution. TYPE may be any integral type or any
42931 pointer type.
42933 1. If the CPU is not speculatively executing the code, then VAL
42934 is returned.
42935 2. If the CPU is executing speculatively then either:
42943 predicted a conditional branch operation.
42946 omitted.
42950 updated to support this builtin.
42954 temporarily ignore the bounds checks. Consider, for example, the
42968 executed. If the function is subsequently called with an
42971 (the CPU will unwind any incorrect operations at that point).
42974 was stored at the out-of-bounds location. The built-in function
42989 'untrusted_value' if that exceeds the limit.
43003 which will cause a 'NULL' pointer to be used for the unsafe case.
43008 determine whether two types are the same.
43012 compatible, 0 otherwise. The result of this built-in function can
43013 be used in integer constant expressions.
43015 This built-in function ignores top level qualifiers (e.g., 'const',
43016 'volatile'). For example, 'int' is equivalent to 'const int'.
43018 The type 'int[]' and 'int[5]' are compatible. On the other hand,
43020 types, on the particular architecture are the same. Also, the
43022 determining similarity. Consequently, 'short *' is not similar to
43023 'short **'. Furthermore, two types that are typedefed are
43024 considered compatible if their underlying types are compatible.
43028 this is what the C standard specifies. For example, 'enum {foo,
43029 bar}' is not similar to 'enum {hot, dog}'.
43032 depending on the arguments' types. For example:
43048 _Note:_ This construct is only available for C.
43054 POINTER_EXP expression must be a pointer. The POINTER_EXP is
43055 passed to the function call in the target's static chain location.
43056 The result of builtin is the result of the function call.
43058 _Note:_ This builtin is only available for C. This builtin can be
43059 used to call Go closures from C.
43065 evaluate code depending on the value of a constant expression.
43067 integer constant expression, is nonzero. Otherwise it returns
43068 EXP2.
43072 promotion rules. Also, the built-in function does not evaluate the
43073 expression that is not chosen. For example, if CONST_EXP evaluates
43074 to 'true', EXP2 is not evaluated even if it has side effects.
43077 is an lvalue.
43079 If EXP1 is returned, the return type is the same as EXP1's type.
43081 EXP2.
43093 when assigning the result to something. */ \
43096 _Note:_ This construct is only available for C. Furthermore, the
43098 CONST_EXP) may still generate syntax errors. This may change in
43099 future revisions.
43105 '<tgmath.h>' macros. It is intended to be used in implementations
43110 invalid calls to '<tgmath.h>' macros than implementations using
43111 other GNU C language features. For example, the 'pow' type-generic
43119 (which will be passed as arguments to the selected function). All
43125 to the called function.
43129 may be selected between by a macro in '<tgmath.h>'. This means
43131 different for each such function. The function return types may
43134 of the types T are complex). Likewise, for each parameter
43138 corresponding to T for each function.
43140 The standard rules for '<tgmath.h>' macros are used to find a
43145 '_FloatN' or '_FloatNx' type). If the function return types vary,
43147 for which T is U, and it is an error if there is no such function.
43153 called, and it is an error if there is no such function.
43158 implementing the ISO C11 macros 'CMPLXF', 'CMPLX' and 'CMPLXL'.
43161 and imaginary parts REAL and IMAG. Unlike 'REAL + I * IMAG', this
43162 works even when infinities, NaNs and negative zeros are involved.
43168 involving that value. The argument of the function is the value to
43169 test. The function returns the integer 1 if the argument is known
43171 compile-time constant. A return of 0 does not indicate that the
43173 constant with the specified value of the '-O' option.
43176 memory is a critical resource. If you have some complex
43178 but need to call a function if it does not. For example:
43185 function. However, if you use it in an inlined function and pass
43190 function unless you specify the '-O' option.
43193 data. For instance, you can write
43197 /* ... */
43205 ()'). GCC must be more conservative about evaluating the built-in
43207 optimization.
43211 C++. The built-in is intended to be used by implementations of the
43212 'std::is_constant_evaluated' C++ function. Programs should make
43214 directly.
43217 'constexpr' function is being called in a 'constexpr' context. A
43221 as defined in the C++ standard. Manifestly constant-evaluated
43224 variables usable in constant expressions. For more details refer
43225 to the latest revision of the C++ standard.
43229 prediction information. In general, you should prefer to use
43232 perform. However, there are applications in which this data is
43233 hard to collect.
43236 expression. The semantics of the built-in are that it is expected
43237 that EXP == C. For example:
43243 to be zero. Since you are limited to integral expressions for EXP,
43249 when testing pointer or floating-point values.
43254 defaults to 90%.
43257 assign a probability value to individual expressions. If the
43260 optimizations.
43266 caller provides the expected probability that EXP == C. The last
43268 to 1.0, inclusive. The PROBABILITY argument must be constant
43269 floating-point expression.
43272 This function causes the program to exit abnormally. GCC
43275 calling 'abort'. The mechanism used may vary from release to
43276 release so you should not rely on any particular implementation.
43280 the program is undefined. It is useful in situations where the
43281 compiler cannot deduce the unreachability of the code.
43285 and never returns. In this example, without the
43287 the end of a non-void function. It also generates code to return
43288 after the 'asm'.
43305 body. The '__builtin_unreachable' is in fact unreachable and
43306 communicates this fact to the compiler.
43328 size_t ALIGN, ...)
43331 aligned. This built-in can have either two or three arguments, if
43333 it is nonzero means misalignment offset. For example:
43343 '(char *) x - 8' is 32-byte aligned.
43348 the line number of the invocation of the built-in. When used as a
43350 of the call to F.
43356 invocation is not at function scope. When used as a C++ default
43358 empty string if the call was not made at function scope.
43364 the invocation is not at function scope. When used as a C++
43367 scope.
43370 print a line similar to '"file.c:123: foo: message"' with the name
43372 the function 'foo', followed by the word 'message'.
43388 for the region of memory between BEGIN inclusive and END exclusive.
43391 behavior.
43394 '__builtin___clear_cache' has no effect. Otherwise either
43396 a call to the '__clear_cache' function in libgcc is made.
43398 -- Built-in Function: void __builtin_prefetch (const void *ADDR, ...)
43400 into a cache before it is accessed. You can insert calls to
43402 in memory that is likely to be accessed soon. If the target
43403 supports them, data prefetch instructions are generated. If the
43405 be in the cache by the time it is accessed.
43407 The value of ADDR is the address of the memory to prefetch. There
43408 are two optional arguments, RW and LOCALITY. The value of RW is a
43411 means that the prefetch is preparing for a read. The value
43413 three. A value of zero means that the data has no temporal
43414 locality, so it need not be left in the cache after the access. A
43416 locality and should be left in all levels of cache possible.
43418 of temporal locality. The default is three.
43425 /* ... */
43429 address expression itself must be valid. For example, a prefetch
43431 but evaluation faults if 'p' is not a valid address.
43435 code is generated and GCC does not issue a warning.
43439 Returns the size of an object pointed to by PTR. *Note Object Size
43440 Checking::, for a detailed description of the function.
43444 format, else 'DBL_MAX'. This function is suitable for implementing
43445 the ISO C macro 'HUGE_VAL'.
43448 Similar to '__builtin_huge_val', except the return type is 'float'.
43452 double'.
43456 '_FloatN'.
43460 '_FloatNx'.
43463 int, ...)
43464 This built-in implements the C99 fpclassify functionality. The
43466 the possible FP classes and are used for return values. They must
43468 'FP_INFINITE', 'FP_NORMAL', 'FP_SUBNORMAL' and 'FP_ZERO'. The
43469 ellipsis is for exactly one floating-point value to classify. GCC
43471 do default promotion from float to double.
43475 the target floating-point format does not support infinities.
43478 Similar to '__builtin_inf', except the return type is '_Decimal32'.
43481 Similar to '__builtin_inf', except the return type is '_Decimal64'.
43485 '_Decimal128'.
43488 Similar to '__builtin_inf', except the return type is 'float'.
43490 'INFINITY'.
43494 double'.
43497 Similar to '__builtin_inf', except the return type is '_FloatN'.
43500 Similar to '__builtin_inf', except the return type is '_FloatNx'.
43502 -- Built-in Function: int __builtin_isinf_sign (...)
43504 of '-Inf' and 1 for an argument of '+Inf'. Note while the
43506 one floating-point argument. GCC treats this parameter as
43508 float to double.
43511 This is an implementation of the ISO C99 function 'nan'.
43514 do not implement, a description of the parsing is in order. The
43516 leading '0' or '0x' prefixes. The number parsed is placed in the
43518 the least significant bit of the significand. The number is
43519 truncated to fit the significand field provided. The significand
43520 is forced to be a quiet NaN.
43524 considered a compile-time constant.
43527 Similar to '__builtin_nan', except the return type is '_Decimal32'.
43530 Similar to '__builtin_nan', except the return type is '_Decimal64'.
43534 '_Decimal128'.
43537 Similar to '__builtin_nan', except the return type is 'float'.
43541 double'.
43544 Similar to '__builtin_nan', except the return type is '_FloatN'.
43547 Similar to '__builtin_nan', except the return type is '_FloatNx'.
43551 a signaling NaN. The 'nans' function is proposed by WG14 N965.
43554 Similar to '__builtin_nans', except the return type is 'float'.
43558 double'.
43561 Similar to '__builtin_nans', except the return type is '_FloatN'.
43564 Similar to '__builtin_nans', except the return type is '_FloatNx'.
43568 if X is zero, returns zero.
43572 significant bit position. If X is 0, the result is undefined.
43576 significant bit position. If X is 0, the result is undefined.
43579 Returns the number of leading redundant sign bits in X, i.e. the
43581 identical to it. There are no special cases for 0 or other values.
43584 Returns the number of 1-bits in X.
43587 Returns the parity of X, i.e. the number of 1-bits in X modulo 2.
43590 Similar to '__builtin_ffs', except the argument type is 'long'.
43594 long'.
43598 long'.
43601 Similar to '__builtin_clrsb', except the argument type is 'long'.
43605 'unsigned long'.
43609 'unsigned long'.
43613 long'.
43617 long long'.
43621 long long'.
43625 long'.
43629 'unsigned long long'.
43633 'unsigned long long'.
43636 Returns the first argument raised to the power of the second.
43638 rounding are made.
43642 are 'float'.
43646 are 'long double'.
43650 '0xaabb' becomes '0xbbaa'. Byte here always means exactly 8 bits.
43654 types are 32 bit.
43658 types are 64 bit.
43663 extended user pointer. Targets where this is true included ILP32
43664 mode on x86_64 or Aarch64. This function is mainly useful when
43665 writing inline assembly code.
43669 X is 0, 1 or 2.
43673 whether X is 0, 1 or 2.
43676 File: gcc.info, Node: Target Builtins, Next: Target Format Checks, Prev: Other Builtins, Up: C …
43682 to those machines. Generally these generate calls to specific machine
43683 instructions, but allow the compiler to schedule those calls.
43726 File: gcc.info, Node: AArch64 Built-in Functions, Next: Alpha Built-in Functions, Up: Target Bui…
43728 6.60.1 AArch64 Built-in Functions
43732 processors.
43739 File: gcc.info, Node: Alpha Built-in Functions, Next: Altera Nios II Built-in Functions, Prev: A…
43741 6.60.2 Alpha Built-in Functions
43745 processors, depending on the command-line switches used.
43747 The following built-in functions are always available. They all
43748 generate the machine instruction that is part of the name.
43780 where CPU is 'pca56' or later. They all generate the machine
43781 instruction that is part of the name.
43798 where CPU is 'ev67' or later. They all generate the machine instruction
43799 that is part of the name.
43806 OSF/1 PALcode. Normally they invoke the 'rduniq' and 'wruniq' PAL
43808 'wrval'.
43814 File: gcc.info, Node: Altera Nios II Built-in Functions, Next: ARC Built-in Functions, Prev: Alp…
43816 6.60.3 Altera Nios II Built-in Functions
43820 processors.
43822 The following built-in functions are always available. They all
43823 generate the machine instruction that is part of the name.
43846 The following built-in functions are always available. They all
43847 generate a Nios II Custom Instruction. The name of the function
43848 represents the types that the function takes and returns. The letter
43849 before the 'n' is the return type or void if absent. The 'n' represents
43851 instruction number. The two letters after the 'n' represent the up to
43852 two parameters to the function.
43856 'void' for return type and no parameter for parameter types.
43922 File: gcc.info, Node: ARC Built-in Functions, Next: ARC SIMD Built-in Functions, Prev: Altera Ni…
43924 6.60.4 ARC Built-in Functions
43927 The following built-in functions are provided for ARC targets. The
43928 built-ins generate the corresponding assembly instructions. In the
43930 result to be in a register. Where necessary further code will be
43932 in each case.
43935 target may cause problems. At present the compiler is not guaranteed to
43937 generated.
43942 ALIGNVAL, otherwise return 0. Note that this is different from
43946 well as from the pointed-to type. The information available will
43947 depend on optimization level.
43955 The operand is the number of a register to be read. Generates:
43958 built-in.
43964 register. Generates:
43968 Only available if either '-mcpu=ARC700' or '-meA' is set.
43972 built-in.
43980 be a compile time constant. Generates:
43983 built-in.
43986 Only available with '-mmul64'. Generates:
43991 Only available with '-mmul64'. Generates:
44000 '-mnorm' option or by default with '-mcpu=ARC700'. Generates:
44003 built-in.
44007 '-mnorm' option or by default with '-mcpu=ARC700'. Generates:
44010 built-in.
44024 to the register. Generates:
44028 Only valid with '-mswap'. Generates:
44031 built-in.
44038 Only available with '-mcpu=ARC700'. Generates:
44042 Only available with '-mcpu=ARC700'. Generates:
44046 Only available with '-mcpu=ARC700'. Generates:
44050 as candidates for scheduling. They are not moved around by the compiler
44063 File: gcc.info, Node: ARC SIMD Built-in Functions, Next: ARM iWMMXt Built-in Functions, Prev: AR…
44065 6.60.5 ARC SIMD Built-in Functions
44069 vector instructions. This section describes the available builtins and
44070 their usage in programs. With the '-msimd' option, the compiler
44072 'vector_size' attribute. The header file 'arc-simd.h' can be included
44077 These types can be used to define 128-bit variables. The built-in
44079 to generate the vector operations.
44082 'arc-simd.h' also provides equivalent macros called '_SOMEINSN' that can
44083 be used for programming ease and improved readability. The following
44089 ARC, grouped by calling signature.
44155 I0-I7. They return a '__v8hi' result.
44161 must be a 6-bit compile time constant. They return a '__v8hi' result.
44171 must be a 8-bit compile time constant. They return a '__v8hi' result.
44178 be a 8-bit compile time constant. They return a '__v8hi' result:
44201 The following take two 'int' arguments and return no result. The first
44214 return a '__v8hi' result. The second argument must be a 3-bit compile
44216 argument must be an 8-bit compile time constant.
44221 loaded from the '[Ib, u8]' location in the SDM.
44228 The following take two 'int' arguments and return a '__v8hi' result.
44231 compile time constant.
44237 return no result. The second argument must be a 3-bit compile time
44239 must be an 8-bit compile time constant.
44245 return no result. The second argument must be a 3-bit compile-time
44249 constant.
44255 File: gcc.info, Node: ARM iWMMXt Built-in Functions, Next: ARM C Language Extensions (ACLE), Pre…
44257 6.60.6 ARM iWMMXt Built-in Functions
44409 File: gcc.info, Node: ARM C Language Extensions (ACLE), Next: ARM Floating Point Status and Contr…
44411 6.60.7 ARM C Language Extensions (ACLE)
44416 <https://developer.arm.com/documentation/ihi0053/latest/>.
44419 described in the ARM C Language Extensions Specification. The complete
44421 <https://developer.arm.com/documentation/ihi0073/latest/>. The built-in
44423 enabled.
44425 Currently, ARM and AArch64 back ends do not support ACLE 2.0 fully.
44427 the Coprocessor intrinsics, all from 'arm_acle.h'. The ARM back end's
44429 v1.1. AArch64's back end does not have support for 16-bit floating
44430 point Advanced SIMD intrinsics yet.
44433 information on the availability of extensions.
44436 File: gcc.info, Node: ARM Floating Point Status and Control Intrinsics, Next: ARM ARMv8-M Securit…
44438 6.60.8 ARM Floating Point Status and Control Intrinsics
44442 with floating-point unit.
44448 File: gcc.info, Node: ARM ARMv8-M Security Extensions, Next: AVR Built-in Functions, Prev: ARM F…
44450 6.60.9 ARM ARMv8-M Security Extensions
44456 <https://developer.arm.com/documentation/ecm0359818/latest/>.
44459 attributes: 'cmse_nonsecure_entry' and 'cmse_nonsecure_call'.
44461 As part of the Security Extensions GCC implements the intrinsics below.
44462 FPTR is used here to mean any function pointer type.
44478 File: gcc.info, Node: AVR Built-in Functions, Next: Blackfin Built-in Functions, Prev: ARM ARMv8…
44480 6.60.10 AVR Built-in Functions
44484 built-in macro defined. That way users can easily query if or if not a
44485 specific built-in is implemented or not. For example, if
44487 defined to '1' and undefined otherwise.
44499 i.e. 'nop', 'sei', 'cli', 'sleep', 'wdr', 'swap', 'fmul', 'fmuls'
44500 resp. 'fmulsu'. The three 'fmul*' built-ins are implemented as
44501 library call if no hardware multiplier is available.
44504 Delay execution for TICKS cycles. Note that this built-in does not
44506 delay time. TICKS must be a compile-time integer constant; delays
44507 with a variable number of cycles are not supported.
44511 space: AVR Named Address Spaces. '__memx' and returns the number of
44512 the flash segment (the 64 KiB chunk) where the address points to.
44513 Counting starts at '0'. If the address does not point to flash
44514 memory, return '-1'.
44517 Insert bits from BITS into VAL and return the resulting value. The
44520 1. If X is '0xf', then the N-th bit of VAL is returned unaltered.
44522 2. If X is in the range 0...7, then the N-th result bit is set to
44525 3. If X is in the range 8...'0xe', then the N-th result bit is
44526 undefined.
44529 output values to non-contiguous port layouts. Some examples:
44548 Insert COUNT 'NOP' instructions. The number of instructions must
44549 be a compile-time integer constant.
44553 section 7.18a.6. You don't need to use these built-ins directly.
44554 Instead, use the declarations as supplied by the 'stdfix.h' header with
44557 #include <stdfix.h>
44560 // integer UVAL as Q-format 0.16 value.
44567 File: gcc.info, Node: Blackfin Built-in Functions, Next: BPF Built-in Functions, Prev: AVR Built…
44569 6.60.11 Blackfin Built-in Functions
44572 Currently, there are two Blackfin-specific built-in functions. These
44576 instructions. These functions are named as follows:
44582 File: gcc.info, Node: BPF Built-in Functions, Next: FR-V Built-in Functions, Prev: Blackfin Buil…
44584 6.60.12 BPF Built-in Functions
44587 The following built-in functions are available for eBPF targets.
44592 register '%r6' and return it.
44597 register '%r6' and return it.
44602 register '%r6' and return it.
44605 File: gcc.info, Node: FR-V Built-in Functions, Next: MIPS DSP Built-in Functions, Prev: BPF Buil…
44607 6.60.13 FR-V Built-in Functions
44610 GCC provides many FR-V-specific built-in functions. In general, these
44612 Family, Softune C/C++ Compiler Manual (V6), Fujitsu Semiconductor'. The
44614 pass 128-bit values by pointer rather than by value.
44616 Most of the functions are named after specific FR-V instructions. Such
44618 tabular form.
44629 File: gcc.info, Node: Argument Types, Next: Directly-mapped Integer Functions, Up: FR-V Built-in…
44631 6.60.13.1 Argument Types
44632 ........................
44635 groups: register numbers, compile-time constants and run-time values.
44650 convenience used in this manual.
44653 run time. They correspond to register operands in the underlying FR-V
44654 instructions.
44657 instructions. They must be compile-time constants.
44660 an accumulator register. For example, an 'acc' argument of 2 selects
44661 the ACC2 register.
44664 of an IACC register. See *note Other Built-in Functions:: for more
44665 details.
44668 File: gcc.info, Node: Directly-mapped Integer Functions, Next: Directly-mapped Media Functions, …
44670 6.60.13.2 Directly-Mapped Integer Functions
44671 ...........................................
44673 The functions listed below map directly to FR-V I-type instructions.
44688 File: gcc.info, Node: Directly-mapped Media Functions, Next: Raw read/write Functions, Prev: Dir…
44690 6.60.13.3 Directly-Mapped Media Functions
44691 .........................................
44693 The functions listed below map directly to FR-V M-type instructions.
44835 File: gcc.info, Node: Raw read/write Functions, Next: Other Built-in Functions, Prev: Directly-m…
44837 6.60.13.4 Raw Read/Write Functions
44838 ..................................
44841 instructions to access memory. These functions generate 'membar'
44843 described in Fujitsu's manual described above.
44856 File: gcc.info, Node: Other Built-in Functions, Prev: Raw read/write Functions, Up: FR-V Built-i…
44858 6.60.13.5 Other Built-in Functions
44859 ..................................
44862 specific FR-V instruction.
44865 Return the full 64-bit value of IACC0. The REG argument is
44866 reserved for future expansion and must be 0.
44869 Return the value of IACC0H if REG is 0 and IACC0L if REG is 1.
44870 Other values of REG are rejected as invalid.
44873 Set the full 64-bit value of IACC0 to X. The REG argument is
44874 reserved for future expansion and must be 0.
44877 Set IACC0H to X if REG is 0 and IACC0L to X if REG is 1. Other
44878 values of REG are rejected as invalid.
44882 the data cache.
44886 the data cache. The instruction is issued in slot I1.
44889 File: gcc.info, Node: MIPS DSP Built-in Functions, Next: MIPS Paired-Single Support, Prev: FR-V …
44891 6.60.14 MIPS DSP Built-in Functions
44896 media applications. It provides instructions that operate on packed
44897 8-bit/16-bit integer data, Q7, Q15 and Q31 fractional data.
44901 built-in functions. Both kinds of support are enabled by the '-mdsp'
44902 command-line option.
44904 Revision 2 of the ASE was introduced in the second half of 2006. This
44906 backwards-compatible with it. You can select revision 2 using the
44907 command-line option '-mdspr2'; this option implies '-mdsp'.
44909 The SCOUNT and POS bits of the DSP control register are global. The
44911 bits. During optimization, the compiler does not delete these
44913 instructions.
44915 At present, GCC only provides support for operations on 32-bit vectors.
44920 'v2q15'. They can be defined in C as follows:
44928 way as aggregates. For example:
44936 d = (v2q15) {0.1234 * 0x1.0p15, 0.4567 * 0x1.0p15};
44939 packed. On little-endian targets, the first value is the least
44940 significant and the last value is the most significant. The opposite
44941 order applies to big-endian targets. For example, the code above sets
44943 big-endian targets.
44946 representation. As shown in this example, the integer representation of
44948 '0x1.0p7'. The equivalent for Q15 values is to multiply by '0x1.0p15'.
44949 The equivalent for Q31 values is to multiply by '0x1.0p31'.
44952 hardware support exists. 'a' and 'b' are 'v4i8' values, and 'c' and 'd'
44953 are 'v2q15' values.
44956 'a + b' 'addu.qb'
44957 'c + d' 'addq.ph'
44958 'a - b' 'subu.qb'
44959 'c - d' 'subq.ph'
44962 exists for the DSP ASE REV 2. 'e' and 'f' are 'v2i16' values.
44965 'e * f' 'mul.ph'
44977 value. Similarly, 'a64' is the same as 'long long', but we use 'a64' to
44979 ('$ac0', '$ac1', '$ac2' or '$ac3').
44984 only. The immediate parameters are listed as follows.
44986 imm0_3: 0 to 3.
44987 imm0_7: 0 to 7.
44988 imm0_15: 0 to 15.
44989 imm0_31: 0 to 31.
44990 imm0_63: 0 to 63.
44991 imm0_255: 0 to 255.
44992 imm_n32_31: -32 to 31.
44993 imm_n512_511: -512 to 511.
44996 instruction. Please refer to the architecture specification for details
44997 on what each instruction does.
45111 REV 2 instruction. Please refer to the architecture specification for
45112 details on what each instruction does.
45162 File: gcc.info, Node: MIPS Paired-Single Support, Next: MIPS Loongson Built-in Functions, Prev: …
45164 6.60.15 MIPS Paired-Single Support
45168 on pairs of single-precision floating-point values. Each pair is packed
45170 the "upper half" and the other being designated the "lower half".
45174 built-in functions. Both kinds of support are enabled by the
45175 '-mpaired-single' command-line option.
45178 'v2sf'. It can be defined in C as follows:
45182 'v2sf' values are initialized in the same way as aggregates. For
45191 upper half of a register and which value is stored in the lower half.
45193 second value is the upper one. The opposite order applies to big-endian
45194 targets. For example, the code above sets the lower half of 'a' to
45195 '1.5' on little-endian targets and '9.1' on big-endian targets.
45198 File: gcc.info, Node: MIPS Loongson Built-in Functions, Next: MIPS SIMD Architecture (MSA) Suppor…
45200 6.60.16 MIPS Loongson Built-in Functions
45204 ST Microelectronics Loongson-2E and -2F processors. These intrinsics,
45205 available after inclusion of the 'loongson.h' header file, operate on
45213 * 'int32x2_t', a vector of two signed 32-bit integers.
45218 instruction yet have different argument types. Refer to the
45220 each instruction.
45329 File: gcc.info, Node: Paired-Single Arithmetic, Next: Paired-Single Built-in Functions, Up: MIPS…
45331 6.60.16.1 Paired-Single Arithmetic
45332 ..................................
45335 exists. 'a', 'b' and 'c' are 'v2sf' values and 'x' is an integral
45336 value.
45339 'a + b' 'add.ps'
45340 'a - b' 'sub.ps'
45341 '-a' 'neg.ps'
45342 'a * b' 'mul.ps'
45343 'a * b + c' 'madd.ps'
45344 'a * b - c' 'msub.ps'
45345 '-(a * b + c)' 'nmadd.ps'
45346 '-(a * b - c)' 'nmsub.ps'
45347 'x ? a : b' 'movn.ps'/'movz.ps'
45350 the command-line option '-mno-fused-madd'.
45353 File: gcc.info, Node: Paired-Single Built-in Functions, Next: MIPS-3D Built-in Functions, Prev: …
45355 6.60.16.2 Paired-Single Built-in Functions
45356 ..........................................
45359 instruction. Please refer to the architecture specification for details
45360 on what each instruction does.
45363 Pair lower lower ('pll.ps').
45366 Pair upper lower ('pul.ps').
45369 Pair lower upper ('plu.ps').
45372 Pair upper upper ('puu.ps').
45375 Convert pair to paired single ('cvt.ps.s').
45378 Convert pair lower to single ('cvt.s.pl').
45381 Convert pair upper to single ('cvt.s.pu').
45384 Absolute value ('abs.ps').
45387 Align variable ('alnv.ps').
45390 otherwise the result is unpredictable. Please read the instruction
45391 description for details.
45393 The following multi-instruction functions are also available. In each
45396 'lt', 'nge', 'le' or 'ngt'.
45400 Conditional move based on floating-point comparison ('c.COND.ps',
45401 'movt.ps'/'movf.ps').
45405 c.COND.ps CC,A,B
45406 mov.ps X,C
45407 movt.ps X,D,CC
45409 The 'movf' functions are similar but use 'movf.ps' instead of
45410 'movt.ps'.
45414 Comparison of two paired-single values ('c.COND.ps',
45415 'bc1t'/'bc1f').
45417 These functions compare A and B using 'c.COND.ps' and return either
45418 the upper or lower half of the result. For example:
45432 File: gcc.info, Node: MIPS-3D Built-in Functions, Prev: Paired-Single Built-in Functions, Up: MI…
45434 6.60.16.3 MIPS-3D Built-in Functions
45435 ....................................
45439 of 3D graphics operations. Support for these instructions is controlled
45440 by the '-mips3d' command-line option.
45443 instruction. Please refer to the architecture specification for more
45444 details on what each instruction does.
45447 Reduction add ('addr.ps').
45450 Reduction multiply ('mulr.ps').
45453 Convert paired single to paired word ('cvt.pw.ps').
45456 Convert paired word to paired single ('cvt.ps.pw').
45461 Reduced-precision reciprocal (sequence step 1) ('recip1.FMT').
45466 Reduced-precision reciprocal (sequence step 2) ('recip2.FMT').
45472 ('rsqrt1.FMT').
45478 ('rsqrt2.FMT').
45480 The following multi-instruction functions are also available. In each
45483 'lt', 'nge', 'le' or 'ngt'.
45487 Absolute comparison of two scalar values ('cabs.COND.FMT',
45488 'bc1t'/'bc1f').
45490 These functions compare A and B using 'cabs.COND.s' or
45491 'cabs.COND.d' and return the result as a boolean value. For
45502 Absolute comparison of two paired-single values ('cabs.COND.ps',
45503 'bc1t'/'bc1f').
45505 These functions compare A and B using 'cabs.COND.ps' and return
45506 either the upper or lower half of the result. For example:
45521 Conditional move based on absolute comparison ('cabs.COND.ps',
45522 'movt.ps'/'movf.ps').
45526 cabs.COND.ps CC,A,B
45527 mov.ps X,C
45528 movt.ps X,D,CC
45530 The 'movf' functions are similar but use 'movf.ps' instead of
45531 'movt.ps'.
45537 Comparison of two paired-single values ('c.COND.ps'/'cabs.COND.ps',
45538 'bc1any2t'/'bc1any2f').
45540 These functions compare A and B using 'c.COND.ps' or
45541 'cabs.COND.ps'. The 'any' forms return 'true' if either result is
45543 'true'. For example:
45561 ('c.COND.ps'/'cabs.COND.ps', 'bc1any4t'/'bc1any4f').
45563 These functions use 'c.COND.ps' or 'cabs.COND.ps' to compare A with
45564 B and to compare C with D. The 'any' forms return 'true' if any of
45566 all four results are 'true'. For example:
45580 File: gcc.info, Node: MIPS SIMD Architecture (MSA) Support, Next: Other MIPS Built-in Functions, …
45582 6.60.17 MIPS SIMD Architecture (MSA) Support
45590 MSA MIPS SIMD Architecture. The interface is made available by
45591 including '<msa.h>' and using '-mmsa -mhard-float -mfp64 -mnan=2008'.
45593 '__msa_*'.
45597 floating point data elements. The following vectors typedefs are
45598 included in 'msa.h':
45608 * 'v2f64', a vector of two 64-bit doubles.
45622 shifted by 1 bit, i.e., -1024, -1022, ..., 1020, 1022;
45624 shifted by 2 bits, i.e., -2048, -2044, ..., 2040, 2044;
45626 shifted by 3 bits, i.e., -4096, -4088, ..., 4080, 4088;
45650 File: gcc.info, Node: MIPS SIMD Architecture Built-in Functions, Up: MIPS SIMD Architecture (MSA)…
45652 6.60.17.1 MIPS SIMD Architecture Built-in Functions
45653 ...................................................
45656 machine instruction.
46367 File: gcc.info, Node: Other MIPS Built-in Functions, Next: MSP430 Built-in Functions, Prev: MIPS…
46369 6.60.18 Other MIPS Built-in Functions
46375 Insert a 'cache' instruction with operands OP and ADDR. GCC
46377 when this function is available.
46382 register (FPU control register 31). These functions are only
46384 non-MIPS16 contexts.
46388 preserved.
46391 File: gcc.info, Node: MSP430 Built-in Functions, Next: NDS32 Built-in Functions, Prev: Other MIP…
46393 6.60.19 MSP430 Built-in Functions
46397 of interrupt handlers in C.
46401 register currently residing on the stack. This only works inside
46403 take affect once the handler returns.
46407 register currently residing on the stack. This only works inside
46409 take affect once the handler returns.
46413 cycles (between 0 and about 17E9) to complete. The inserted
46415 with any other instructions. Note that CYCLES must be a
46417 not a variable that may be optimized to a constant later. The
46418 number of cycles delayed by this builtin is exact.
46421 File: gcc.info, Node: NDS32 Built-in Functions, Next: picoChip Built-in Functions, Prev: MSP430 …
46423 6.60.20 NDS32 Built-in Functions
46430 is an instruction address for serialization.
46433 Insert an ISB instruction into the instruction stream.
46436 Return the content of a system register which is mapped by SR.
46439 Return the content of a user space register which is mapped by USR.
46442 Move the VALUE to a system register which is mapped by SR.
46445 Move the VALUE to a user space register which is mapped by USR.
46448 Enable global interrupt.
46451 Disable global interrupt.
46454 File: gcc.info, Node: picoChip Built-in Functions, Next: Basic PowerPC Built-in Functions, Prev:…
46456 6.60.21 picoChip Built-in Functions
46460 picoChip instruction set.
46463 Sign bit count. Return the number of consecutive bits in VALUE
46464 that have the same value as the sign bit. The result is the number
46466 bits in VALUE.
46469 Byte swap. Return the result of swapping the upper and lower bytes
46470 of VALUE.
46473 Bit reversal. Return the result of reversing the bits in VALUE.
46475 on.
46478 Saturating addition. Return the result of adding X and Y, storing
46479 the value 32767 if the result overflows.
46482 Saturating subtraction. Return the result of subtracting Y from X,
46483 storing the value -32768 if the result overflows.
46486 Halt. The processor stops execution. This built-in is useful for
46487 implementing assertions.
46490 File: gcc.info, Node: Basic PowerPC Built-in Functions, Next: PowerPC AltiVec/VSX Built-in Functi…
46492 6.60.22 Basic PowerPC Built-in Functions
46505 provide macro definitions. The sections that follow describe additional
46506 PowerPC built-in functions.
46509 File: gcc.info, Node: Basic PowerPC Built-in Functions Available on all Configurations, Next: Bas…
46511 6.60.22.1 Basic PowerPC Built-in Functions Available on all Configurations
46512 ..........................................................................
46516 solely to maintain API compatibility with the x86 builtins.
46523 exports the hardware capability bits. GCC defines the macro
46525 function is fully supported.
46529 issues a warning.
46534 IBM POWER10 Server CPU.
46536 IBM POWER9 Server CPU.
46538 IBM POWER8 Server CPU.
46540 IBM POWER7 Server CPU.
46542 IBM POWER6 Server CPU (RAW mode).
46544 IBM POWER6 Server CPU (Architected mode).
46546 IBM POWER5+ Server CPU.
46548 IBM POWER5 Server CPU.
46550 IBM 970 Server CPU (ie, Apple G5).
46552 IBM POWER4 Server CPU.
46556 IBM PowerPC 476FP 32-bit Embedded CPU.
46558 IBM PowerPC 464 32-bit Embedded CPU.
46560 PowerPC 440 32-bit Embedded CPU.
46562 PowerPC 405 32-bit Embedded CPU.
46564 IBM PowerPC Cell Broadband Engine Architecture CPU.
46570 do_power8 (); // POWER8 specific implementation.
46575 do_generic (); // Generic implementation.
46580 the HWCAP feature FEATURE and returns '0' otherwise.
46583 which exports the hardware capability bits. GCC defines the macro
46585 function is fully supported.
46589 compiler issues a warning.
46594 4xx CPU has a Multiply Accumulator.
46596 CPU has a SIMD/Vector Unit.
46609 events.
46611 CPU supports the Embedded ISA category.
46613 CPU has a CELL broadband engine.
46615 CPU supports the 'darn' (deliver a random number) instruction.
46617 CPU has a decimal floating point unit.
46619 CPU supports the data stream control register.
46621 CPU supports event base branching.
46623 CPU has a SPE double precision floating point unit.
46625 CPU has a SPE single precision floating point unit.
46627 CPU has a floating point unit.
46629 CPU has hardware transaction memory instructions.
46631 Kernel aborts hardware transactions when a syscall is made.
46634 the 'tsuspend.' instruction.
46636 CPU supports icache snooping capabilities.
46638 CPU supports 128-bit IEEE binary floating point instructions.
46640 CPU supports the integer select instruction.
46642 CPU supports the matrix-multiply assist instructions.
46644 CPU has a memory management unit.
46646 CPU does not have a timebase (eg, 601 and 403gx).
46648 CPU supports the PA Semi 6T CORE ISA.
46657 mftgpr.
46659 CPU supports 32-bit mode execution.
46663 CPU supports 64-bit mode execution.
46665 CPU supports a little-endian mode that uses address swizzling.
46667 Kernel supports system call vectored.
46669 CPU support simultaneous multi-threading.
46671 CPU has a signal processing extension unit.
46673 CPU supports the target address register.
46675 CPU supports true little-endian mode.
46677 CPU has unified I/D cache.
46679 CPU supports the vector cryptography instructions.
46681 CPU supports the vector-scalar extension.
46692 dst = __fadd (src1, src2); // Software FP addition function.
46708 generate instructions to read the Time Base Register. The
46710 and always returns the 64 bits of the Time Base Register. The
46713 the most significant word on 32-bit environments. The '__builtin_mffs'
46714 return the value of the FPSCR register. Note, ISA 3.0 supports the
46717 associated with accessing the sticky status bits. The '__builtin_mtfsf'
46720 instruction to write new values to selected fields of the FPSCR. The
46722 argument. The valid bit range is between 0 and 31. The builtins map to
46724 32. Hence these instructions only modify the FPSCR[32:63] bits by
46725 changing the specified bit to a zero or one respectively. The
46727 point rounding mode bits. The argument is a 2-bit value. The argument
46728 can either be a 'const int' or stored in a variable. The builtin uses
46731 value.
46734 File: gcc.info, Node: Basic PowerPC Built-in Functions Available on ISA 2.05, Next: Basic PowerPC…
46736 6.60.22.2 Basic PowerPC Built-in Functions Available on ISA 2.05
46737 ................................................................
46740 the PowerPC family of processors starting with ISA 2.05 or later.
46745 options. Specify the '-maltivec' option explicitly in combination with
46746 the above options if desired.
46748 The following functions require option '-mcmpb'.
46754 comparison as the returned value. For each byte comparison, the
46756 equal and 0 if the input bytes are not equal. If either of the
46759 arguments which is only available on 64-bit targets.
46780 floating point rounding mode bits. The argument is a 3-bit value. The
46782 a variable.
46783 The builtin uses the ISA 3.0 instruction mffscdrn if available.
46785 mode bits out and OR's in the new value.
46789 '-mpopcntb' options.
46798 functionality using reciprocal sqrt estimate instructions.
46802 estimate instructions.
46805 options.
46808 argument and a compile time constant of 0 or 1. If the constant is 0,
46810 second 'double' is returned. The '__builtin_unpack_longdouble' function
46812 representation.
46815 and returns a 'long double' value that combines the two arguments. The
46817 uses the IBM extended double representation.
46820 a compile time constant of 0 or 1. If the constant is 0, the first
46822 'double' is returned.
46825 returns a '__ibm128' value that combines the two arguments.
46829 ('__float128') values.
46832 File: gcc.info, Node: Basic PowerPC Built-in Functions Available on ISA 2.06, Next: Basic PowerPC…
46834 6.60.22.3 Basic PowerPC Built-in Functions Available on ISA 2.06
46835 ................................................................
46838 the PowerPC family of processors starting with ISA 2.05 or later.
46842 '-mpopcntd', and '-mvsx' options.
46858 require a 64-bit environment.
46861 targets, require '-mfloat128'.
46873 File: gcc.info, Node: Basic PowerPC Built-in Functions Available on ISA 2.07, Next: Basic PowerPC…
46875 6.60.22.4 Basic PowerPC Built-in Functions Available on ISA 2.07
46876 ................................................................
46879 the PowerPC family of processors starting with ISA 2.07 or later.
46884 '-mquad-memory-atomic' options.
46886 This section intentionally empty.
46889 File: gcc.info, Node: Basic PowerPC Built-in Functions Available on ISA 3.0, Prev: Basic PowerPC …
46891 6.60.22.5 Basic PowerPC Built-in Functions Available on ISA 3.0
46892 ...............................................................
46895 the PowerPC family of processors starting with ISA 3.0 or later. Unless
46898 for '-mcpu=power8' in addition to the '-misel' option.
46905 rounding mode.
46909 as the rounding mode.
46913 as the rounding mode.
46917 the rounding mode.
46921 odd as the rounding mode.
46925 operation using round to odd as the rounding mode.
46929 to odd as the rounding mode.
46938 64-bit environment supporting ISA 3.0 or later. The '__builtin_darn'
46939 function provides a 64-bit conditioned random number. The
46940 '__builtin_darn_raw' function provides a 64-bit raw random number. The
46942 number.
46974 supporting ISA 3.0 or later. This function returns a non-zero value if
46976 contained within its 64-bit 'set' argument.
46979 require an environment supporting ISA 3.0 or later. For these two
46981 'hi_1:lo_1:hi_2:lo_2'. The '__builtin_byte_in_range' function returns a
46983 bounded between 'lo_2' and 'hi_2' inclusive. The
46987 inclusive.
46991 than its 'comparison' argument. The '__builtin_dfp_dtstsfi_lt_dd' and
46994 '__Decimal128' respectively.
46998 greater than its 'comparison' argument. The
47001 argument be '__Decimal64' and '__Decimal128' respectively.
47005 its 'comparison' argument. The '__builtin_dfp_dtstsfi_eq_dd' and
47008 '__Decimal128' respectively.
47012 digits, such as when 'value' is an encoding of 'NaN'. The
47015 argument be '__Decimal64' and '__Decimal128' respectively.
47018 FPSCR. The instruction is a lower latency version of the 'mffs'
47019 instruction. If the 'mffsl' instruction is not available, then the
47020 builtin uses the older 'mffs' instruction to read the FPSCR.
47023 File: gcc.info, Node: PowerPC AltiVec/VSX Built-in Functions, Next: PowerPC Hardware Transactiona…
47025 6.60.23 PowerPC AltiVec/VSX Built-in Functions
47030 Interface Manual. The interface is made available by including
47031 '<altivec.h>' and using '-maltivec' and '-mabi=altivec'. The interface
47032 supports the following vector types.
47050 ways.
47053 braces.
47056 the same type as the variable it is initializing.
47059 type is the default signedness of the base type. The default
47061 should always specify the signedness.
47064 '__pixel', 'pixel', '__bool' and 'bool'. When compiling ISO C, the
47066 and 'bool' is disabled. To use them, you must include
47067 '<altivec.h>' instead.
47084 GNU extensions (e.g., by using '-std=c11') and including
47085 '<altivec.h>'.
47093 treated as four separate arguments. Wrap the entire argument in
47094 parentheses for this to work.
47096 _Note:_ Only the '<altivec.h>' interface is supported. Internally, GCC
47099 to change without notice.
47103 <https://openpowerfoundation.org/?resource_lib=64-bit-elf-v2-abi-specification-power-architecture>.
47105 provided by compliant compilers. Programmers should preferentially use
47106 the interfaces described therein. However, historically GCC has
47107 provided additional interfaces for access to vector instructions. These
47108 are briefly described below.
47118 File: gcc.info, Node: PowerPC AltiVec Built-in Functions on ISA 2.05, Next: PowerPC AltiVec Built…
47120 6.60.23.1 PowerPC AltiVec Built-in Functions on ISA 2.05
47121 ........................................................
47124 AltiVec operations and the AltiVec predicates. In cases where there is
47127 be used.
47130 values within the range required for that operation.
48664 File: gcc.info, Node: PowerPC AltiVec Built-in Functions Available on ISA 2.06, Next: PowerPC Alt…
48666 6.60.23.2 PowerPC AltiVec Built-in Functions Available on ISA 2.06
48667 ..................................................................
48670 on the PowerPC family of processors starting with ISA 2.06 or later.
48671 These are normally enabled by adding '-mvsx' to the command line.
48674 implemented.
48682 The long long types are only implemented for 64-bit code generation.
49094 set is available. The 'vec_vsx_ld' and 'vec_vsx_st' built-in functions
49096 instructions.
49099 File: gcc.info, Node: PowerPC AltiVec Built-in Functions Available on ISA 2.07, Next: PowerPC Alt…
49101 6.60.23.3 PowerPC AltiVec Built-in Functions Available on ISA 2.07
49102 ..................................................................
49106 available for both 32-bit and 64-bit targets. For 64-bit targets, you
49109 VECTOR UNSIGNED LONG LONG.
49426 available for 64-bit targets. New vector types (VECTOR __INT128 and
49428 to use these builtins.
49431 and VECTOR __UINT128 types, but the index value must be 0.
49477 File: gcc.info, Node: PowerPC AltiVec Built-in Functions Available on ISA 3.0, Prev: PowerPC Alti…
49479 6.60.23.4 PowerPC AltiVec Built-in Functions Available on ISA 3.0
49480 .................................................................
49520 64-bit environment supporting ISA 3.0 or later. The
49523 'source' arguments. When supplied with a 64-bit 'source' argument, the
49525 set if the function's 'source' argument is in normalized form.
49526 Otherwise, this bit is set to 0. When supplied with a 128-bit 'source'
49528 treated similarly. Note that the sign of the significand is not
49530 function. Use the 'scalar_test_neg' function to test the sign of its
49531 'double' argument. The 'vec_msum' functions perform a vector
49532 multiply-sum, returning the result of arg1*arg2+arg3. ISA 3.0 adds
49533 support for vec_msum returning a vector int128 result.
49536 supporting ISA 3.0 or later. When supplied with a 64-bit first
49539 the values of its 'significand' and 'exponent' arguments. The sign of
49541 argument. The significand and exponent components of the result are
49544 respectively.
49547 built-in function returns a quad-precision ieee floating point value.
49549 the 'significand' argument. The significand and exponent components of
49552 'significand' argument respectively.
49557 respectively. The arguments are not comparable if one or the other
49558 equals NaN (not a number).
49562 true, and 0 otherwise. The 'condition' argument must be a compile-time
49563 constant integer with value not exceeding 127. The 'condition' argument
49575 argument holds a negative value, 0 otherwise.
49578 family of processors, starting with ISA 3.0 or later ('-mcpu=power9').
49708 vector arguments. The 'vec_all_nez' function returns a non-zero value
49710 either vector argument contains a zero. The 'vec_any_eqz' function
49713 zero. The 'vec_cmpnez' function returns a vector of the same type as
49717 contains zero. Otherwise, the element of the returned vector contains
49718 all zeros.
49723 zero. The 'vec_cnttz_lsbb' function returns the count of the number of
49726 least-significant bit equals zero.
49729 environment supporting ISA 3.0 or later. The 'vec_xl_len' function
49730 loads a variable length vector from memory. The 'vec_xst_len' function
49731 stores a variable length vector to memory. With both the 'vec_xl_len'
49735 by the C expression 'min((len & 0xff), 16)'. If this expression's value
49737 function is undefined. In the case that the underlying computer is
49739 '(len - 1)' of the corresponding vector. In little-endian mode, the
49741 vector. For the load function, any bytes of the result vector that are
49742 not loaded from memory are set to zero. The value of the 'addr'
49743 argument need not be aligned on a multiple of the vector's element size.
49747 'data' argument. The 'index' argument always specifies a byte offset,
49748 regardless of the size of the vector element. With 'vec_xlx', 'index'
49749 is the offset of the first byte of the element to be extracted. With
49751 extracted, measured from the right end of the vector. In other words,
49753 index)'. There is no requirement that 'index' be a multiple of the
49754 vector element size. However, if the size of the vector element added
49756 undefined.
49849 their 'src' and 'shift_distance' arguments in parallel. The behavior of
49852 as the entries in the 'src' array and element 16 equals 0. The result
49857 char' type. The behavior of the 'vec_srv' is as if there existed a
49860 through 15 of the 'src' array. The result returned from the 'vec_srv'
49864 value coerced to the 'unsigned char' type.
49885 differences into the corresponding elements of the vector result.
49910 their 'source' arguments respectively. Within the result vector
49913 to 1 if the corresponding floating point value is in normalized form.
49914 Otherwise, this bit is set to 0. When the 'source' argument is of type
49916 elements is set according to the same rules. Note that the sign of the
49918 'vec_extract_sig' function. To extract the sign bits, use the
49923 unchanged into the result vector.
49928 corresponding elements of the returned vector. The sign of each element
49930 corresponding entry within the 'significands' argument. Note that the
49932 integer and floating point types. The significand and exponent
49935 least significant bits of the corresponding 'exponents' element.
49939 condition selected by the 'condition' argument. The 'condition'
49941 exceeding 127. The 'condition' argument is encoded as a bitmask with
49953 in the result vector is -1. Otherwise (all of the enabled test
49955 0.
49975 argument vector. The third argument vector contains the mask beginning
49977 27:31, of each element.
49981 second and third argument vectors. The second argument vector contains
49982 the shift count for each element in the low-order byte. The third
49984 byte, with the mask begin in the next higher byte.
49987 first argument vector left and ANDing it with a mask. The second
49989 in bits 19:23, and the shift count in bits 27:31, of each element.
50016 element basis. A vector of 'vector unsigned char' or 'vector signed
50017 char' reverses the bytes in the whole word.
50020 '-mcpu=power8'), the following builtins are enabled.
50084 __BUILTIN_CRYPTO_VSHASIGMAW must be a constant integer that is 0 or 1.
50086 integer in the range of 0 to 15.
50090 64-bit targets.
50110 File: gcc.info, Node: PowerPC Hardware Transactional Memory Built-in Functions, Next: PowerPC Ato…
50112 6.60.24 PowerPC Hardware Transactional Memory Built-in Functions
50117 processors (eg, POWER8). The two interfaces come in a low level
50120 between PowerPC and S/390.
50122 6.60.24.1 PowerPC HTM Low Level Built-in Functions
50123 ..................................................
50126 '-mcpu=CPU' where CPU is 'power8' or later. They all generate the
50127 machine instruction that is part of the name.
50131 instruction. The header file 'htmintrin.h' defines some macros that can
50132 be used to decipher the return value. The '__builtin_tbegin' builtin
50134 transaction was successfully started or not. The arguments of the
50137 does not take any input arguments. Refer to the ISA manual for a
50138 description of each instruction's operands.
50162 the locking semantics used for critical sections. Builtins that are
50165 suspend a transaction must have lock release like semantics.
50171 implicit implementation-defined lock used for all transactions. The HTM
50173 correct acquisition and release hardware barriers required. However,
50175 the builtins in a way that would violate their semantics. This has been
50178 release semantics). Earlier versions of the compiler did not treat the
50179 HTM instructions as memory barriers. A '__TM_FENCE__' macro has been
50181 treats HTM instructions as memory barriers or not. This allows the user
50183 version of the compiler.
50186 the HTM specific special purpose registers.
50200 #include <htmintrin.h>
50208 /* Transaction State Initiated. */
50211 ... transaction code...
50217 /* Transaction State Failed. Use locks if the transaction
50218 failure is "persistent" or we've tried too many times. */
50223 ... non transactional fallback path...
50232 as stored in 'CR0'.
50239 #include <htmintrin.h>
50245 /* Code to use in transactional state. */
50249 /* Code to use in non-transactional state. */
50253 /* Code to use in transaction suspended state. */
50256 6.60.24.2 PowerPC HTM High Level Inline Functions
50257 .................................................
50260 '<htmxlintrin.h>' and using '-mhtm' or '-mcpu=CPU' where CPU is 'power8'
50261 or later. This interface is common between PowerPC and S/390, allowing
50263 executed on either system.
50288 #include <htmxlintrin.h>
50297 /* Transaction State Initiated. */
50300 ... transaction code...
50306 /* Transaction State Failed. Use locks if the transaction
50307 failure is "persistent" or we've tried too many times. */
50312 ... non transactional fallback path...
50320 File: gcc.info, Node: PowerPC Atomic Memory Operation Functions, Next: PowerPC Matrix-Multiply As…
50322 6.60.25 PowerPC Atomic Memory Operation Functions
50326 instructions. GCC provides support for these instructions in 64-bit
50327 environments. All of the functions are declared in the include file
50328 'amo.h'.
50332 #include <amo.h>
50383 File: gcc.info, Node: PowerPC Matrix-Multiply Assist Built-in Functions, Next: RISC-V Built-in Fu…
50385 6.60.26 PowerPC Matrix-Multiply Assist Built-in Functions
50389 instructions. GCC provides support for these instructions through the
50390 following built-in functions which are enabled with the '-mmma' option.
50392 type.  The uint2, uint4 and uint8 parameters are 2-bit, 4-bit and 8-bit
50393 unsigned integer constants respectively.  The compiler will verify that
50394 they are constants and that their values are within range. 
50482 File: gcc.info, Node: RISC-V Built-in Functions, Next: RX Built-in Functions, Prev: PowerPC Matr…
50484 6.60.27 RISC-V Built-in Functions
50488 processors.
50491 Returns the value that is currently set in the 'tp' register.
50494 File: gcc.info, Node: RX Built-in Functions, Next: S/390 System z Built-in Functions, Prev: RISC…
50496 6.60.28 RX Built-in Functions
50500 the C programming language via the use of built-in functions. The
50504 Generates the 'brk' machine instruction.
50508 bit in the processor status word.
50512 with the specified value.
50517 accumulator.
50522 accumulator.
50527 accumulator.
50532 accumulator.
50536 of the accumulator.
50540 bits of the accumulator.
50544 register specified in its argument and returns its value.
50548 of the accumulator.
50552 bits of the accumulator.
50556 register number 'reg' to 'val'.
50560 priority level.
50564 according to the specified mode.
50569 and also bits 16-23 occupy bits 24-31 and vice versa.
50573 multiply and accumulate sequence.
50578 mode set in the floating-point status word register.
50582 value of the argument.
50586 in the processor status word.
50589 Generates the 'wait' machine instruction.
50592 File: gcc.info, Node: S/390 System z Built-in Functions, Next: SH Built-in Functions, Prev: RX B…
50594 6.60.29 S/390 System z Built-in Functions
50599 non-constrained hardware transaction. If the parameter is non-NULL
50601 and will be passed as first operand to 'tbegin'. This buffer can
50603 'htmintrin.h' and must reside on a double-word boundary. The
50604 second tbegin operand is set to '0xff0c'. This enables
50606 manipulations inside the transaction body. The condition code set
50607 by the tbegin instruction is returned as integer value. The tbegin
50608 instruction by definition overwrites the content of all FPRs. The
50609 compiler will generate code which saves and restores the FPRs. For
50610 soft-float code it is recommended to used the '*_nofloat' variant.
50612 a constant zero value as parameter. Passing a zero value through a
50613 variable is not sufficient. Although modifications of access
50615 abort it is not supported to actually modify them. Access
50616 registers do not get saved when entering a transaction. They will
50617 have undefined state when reaching the abort code.
50620 'htmintrin.h' header file:
50623 'tbegin' has been executed as part of normal processing. The
50624 transaction body is supposed to be executed.
50627 might be persistent.
50629 The transaction aborted due to a transient failure. The
50630 transaction should be re-executed in that case.
50632 The transaction aborted due to a persistent failure. Re-execution
50633 under same circumstances will not be productive.
50636 The '_HTM_FIRST_USER_ABORT_CODE' defined in 'htmintrin.h' specifies
50637 the first abort code which can be used for '__builtin_tabort'.
50638 Values below this threshold are reserved for machine use.
50641 The 'struct __htm_tdb' defined in 'htmintrin.h' describes the
50643 Principles of Operation manual chapter 5-91.
50646 Same as '__builtin_tbegin' but without FPR saves and restores.
50649 code.
50653 generated. If tbegin returns a condition code of 2 the transaction
50654 will be retried as often as specified in the second argument. The
50656 the number of fails so far.
50660 restores. Using this variant in code making use of FPRs will leave
50662 handler code.
50666 hardware transaction. The second operand is set to '0xff08'.
50670 and making the changes visible to other threads. The condition
50671 code generated by tend is returned as integer value.
50675 code. Abort codes from 0 through 255 are reserved and will result
50676 in an error message.
50679 Generates the 'ppa rX,rY,1' machine instruction. Where the integer
50680 parameter is loaded into rX and a value of zero is loaded into rY.
50682 repeatedly aborted.
50685 Generates the 'etnd' machine instruction. The current nesting
50686 depth is returned as integer value. For a nesting depth of 0 the
50687 code is not executed as part of an transaction.
50692 Generates the 'ntstg' machine instruction. The second argument is
50693 written to the first arguments location. The store operation will
50694 not be rolled-back in case of an transaction abort.
50697 File: gcc.info, Node: SH Built-in Functions, Next: SPARC VIS Built-in Functions, Prev: S/390 Sys…
50699 6.60.30 SH Built-in Functions
50706 Sets the 'GBR' register to the specified value PTR. This is
50708 contexts. The compiler normally does not generate code that
50710 across function calls. Changing the 'GBR' value in user code must
50712 to access thread local variables.
50715 Returns the value that is currently set in the 'GBR' register.
50718 if possible. For example:
50726 // Generate 'mov.l @(8,gbr),r0' instruction
50732 Returns the value that is currently set in the 'FPSCR' register.
50736 preserving the current values of the FR, SZ and PR bits.
50739 File: gcc.info, Node: SPARC VIS Built-in Functions, Next: TI C6X Built-in Functions, Prev: SH Bu…
50741 6.60.31 SPARC VIS Built-in Functions
50746 the SPARC Visual Instruction Set (VIS). When you use the '-mvis' switch,
50953 File: gcc.info, Node: TI C6X Built-in Functions, Next: TILE-Gx Built-in Functions, Prev: SPARC V…
50955 6.60.32 TI C6X Built-in Functions
50959 processors. These intrinsics, listed below, are available after
50960 inclusion of the 'c6x_intrinsics.h' header file. They map directly to
50961 C6X instructions.
50993 File: gcc.info, Node: TILE-Gx Built-in Functions, Next: TILEPro Built-in Functions, Prev: TI C6X…
50995 6.60.33 TILE-Gx Built-in Functions
50999 processor. The intrinsics are of the form:
51002 unsigned long long __insn_OP (...)
51005 Where OP is the name of the instruction. Refer to the ISA manual for
51006 the complete list of instructions.
51008 GCC also provides intrinsics to directly access the network registers.
51023 that no network operations before it are reordered with those after it.
51026 File: gcc.info, Node: TILEPro Built-in Functions, Next: x86 Built-in Functions, Prev: TILE-Gx Bu…
51028 6.60.34 TILEPro Built-in Functions
51032 processor. The intrinsics are of the form:
51035 unsigned __insn_OP (...)
51038 where OP is the name of the instruction. Refer to the ISA manual for
51039 the complete list of instructions.
51041 GCC also provides intrinsics to directly access the network registers.
51058 that no network operations before it are reordered with those after it.
51061 File: gcc.info, Node: x86 Built-in Functions, Next: x86 transactional memory intrinsics, Prev: T…
51063 6.60.35 x86 Built-in Functions
51067 of computers, depending on the command-line switches used.
51071 used explicitly in the program. For this reason, applications that
51073 supported architecture, using the appropriate flags. In particular, the
51075 options.
51080 vector of eight 8-bit integers. Some of the built-in functions operate
51082 mode.
51085 of two 32-bit floating-point values.
51088 32-bit floating-point values. Some instructions use a vector of four
51089 32-bit integers, these use 'V4SI'. Finally, some instructions operate
51091 these use mode 'TI'.
51095 point and 'TC' 128-bit complex floating-point values.
51097 The following floating-point built-in functions are always available.
51098 All of them implement the function that is part of the name.
51103 The following built-in functions are always available.
51106 Similar to '__builtin_inf', except the return type is '__float128'.
51110 '__float128'.
51113 Similar to '__builtin_nan', except the return type is '__float128'.
51117 '__float128'.
51119 The following built-in function is always available.
51123 barrier.
51126 to check the target platform type.
51130 and the features supported. This built-in function needs to be
51134 are called. The CPU detection code is automatically executed in a
51135 very high priority constructor.
51140 don't support constructor priority.
51145 // function.
51148 return ssse3_memcpy; // super fast memcpy with ssse3 instructions.
51158 type CPUNAME and returns '0' otherwise. The following CPU names
51162 AMD CPU.
51165 Intel CPU.
51168 Intel Atom CPU.
51171 Intel Silvermont CPU.
51174 Intel Core 2 CPU.
51177 Intel Core i7 CPU.
51180 Intel Core i7 Nehalem CPU.
51183 Intel Core i7 Westmere CPU.
51186 Intel Core i7 Sandy Bridge CPU.
51189 Intel Core i7 Ivy Bridge CPU.
51192 Intel Core i7 Haswell CPU.
51195 Intel Core i7 Broadwell CPU.
51198 Intel Core i7 Skylake CPU.
51201 Intel Core i7 Skylake AVX512 CPU.
51204 Intel Core i7 Cannon Lake CPU.
51207 Intel Core i7 Ice Lake Client CPU.
51210 Intel Core i7 Ice Lake Server CPU.
51213 Intel Core i7 Cascadelake CPU.
51216 Intel Core i7 Tigerlake CPU.
51219 Intel Core i7 Cooperlake CPU.
51222 Intel Atom Bonnell CPU.
51225 Intel Atom Silvermont CPU.
51228 Intel Atom Goldmont CPU.
51231 Intel Atom Goldmont Plus CPU.
51234 Intel Atom Tremont CPU.
51237 Intel Knights Landing CPU.
51240 Intel Knights Mill CPU.
51243 AMD Family 10h CPU.
51246 AMD Family 10h Barcelona CPU.
51249 AMD Family 10h Shanghai CPU.
51252 AMD Family 10h Istanbul CPU.
51255 AMD Family 14h CPU.
51258 AMD Family 15h CPU.
51261 AMD Family 15h Bulldozer version 1.
51264 AMD Family 15h Bulldozer version 2.
51267 AMD Family 15h Bulldozer version 3.
51270 AMD Family 15h Bulldozer version 4.
51273 AMD Family 16h CPU.
51276 AMD Family 17h CPU.
51279 AMD Family 17h Zen version 1.
51282 AMD Family 17h Zen version 2.
51285 AMD Family 19h CPU.
51288 AMD Family 19h Zen version 3.
51293 do_corei7 (); // Core i7 specific implementation.
51297 do_generic (); // Generic implementation.
51302 supports FEATURE and returns '0' otherwise. The following features
51306 CMOV instruction.
51308 MMX instructions.
51310 POPCNT instruction.
51312 SSE instructions.
51314 SSE2 instructions.
51316 SSE3 instructions.
51318 SSSE3 instructions.
51319 'sse4.1'
51320 SSE4.1 instructions.
51321 'sse4.2'
51322 SSE4.2 instructions.
51324 AVX instructions.
51326 AVX2 instructions.
51328 SSE4A instructions.
51330 FMA4 instructions.
51332 XOP instructions.
51334 FMA instructions.
51336 AVX512F instructions.
51338 BMI instructions.
51340 BMI2 instructions.
51342 AES instructions.
51344 PCLMUL instructions.
51346 AVX512VL instructions.
51348 AVX512BW instructions.
51350 AVX512DQ instructions.
51352 AVX512CD instructions.
51354 AVX512ER instructions.
51356 AVX512PF instructions.
51358 AVX512VBMI instructions.
51360 AVX512IFMA instructions.
51362 AVX5124VNNIW instructions.
51364 AVX5124FMAPS instructions.
51366 AVX512VPOPCNTDQ instructions.
51368 AVX512VBMI2 instructions.
51370 GFNI instructions.
51372 VPCLMULQDQ instructions.
51374 AVX512VNNI instructions.
51376 AVX512BITALG instructions.
51385 count = generic_countbits (n); //generic implementation.
51388 The following built-in functions are made available by '-mmmx'. All of
51389 them generate the machine instruction that is part of the name.
51446 '-msse', or with '-m3dnowa'. All of them generate the machine
51447 instruction that is part of the name.
51462 The following built-in functions are available when '-msse' is used.
51463 All of them generate the machine instruction that is part of the name.
51534 The following built-in functions are available when '-msse' is used.
51537 Generates the 'movups' machine instruction as a load from memory.
51539 Generates the 'movups' machine instruction as a store to memory.
51541 Generates the 'movss' machine instruction as a load from memory.
51543 Generates the 'movhps' machine instruction as a load from memory.
51547 Generates the 'movhps' machine instruction as a store to memory.
51549 Generates the 'movlps' machine instruction as a store to memory.
51551 The following built-in functions are available when '-msse2' is used.
51552 All of them generate the machine instruction that is part of the name.
51710 The following built-in functions are available when '-msse3' is used.
51711 All of them generate the machine instruction that is part of the name.
51725 The following built-in functions are available when '-mssse3' is used.
51726 All of them generate the machine instruction that is part of the name.
51745 The following built-in functions are available when '-mssse3' is used.
51746 All of them generate the machine instruction that is part of the name.
51765 The following built-in functions are available when '-msse4.1' is used.
51766 All of them generate the machine instruction that is part of the name.
51812 The following built-in functions are available when '-msse4.1' is used.
51815 Generates the 'insertps' machine instruction.
51817 Generates the 'pextrb' machine instruction.
51819 Generates the 'pinsrb' machine instruction.
51821 Generates the 'pinsrd' machine instruction.
51823 Generates the 'pinsrq' machine instruction in 64bit mode.
51825 The following built-in functions are changed to generate new SSE4.1
51826 instructions when '-msse4.1' is used.
51829 Generates the 'extractps' machine instruction.
51831 Generates the 'pextrd' machine instruction.
51833 Generates the 'pextrq' machine instruction in 64bit mode.
51835 The following built-in functions are available when '-msse4.2' is used.
51836 All of them generate the machine instruction that is part of the name.
51854 The following built-in functions are available when '-msse4.2' is used.
51857 Generates the 'crc32b' machine instruction.
51859 Generates the 'crc32w' machine instruction.
51861 Generates the 'crc32l' machine instruction.
51863 Generates the 'crc32q' machine instruction.
51865 The following built-in functions are changed to generate new SSE4.2
51866 instructions when '-msse4.2' is used.
51869 Generates the 'popcntl' machine instruction.
51872 on the size of 'unsigned long'.
51874 Generates the 'popcntq' machine instruction.
51876 The following built-in functions are available when '-mavx' is used.
51877 All of them generate the machine instruction that is part of the name.
52008 The following built-in functions are available when '-mavx2' is used.
52009 All of them generate the machine instruction that is part of the name.
52183 The following built-in functions are available when '-maes' is used.
52184 All of them generate the machine instruction that is part of the name.
52193 The following built-in function is available when '-mpclmul' is used.
52196 Generates the 'pclmulqdq' machine instruction.
52198 The following built-in function is available when '-mfsgsbase' is used.
52199 All of them generate the machine instruction that is part of the name.
52210 The following built-in function is available when '-mrdrnd' is used.
52211 All of them generate the machine instruction that is part of the name.
52217 The following built-in function is available when '-mptwrite' is used.
52218 All of them generate the machine instruction that is part of the name.
52223 The following built-in functions are available when '-msse4a' is used.
52224 All of them generate the machine instruction that is part of the name.
52233 The following built-in functions are available when '-mxop' is used.
52359 The following built-in functions are available when '-mfma4' is used.
52360 All of them generate the machine instruction that is part of the name.
52396 The following built-in functions are available when '-mlwp' is used.
52411 The following built-in functions are available when '-mbmi' is used.
52412 All of them generate the machine instruction that is part of the name.
52416 The following built-in functions are available when '-mbmi2' is used.
52417 All of them generate the machine instruction that is part of the name.
52425 The following built-in functions are available when '-mlzcnt' is used.
52426 All of them generate the machine instruction that is part of the name.
52431 The following built-in functions are available when '-mfxsr' is used.
52432 All of them generate the machine instruction that is part of the name.
52438 The following built-in functions are available when '-mxsave' is used.
52439 All of them generate the machine instruction that is part of the name.
52446 used. All of them generate the machine instruction that is part of the
52447 name.
52451 The following built-in functions are available when '-mtbm' is used.
52453 instruction.
52459 The following built-in functions are available when '-m3dnow' is used.
52460 All of them generate the machine instruction that is part of the name.
52482 The following built-in functions are available when '-m3dnowa' is used.
52483 All of them generate the machine instruction that is part of the name.
52493 They are used for restricted transactional memory. These are the
52494 internal low level functions. Normally the functions in *note x86
52495 transactional memory intrinsics:: should be used instead.
52502 The following built-in functions are available when '-mmwaitx' is used.
52503 All of them generate the machine instruction that is part of the name.
52507 The following built-in functions are available when '-mclzero' is used.
52508 All of them generate the machine instruction that is part of the name.
52511 The following built-in functions are available when '-mpku' is used.
52512 They generate reads and writes to PKRU.
52517 '-mshstk' option is used. They support shadow stack machine
52518 instructions from Intel Control-flow Enforcement Technology (CET). Each
52520 function's name. These are the internal low-level functions. Normally
52522 be used instead.
52538 File: gcc.info, Node: x86 transactional memory intrinsics, Next: x86 control-flow protection intr…
52540 6.60.36 x86 Transactional Memory Intrinsics
52544 memory transactions with RTM (Restricted Transactional Memory). This
52545 support is enabled with the '-mrtm' option. For using HLE (Hardware
52547 transactional memory:: instead.
52550 visible to other threads. If the transaction fails it is rolled back
52551 and all side effects discarded.
52554 and suitable fallback code always needs to be supplied.
52557 Start a RTM (Restricted Transactional Memory) transaction. Returns
52559 this is not 0, so the constant has to be explicitly tested).
52562 code encoded as a bit mask is returned. The following macros are
52566 Transaction was explicitly aborted with '_xabort'. The
52568 '_XABORT_CODE(status)'.
52570 Transaction retry is possible.
52573 thread.
52576 memory.
52578 Transaction abort due to a debug trap.
52580 Transaction abort in an inner nested transaction.
52583 always needs to be a valid fallback path.
52586 Commit the current transaction. When no transaction is active this
52587 faults. All memory side effects of the transaction become visible
52588 to other threads in an atomic manner.
52592 otherwise 0.
52595 Abort the current transaction. When no transaction is active this
52596 is a no-op. The STATUS is an 8-bit constant; its value is encoded
52597 in the return value from '_xbegin'.
52602 #include <immintrin.h>
52606 ...
52616 ... transaction code...
52621 ... non-transactional fallback path...
52625 must synchronize together to ensure consistency.
52628 File: gcc.info, Node: x86 control-flow protection intrinsics, Prev: x86 transactional memory intr…
52630 6.60.37 x86 Control-Flow Protection Intrinsics
52635 support from Intel CET is enabled in the hardware or '0' otherwise.
52637 'unsigned int' for 32-bit targets.
52641 the function argument. The argument is masked to a byte value for
52643 call the function multiple times.
52647 #include <immintrin.h>
52649 /* Unwind the shadow stack for EH. */
52667 This code runs unconditionally on all 64-bit processors. For 32-bit
52669 instructions.
52672 File: gcc.info, Node: Target Format Checks, Next: Pragmas, Prev: Target Builtins, Up: C Extensi…
52679 Attributes.).
52687 File: gcc.info, Node: Solaris Format Checks, Next: Darwin Format Checks, Up: Target Format Checks
52689 6.61.1 Solaris Format Checks
52692 Solaris targets support the 'cmn_err' (or '__cmn_err__') format check.
52694 two-argument '%b' conversion for displaying bit-fields. See the Solaris
52695 man page for 'cmn_err' for more information.
52698 File: gcc.info, Node: Darwin Format Checks, Prev: Solaris Format Checks, Up: Target Format Checks
52700 6.61.2 Darwin Format Checks
52706 'format' attribute. Declarations with this archetype are parsed for
52707 correct syntax and argument types. However, parsing of the format
52709 functions is currently not performed.
52712 may also be used as format arguments. Note that the relevant headers
52713 are only likely to be available on Darwin (OSX) installations. On such
52715 of 'CFString', 'CFStringRefs' and associated functions.
52718 File: gcc.info, Node: Pragmas, Next: Unnamed Fields, Prev: Target Format Checks, Up: C Extensio…
52724 code originally written for other compilers. Note that in general we do
52726 further explanation.
52729 compiler pragmas documented here. Refer to the CPP manual for more
52730 information.
52753 File: gcc.info, Node: AArch64 Pragmas, Next: ARM Pragmas, Up: Pragmas
52755 6.62.1 AArch64 Pragmas
52759 target function attributes. They can be specified as below:
52763 attribute. *Note AArch64 Function Attributes::, for more details on the
52764 permissible values of 'string'.
52767 File: gcc.info, Node: ARM Pragmas, Next: M32C Pragmas, Prev: AArch64 Pragmas, Up: Pragmas
52769 6.62.2 ARM Pragmas
52773 'long_call' and 'short_call' attributes to functions. *Note Function
52774 Attributes::, for information about the effects of these attributes.
52777 Set all subsequent functions to have the 'long_call' attribute.
52780 Set all subsequent functions to have the 'short_call' attribute.
52784 subsequent functions.
52787 File: gcc.info, Node: M32C Pragmas, Next: MeP Pragmas, Prev: ARM Pragmas, Up: Pragmas
52789 6.62.3 M32C Pragmas
52793 Overrides the command-line option '-memregs=' for the current file.
52796 make them incompatible. This pragma is useful when a
52798 as it may allow you to reduce the number of memregs used.
52804 changes the symbol's scope to be static. This pragma exists for
52806 '1234H' numeric syntax is not supported (use '0x1234' instead).
52813 File: gcc.info, Node: MeP Pragmas, Next: PRU Pragmas, Prev: M32C Pragmas, Up: Pragmas
52815 6.62.4 MeP Pragmas
52820 file. Note that for compatibility with future GCC releases, this
52822 file.
52826 allocator. REGISTERS may be a single register, register range
52827 separated by ellipses, or comma-separated list of those. Example:
52829 #pragma GCC coprocessor available $c0...$c10, $c28
52833 by any function using them. REGISTERS may be a single register,
52835 those. Example:
52837 #pragma GCC coprocessor call_saved $c4...$c6, $c31
52840 Creates and defines a register class. These register classes can
52841 be used by inline 'asm' constructs. REGISTERS may be a single
52843 list of those. Example:
52849 'GCC disinterrupt NAME , NAME ...'
52851 interrupts for the duration of those functions. If any functions
52853 that the pragma is not used. Examples:
52857 int foo () { ... }
52859 'GCC call NAME , NAME ...'
52861 register-indirect call model when calling the named functions.
52868 File: gcc.info, Node: PRU Pragmas, Next: RS/6000 and PowerPC Pragmas, Prev: MeP Pragmas, Up: Pr…
52870 6.62.5 PRU Pragmas
52875 CONSTANT_ADDRESS. This enables GCC to emit LBCO/SBCO instructions
52877 CTABLE entry. For example:
52884 File: gcc.info, Node: RS/6000 and PowerPC Pragmas, Next: S/390 Pragmas, Prev: PRU Pragmas, Up: …
52886 6.62.6 RS/6000 and PowerPC Pragmas
52891 declarations by default. This pragma overrides the '-mlongcall' option,
52892 but not the 'longcall' and 'shortcall' attributes. *Note RS/6000 and
52894 are not necessary.
52898 declarations.
52902 declarations.
52905 File: gcc.info, Node: S/390 Pragmas, Next: Darwin Pragmas, Prev: RS/6000 and PowerPC Pragmas, U…
52907 6.62.7 S/390 Pragmas
52917 attribute, do change the value of preprocessor macros like '__VEC__'.
52920 #pragma GCC target("string[,string]...")
52921 #pragma GCC target("string"[,"string"]...)
52924 File: gcc.info, Node: Darwin Pragmas, Next: Solaris Pragmas, Prev: S/390 Pragmas, Up: Pragmas
52926 6.62.8 Darwin Pragmas
52930 Darwin operating system. These are useful for compatibility with other
52931 Mac OS compilers.
52933 'mark TOKENS...'
52934 This pragma is accepted, but has no effect.
52937 This pragma sets the alignment of fields in structures. The values
52939 'power', to emulate PowerPC alignment. Uses of this pragma nest
52941 ALIGNMENT.
52943 'segment TOKENS...'
52944 This pragma is accepted, but has no effect.
52946 'unused (VAR [, VAR]...)'
52947 This pragma declares variables to be possibly unused. GCC does not
52948 produce warnings for the listed variables. The effect is similar
52950 appear anywhere within the variables' scopes.
52953 File: gcc.info, Node: Solaris Pragmas, Next: Symbol-Renaming Pragmas, Prev: Darwin Pragmas, Up:…
52955 6.62.9 Solaris Pragmas
52959 Symbol-Renaming Pragmas::). It also supports additional '#pragma'
52960 directives for compatibility with the system compiler.
52962 'align ALIGNMENT (VARIABLE [, VARIABLE]...)'
52964 Increase the minimum alignment of each VARIABLE to ALIGNMENT. This
52966 Attributes::). Macro expansion occurs on the arguments to this
52967 pragma when compiling C and Objective-C. It does not currently
52969 future release.
52971 'fini (FUNCTION [, FUNCTION]...)'
52974 during shared module unloading, by adding a call to the '.fini'
52975 section.
52977 'init (FUNCTION [, FUNCTION]...)'
52981 adding a call to the '.init' section.
52984 File: gcc.info, Node: Symbol-Renaming Pragmas, Next: Structure-Layout Pragmas, Prev: Solaris Pra…
52986 6.62.10 Symbol-Renaming Pragmas
52990 assembly for a given declaration. While this pragma is supported on all
52992 Solaris system headers. This effect can also be achieved using the asm
52993 labels extension (*note Asm Labels::).
52998 NEWNAME. The preprocessor macro '__PRAGMA_REDEFINE_EXTNAME' is
52999 defined if this pragma is available (currently on all platforms).
53002 manner. Here are some corner cases you may want to be aware of:
53004 1. This pragma silently applies only to declarations with external
53005 linkage. The 'asm' label feature does not have this restriction.
53007 2. In C++, this pragma silently applies only to declarations with "C"
53008 linkage. Again, 'asm' labels do not have this restriction.
53010 3. If either of the ways of changing the assembly name of a
53015 and the name does not change.
53017 4. The OLDNAME used by '#pragma redefine_extname' is always the
53018 C-language name.
53021 File: gcc.info, Node: Structure-Layout Pragmas, Next: Weak Pragmas, Prev: Symbol-Renaming Pragma…
53023 6.62.11 Structure-Layout Pragmas
53029 subsequently defined. The N value below always is required to be a
53030 small power of two and specifies the new alignment in bytes.
53032 1. '#pragma pack(N)' simply sets the new alignment.
53033 2. '#pragma pack()' sets the alignment to the one that was in effect
53035 '-fpack-struct[=N]' *note Code Gen Options::).
53036 3. '#pragma pack(push[,N])' pushes the current alignment setting on an
53037 internal stack and then optionally sets the new alignment.
53038 4. '#pragma pack(pop)' restores the alignment setting to the one saved
53039 at the top of the internal stack (and removes that stack entry).
53043 '#pragma pack(pop)'.
53045 Some targets, e.g. x86 and PowerPC, support the '#pragma ms_struct'
53047 the documented '__attribute__ ((ms_struct))'.
53049 1. '#pragma ms_struct on' turns on the Microsoft layout.
53050 2. '#pragma ms_struct off' turns off the Microsoft layout.
53051 3. '#pragma ms_struct reset' goes back to the default layout.
53055 documented '__attribute__ ((scalar_storage_order))'.
53057 1. '#pragma scalar_storage_order big-endian' sets the storage order of
53058 the scalar fields to big-endian.
53059 2. '#pragma scalar_storage_order little-endian' sets the storage order
53060 of the scalar fields to little-endian.
53061 3. '#pragma scalar_storage_order default' goes back to the endianness
53063 option '-fsso-struct=ENDIANNESS' *note C Dialect Options::).
53066 File: gcc.info, Node: Weak Pragmas, Next: Diagnostic Pragmas, Prev: Structure-Layout Pragmas, U…
53068 6.62.12 Weak Pragmas
53072 for declaring symbols to be weak, and defining weak aliases.
53076 the attribute of the same name. The pragma may appear before or
53077 after the declaration of SYMBOL. It is not an error for SYMBOL to
53078 never be defined at all.
53081 This pragma declares SYMBOL1 to be a weak alias of SYMBOL2. It is
53082 an error if SYMBOL2 is not defined in the current translation unit.
53085 File: gcc.info, Node: Diagnostic Pragmas, Next: Visibility Pragmas, Prev: Weak Pragmas, Up: Pra…
53087 6.62.13 Diagnostic Pragmas
53091 diagnostics, and change the kind of the diagnostic. For example, a
53094 warnings. Or, a project might selectively enable diagnostics and treat
53095 them as errors depending on which preprocessor macros are defined.
53099 Modifies the disposition of a diagnostic. Note that not all
53101 controlled by '-W...') can be controlled, and not all of them. Use
53103 controllable and which option controls them.
53107 'ignored' if the diagnostic is to be ignored. OPTION is a double
53108 quoted string that matches the command-line option.
53114 Note that these pragmas override any command-line options. GCC
53116 according to the state as of that point in the source file. Thus,
53118 that line.
53124 'push', and restore to that point at each 'pop'. If a 'pop' has no
53125 matching 'push', the command-line options are restored.
53138 compilation.
53142 Prints STRING as a compiler message on compilation. The message is
53144 error. Newlines can be included in the string by using the '\n'
53145 escape sequence.
53147 #pragma message "Compiling " __FILE__ "..."
53150 information. For example,
53157 prints '/tmp/file.c:4: note: #pragma message: TODO - Remember to
53158 fix this'.
53161 Generates an error message. This pragma _is_ considered to
53163 such.
53166 sequence. They will be displayed as newlines even if the
53167 '-fmessage-length' option is set to zero.
53170 after pre-processing has been completed. It does not matter
53184 is issued instead of an error message. Unless '-Werror' is in
53185 effect, in which case this pragma will generate an error as well.
53188 File: gcc.info, Node: Visibility Pragmas, Next: Push/Pop Macro Pragmas, Prev: Diagnostic Pragmas…
53190 6.62.14 Visibility Pragmas
53198 (*note Function Attributes::).
53201 declarations. Class members and template specializations are not
53203 member or instantiation, you must use an attribute.
53206 File: gcc.info, Node: Push/Pop Macro Pragmas, Next: Function Specific Option Pragmas, Prev: Visi…
53208 6.62.15 Push/Pop Macro Pragmas
53213 pop_macro("MACRO_NAME")'.
53217 top of the stack for this macro.
53221 value on top of the stack for this macro. If the stack for
53222 MACRO_NAME is empty, the value of the macro remains unchanged.
53234 push_macro' and restored by '#pragma pop_macro'.
53237 File: gcc.info, Node: Function Specific Option Pragmas, Next: Loop-Specific Pragmas, Prev: Push/…
53239 6.62.16 Function Specific Option Pragmas
53242 '#pragma GCC target (STRING, ...)'
53245 defined later in the source file. One or more strings can be
53246 specified. Each function that is defined after this point is
53248 attribute for each STRING argument. The parentheses around the
53249 strings in the pragma are optional. *Note Function Attributes::,
53251 syntax.
53254 ARM, AArch64, PowerPC, S/390, and Nios II targets only.
53256 '#pragma GCC optimize (STRING, ...)'
53259 functions defined later in the source file. One or more strings
53260 can be specified. Each function that is defined after this point
53262 attribute for each STRING argument. The parentheses around the
53263 strings in the pragma are optional. *Note Function Attributes::,
53265 attribute syntax.
53271 optimization options. It is intended for include files where you
53274 previous options.
53280 command line.
53283 File: gcc.info, Node: Loop-Specific Pragmas, Prev: Function Specific Option Pragmas, Up: Pragmas
53285 6.62.17 Loop-Specific Pragmas
53293 SIMD (single instruction multiple data) instructions.
53307 effect. In the following example, that would not be possible.
53308 Assume k < -m or k >= m. Only with the pragma, the compiler knows
53321 unrolled. It must be placed immediately before a 'for', 'while' or
53323 that follows. N is an integer constant expression specifying the
53324 unrolling factor. The values of 0 and 1 block any unrolling of the
53325 loop.
53328 File: gcc.info, Node: Unnamed Fields, Next: Thread-Local, Prev: Pragmas, Up: C Extensions
53335 structures and unions without names. For example:
53347 with code like 'foo.b'. Note that only unnamed structs and unions are
53348 allowed, you may not have, for example, an unnamed 'int'.
53351 definitions. For example, in this structure:
53360 it is ambiguous which 'a' is being referred to with 'foo.a'. The
53361 compiler gives errors for such constructs.
53364 or union definition without a tag (for example, 'struct { int a; };').
53368 'typedef' name for a previously defined structure or union type.
53371 two other extensions. First, a pointer to a structure is automatically
53373 function calls. For example:
53381 pointer to the anonymous field.
53385 'typedef'.
53391 These usages are only permitted when they are not ambiguous.
53394 File: gcc.info, Node: Thread-Local, Next: Binary constants, Prev: Unnamed Fields, Up: C Extensi…
53401 thread. The runtime model GCC uses to implement this originates in the
53403 processors as well. It requires significant support from the linker
53404 ('ld'), dynamic linker ('ld.so'), and system libraries ('libc.so' and
53405 'libpthread.so'), so it is not available everywhere.
53408 keyword: '__thread'. For example:
53415 'static' specifiers, but with no other storage class specifier. When
53417 the other storage class specifier.
53420 static, function-scoped static, or static data member of a class. It
53421 may not be applied to block-scoped automatic or non-static data member.
53425 instance of that variable. An address so obtained may be used by any
53426 thread. When a thread terminates, any pointers to thread-local
53427 variables in that thread become invalid.
53430 variable.
53433 must be a CONSTANT-EXPRESSION, as defined in 5.19.2 of the ANSI/ISO C++
53434 standard.
53437 (https://www.akkadia.org/drepper/tls.pdf) for a detailed explanation of
53439 expected to function.
53447 File: gcc.info, Node: C99 Thread-Local Edits, Next: C++98 Thread-Local Edits, Up: Thread-Local
53449 6.64.1 ISO/IEC 9899:1999 Edits for Thread-Local Storage
53453 document the exact semantics of the language extension.
53455 * '5.1.2 Execution environments'
53460 control within a program. It is implementation defined
53462 with a program. It is implementation defined how threads
53465 terminated. However, objects with thread storage duration
53466 shall be initialized before thread startup.
53468 * '6.2.4 Storage durations of objects'
53473 specifier '__thread' has "thread storage duration". Its
53475 value is initialized only once, prior to thread startup.
53477 * '6.4.1 Keywords'
53479 Add '__thread'.
53481 * '6.7.1 Storage-class specifiers'
53484 1.
53489 specifier may be given [...]. The '__thread' specifier may be
53490 used alone, or immediately following 'extern' or 'static'.
53496 'extern' or 'static'.
53498 The '__thread' specifier shall be used only with variables.
53501 File: gcc.info, Node: C++98 Thread-Local Edits, Prev: C99 Thread-Local Edits, Up: Thread-Local
53503 6.64.2 ISO/IEC 14882:1998 Edits for Thread-Local Storage
53507 that document the exact semantics of the language extension.
53509 * [intro.execution]
53513 A "thread" is a flow of control within the abstract machine.
53515 than one thread.
53521 threads.
53523 * [lex.key]
53525 Add '__thread'.
53527 * [basic.start.main]
53532 called the "main thread". It is implementation defined how
53534 designated or typed. A function so designated, as well as the
53535 'main' function, is called a "thread startup function". It is
53537 function returns. It is implementation defined what happens
53538 to other threads when any thread calls 'exit'.
53540 * [basic.start.init]
53546 thread startup function. An object of thread storage duration
53547 shall not require dynamic initialization.
53549 * [basic.start.term]
53556 destructors.
53558 * [basic.stc]
53560 Add "thread storage duration" to the list in paragraph 1.
53565 with objects introduced by declarations [...].
53567 Add '__thread' to the list of specifiers in paragraph 3.
53569 * [basic.stc.thread]
53571 New section before [basic.stc.static]
53574 object thread storage duration.
53578 duration.
53580 * [basic.stc.static]
53585 storage duration nor are local [...].
53587 * [dcl.stc]
53589 Add '__thread' to the list in paragraph 1.
53595 DECL-SPECIFIER-SEQ. The '__thread' specifier may be used
53597 specifiers. [...]
53602 objects and to anonymous unions.
53604 * [class.mem]
53608 Non-'static' members shall not be '__thread'.
53611 File: gcc.info, Node: Binary constants, Prev: Thread-Local, Up: C Extensions
53617 sequence of '0' and '1' digits, prefixed by '0b' or '0B'. This is
53619 (like microcontrollers).
53630 applied.
53633 File: gcc.info, Node: C++ Extensions, Next: Objective-C, Prev: C Extensions, Up: Top
53639 can also use most of the C language extensions in your C++ programs).
53642 programs: check for a predefined macro '__GNUC__'. You can also use
53644 (cpp)Common Predefined Macros.).
53648 * C++ Volatiles:: What constitutes an access to a volatile object.
53649 * Restricted Pointers:: C99 restricted pointers and references.
53650 * Vague Linkage:: Where G++ puts inlines, vtables and such.
53652 declarations and definitions.
53654 each needed template instantiation is emitted.
53656 method denoted by a '->*' or '.*' expression.
53657 * C++ Attributes:: Variable, function, and type attributes for C++ only.
53658 * Function Multiversioning:: Declaring multiple function versions.
53659 * Type Traits:: Compiler support for type traits.
53660 * C++ Concepts:: Improved support for generic programming.
53661 * Deprecated Features:: Things will disappear from G++.
53662 * Backwards Compatibility:: Compatibilities with earlier definitions of C++.
53665 File: gcc.info, Node: C++ Volatiles, Next: Restricted Pointers, Up: C++ Extensions
53671 volatile objects. It fails to specify what constitutes a volatile
53673 with respect to volatiles, where possible. However, the different
53674 lvalueness of expressions between C and C++ complicate the behavior.
53676 Extensions, for a description of GCC's behavior.
53686 be incomplete. The C++ standard does not specify explicitly that it is
53687 lvalue to rvalue conversion that is responsible for causing an access.
53689 expressions become undefined. However, because it would surprise most
53691 complete type as GCC would do for an equivalent type in C. When the
53694 static cast.
53698 no volatile is accessed. The rationale for this is that otherwise it
53701 references. Again, if you wish to force a read, cast the reference to
53702 an rvalue.
53706 assigned rvalue is reused. Note that in C++ assignment expressions are
53707 lvalues, and if used as an lvalue, the volatile object is referred to.
53715 File: gcc.info, Node: Restricted Pointers, Next: Vague Linkage, Prev: C++ Volatiles, Up: C++ Ex…
53722 qualifier. Because you cannot compile C++ by specifying the '-std=c99'
53723 language flag, 'restrict' is not a keyword in C++.
53727 local context.
53731 /* ... */
53735 to a (different) unaliased integer.
53738 unaliased by using '__restrict__' as a member function qualifier.
53742 /* ... */
53746 *__restrict__ const this'. Notice that the interpretation of a
53749 than the object. This is consistent with other compilers that implement
53750 restricted pointers.
53753 in function definition matching. This means you only need to specify
53755 prototype as well.
53758 File: gcc.info, Node: Vague Linkage, Next: C++ Interface, Prev: Restricted Pointers, Up: C++ Ex…
53764 file but are not clearly tied to a single translation unit. We say that
53765 these constructs have "vague linkage". Typically such constructs are
53767 clever.
53771 be included in many different compilations. Hopefully they can
53773 if the address of the function is taken or if inlining fails. In
53775 one is needed. As an exception, we only emit inline virtual
53776 functions with the vtable, since it always requires a copy.
53781 function.
53785 lookup table, known as a vtable. The vtable contains pointers to
53788 multiple-inheritance situations). If the class declares any
53791 the translation unit where the key method is defined.
53794 vtable is still emitted in every translation unit that defines it.
53796 body, even if they are not defined there.
53800 implement 'dynamic_cast', 'typeid' and exception handling. For
53804 run time. For all other types, we write out the 'type_info' object
53807 specification.
53811 instantiations, but there are other options as well. *Note Where's
53812 the Template?: Template Instantiation.
53816 these constructs will be discarded at link time. This is known as
53817 COMDAT support.
53820 uses them. This way one copy overrides all the others, but the unused
53821 copies still take up space in the executable.
53825 duplicate definition errors from the linker. This does not happen for
53827 certainly breaks things.
53830 another way to control placement of these constructs.
53833 File: gcc.info, Node: C++ Interface, Next: Template Instantiation, Prev: Vague Linkage, Up: C++…
53840 linkage (and debugging information) in a particular translation unit.
53842 _Note:_ These '#pragma's have been superceded as of GCC 2.7.2 by COMDAT
53844 Linkage::. Using them can actually cause your program to grow due to
53845 unnecessary out-of-line copies of inline functions.
53848 '#pragma interface "SUBDIR/OBJECTS.h"'
53850 save space in most of the object files that use those classes.
53854 object file that includes class definitions. You can use this
53855 pragma to avoid such duplication. When a header file containing
53858 itself uses '#pragma implementation'). Instead, the object files
53859 contain references to be resolved at link time.
53862 have multiple headers with the same name in different directories.
53864 implementation'.
53867 '#pragma implementation "OBJECTS.h"'
53870 visible). The included header file, in turn, should use '#pragma
53871 interface'. Backup copies of inline member functions, debugging
53873 functions are all generated in implementation files.
53876 an include file with the same basename(1) as your source file. For
53877 example, in 'allclass.cc', giving just '#pragma implementation' by
53878 itself is equivalent to '#pragma implementation "allclass.h"'.
53881 include code from multiple header files. (You must also use
53884 it.)
53887 into multiple implementation files.
53890 function inlining.
53895 define an independent version of the function. Its definition is used
53896 only for inlining with its callers.
53901 be found via pointers (or by callers compiled without inlining). If all
53903 function by compiling with '-fno-implement-inlines'. If any calls are
53904 not inlined, you will get linker errors.
53909 information and of trailing suffixes, such as '.h' or '.C' or '.cc'.
53912 File: gcc.info, Node: Template Instantiation, Next: Bound member functions, Prev: C++ Interface,…
53919 system. Somehow the compiler and linker have to make sure that each
53921 and not at all otherwise. There are two basic approaches to this
53923 model.
53929 and the linker collapses them together. The advantage of this
53931 themselves; there is no external complexity to worry about. The
53933 template code is being compiled repeatedly. Code written for this
53935 file, since they must be seen to be instantiated.
53940 automatically maintained place where template instances are stored.
53943 definitions and instantiations encountered in the repository. At
53945 and compiles any needed instances that were not previously emitted.
53948 model a compiler vendor also needs to replace the linker. The
53952 one directory and one program in multiple directories. Code
53955 separately.
53959 Windows. Otherwise G++ implements neither automatic model.
53964 1. Do nothing. Code written for the Borland model works fine, but
53966 it uses. The duplicate instances will be discarded by the linker,
53968 code duplication in object files or shared libraries.
53979 supported by G++ and other compilers since well before 2011.
53983 which other instances are used in the rest of the program. You can
53990 #include "Foo.h"
53991 #include "Foo.cc"
53998 instantiation library from those.
54001 fine-grained control when necessary. It is also the most portable
54003 modern compilers.
54005 2. Compile your code with '-fno-implicit-templates' to disable the
54007 instantiate all the ones you use. This approach requires more
54010 ensure that only the intended instances are used.
54014 '#include' the member template definitions.
54019 other files) without having to specify them as well.
54024 class (i.e. the vtable) without instantiating any of its members
54033 File: gcc.info, Node: Bound member functions, Next: C++ Attributes, Prev: Template Instantiation…
54042 where in the vtable to look for the member function. If you are using
54043 PMFs in an inner loop, you should really reconsider that decision. If
54046 the inner loop, to save a bit of time.
54050 prediction features of the CPU. This is also true of normal virtual
54051 function calls.
54059 fptr p = (fptr)(a.*fp);
54061 For PMF constants (i.e. expressions of the form '&Klasse::Member'), no
54062 object is needed to obtain the address of the function. They can be
54067 You must specify '-Wno-pmf-conversions' to use this extension.
54070 File: gcc.info, Node: C++ Attributes, Next: Function Multiversioning, Prev: Bound member functio…
54075 Some attributes only make sense for C++ programs.
54077 'abi_tag ("TAG", ...)'
54079 class declaration. It modifies the mangled name of the entity to
54083 that is not encoded in the mangled name.
54088 functions and variables. Tagging inline namespaces is generally
54091 need to be tagged.
54093 The argument can be a list of strings of arbitrary length. The
54095 unimportant.
54098 so would change the mangled name.
54101 specializations of a template have the same tags. The attribute
54103 instantiation.
54109 be tagged.
54114 to the variable or function. '-Wabi-tag' also warns about this
54116 variable or function or moving it into a tagged inline namespace.
54122 their definitions _in a given translation unit_. No guarantee is
54123 made for initializations across translation units. However, GNU
54127 currently bounded between 101 and 65535 inclusive. Lower numbers
54128 indicate a higher priority.
54137 their relative ordering.
54143 this type is truly unused if it is not referenced. This type
54146 fundamental types.
54150 control a resource, such as 'std::lock_guard'.
54153 C does not have constructors or destructors.
54156 File: gcc.info, Node: Function Multiversioning, Next: Type Traits, Prev: C++ Attributes, Up: C+…
54163 specific target feature. At runtime, the appropriate version of the
54165 the execution platform. Here is an example.
54170 // The default version of foo.
54174 __attribute__ ((target ("sse4.2")))
54177 // foo version for SSE4.2
54191 // foo version for the AMD Family 0x10 processors.
54202 In the above example, four versions of function foo are created. The
54204 version. This version gets executed when no other target specific
54205 version qualifies for execution on a particular platform. A new version
54207 different target string. Function foo is called or a pointer to it is
54208 taken just like a regular function. GCC takes care of doing the
54209 dispatching to call the right version at runtime. Refer to the GCC wiki
54211 (http://gcc.gnu.org/wiki/FunctionMultiVersioning) for more details.
54214 File: gcc.info, Node: Type Traits, Next: C++ Concepts, Prev: Function Multiversioning, Up: C++ …
54221 pair of types).
54225 trait is 'false'. Otherwise if '__has_trivial_assign (type)' is
54229 'false'. Requires: 'type' shall be a complete type, (possibly
54230 cv-qualified) 'void', or an array of unknown bound.
54236 trait is 'true', else it is 'false'. Requires: 'type' shall be a
54238 unknown bound.
54244 exception then the trait is 'true', else it is 'false'. Requires:
54246 an array of unknown bound.
54250 trait is 'false'. Otherwise if '__is_pod (type)' is 'true' then
54252 union type with a trivial copy assignment ([class.copy]) then the
54253 trait is 'true', else it is 'false'. Requires: 'type' shall be a
54255 unknown bound.
54260 with a trivial copy constructor ([class.copy]) then the trait is
54261 'true', else it is 'false'. Requires: 'type' shall be a complete
54262 type, (possibly cv-qualified) 'void', or an array of unknown bound.
54267 with a trivial default constructor ([class.ctor]) then the trait is
54268 'true', else it is 'false'. Requires: 'type' shall be a complete
54269 type, (possibly cv-qualified) 'void', or an array of unknown bound.
54274 array thereof) with a trivial destructor ([class.dtor]) then the
54275 trait is 'true', else it is 'false'. Requires: 'type' shall be a
54277 unknown bound.
54280 If 'type' is a class type with a virtual destructor ([class.dtor])
54281 then the trait is 'true', else it is 'false'. Requires: 'type'
54283 array of unknown bound.
54286 If 'type' is an abstract class ([class.abstract]) then the trait is
54287 'true', else it is 'false'. Requires: 'type' shall be a complete
54288 type, (possibly cv-qualified) 'void', or an array of unknown bound.
54291 If 'base_type' is a base class of 'derived_type' ([class.derived])
54292 then the trait is 'true', otherwise it is 'false'. Top-level
54293 cv-qualifications of 'base_type' and 'derived_type' are ignored.
54295 base. Requires: if '__is_class (base_type)' and '__is_class
54298 shall be a complete type. A diagnostic is produced if this
54299 requirement is not met.
54303 ([basic.compound]) the trait is 'true', else it is 'false'.
54306 If '__is_class (type)' is 'false' then the trait is 'false'.
54311 'base_type' for which '__is_empty (base_type)' is 'false'.
54313 'void', or an array of unknown bound.
54316 If 'type' is a cv enumeration type ([basic.compound]) the trait is
54317 'true', else it is 'false'.
54320 If 'type' is a literal type ([basic.types]) the trait is 'true',
54321 else it is 'false'. Requires: 'type' shall be a complete type,
54322 (possibly cv-qualified) 'void', or an array of unknown bound.
54325 If 'type' is a cv POD type ([basic.types]) then the trait is
54326 'true', else it is 'false'. Requires: 'type' shall be a complete
54327 type, (possibly cv-qualified) 'void', or an array of unknown bound.
54330 If 'type' is a polymorphic class ([class.virtual]) then the trait
54331 is 'true', else it is 'false'. Requires: 'type' shall be a
54333 unknown bound.
54336 If 'type' is a standard-layout type ([basic.types]) the trait is
54337 'true', else it is 'false'. Requires: 'type' shall be a complete
54338 type, (possibly cv-qualified) 'void', or an array of unknown bound.
54341 If 'type' is a trivial type ([basic.types]) the trait is 'true',
54342 else it is 'false'. Requires: 'type' shall be a complete type,
54343 (possibly cv-qualified) 'void', or an array of unknown bound.
54346 If 'type' is a cv union type ([basic.compound]) the trait is
54347 'true', else it is 'false'.
54350 The underlying type of 'type'. Requires: 'type' shall be an
54351 enumeration type ([dcl.enum]).
54356 from '0' to 'length-1'. This is provided for efficient
54357 implementation of 'std::make_integer_sequence'.
54360 File: gcc.info, Node: C++ Concepts, Next: Deprecated Features, Prev: Type Traits, Up: C++ Exten…
54365 C++ concepts provide much-improved support for generic programming. In
54367 arguments. The constraints are used to extend the usual overloading and
54370 rather than their type names.
54372 The following keywords are reserved for concepts.
54376 that the assumption is valid. For example, 'assume(n > 0)'.
54379 Introduces an axiom definition. Axioms introduce requirements on
54380 values.
54383 Introduces a universally quantified object in an axiom. For
54384 example, 'forall (int n) n + 0 == n').
54387 Introduces a concept definition. Concepts are sets of syntactic
54388 and semantic requirements on types and their values.
54392 member function of a class template.
54395 used to simplify the writing of type traits. Note that some of these
54396 traits are likely to be removed in the future.
54400 same.
54403 File: gcc.info, Node: Deprecated Features, Next: Backwards Compatibility, Prev: C++ Concepts, U…
54409 features, at a time when the C++ language was still evolving. Now that
54411 superior alternatives. Using the old features might cause a warning in
54412 some cases that the feature will be dropped in the future. In other
54413 cases, the feature might be gone already.
54416 one returning a different pointer type. This extension to the covariant
54418 version.
54422 deprecated and will be removed from a future version of G++.
54425 expressions, e.g. ' enum E { e = int(2.2 * 3.7) } ' This extension is
54426 deprecated and will be removed from a future version.
54429 declared with an initializer in a class definition. The standard only
54432 removed from a future version.
54435 e.g. ' int f (0) __attribute__ ((something)); ' This extension has been
54436 ignored since G++ 3.3 and is deprecated.
54439 public non-static data members (i.e. fields). These extensions are
54440 deprecated.
54443 File: gcc.info, Node: Backwards Compatibility, Prev: Deprecated Features, Up: C++ Extensions
54449 to adhere to. The C++ language evolved over time, and features that
54451 ARM [Annotated C++ Reference Manual], are no longer accepted. In order
54453 backwards compatibilities. _All such backwards compatibility features
54454 are liable to disappear in future versions of G++._ They should be
54455 considered deprecated. *Note Deprecated Features::.
54458 Old C system header files did not contain an 'extern "C" {...}'
54459 scope to set the language. On such systems, all system header
54460 files are implicitly scoped inside a C language scope. Such
54462 no leeway for '()' to indicate an unspecified set of arguments.
54465 File: gcc.info, Node: Objective-C, Next: Compatibility, Prev: C++ Extensions, Up: Top
54470 This document is meant to describe some of the GNU Objective-C features.
54471 It is not intended to teach you Objective-C. There are several resources
54472 on the Internet that present the language.
54488 File: gcc.info, Node: GNU Objective-C runtime API, Next: Executing code before main, Up: Objecti…
54493 This section is specific for the GNU Objective-C runtime. If you are
54494 using a different runtime, you can skip it.
54498 structures and even manipulating them. This allows you for example to
54501 protocols.
54506 the GNU Objective-C runtime API to define new classes or methods.
54514 File: gcc.info, Node: Modern GNU Objective-C runtime API, Next: Traditional GNU Objective-C runti…
54516 8.1.1 Modern GNU Objective-C Runtime API
54520 provided by the "Objective-C 2.0" Apple/NeXT Objective-C runtime. The
54524 * 'objc/objc.h': this is the basic Objective-C header file, defining
54525 the basic Objective-C types such as 'id', 'Class' and 'BOOL'. You
54526 have to include this header to do almost anything with Objective-C.
54528 * 'objc/runtime.h': this header declares most of the public runtime
54530 Objective-C runtime data structures. These functions are fairly
54532 to the Apple/NeXT Objective-C runtime ones. It does not declare
54535 below. You have to include 'objc/objc.h' and 'objc/runtime.h' to
54537 'objc/runtime.h'.
54539 * 'objc/message.h': this header declares public functions used to
54540 construct, deconstruct and forward message invocations. Because
54543 runtime implementation.
54545 * 'objc/objc-exception.h': this header declares some public functions
54546 related to Objective-C exceptions. For example functions in this
54548 code.
54550 * 'objc/objc-sync.h': this header declares some public functions
54553 code.
54555 * 'objc/thr.h': this header declares a public runtime API threading
54556 layer that is only provided by the GNU Objective-C runtime. It
54558 platform-independent set of threading functions.
54561 the GNU Objective-C runtime API.
54564 File: gcc.info, Node: Traditional GNU Objective-C runtime API, Prev: Modern GNU Objective-C runti…
54566 8.1.2 Traditional GNU Objective-C Runtime API
54570 call the "traditional" GNU Objective-C runtime API. Functions belonging
54573 of 'class_getSuperclass()' (modern API). Software using this API
54574 includes the file 'objc/objc-api.h' where it is declared.
54576 Starting with GCC 4.7.0, the traditional GNU runtime API is no longer
54577 available.
54580 File: gcc.info, Node: Executing code before main, Next: Type encoding, Prev: GNU Objective-C run…
54585 This section is specific for the GNU Objective-C runtime. If you are
54586 using a different runtime, you can skip it.
54589 code before the execution of the program enters the 'main' function.
54591 special class method '+load'.
54595 to the class first. The usual way to initialize global variables, in
54598 some cases could be too late.
54622 in '+initialize' occurs too late. The programmer can send a message to
54624 sending messages to the 'nil' object. The '+initialize' method which
54626 message is sent to the class object. The solution would require these
54627 variables to be initialized just before entering 'main'.
54646 The '+load' is a method that is not overridden by categories. If a
54648 invoked. This allows some additional initializations to be performed in
54649 a category.
54651 This mechanism is not intended to be a replacement for '+initialize'.
54653 of '+initialize'.
54660 File: gcc.info, Node: What you can and what you cannot do in +load, Up: Executing code before main
54662 8.2.1 What You Can and Cannot Do in '+load'
54665 '+load' is to be used only as a last resort. Because it is executed
54668 that is independent on the Objective-C runtime.
54682 '+load' implementation of any category.
54696 classes when you write '+load' of a class. The order in which sibling
54697 classes receive '+load' is not guaranteed.
54700 problematic if this matters. If you don't allocate objects inside
54701 '+load', it is guaranteed that '+load' is called before '+initialize'.
54703 object's class is invoked even if '+load' was not invoked. Note if you
54704 explicitly call '+load' on a class, '+initialize' will be called first.
54705 To avoid possible problems try to implement only one of these methods.
54708 into your running program. This happens automatically without any
54709 intervening operation from you. When you write bundles and you need to
54711 classes already exist in the running program. The same restrictions as
54712 above apply to classes defined in bundle.
54715 File: gcc.info, Node: Type encoding, Next: Garbage Collection, Prev: Executing code before main,…
54720 This is an advanced section. Type encodings are used extensively by the
54722 them to use Objective-C.
54724 The Objective-C compiler generates type encodings for all the types.
54726 selectors and methods and about objects and classes.
54752 enumeration values. Often the compiler users
54753 'unsigned int', which is then encoded as 'I'.
54755 Complex types 'j' followed by the inner type. For example
54756 '_Complex double' is encoded as "jd".
54764 alignments of types that contain bit-fields. The previous encoding
54765 contained only the size of the bit-field. Using only this information
54767 bit-field. This is very important in the presence of the Boehm's
54769 memory facility available in this collector. The typed memory
54771 inside the object.
54774 bit closest to the beginning of the structure.
54778 pointers '^' followed by the pointed type.
54809 In addition to the types the compiler also encodes the type specifiers.
54824 The type specifiers are encoded just before the type. Unlike types
54826 argument types.
54837 'const int*' is a pointer to a 'const int', and so is encoded as '^ri'.
54839 encoded as 'r^i'.
54842 'char * const'. Because 'char *' is encoded as '*' and not as '^c',
54844 to the pointee.
54848 'char *const'. 'char *const' would simply be encoded as '*', and the
54849 'const' is lost.
54858 File: gcc.info, Node: Legacy type encoding, Next: @encode, Up: Type encoding
54860 8.3.1 Legacy Type Encoding
54864 encoding code. The NeXT runtime expects GCC to emit type encodings in
54868 * the read-only qualifier of the pointee gets emitted before the '^'.
54870 it is a typedef. Also, the 'r' is only emitted for the outermost
54871 type.
54873 * 32-bit longs are encoded as 'l' or 'L', but not always. For
54875 field or a pointer.
54878 unsigned or long.
54881 bitfields. It encodes them as 'b' followed by the size, without a bit
54882 offset or the underlying field type.
54885 File: gcc.info, Node: @encode, Next: Method signatures, Prev: Legacy type encoding, Up: Type en…
54887 8.3.2 '@encode'
54891 a type encoding from a C/Objective-C type. For example, '@encode(int)'
54892 is compiled by the compiler into '"i"'.
54894 '@encode' does not support type qualifiers other than 'const'. For
54897 error.
54900 File: gcc.info, Node: Method signatures, Prev: @encode, Up: Type encoding
54902 8.3.3 Method Signatures
54906 needed to use Objective-C. You should skip it at a first reading; the
54908 through the list of parameters and interpret them for you. These
54910 interact with method signatures from user code.
54913 know how they are implemented (i.e., the "ABI"), read on.
54916 runtime. The "signature" encodes all the information required to
54918 arguments.
54922 * The return type, including type qualifiers. For example, a method
54923 returning 'int' would have 'i' here.
54925 * The total size (in bytes) required to pass all the parameters.
54927 method selector '_cmd').
54930 bytes) of the argument in the list of parameters.
54933 the signature 'i8@0:4' if the size of a pointer is 4. The signature is
54937 ':4' is the second parameter (a 'SEL' at byte offset '4').
54940 an Objective-C object file compiled by GCC. You'll see a lot of strings
54941 that look very much like 'i8@0:4'. They are signatures of Objective-C
54942 methods.
54945 File: gcc.info, Node: Garbage Collection, Next: Constant string objects, Prev: Type encoding, U…
54950 This section is specific for the GNU Objective-C runtime. If you are
54951 using a different runtime, you can skip it.
54955 Boehm-Demers-Weiser conservative garbage collector.
54958 an additional argument, '--enable-objc-gc'. This will build the
54960 several enhancements to support the garbage collector. The new library
54961 has a new name, 'libobjc_gc.a' to not conflict with the
54962 non-garbage-collected library.
54966 Boehm-Demers-Weiser collector. This mode requires precise information
54967 on where pointers are located inside objects. This information is
54969 initialized.
54972 can be used to declare a so-called "weak pointer" reference. Such a
54975 the allocated objects, yet allow them to be collected. This kind of
54977 pointer as a weak reference. Every type which is a pointer type can be
54978 declared a weak pointer, including 'id', 'Class' and 'SEL'.
54980 Here is an example of how to use this feature. Suppose you want to
55018 represented by the '!' character. The 'class_ivar_set_gcinvisible()'
55020 of the instance variable named as argument.
55023 File: gcc.info, Node: Constant string objects, Next: compatibility_alias, Prev: Garbage Collecti…
55029 directly by the compiler. You declare a constant string object by
55036 runtime. To get the definition of this class you must include the
55037 'objc/NXConstStr.h' header file.
55040 class. To be able to support them, the GNU Objective-C compiler
55042 '-fconstant-string-class=CLASS-NAME'. The provided class should adhere
55057 class than 'Object'. There is no requirement in the methods the
55059 class must be the compatible with the given structure.
55071 at runtime).
55075 specified as argument to this option. It is possible to have multiple
55078 this.
55081 File: gcc.info, Node: compatibility_alias, Next: Exceptions, Prev: Constant string objects, Up:…
55087 equivalent to another class name. For example:
55093 'WOApplication' is just an alias for 'GSWApplication').
55099 * 'GSWApplication' (the real class) must be an existing class.
55102 File: gcc.info, Node: Exceptions, Next: Synchronization, Prev: compatibility_alias, Up: Objecti…
55111 ...
55113 ...
55116 ...
55118 ...
55120 ...
55123 ...
55126 ...
55129 ...
55131 ...
55137 the object caught by the '@catch' will be rethrown.
55140 caught using this scheme. When an object is thrown, it will be caught
55142 analogously to how 'catch' blocks work in C++ and Java. A '@catch(id
55143 ...)' clause (as shown above) may also be provided to catch any and all
55144 Objective-C exceptions not caught by previous '@catch' clauses (if any).
55147 immediately preceding '@try ... @catch' section. This will happen
55149 inside the '@try ... @catch' section, analogously to the behavior of the
55150 'finally' clause in Java.
55155 compiling Objective-C files that use exceptions.
55159 '-shared-libgcc' options are used when linking.
55165 needed in the NeXT Objective-C runtime.
55168 types other than Objective-C objects. Furthermore, when used from
55170 interoperate with C++ exceptions at this time. This means you
55172 C++, or vice versa (i.e., 'throw ... @catch').
55175 File: gcc.info, Node: Synchronization, Next: Fast enumeration, Prev: Exceptions, Up: Objective-C
55183 ...
55188 object by another thread. If it has, the current thread shall wait
55189 until the other thread relinquishes its lock. Once 'guard' becomes
55192 lock (thereby making 'guard' available to other threads).
55195 '@synchronized'. Note that throwing exceptions out of '@synchronized'
55197 properly.
55202 '-fobjc-exceptions'.
55205 File: gcc.info, Node: Fast enumeration, Next: Messaging with the GNU Objective-C runtime, Prev: …
55218 File: gcc.info, Node: Using fast enumeration, Next: c99-like fast enumeration syntax, Up: Fast e…
55220 8.9.1 Using Fast Enumeration
55225 id array = ...;
55235 Enumeration Protocol" (see below). If you are using a Foundation
55238 way.
55240 The code above would iterate over all objects in 'array'. For each of
55242 'object'' statements.
55254 File: gcc.info, Node: c99-like fast enumeration syntax, Next: Fast enumeration details, Prev: Us…
55256 8.9.2 C99-Like Fast Enumeration Syntax
55261 id array = ...;
55270 id array = ...;
55280 but can save some typing.
55283 Objective-C.
55286 File: gcc.info, Node: Fast enumeration details, Next: Fast enumeration protocol, Prev: c99-like …
55288 8.9.3 Fast Enumeration Details
55291 Here is a more technical description with the gory details. Consider
55302 used as the collection object to iterate over. This means it is
55304 keyEnumerator]) ...'.
55309 in the batch. This is faster than a normal enumeration where
55311 enumeration").
55314 is set to 'nil' and the loop immediately terminates.
55318 set to the object, then 'STATEMENTS' are executed.
55322 expected.
55325 iterate over, 'OBJECT EXPRESSION' is set to 'nil'. This allows you
55330 to 'nil').
55337 something different, such as raising an exception.
55340 File: gcc.info, Node: Fast enumeration protocol, Prev: Fast enumeration details, Up: Fast enumer…
55342 8.9.4 Fast Enumeration Protocol
55365 the compiler in an identical way. This can be confusing and we
55367 instead.
55370 batches of objects. Each invocation of the method should retrieve the
55371 next batch of objects.
55375 batch as requested by the caller. The batch itself is returned in the
55376 'itemsPtr' field of the 'NSFastEnumerationState' struct.
55379 preallocated by the caller (on the stack) of size 'len'. In many cases
55381 do 'itemsPtr = objects'. But you don't have to; if your collection
55383 return them from there instead.
55387 the enumeration. In a simple array implementation, 'state' may keep
55389 be unused.
55392 keep track of mutations. It should point to a number; before working on
55394 not changed. If it has, a mutation has happened and the fast
55395 enumeration will abort. So, 'mutationsPtr' could be set to point to
55398 removed). Or, if you are content with less strict mutation checks, it
55401 collection has not been mutated.
55404 to be of type 'unsigned long'. They could also be declared to be of
55405 type 'unsigned int' and everything would still work.
55408 File: gcc.info, Node: Messaging with the GNU Objective-C runtime, Prev: Fast enumeration, Up: Ob…
55413 This section is specific for the GNU Objective-C runtime. If you are
55414 using a different runtime, you can skip it.
55417 designed to be portable, and so is based on standard C.
55420 separate steps. First, there is a call to the lookup function,
55422 'objc_msg_lookup_super ()'). This runtime function takes as argument
55424 'IMP', that is a pointer to the function implementing the method. The
55427 function pointed to it with the right arguments.
55432 appropriate function pointer type, and then it calls it.
55440 File: gcc.info, Node: Dynamically registering methods, Next: Forwarding hook, Up: Messaging with…
55442 8.10.1 Dynamically Registering Methods
55447 see if the class can dynamically register the method.
55458 in the case of a class method. If the class implements it, the runtime
55462 '+resolveInstanceMethod:' or '+resolveClassMethod:'.
55465 the class using 'class_addMethod') when they are first called. To do
55469 and return 'YES'. It should return 'NO' for methods that it does not
55470 dynamically registered at runtime.
55473 implemented or returns 'NO', the runtime then tries the forwarding hook.
55476 added to the GNU Objective-C runtime in GCC version 4.6.
55479 File: gcc.info, Node: Forwarding hook, Prev: Dynamically registering methods, Up: Messaging with…
55481 8.10.2 Forwarding Hook
55488 attempted and did not succeed in dynamically registering the method.
55492 types of 'objc_msg_lookup()'. When 'objc_msg_lookup()' cannot find a
55494 a method implementation to return. So, in practice
55497 method implementation can be found using the normal lookup.
55501 forwarding API, typically based around the 'forwardInvocation:' method.
55503 should not set this hook.
55508 and has that return type, and returns it to the caller. Creating this
55510 library such as 'libffi'.
55514 implementation. When the forwarding method implementation is called, it
55519 "Foundation" library. For example, the programmer may want to examine
55523 Objects or some other mechanism). When all this completes, the return
55525 caller.
55529 '__objc_msg_forward2' hook.
55533 that fails, it aborts the program. In future versions of the GNU
55534 Objective-C runtime, the runtime will immediately abort.
55537 File: gcc.info, Node: Compatibility, Next: Gcov, Prev: Objective-C, Up: Top
55547 assemblers, linkers, and language runtime support. Some ABIs are
55549 interested parties. Others are simply the way things are actually
55550 done by a particular set of tools.
55554 of the specifications enumerated by that ABI. A library conforms
55555 to an ABI if it is implemented according to that ABI. An
55558 specifically changes behavior specified by the ABI.
55562 arguments are passed and function results are returned.
55566 that can be used in the same program. The set of tools includes
55568 files, and debuggers. Binaries produced by different sets of tools
55569 are not interoperable unless they implement the same ABI. This
55571 from different vendors.
55576 of interoperability.
55580 whose behavior can vary from one implementation to another. Some
55582 others are not. The features that are not covered by an ABI
55583 generally affect how a program behaves, but not intercallability.
55588 compatibility.
55609 does not conform to the platform's default ABI. Other options cause
55611 not covered by an ABI. These options are provided for consistency with
55613 usual behavior of implementation-defined features for the platform. Be
55614 very careful about using such options.
55617 that cover C++ functionality are not yet common.
55622 any platform. This C++ ABI is also implemented by other compiler
55623 vendors on some platforms, notably GNU/Linux and BSD systems. We have
55626 make this difficult. Such problems could include different
55628 bugs in the implementation of the ABI in different compilers. GCC's
55630 compatible with the C++ ABI.
55634 runtime support. The runtime support is included in a C++ ABI, but
55635 there is no formal ABI for the Standard C++ Library. Two
55639 compiler and runtime support.
55645 the same C++ library. This requires specifying the location of the C++
55647 not being used. The location of GCC's C++ header files depends on how
55649 option. With default configuration options for G++ 3.3 the compile line
55656 files for that other library.
55660 default. The 'g++' driver, for example, tells the linker where to find
55662 files it needs, in the proper order.
55666 it is necessary to tell 'g++' the location and name of that library. It
55670 and '-nodefaultlibs'.
55673 File: gcc.info, Node: Gcov, Next: Gcov-tool, Prev: Compatibility, Up: Top
55679 coverage in your programs.
55683 * Gcov Intro:: Introduction to gcov.
55684 * Invoking Gcov:: How to use gcov.
55685 * Gcov and Optimization:: Using gcov with GCC optimization.
55686 * Gcov Data Files:: The files used by gcov.
55687 * Cross-profiling:: Data file relocation.
55690 File: gcc.info, Node: Gcov Intro, Next: Invoking Gcov, Up: Gcov
55695 'gcov' is a test coverage program. Use it in concert with GCC to
55697 and to discover untested parts of your program. You can use 'gcov' as a
55699 best affect your code. You can also use 'gcov' along with the other
55701 greatest amount of computing time.
55703 Profiling tools help you analyze your code's performance. Using a
55714 can look at each module to see which modules should be optimized.
55715 'gcov' helps you determine where to work on optimization.
55718 testsuites, to make sure software is actually good enough for a release.
55721 testsuite. Developers can then determine what kinds of test cases need
55723 final product.
55728 for 'hot spots' where the code is using a great deal of computer time.
55731 statement on each line. If you use complicated macros that expand to
55733 helpful--they only report on the line where the macro call appears. If
55735 inline functions to solve this problem.
55737 'gcov' creates a logfile called 'SOURCEFILE.gcov' which indicates how
55738 many times each line of a source file 'SOURCEFILE.c' has executed. You
55740 performance of your programs. 'gprof' gives timing information you can
55741 use along with the information you get from 'gcov'.
55743 'gcov' works only on code compiled with GCC. It is not compatible with
55744 any other profiling or test coverage mechanism.
55747 File: gcc.info, Node: Invoking Gcov, Next: Gcov and Optimization, Prev: Gcov Intro, Up: Gcov
55758 Write individual execution counts for every basic block. Normally
55759 gcov outputs execution counts only for the main blocks of a line.
55761 are not being executed.
55766 summary info to the standard output. This option allows you to see
55767 how often each branch in your program was taken. Unconditional
55768 branches will not be shown, unless the '-u' option is given.
55773 than the percentage of branches taken.
55777 Display the progress on the standard output.
55782 summary.
55787 without doing any further processing.
55792 does not require source code for generation. The JSON file is
55793 compressed with gzip compression algorithm and the files have
55794 '.gcov.json.gz' extension.
55864 Note that line numbers and column numbers number from 1. In the
55867 is likely to be fixed in the future.
55879 Branches are present only with -B option. Fields of the LINE
55910 Write counts in human readable format (like 24.6k).
55915 Use colors for lines of code that have zero coverage. We use red
55916 color for non-exceptional lines and cyan for exceptional. Same
55917 colors are used for basic blocks with '-a' option.
55921 Create long file names for included source files. For example, if
55922 the header file 'x.h' contains code, and was included in the file
55923 'a.c', then running 'gcov' on the file 'a.c' will produce an output
55924 file called 'a.c##x.h.gcov' instead of 'x.h.gcov'. This can be
55925 useful if 'x.h' is included in multiple source files and you want
55926 to see the individual contributions. If you use the '-p' option,
55928 names.
55932 Display demangled function names in output. The default is to show
55933 mangled function names.
55937 Do not create the 'gcov' output file.
55943 object path name. The '.gcno', and '.gcda' data files are searched
55944 for using this option. If a directory is specified, the data files
55946 its extension. If a file is specified here, the data files are
55947 named after that file, without its extension.
55952 '.gcov' files. Without this option, just the filename component is
55953 used. With this option, all directories are used, with '/'
55954 characters translated to '#' characters, '.' directory components
55955 removed and unremoveable '..' components renamed to '^'. This is
55956 useful if sourcefiles are in several different directories.
55961 Emit perf-like colored output for hot lines. Legend of the color
55962 scale is printed at the very beginning of the output file.
55967 (after source prefix elision). Absolute paths are usually system
55969 normally uninteresting.
55974 coverage files. This option is useful when building in a separate
55976 when determining the output file names. Note that this prefix
55978 absolute.
55982 Output to standard output instead of output files.
55987 branches. Unconditional branches are normally not interesting.
55992 exit without doing any further processing.
55996 Print verbose informations related to basic blocks and arcs.
56001 source files to create an output filename. This can lead to long
56002 filenames that can overflow filesystem limits. This option creates
56003 names of the form 'SOURCE-FILE##MD5.gcov', where the SOURCE-FILE
56006 otherwise. The option is an alternative to the -PRESERVE-PATHS on
56007 systems which have a filesystem limit.
56010 you invoked the compiler. Otherwise it will not be able to locate the
56011 source files. 'gcov' produces files called 'MANGLEDNAME.gcov' in the
56012 current directory. These contain the coverage information of the source
56013 file they correspond to. One '.gcov' file is produced for each source
56015 files. The MANGLEDNAME part of the output file name is usually simply
56017 or '-p' options are given. Refer to those options for details.
56020 each input file are summed. Typically you would invoke it with the same
56021 list of files as the final link of your executable.
56023 The '.gcov' files contain the ':' separated fields along with program
56024 source code. The format is
56029 command line option. The EXECUTION_COUNT is '-' for lines containing no
56030 code. Unexecuted lines are marked '#####' or '=====', depending on
56032 paths such as C++ exception handlers, respectively. Given the '-a'
56035 paths. Executed basic blocks having a statement with zero
56037 color with the '-k' option. This functionality is not supported in Ada.
56040 not needed - for instance if they are inlined everywhere. Such
56041 functions are marked with '-', which can be confusing. Use the
56044 EXECUTION_COUNT.
56046 Some lines of information at the start have LINE_NUMBER of zero. These
56053 unchanged. Use TAG to locate a particular preamble line.
56060 machine parsing too.
56063 are _exactly_ 0% and 100% respectively. Other values which would
56065 nearest non-boundary value.
56068 GCC option '--coverage'. This tells the compiler to generate additional
56071 extra profiling information needed by gcov. These additional files are
56072 placed in the directory where the object file is located.
56074 Running the program will cause profile output to be generated. For
56075 each source file compiled with '-fprofile-arcs', an accompanying '.gcda'
56076 file will be placed in the object file directory.
56080 each line. For example, if your program is called 'tmp.cpp', this is
56083 $ g++ --coverage tmp.cpp
56084 $ a.out
56085 $ gcov tmp.cpp -m
56086 File 'tmp.cpp'
56088 Creating 'tmp.cpp.gcov'
56090 The file 'tmp.cpp.gcov' contains output from 'gcov'. Here is a sample:
56092 -: 0:Source:tmp.cpp
56094 -: 0:Graph:tmp.gcno
56095 -: 0:Data:tmp.gcda
56098 -: 1:#include <stdio.h>
56134 1: 23: counter.inc();
56135 1: 24: counter.inc();
56150 Note that line 7 is shown in the report multiple times. First
56152 two belong to instances of class Foo constructors. As you can also see,
56154 has asterisk symbol.
56159 -: 0:Source:tmp.cpp
56161 -: 0:Graph:tmp.gcno
56162 -: 0:Data:tmp.gcda
56165 -: 1:#include <stdio.h>
56202 1: 23: counter.inc();
56204 1: 24: counter.inc();
56231 line of the block. A multi-line block will only contribute to the
56233 contain code, unless previous blocks end on those lines. The total
56235 execution counts for individual blocks that end on that line. After
56237 the '-b' option is given.
56240 after a line with no individual blocks. As you can see, line 33
56241 contains a basic block that was not executed.
56245 -: 0:Source:tmp.cpp
56247 -: 0:Graph:tmp.gcno
56248 -: 0:Data:tmp.gcda
56251 -: 1:#include <stdio.h>
56295 1: 23: counter.inc();
56299 1: 24: counter.inc();
56331 function's blocks were executed.
56334 basic block describing the branch or call that ends the basic block.
56336 if there are multiple basic blocks that end on that line. In this case,
56337 the branches and calls are each given a number. There is no simple way
56338 to map these branches and calls back to source constructs. In general,
56340 leftmost construct on the source line.
56344 number of times the branch was executed will be printed. Otherwise, the
56345 message "never executed" is printed.
56349 of times the call was executed will be printed. This will usually be
56351 thus may not return every time they are called.
56353 The execution counts are cumulative. If the example program were
56354 executed again without removing the '.gcda' file, the count for the
56356 the results of the previous run(s). This is potentially useful in
56357 several ways. For example, it could be used to accumulate data over a
56360 program runs.
56362 The data in the '.gcda' files is saved immediately before the program
56363 exits. For each source file compiled with '-fprofile-arcs', the
56364 profiling code first attempts to read in an existing '.gcda' file; if
56366 counts) it will ignore the contents of the file. It then adds in the
56367 new execution counts and finally writes the data to the file.
56370 File: gcc.info, Node: Gcov and Optimization, Next: Gcov Data Files, Prev: Invoking Gcov, Up: Gc…
56376 compile your program with a special GCC option '--coverage'. Aside from
56379 with optimization at the same time. On some machines the optimizer can
56380 eliminate some simple code lines by combining them with other lines.
56388 can be compiled into one instruction on some machines. In this case,
56390 each line because there isn't separate code for each line. Hence the
56400 executed 100 times. In one sense this result is correct, because there
56401 was only one instruction representing all four of these lines. However,
56403 many times the result was 1.
56405 Inlineable functions can create unexpected line counts. Line counts
56408 at all.
56411 copy of the function, in any object file that needs it. If 'fileA.o'
56412 and 'fileB.o' both contain out of line bodies of a particular inlineable
56413 function, they will also both contain coverage counts for that function.
56414 When 'fileA.o' and 'fileB.o' are linked together, the linker will, on
56416 that function, and remove or ignore the other. Unfortunately, it will
56417 not remove the coverage counters for the unused function body. Hence
56419 counts.
56422 each location might not be the same. For instance, a condition might
56423 now be calculable at compile time in some instances. Because the
56425 same source lines, the line counts themselves might seem inconsistent.
56429 interest. Calling '__gcov_reset(void)' will clear all profile counters
56431 information collected at that point to be dumped to '.gcda' output
56432 files. Instrumented applications use a static destructor with priority
56433 99 to invoke the '__gcov_dump' function. Thus '__gcov_dump' is executed
56435 registered with 'atexit'. If an executable loads a dynamic shared
56437 dump all profile data.
56440 manipulation and profile saving. Errors are printed into standard error
56441 output or 'GCOV_ERROR_FILE' file, if environment variable is used. In
56443 'GCOV_EXIT_AT_ERROR' environment variable. That can help users to find
56444 profile clashing which leads to a misleading profile.
56447 File: gcc.info, Node: Gcov Data Files, Next: Cross-profiling, Prev: Gcov and Optimization, Up: …
56452 'gcov' uses two files for profiling. The names of these files are
56454 with either '.gcno', or '.gcda'. The files contain coverage and profile
56455 data stored in a platform-independent format. The '.gcno' files are
56456 placed in the same directory as the object file. By default, the
56457 '.gcda' files are also stored in the same directory as the object file,
56458 but the GCC '-fprofile-dir' option may be used to store the '.gcda'
56459 files in a separate directory.
56461 The '.gcno' notes file is generated when the source file is compiled
56462 with the GCC '-ftest-coverage' option. It contains information to
56464 blocks.
56466 The '.gcda' count data file is generated when a program containing
56467 object files built with the GCC '-fprofile-arcs' option is executed. A
56468 separate '.gcda' file is created for each object file compiled with this
56469 option. It contains arc transition counts, value profile counts, and
56470 some summary information.
56472 It is not recommended to access the coverage files directly. Consumers
56474 '--json-format' option.
56477 File: gcc.info, Node: Cross-profiling, Prev: Gcov Data Files, Up: Gcov
56482 Running the program will cause profile output to be generated. For each
56483 source file compiled with '-fprofile-arcs', an accompanying '.gcda' file
56484 will be placed in the object file directory. That implicitly requires
56486 same absolute directory structure on the target system. The program
56488 present.
56494 object file. Prefix can be absolute, or relative. The default is
56495 no prefix.
56498 strip off the hardwired absolute paths. Default value is 0.
56502 absolute paths.
56504 For example, if the object file '/user/build/foo.o' was built with
56506 '/user/build/foo.gcda' when running on the target system. This will
56508 create it. This can be overcome by, for example, setting the
56509 environment as 'GCOV_PREFIX=/target/run' and 'GCOV_PREFIX_STRIP=1'.
56510 Such a setting will name the data file '/target/run/build/foo.gcda'.
56514 the 'gcov' tool.
56517 File: gcc.info, Node: Gcov-tool, Next: Gcov-dump, Prev: Gcov, Up: Top
56523 or process gcda profile files offline.
56527 * Gcov-tool Intro:: Introduction to gcov-tool.
56528 * Invoking Gcov-tool:: How to use gcov-tool.
56531 File: gcc.info, Node: Gcov-tool Intro, Next: Invoking Gcov-tool, Up: Gcov-tool
56536 'gcov-tool' is an offline tool to process gcc's gcda profile files.
56540 * merge two sets of profiles with weights.
56542 * read one set of profile and rewrite profile contents. One can
56543 scale or normalize the count values.
56547 to merge them. One can specify the weight to factor in the
56548 relative importance of each input.
56551 while maintaining the consistency of the summary and the histogram.
56554 the majority code as the runtime library.
56557 contain slight different values from the online merged profile. Here
56561 after merging the counters. The resulting histogram, therefore, is
56562 precise. The online merging does not have this capability - the
56564 approximation.
56567 operation. The value depends on the link list order of gcov-info
56568 objects. This order is different in gcov-tool from that in the
56569 online merge. It's expected to have different summary checksums.
56571 checksum anywhere.
56574 value profile are runtime dependent, like heap addresses. It's
56575 normal to see some difference in these kind of counters.
56578 File: gcc.info, Node: Invoking Gcov-tool, Prev: Gcov-tool Intro, Up: Gcov-tool
56590 exit without doing any further processing.
56595 and exit without doing any further processing.
56598 Merge two profile directories.
56602 Set the output profile directory. Default output directory
56603 name is MERGED_PROFILE.
56607 Set the verbose mode.
56612 respectively. The default weights are 1 for both.
56616 directory.
56620 Normalize the profile. The specified value is the max counter
56621 value in the new profile.
56625 Set the output profile directory. Default output name is
56626 REWRITE_PROFILE.
56630 Scale the profile counters. The specified value can be in
56632 2, 2/3, and 5/3.
56636 Set the verbose mode.
56640 directories. The overlap score is computed based on the arc
56641 profiles. It is defined as the sum of min (p1_counter[i] /
56645 1 and profile 2, respectively.
56649 Print function level overlap score.
56653 Print full gcda filename.
56657 Only print info for hot objects/functions.
56661 Print object level overlap score.
56665 Set the threshold for hot counter value.
56669 Set the verbose mode.
56672 File: gcc.info, Node: Gcov-dump, Next: lto-dump, Prev: Gcov-tool, Up: Top
56679 * Gcov-dump Intro:: Introduction to gcov-dump.
56680 * Invoking Gcov-dump:: How to use gcov-dump.
56683 File: gcc.info, Node: Gcov-dump Intro, Next: Invoking Gcov-dump, Up: Gcov-dump
56689 content of gcda and gcno profile files offline.
56692 File: gcc.info, Node: Invoking Gcov-dump, Prev: Gcov-dump Intro, Up: Gcov-dump
56697 Usage: gcov-dump [OPTION] ... GCOVFILES
56704 exit without doing any further processing.
56708 Dump content of records.
56712 Dump positions of records.
56717 and exit without doing any further processing.
56720 File: gcc.info, Node: lto-dump, Next: Trouble, Prev: Gcov-dump, Up: Top
56722 13 'lto-dump'--Tool for dumping LTO object files.
56727 * lto-dump Intro:: Introduction to lto-dump.
56728 * Invoking lto-dump:: How to use lto-dump.
56731 File: gcc.info, Node: lto-dump Intro, Next: Invoking lto-dump, Up: lto-dump
56737 time optimization object files.
56740 File: gcc.info, Node: Invoking lto-dump, Prev: lto-dump Intro, Up: lto-dump
56745 Usage: lto-dump [OPTION] ... OBJFILES
56750 Dumps list of details of functions and variables.
56753 Dump the demangled output.
56756 Dump only the defined symbols.
56759 Dump initial values of the variables.
56762 Sort the symbols alphabetically.
56765 Sort the symbols according to size.
56768 Dump the symbols in reverse order.
56771 Dump the symbols in order of occurrence.
56774 Dump the details of specific symbol.
56777 Dump the details of LTO objects.
56780 Dump the statistics of tree types.
56783 Dump the statistics of trees.
56786 Dump the statistics of gimple statements.
56789 For deciding the optimization level of body.
56792 Dump the specific gimple body.
56795 Display the dump tool help.
56798 File: gcc.info, Node: Trouble, Next: Bugs, Prev: lto-dump, Up: Top
56803 This section describes known problems that affect users of GCC. Most of
56804 these are not GCC bugs per se--if they were, we would fix them. But the
56805 result for a user may be like the result of a bug.
56809 where people's opinions differ as to what is best.
56813 * Actual Bugs:: Bugs we will fix later.
56815 and with certain linkers, assemblers and debuggers.
56816 * Incompatibilities:: GCC is incompatible with traditional C.
56817 * Fixed Headers:: GCC uses corrected versions of system header files.
56818 This is necessary, but doesn't always work smoothly.
56820 compliant with the ISO C standard.
56821 * Disappointments:: Regrettable things we cannot change, but not quite bugs.
56822 * C++ Misunderstandings:: Common misunderstandings with GNU C++.
56823 * Non-bugs:: Things we think are right, but some others disagree.
56825 and which get errors.
56828 File: gcc.info, Node: Actual Bugs, Next: Interoperation, Up: Trouble
56835 unmounted while 'fixincludes' is running. This would seem to be a
56836 bug in the automounter. We don't know any good way to work around
56837 it.
56840 File: gcc.info, Node: Interoperation, Next: Incompatibilities, Prev: Actual Bugs, Up: Trouble
56847 and debuggers on certain systems.
56851 with object files generated by another C++ compiler.
56853 An area where the difference is most apparent is name mangling.
56855 from more subtle problems. Compilers differ as to many internal
56858 function calls are handled. If the name encoding were made the
56860 other compilers--but the programs would then crash when run.
56862 at run time.
56866 in C++) not to be run.
56869 boundary, and it expects every 'double' to be so aligned. The Sun
56871 exception: function arguments of type 'double' may not be aligned.
56876 pointer may cause a fatal signal.
56879 with GCC. Another solution is to modify the function that is
56881 local variables are always properly aligned. A third solution is
56894 u.i[0] = p->i[0];
56895 u.i[1] = p->i[1];
56897 return u.d;
56900 Storing into the pointer can be done likewise with the same union.
56902 * On Solaris, the 'malloc' function in the 'libmalloc.a' library may
56903 allocate memory that is only 4 byte aligned. Since GCC on the
56906 'libmalloc.a' library.
56908 The solution is to not use the 'libmalloc.a' library. Use instead
56909 'malloc' and related functions from 'libc.a'; they do not have this
56910 problem.
56913 compiled with GCC. Specifically, it fails to work on functions
56914 that use 'alloca' or variable-size arrays. This is because GCC
56915 doesn't generate HP-UX unwind descriptors for such functions. It
56916 may even be impossible to generate them.
56919 use the preliminary GNU tools.
56922 assembler. GAS for the PA does not have this problem.
56925 functions will not work when using the HP assembler. There simply
56927 static functions when using the HP assembler. GAS for the PA does
56928 not have this problem.
56932 bounds unconditional branch offset. This used to occur more often
56933 in previous versions of GCC, but is now exceptionally rare. If you
56935 smaller.
56941 frame >= 8192 may cause conflict.
56943 These warnings are harmless and can be safely ignored.
56947 displacement that is too large. If you should run into it, you can
56948 work around by making your function smaller.
56950 * The 'libstdc++.a' library in GCC relies on the SVR4 dynamic linker
56952 applications, especially necessary for C++ streams functionality.
56954 dynamic linking. 'libstdc++.a' is built on AIX with
56955 "runtime-linking" enabled so that symbol merging can occur. To
56956 utilize this feature, the application linked with 'libstdc++.a'
56957 must include the '-Wl,-brtl' flag on the link line. G++ cannot
56960 her application. Applications are not required to use the
56961 '-Wl,-brtl' flag on the link line--the rest of the 'libstdc++.a'
56963 continue to function correctly.
56966 functions invoked by 'libstdc++.a' with "runtime-linking" enabled
56967 on AIX. To accomplish this the application must be linked with
56969 exported by the application ('-Wl,-brtl,-bE:exportfile').
56972 of the United States. Compilers and assemblers use NLS to support
56974 floating-point numbers ('.' vs ',' for separating decimal
56975 fractions). There have been problems reported where the library
56977 that the assembler accepts. If you have this problem, set the
56978 'LANG' environment variable to 'C' or 'En_US'.
56982 restriction in the IBM assembler. GAS supports these identifiers.
56985 File: gcc.info, Node: Incompatibilities, Next: Fixed Headers, Prev: Interoperation, Up: Trouble
56991 (non-ISO) versions of C.
56993 * GCC normally makes string constants read-only. If several
56995 copy of the string.
56998 constant argument. The function 'mktemp' always alters the string
56999 its argument points to.
57003 or input. This is because 'sscanf' incorrectly tries to write into
57004 the string constant. Likewise 'fscanf' and 'scanf'.
57008 purposes instead of string constants.
57010 * '-2147483648' is positive.
57013 (following the ISO C rules) its data type is 'unsigned long int'.
57014 Negating this value yields 2147483648 again.
57017 string constants. For example, the following macro in GCC
57021 will produce output '"a"' regardless of what the argument A is.
57024 guaranteed to remain valid are those declared 'volatile'. This is
57025 a consequence of automatic register allocation. Consider this
57039 /* 'longjmp (j)' may occur in 'fun3'. */
57044 'longjmp' occurs. If 'a' is allocated in a register, then its
57046 in it.
57049 warning when GCC thinks such a problem might be possible.
57052 arguments do not work with GCC. For example, a program like this
57059 ISO C does not permit such a construct.
57062 (i.e. started in an include file and ended in the including file).
57065 apply only to the block containing the declaration. In other
57067 same place.
57070 rest of the file even if it happens within a block.
57072 * In traditional C, you can combine 'long', etc., with a typedef
57079 require an explicit 'int'.
57081 * PCC allows typedef names to be used as function parameters.
57089 * GCC treats all characters of identifiers as significant. According
57091 significant, although more may be used.". Also according to K&R-1
57093 first character must be a letter. The underscore _ counts as a
57094 letter.", but GCC also allows dollar signs in identifiers.
57097 operators such as '+='. GCC, following the ISO standard, does not
57098 allow this.
57101 preprocessing conditionals that fail. Some programs have English
57104 error. For example, this code would produce an error:
57107 You can't expect this to work.
57111 actual C comment delimited by '/*...*/'.
57113 * Many user programs contain the declaration 'long time ();'. In the
57116 declared it to return. But in systems with ISO C headers, 'time'
57118 'long', then 'long time ();' is erroneous.
57121 headers ('<time.h>' on systems with ISO C headers) and not to
57123 that to use 'time_t' as the return type of 'time'.
57126 double. GCC actually returns a 'float'. If you are concerned with
57128 'double'; you might as well say what you mean.
57132 versions of Unix. As a result, code compiled with GCC cannot call
57133 a structure-returning function compiled with PCC, and vice versa.
57136 1, 2, 4 or 8 bytes long is returned like a scalar. A structure or
57139 it is passed on the stack). The target hook
57140 'TARGET_STRUCT_VALUE_RTX' tells GCC where to pass this address.
57145 were a pointer value. The caller must copy the data from that
57146 memory area to the place where the value is wanted. GCC does not
57147 use this method because it is slower and nonreentrant.
57150 structure and union returning. GCC on most of these machines uses
57152 memory, but still returns small structures and unions in registers.
57155 and union returning with the option '-fpcc-struct-return'.
57159 operator. Actually, this string is a single "preprocessing token".
57160 Each such token must correspond to one token in C. Since this does
57161 not, GCC prints an error message. Although it may appear obvious
57163 standard specifically requires that this be treated as erroneous.
57168 character sequences. (In strict C90 mode, the sequences 'p+',
57169 'p-', 'P+' and 'P-' cannot appear in preprocessing numbers.)
57172 of the minus sign. This whitespace will end the preprocessing
57173 number.
57176 File: gcc.info, Node: Fixed Headers, Next: Standard Libraries, Prev: Incompatibilities, Up: Tro…
57181 GCC needs to install corrected versions of some system header files.
57183 work with GCC unless they are changed. Some have bugs, some are
57185 compilers.
57188 files, by running a program called 'fixincludes'. Normally, you don't
57189 need to pay attention to this. But there are cases where it doesn't do
57190 the right thing automatically.
57194 automatically updated. They can be updated using the 'mkheaders'
57195 script installed in 'LIBEXECDIR/gcc/TARGET/VERSION/install-tools/'.
57198 symbolic links in certain places. This makes it possible to share
57200 the system on different machine models.
57205 it.
57209 so as to use the proper set, but you'll have to do this by hand.
57212 File: gcc.info, Node: Standard Libraries, Next: Disappointments, Prev: Fixed Headers, Up: Troub…
57217 GCC by itself attempts to be a conforming freestanding implementation.
57219 what this means. Beyond the library facilities required of such an
57221 the operating system. If that C library doesn't conform to the C
57223 '-Wall') that you don't expect.
57225 For example, the 'sprintf' function on SunOS 4.1.3 returns 'char *'
57226 while the C standard says that 'sprintf' returns an 'int'. The
57229 return 'char *'.
57232 GCC does not provide one. The GNU C library (called 'glibc') provides
57235 though some very old versions did. Version 2.2 of the GNU C library
57236 includes nearly complete C99 support. You could also ask your operating
57237 system vendor if newer libraries are available.
57240 File: gcc.info, Node: Disappointments, Next: C++ Misunderstandings, Prev: Standard Libraries, U…
57246 way around them.
57249 compile with optimization.
57252 existence. There is no way to tell the debugger how to compute the
57254 would be desirable anyway. So GCC simply does not mention the
57255 eliminated variable when it writes debugging information.
57258 executable and your source code, when you use optimization.
57265 struct mumble { ... };
57268 { ... }
57271 in the prototype is limited to the argument list containing it. It
57274 in different scopes.
57277 that is available to be inherited. Thus, the definition and the
57278 prototype do not match, and you get an error.
57281 specifies. It is easy enough for you to make your code work by
57282 moving the definition of 'struct mumble' above the prototype. It's
57284 the example shown above.
57287 larger objects, such as a byte or a word. You cannot rely on what
57290 usage.
57293 accessed, use volatile but do not use bit-fields.
57296 system header files. They install corrected copies of various
57298 look for them. The scripts adapt to various systems by searching
57300 about.
57303 arranges to update the corrected header files. They can be updated
57305 'LIBEXECDIR/gcc/TARGET/VERSION/install-tools/'.
57308 results if you test the precise values of floating point numbers.
57310 a NaN is not equal to itself. This results from the fact that the
57312 in a 'double' in memory. Compiled code moves values between memory
57314 into memory truncates them.
57317 option (*note Optimize Options::).
57321 of templates will not be generated.
57325 linker prunes unreferenced symbols. This is necessary to prevent
57328 occur. All static constructors and destructors found will be
57330 used by the program. This may lead to both increased executable
57331 size and unexpected symbol references.
57334 File: gcc.info, Node: C++ Misunderstandings, Next: Non-bugs, Prev: Disappointments, Up: Trouble
57340 definition (the ISO C++ standard) was only recently completed. As a
57342 behavior is correct. This section discusses some areas that frequently
57343 give rise to questions of this sort.
57353 File: gcc.info, Node: Static Definitions, Next: Name lookup, Up: C++ Misunderstandings
57355 14.7.1 Declare _and_ Define Static Members
57359 static member; you must also _define_ it. For example:
57363 ...
57369 named 'Foo::bar', and a member function named 'Foo::method'. But you
57370 still need to define _both_ 'method' and 'bar' elsewhere. According to
57376 Other C++ compilers may not correctly implement the standard behavior.
57380 static data members that lack definitions.
57383 File: gcc.info, Node: Name lookup, Next: Temporaries, Prev: Static Definitions, Up: C++ Misunde…
57385 14.7.2 Name Lookup, Templates, and Accessing Members of Base Classes
57390 a template function or class.(1) Only names that are dependent are
57391 looked up at the point of instantiation. For example, consider
57401 t.bar(); // 3
57409 on the type of 'T'. The compiler will thus require that they are
57412 respectively. In particular, it will convert the integer value to a
57413 'double' when passing it to '::foo(double)'.
57419 instantiating it. In particular, if you instantiate 'A::f<int>', the
57421 if after the declaration of 'struct A'.
57424 called two-stage (or dependent) name lookup. G++ implements it since
57425 version 3.4.
57428 different from non-template codes. The most common is probably this:
57440 the global scope here). It will not look into the base class, since
57443 would refer to. If there is no global variable 'i', then you will get
57444 an error message.
57448 class is known. For this, you need to access 'i' in a dependent
57450 'Derived<T>*', so is obviously dependent), or using 'Base<T>::i'.
57452 'using'-declaration.
57467 otherwise specified that the call should be in a dependent context).
57469 the one in the base class is not visible until instantiation time. The
57472 x.cc: In member function `int Derived<T>::g()':
57473 x.cc:6: error: there are no arguments to `f' that depend on a template
57475 x.cc:6: error: (if you use `-fpermissive', G++ will accept your code, but
57478 To make the code valid either use 'this->f()', or 'Base<T>::f()'.
57482 instantiation time, as if it were a dependent call. We do not recommend
57485 variables in base classes are used (as in the example above).
57488 these examples wrong and accept above code without an error. Those
57489 compilers do not implement two-stage name lookup correctly.
57494 depend on the type or value of template parameters. This shorter term
57495 will also be used in the rest of this section.
57498 File: gcc.info, Node: Temporaries, Next: Copy Assignment, Prev: Name lookup, Up: C++ Misunderst…
57500 14.7.3 Temporaries May Vanish Before You Expect
57504 temporary object. The compiler may very well delete the object before
57505 you expect it to, leaving a pointer to garbage. The most common place
57509 requires you to call the 'c_str' member function. However, any class
57511 to this problem.
57523 const char *p = strfunc().c_str();
57524 ...
57526 ...
57532 call 'c_str' repeatedly. However, the temporary string created by the
57534 'p' is left pointing to freed memory.
57538 along with normal local variables. However, the GNU C++ behavior is
57540 temporaries it is not portable.
57543 forces it to remain until the end of the scope of the name. For
57547 charfunc (tmp.c_str ());
57550 File: gcc.info, Node: Copy Assignment, Prev: Temporaries, Up: C++ Misunderstandings
57552 14.7.4 Implicit Copy-Assignment for Virtual Bases
57556 belongs to each full object. Also, the constructors and destructors are
57557 invoked only once, and called from the most-derived class. However,
57558 such objects behave unspecified when being assigned. For example:
57565 name = strdup (other.name);
57590 constructing or copy-constructing a Derived object. It is unspecified
57593 in the example).
57596 all direct bases, then assign all members. In that algorithm, the
57597 virtual base subobject can be encountered more than once. In the
57599 'val', 'name' again, and 'bval'.
57602 copy-assignment operator removes any uncertainties. With such an
57604 subobject is assigned.
57607 File: gcc.info, Node: Non-bugs, Next: Warnings and Errors, Prev: C++ Misunderstandings, Up: Tro…
57613 do not make because we think GCC is better without them.
57616 an old-fashioned definition and no prototype.
57620 definition. The only way to check all calls reliably is to add a
57621 prototype for the function. But adding a prototype eliminates the
57622 motivation for this feature. So the feature is not worthwhile.
57625 count.
57627 Shift count operands are probably signed more often than unsigned.
57628 Warning about this would cause far more annoyance than good.
57630 * Warning about assigning a signed value to an unsigned variable.
57633 cause more annoyance than good.
57635 * Warning when a non-void function value is ignored.
57638 programs choose to ignore. One obvious example is 'printf'.
57640 clutter programs with dozens of casts to 'void'. Such casts are
57641 required so frequently that they become visual noise. Writing
57643 information about the intentions of the programmer. For functions
57646 Attributes::).
57648 * Making '-fshort-enums' the default.
57651 C compilers. And it doesn't seem very important, given that you
57652 can get the same result in other ways. The case where it matters
57654 and in that case you can specify a field width explicitly.
57657 "the ABI standard" says to do so.
57660 bit-field declared plain 'int' is signed or not. This in effect
57661 creates two alternative dialects of C.
57665 with '-funsigned-bitfields'. However, this leaves open the
57666 question of which dialect to use by default.
57669 because this is simplest. Since 'int' is the same as 'signed int'
57671 bit-fields as well.
57675 unsigned. It is a mistake, however, to say anything about this
57676 issue in an ABI. This is because the handling of plain bit-fields
57677 distinguishes two dialects of C. Both dialects are meaningful on
57678 every type of machine. Whether a particular object file was
57681 same data structures.
57684 dialects. The program stands a chance to work on most any machine
57685 if it is compiled with the proper dialect. It is unlikely to work
57686 at all if compiled with the wrong dialect.
57689 environment that is uniform across machines. These users would be
57691 on certain machines.
57694 machine type. On these occasions, the users would benefit if the
57696 other compilers on that machine. But such applications are rare.
57698 cannot possibly benefit from this kind of compatibility.
57701 fashion on all types of machines (by default).
57704 on all machines. If, for example, this becomes a universal de
57705 facto standard, it would make sense for GCC to go along with it.
57706 This is something to be considered in the future.
57709 indicate explicitly in each bit-field whether it is signed or not.
57711 both C dialects.)
57713 * Undefining '__STDC__' when '-ansi' is not used.
57715 Currently, GCC defines '__STDC__' unconditionally. This provides
57716 good results in practice.
57720 prototypes or ISO token concatenation. Since plain 'gcc' supports
57722 "yes".
57725 certain library facilities. This is actually incorrect usage in an
57728 does not have the library facilities. 'gcc -ansi -pedantic' is a
57731 ISO C library.
57735 the standard. This is illogical. The standard is a standard for
57737 other compilers such as plain 'gcc'. Whatever the ISO C standard
57739 for pragmatic reasons, not as a requirement.
57743 option for strict conformance to some version of ISO C. On some
57746 conformance to the C Standard. GCC follows the host convention
57748 files it follows the usual GNU C convention.
57750 * Undefining '__STDC__' in C++.
57754 used. These programs must test '__STDC__' to determine what kind
57757 fashion.
57759 These programs work properly with GNU C++ if '__STDC__' is defined.
57760 They would not work otherwise.
57763 ISO C but not in traditional C. Many of these header files can
57764 work without change in C++ provided '__STDC__' is defined. If
57766 be changed to test explicitly for C++ as well.
57768 * Deleting "empty" loops.
57773 programs run any faster.
57776 cannot produce an empty one. This held for carefully written C
57778 for carefully written C++ or with more powerful optimizers. Thus
57781 taken to execute them, of course). In case the loop can be proved
57782 to be finite, GCC will also remove the loop itself.
57786 'some_expression' can provably not change any global state.
57797 that summation, so the accumulation can be removed.
57800 compiler.
57803 effects. For example, a function call like this may very well
57813 particular order. Either increment might happen first. 'func'
57815 2'.
57817 * Making certain warnings into errors by default.
57820 produce an error message for a certain program.
57823 programs, but a warning is defined by GCC to count as a diagnostic.
57825 support. If testsuites call this "failure", they should be run
57827 warnings into errors.
57830 File: gcc.info, Node: Warnings and Errors, Prev: Non-bugs, Up: Trouble
57836 warnings. Each kind has a different purpose:
57839 program. GCC reports errors with the source file name and line
57840 number where the problem is apparent.
57843 indicate a problem, although compilation can (and does) proceed.
57846 messages.
57850 features; or the use of nonstandard features of GNU C or C++. Many
57852 options (for instance, '-Wall' requests a variety of useful warnings).
57856 (for instance) it fails to conform to a standard. In some cases,
57858 forbidden, and a diagnostic _must_ be issued by a conforming compiler.
57860 '-pedantic-errors' says to make them errors instead. This does not mean
57861 that _all_ non-ISO constructs get warnings or errors.
57864 more detail on these and related command-line options.
57867 File: gcc.info, Node: Bugs, Next: Service, Prev: Trouble, Up: Top
57872 Your bug reports play an essential role in making GCC reliable.
57875 already known. *Note Trouble::. If it isn't known, then you should
57876 report the problem.
57880 * Criteria: Bug Criteria. Have you really found a bug?
57881 * Reporting: Bug Reporting. How to report a bug effectively.
57884 File: gcc.info, Node: Bug Criteria, Next: Bug Reporting, Up: Bugs
57893 is a compiler bug. Reliable compilers never crash.
57898 ordinarily prevent the assembler from being run.
57901 correctly execute the input source code, that is a compiler bug.
57905 give the desired results with another C or C++ compiler.
57909 results. But the value of the function is undefined if 'return' is
57910 omitted; it is not a bug when GCC produces different results.
57913 operators, as in 'f (*p++, *p++)'. Your previous compiler might
57915 interpret it another way. Neither compiler is wrong. The bug is
57916 in your code.
57919 should be easy to check for these things. If your program is
57920 correct and well defined, you have found a compiler bug.
57923 a compiler bug.
57926 input, that is a compiler bug. However, you should note that your
57928 extension" or "support for traditional practice".
57932 any case.
57935 File: gcc.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Bugs
57941 <https://gcc.gnu.org/bugs/>.
57944 File: gcc.info, Node: Service, Next: Contributing, Prev: Bugs, Up: Top
57952 * Send a message to a suitable network mailing list. First try
57953 <gcc-help@gcc.gnu.org> (for help installing or using GCC), and if
57954 that brings no response, try <gcc@gcc.gnu.org>. For help changing
57955 GCC, ask <gcc@gcc.gnu.org>. If you think you have found a bug in
57957 Reporting::.
57960 fee. The service directory is found at
57961 <https://www.fsf.org/resources/service>.
57963 For further information, see <http://gcc.gnu.org/faq.html#support>.
57966 File: gcc.info, Node: Contributing, Next: Funding, Prev: Service, Up: Top
57973 <http://gcc.gnu.org/git.html>). Source and binary snapshots are also
57974 available for FTP; see <http://gcc.gnu.org/snapshots.html>.
57979 <http://gcc.gnu.org/contribute.html>
57980 <http://gcc.gnu.org/contributewhy.html>
57983 duplication of effort. Suggested projects are listed at
57984 <http://gcc.gnu.org/projects/>.
57987 File: gcc.info, Node: Funding, Next: GNU Project, Prev: Contributing, Up: Top
57994 development. The most effective approach known is to encourage
57995 commercial redistributors to donate.
57999 to free software developers--the Free Software Foundation, and others.
58002 it from them. So when you compare distributors, judge them partly by
58003 how much they give to free software development. Show distributors they
58004 must compete to be the one who gives the most.
58008 for each disk sold." Don't be satisfied with a vague promise, such as
58010 for comparison.
58014 can greatly alter what fraction of the sales price counts as profit. If
58016 than a dollar; it might be a few cents, or nothing at all.
58018 Some redistributors do development work themselves. This is useful
58020 and what kind. Some kinds of development make much more long-term
58021 difference than others. For example, maintaining a separate version of
58023 program for the whole community contributes much. Easy new ports
58026 more; major new features or packages contribute the most.
58030 assure a steady flow of resources into making more free software.
58032 Copyright (C) 1994 Free Software Foundation, Inc.
58034 without royalty; alteration is not permitted.
58037 File: gcc.info, Node: GNU Project, Next: Copying, Prev: Funding, Up: Top
58043 operating system which is free software: the GNU system. (GNU is a
58044 recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".)
58047 they are more accurately called GNU/Linux systems.
58050 <http://www.gnu.org/>
58051 <http://www.gnu.org/gnu/linux-and-gnu.html>
58054 File: gcc.info, Node: Copying, Next: GNU Free Documentation License, Prev: GNU Project, Up: Top
58061 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
58064 license document, but changing it is not allowed.
58070 and other kinds of works.
58073 to take away your freedom to share and change the works. By contrast,
58076 software for all its users. We, the Free Software Foundation, use the
58078 any other work released this way by its authors. You can apply it to
58079 your programs, too.
58081 When we speak of free software, we are referring to freedom, not price.
58086 programs, and that you know you can do these things.
58089 these rights or asking you to surrender the rights. Therefore, you have
58091 you modify it: responsibilities to respect the freedom of others.
58095 you received. You must make sure that they, too, receive or can get the
58096 source code. And you must show them these terms so they know their
58097 rights.
58101 you legal permission to copy, distribute and/or modify it.
58104 that there is no warranty for this free software. For both users' and
58107 authors of previous versions.
58111 can do so. This is fundamentally incompatible with the aim of
58112 protecting users' freedom to change the software. The systematic
58114 use, which is precisely where it is most unacceptable. Therefore, we
58116 products. If such problems arise substantially in other domains, we
58118 of the GPL, as needed to protect the freedom of users.
58120 Finally, every program is threatened constantly by software patents.
58124 make it effectively proprietary. To prevent this, the GPL assures that
58125 patents cannot be used to render the program non-free.
58128 modification follow.
58133 0. Definitions.
58136 License.
58139 kinds of works, such as semiconductor masks.
58142 License. Each licensee is addressed as "you". "Licensees" and
58143 "recipients" may be individuals or organizations.
58147 making of an exact copy. The resulting work is called a "modified
58148 version" of the earlier work or a work "based on" the earlier work.
58151 based on the Program.
58156 a computer or modifying a private copy. Propagation includes
58159 well.
58162 parties to make or receive copies. Mere interaction with a user
58164 conveying.
58172 License. If the interface presents a list of user commands or
58174 criterion.
58176 1. Source Code.
58179 for making modifications to it. "Object code" means any non-source
58180 form of a work.
58186 language.
58194 form. A "Major Component", in this context, means a major
58198 interpreter used to run it.
58203 to control those activities. However, it does not include the
58206 those activities but which are not part of the work. For example,
58212 parts of the work.
58216 Source.
58219 same work.
58221 2. Basic Permissions.
58225 conditions are met. This License explicitly affirms your unlimited
58226 permission to run the unmodified Program. The output from running
58228 its content, constitutes a covered work. This License acknowledges
58230 copyright law.
58234 remains in force. You may convey covered works to others for the
58238 material for which you do not control copyright. Those thus making
58242 their relationship with you.
58245 the conditions stated below. Sublicensing is not allowed; section
58246 10 makes it unnecessary.
58248 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
58254 such measures.
58262 rights to forbid circumvention of technological measures.
58264 4. Conveying Verbatim Copies.
58272 give all recipients a copy of this License along with the Program.
58275 and you may offer support or warranty protection for a fee.
58277 5. Conveying Modified Source Versions.
58284 a. The work must carry prominent notices stating that you
58285 modified it, and giving a relevant date.
58287 b. The work must carry prominent notices stating that it is
58289 section 7. This requirement modifies the requirement in
58290 section 4 to "keep intact all notices".
58292 c. You must license the entire work, as a whole, under this
58293 License to anyone who comes into possession of a copy. This
58296 its parts, regardless of how they are packaged. This License
58299 received it.
58301 d. If the work has interactive user interfaces, each must display
58304 Notices, your work need not make them do so.
58312 compilation's users beyond what the individual works permit.
58314 License to apply to the other parts of the aggregate.
58316 6. Conveying Non-Source Forms.
58323 a. Convey the object code in, or embodied in, a physical product
58326 customarily used for software interchange.
58328 b. Convey the object code in, or embodied in, a physical product
58339 charge.
58341 c. Convey individual copies of the object code with a copy of the
58342 written offer to provide the Corresponding Source. This
58345 in accord with subsection 6b.
58347 d. Convey the object code by offering access from a designated
58350 place at no further charge. You need not require recipients
58351 to copy the Corresponding Source along with the object code.
58356 object code saying where to find the Corresponding Source.
58359 needed to satisfy these requirements.
58361 e. Convey the object code using peer-to-peer transmission,
58364 general public at no charge under subsection 6d.
58368 not be included in conveying the object code work.
58373 incorporation into a dwelling. In determining whether a product is
58375 coverage. For a particular product received by a particular user,
58379 expected to use, the product. A product is a consumer product
58382 only significant mode of use of the product.
58387 User Product from a modified version of its Corresponding Source.
58390 interfered with solely because modification has been made.
58398 section must be accompanied by the Installation Information. But
58401 Product (for example, the work has been installed in ROM).
58407 modified or installed. Access to a network may be denied when the
58410 communication across the network.
58416 or key for unpacking, reading or copying.
58418 7. Additional Terms.
58422 conditions. Additional permissions that are applicable to the
58425 law. If additional permissions apply only to part of the Program,
58428 the additional permissions.
58432 of it. (Additional permissions may be written to require their own
58433 removal in certain cases when you modify the work.) You may place
58435 for which you have or can give appropriate copyright permission.
58442 a. Disclaiming warranty or limiting liability differently from
58445 b. Requiring preservation of specified reasonable legal notices
58449 c. Prohibiting misrepresentation of the origin of that material,
58453 d. Limiting the use for publicity purposes of names of licensors
58456 e. Declining to grant rights under trademark law for use of some
58459 f. Requiring indemnification of licensors and authors of that
58463 assumptions directly impose on those licensors and authors.
58466 restrictions" within the meaning of section 10. If the Program as
58469 restriction, you may remove that term. If a license document
58473 restriction does not survive such relicensing or conveying.
58478 where to find the applicable terms.
58482 the above requirements apply either way.
58484 8. Termination.
58487 provided under this License. Any attempt otherwise to propagate or
58490 third paragraph of section 11).
58497 reasonable means prior to 60 days after the cessation.
58504 after your receipt of the notice.
58508 under this License. If your rights have been terminated and not
58510 for the same material under section 10.
58512 9. Acceptance Not Required for Having Copies.
58515 run a copy of the Program. Ancillary propagation of a covered work
58518 acceptance. However, nothing other than this License grants you
58519 permission to propagate or modify any covered work. These actions
58520 infringe copyright if you do not accept this License. Therefore,
58522 acceptance of this License to do so.
58524 10. Automatic Licensing of Downstream Recipients.
58528 propagate that work, subject to this License. You are not
58530 License.
58534 organization, or merging organizations. If propagation of a
58541 efforts.
58544 rights granted or affirmed under this License. For example, you
58550 of it.
58552 11. Patents.
58555 License of the Program or a work on which the Program is based.
58557 version".
58565 contributor version. For purposes of this definition, "control"
58567 consistent with the requirements of this License.
58573 version.
58578 patent or covenant not to sue for patent infringement). To "grant"
58580 commitment not to enforce a patent against the party.
58591 recipients. "Knowingly relying" means you have actual knowledge
58595 country that you have reason to believe are valid.
58603 recipients of the covered work and works based on it.
58608 are specifically granted under this License. You may not convey a
58619 prior to 28 March 2007.
58623 otherwise be available to you under applicable patent law.
58625 12. No Surrender of Others' Freedom.
58629 do not excuse you from the conditions of this License. If you
58632 then as a consequence you may not convey it at all. For example,
58636 be to refrain entirely from conveying the Program.
58638 13. Use with the GNU Affero General Public License.
58643 single combined work, and to convey the resulting work. The terms
58647 a network will apply to the combination as such.
58649 14. Revised Versions of this License.
58652 versions of the GNU General Public License from time to time. Such
58654 may differ in detail to address new problems or concerns.
58656 Each version is given a distinguishing version number. If the
58661 Software Foundation. If the Program does not specify a version
58663 version ever published by the Free Software Foundation.
58668 authorizes you to choose that version for the Program.
58671 permissions. However, no additional obligations are imposed on any
58673 later version.
58675 15. Disclaimer of Warranty.
58678 APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
58682 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
58683 RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
58685 NECESSARY SERVICING, REPAIR OR CORRECTION.
58687 16. Limitation of Liability.
58698 THE POSSIBILITY OF SUCH DAMAGES.
58700 17. Interpretation of Sections 15 and 16.
58707 liability accompanies a copy of the Program in return for a fee.
58718 terms.
58720 To do so, attach the following notices to the program. It is safest to
58723 "copyright" line and a pointer to where the full notice is found.
58725 ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
58731 your option) any later version.
58735 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
58736 General Public License for more details.
58739 along with this program. If not, see <http://www.gnu.org/licenses/>.
58742 mail.
58748 This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
58750 under certain conditions; type 'show c' for details.
58753 appropriate parts of the General Public License. Of course, your
58755 use an "about box".
58759 necessary. For more information on this, and how to apply and follow
58760 the GNU GPL, see <http://www.gnu.org/licenses/>.
58763 program into proprietary programs. If your program is a subroutine
58765 applications with the library. If this is what you want to do, use the
58766 GNU Lesser General Public License instead of this License. But first,
58767 please read <https://www.gnu.org/licenses/why-not-lgpl.html>.
58770 File: gcc.info, Node: GNU Free Documentation License, Next: Contributors, Prev: Copying, Up: Top
58777 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
58778 <http://fsf.org/>
58781 of this license document, but changing it is not allowed.
58783 0. PREAMBLE
58789 noncommercially. Secondarily, this License preserves for the
58791 being considered responsible for modifications made by others.
58794 works of the document must themselves be free in the same sense.
58796 license designed for free software.
58801 that the software does. But this License is not limited to
58803 of subject matter or whether it is published as a printed book. We
58805 instruction or reference.
58807 1. APPLICABILITY AND DEFINITIONS
58811 be distributed under the terms of this License. Such a notice
58813 to use that work under the conditions stated herein. The
58814 "Document", below, refers to any such manual or work. Any member
58815 of the public is a licensee, and is addressed as "you". You accept
58817 requiring permission under copyright law.
58821 modifications and/or translated into another language.
58827 fall directly within that overall subject. (Thus, if the Document
58829 explain any mathematics.) The relationship could be a matter of
58832 regarding them.
58836 notice that says that the Document is released under this License.
58838 is not allowed to be designated as Invariant. The Document may
58839 contain zero Invariant Sections. If the Document does not identify
58840 any Invariant Sections then there are none.
58844 that says that the Document is released under this License. A
58846 be at most 25 words.
58855 suitable for input to text formatters. A copy made in an otherwise
58858 readers is not Transparent. An image format is not Transparent if
58859 used for any substantial amount of text. A copy that is not
58860 "Transparent" is called "Opaque".
58865 simple HTML, PostScript or PDF designed for human modification.
58866 Examples of transparent image formats include PNG, XCF and JPG.
58871 processors for output purposes only.
58875 material this License requires to appear in the title page. For
58878 work's title, preceding the beginning of the body of the text.
58881 of the Document to the public.
58885 following text that translates XYZ in another language. (Here XYZ
58887 "Acknowledgements", "Dedications", "Endorsements", or "History".)
58890 to this definition.
58893 which states that this License applies to the Document. These
58897 has no effect on the meaning of this License.
58899 2. VERBATIM COPYING
58905 add no other conditions whatsoever to those of this License. You
58907 or further copying of the copies you make or distribute. However,
58908 you may accept compensation in exchange for copies. If you
58910 conditions in section 3.
58913 and you may publicly display copies.
58915 3. COPYING IN QUANTITY
58922 Back-Cover Texts on the back cover. Both covers must also clearly
58923 and legibly identify you as the publisher of these copies. The
58925 equally prominent and visible. You may add other material on the
58926 covers in addition. Copying with changes limited to the covers, as
58928 conditions, can be treated as verbatim copying in other respects.
58933 adjacent pages.
58941 of added material. If you use the latter option, you must take
58946 through your agents or retailers) of that edition to the public.
58951 Document.
58953 4. MODIFICATIONS
58960 possesses a copy of it. In addition, you must do these things in
58963 A. Use in the Title Page (and on the covers, if any) a title
58966 History section of the Document). You may use the same title
58968 version gives permission.
58970 B. List on the Title Page, as authors, one or more persons or
58975 from this requirement.
58977 C. State on the Title page the name of the publisher of the
58978 Modified Version, as the publisher.
58980 D. Preserve all the copyright notices of the Document.
58982 E. Add an appropriate copyright notice for your modifications
58983 adjacent to the other copyright notices.
58985 F. Include, immediately after the copyright notices, a license
58988 the Addendum below.
58990 G. Preserve in that license notice the full lists of Invariant
58992 license notice.
58994 H. Include an unaltered copy of this License.
58996 I. Preserve the section Entitled "History", Preserve its Title,
58999 Title Page. If there is no section Entitled "History" in the
59003 previous sentence.
59005 J. Preserve the network location, if any, given in the Document
59008 previous versions it was based on. These may be placed in the
59009 "History" section. You may omit a network location for a work
59012 to gives permission.
59014 K. For any section Entitled "Acknowledgements" or "Dedications",
59017 acknowledgements and/or dedications given therein.
59019 L. Preserve all the Invariant Sections of the Document, unaltered
59020 in their text and in their titles. Section numbers or the
59021 equivalent are not considered part of the section titles.
59023 M. Delete any section Entitled "Endorsements". Such a section
59024 may not be included in the Modified Version.
59026 N. Do not retitle any existing section to be Entitled
59028 Section.
59030 O. Preserve any Warranty Disclaimers.
59035 some or all of these sections as invariant. To do this, add their
59037 license notice. These titles must be distinct from any other
59038 section titles.
59044 definition of a standard.
59048 the list of Cover Texts in the Modified Version. Only one passage
59050 through arrangements made by) any one entity. If the Document
59055 the old one.
59059 assert or imply endorsement of any Modified Version.
59061 5. COMBINING DOCUMENTS
59069 their Warranty Disclaimers.
59073 copy. If there are multiple Invariant Sections with the same name
59077 unique number. Make the same adjustment to the section titles in
59079 combined work.
59084 "Acknowledgements", and any sections Entitled "Dedications". You
59085 must delete all sections Entitled "Endorsements."
59087 6. COLLECTIONS OF DOCUMENTS
59094 in all other respects.
59100 document.
59102 7. AGGREGATION WITH INDEPENDENT WORKS
59109 works permit. When the Document is included in an aggregate, this
59111 are not themselves derivative works of the Document.
59118 form. Otherwise they must appear on printed covers that bracket
59119 the whole aggregate.
59121 8. TRANSLATION
59125 4. Replacing Invariant Sections with translations requires special
59128 original versions of these Invariant Sections. You may include a
59132 original versions of those notices and disclaimers. In case of a
59135 prevail.
59140 actual title.
59142 9. TERMINATION
59145 except as expressly provided under this License. Any attempt
59147 and will automatically terminate your rights under this License.
59154 reasonable means prior to 60 days after the cessation.
59161 after your receipt of the notice.
59165 under this License. If your rights have been terminated and not
59167 same material does not give you any rights to use it.
59169 10. FUTURE REVISIONS OF THIS LICENSE
59172 the GNU Free Documentation License from time to time. Such new
59174 differ in detail to address new problems or concerns. See
59175 <http://www.gnu.org/copyleft/>.
59178 number. If the Document specifies that a particular numbered
59182 published (not as a draft) by the Free Software Foundation. If the
59185 Software Foundation. If the Document specifies that a proxy can
59188 authorizes you to choose that version for the Document.
59190 11. RELICENSING
59194 provides prominent facilities for anybody to edit those works. A
59195 public wiki that anybody can edit is an example of such a server.
59198 site.
59204 published by that same organization.
59207 in part, as part of another Document.
59214 to November 1, 2008.
59218 2009, provided the MMC is eligible for relicensing.
59227 Copyright (C) YEAR YOUR NAME.
59232 Texts. A copy of the license is included in the section entitled ``GNU
59233 Free Documentation License''.
59236 replace the "with...Texts." line with this:
59240 being LIST.
59244 situation.
59249 their use in free software.
59252 File: gcc.info, Node: Contributors, Next: Option Index, Prev: GNU Free Documentation License, U…
59257 The GCC project would like to thank its many contributors. Without them
59258 the project would not have been nearly as successful as it has been.
59259 Any omissions in this list are accidental. Feel free to contact
59260 <law@redhat.com> or <gerald@pfeifer.com> if you have been left out or
59261 some of your contributions are not listed. Please keep this list in
59262 alphabetical order.
59265 and iterators.
59268 libstdc++-v3, and the HP-UX port.
59271 Intel 80387 register stack.
59274 Series port.
59276 * Alasdair Baird for various bug fixes.
59279 reports.
59282 ColdFire cores.
59285 end.
59287 * Godmar Back for his Java improvements and encouragement.
59289 * Scott Bambrough for help porting the Java compiler.
59291 * Wolfgang Bangerth for processing tons of bug reports.
59294 Lattice Mico32.
59298 Bugzilla.
59301 patches.
59304 Rawhide for several architectures.
59306 * Laurynas Biveinis for memory management work and DJGPP port fixes.
59310 fixes.
59313 specifications.
59315 * Janne Blomqvist for contributions to GNU Fortran.
59317 * Hans-J. Boehm for his garbage collector, IA-64 libffi port, and
59318 other Java work.
59321 instruction combiner plus various contributions to the middle end.
59324 miscellaneous clean-ups.
59327 and for contributing to the tree-ssa branch.
59329 * Eric Botcazou for fixing middle- and backend bugs left and right.
59333 languages. Chill front end implementation. Initial
59334 implementations of cpplib, fix-header, config.guess, libio, and
59335 past C++ library (libg++) maintainer. Dreaming up, designing and
59336 implementing much of GCJ.
59338 * Devon Bowen helped port GCC to the Tahoe.
59340 * Don Bowman for mips-vxworks contributions.
59342 * James Bowman for the FT32 port.
59344 * Dave Brolley for work on cpplib and Chill.
59347 Fortran.
59349 * Robert Brown implemented the support for Encore 32000 systems.
59351 * Christian Bruel for improvements to local store elimination.
59353 * Herman A.J. ten Brugge for various fixes.
59356 FAQ.
59359 creation to 2013.
59361 * Iain Buclaw for the D frontend.
59363 * Craig Burley for leadership of the G77 Fortran effort.
59365 * Tobias Burnus for contributions to GNU Fortran.
59367 * Stephan Buys for contributing Doxygen notes for libstdc++.
59372 the problem reports.
59376 loop optimizations, etc.
59378 * Stephane Carrez for 68HC11 and 68HC12 ports.
59381 and the PicoJava processor, and for GCJ config fixes.
59383 * Glenn Chambers for help with the GCJ FAQ.
59385 * John-Marc Chandonia for various libgcj patches.
59388 first GCC port for an 8-bit architecture.
59391 the test suite and maintenance.
59393 * Scott Christley for his Objective-C contributions.
59395 * Eric Christopher for his Java porting help and clean-ups.
59397 * Branko Cibej for more warning contributions.
59399 * The GNU Classpath project for all of their merged runtime code.
59402 '--help', and other random hacking.
59404 * Michael Cook for libstdc++ cleanup patches to reduce warnings.
59406 * R. Kelley Cook for making GCC buildable from a read-only directory
59408 clean-ups.
59410 * Ralf Corsepius for SH testing and minor bug fixing.
59412 * Franc,ois-Xavier Coudert for contributions to GNU Fortran.
59415 the scenes hacking.
59417 * Alex Crain provided changes for the 3b1.
59419 * Ian Dall for major improvements to the NS32k port.
59422 backend.
59424 * Palmer Dabbelt for his work maintaining the RISC-V port.
59427 print a copy of their source.
59429 * Russell Davidson for fstream and stringstream fixes in libstdc++.
59431 * Bud Davis for work on the G77 and GNU Fortran compilers.
59433 * Mo DeJong for GCJ and libgcj bug fixes.
59435 * Jerry DeLisle for contributions to GNU Fortran.
59438 various bug fixes, and the M32C, MeP, MSP430, and RL78 ports.
59440 * Arnaud Desitter for helping to debug GNU Fortran.
59446 anything to do with numbers.
59449 ISO C99 support, CFG dumping support, etc., plus support of the C++
59453 early math work.
59457 unordered containers.
59459 * Zdenek Dvorak for a new loop unroller and various fixes.
59461 * Michael Eager for his work on the Xilinx MicroBlaze port.
59463 * Richard Earnshaw for his ongoing work with the ARM.
59468 hands, and for ensuring GCC properly keeps working on AIX.
59471 in libstdc++.
59476 versioning.
59478 * Paul Eggert for random hacking all over GCC.
59481 configuration support for locales and fstream-related fixes.
59484 iostreams.
59486 * Christian Ehrhardt for dealing with bug reports.
59489 own subdirectory and for his work on autoconf.
59491 * Revital Eres for work on the PowerPC 750CL port.
59493 * Marc Espie for OpenBSD support.
59496 m32r, and SPARC work.
59499 and feeding the gcc.gnu.org box and saving its users tons of spam.
59501 * Fred Fish for BeOS support and Ada fixes.
59503 * Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ.
59505 * Peter Gerwinski for various bug fixes and the Pascal front end.
59507 * Kaveh R. Ghazi for his direction via the steering committee,
59509 on a plethora of platforms. Kaveh extends his gratitude to the
59511 resources to work on Free Software from the late 1980s to 2010.
59514 Java.
59516 * Judy Goldberg for c++ contributions.
59521 direction via the steering committee.
59524 documentation.
59527 front end work.
59530 code.
59532 * Michael K. Gschwind contributed the port to the PDP-11.
59535 fixes and for release management.
59539 the support for System V Release 4. He has also worked heavily on
59540 the Intel 386 and 860 support.
59542 * Sumanth Gundapaneni for contributing the CR16 port.
59545 GCSE.
59548 warnings and assorted bug fixes.
59550 * Andrew Haley for his amazing Java compiler and library efforts.
59553 series 300.
59556 the c30/c40 ports functional. Lots of loop and unroll improvements
59557 and fixes.
59560 reports.
59562 * Kate Hedstrom for staking the G77 folks with an initial testsuite.
59567 including reviewing tons of patches.
59570 various fixes.
59573 contributed the support for the Sony NEWS machine.
59576 various fixes.
59578 * Katherine Holcomb for work on GNU Fortran.
59581 of testing and bug fixing, particularly of GCC configury code.
59583 * Steve Holmgren for MachTen patches.
59585 * Mat Hostetter for work on the TILE-Gx and TILEPro ports.
59587 * Jan Hubicka for his x86 port improvements.
59589 * Falk Hueffner for working on C and optimization bug reports.
59592 improvements and uClinux support.
59594 * Christian Iseli for various bug fixes.
59596 * Kamil Iskra for general m68k hacking.
59598 * Lee Iverson for random fixes and MIPS testing.
59600 * Balaji V. Iyer for Cilk+ development and merging.
59603 fixes.
59606 switch conversion pass, and scalar replacement of aggregates.
59610 Java build system.
59613 sidetracks, and web page maintenance.
59615 * Kean Johnston for SCO OpenServer support and various fixes.
59618 Richard Kenner's "toy" language.
59620 * Nicolai Josuttis for additional libstdc++ documentation.
59623 target.
59625 * Steven G. Kargl for work on GNU Fortran.
59627 * David Kashtan of SRI adapted GCC to VMS.
59631 auto_ptr fixes.
59634 GNU/Linux and his automatic regression tester.
59637 work in just about every part of libstdc++.
59639 * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
59640 MIL-STD-1750A.
59645 support for instruction attributes. He also made changes to better
59649 the code for frame pointer elimination and delay slot scheduling.
59651 years.
59655 and for massive libstdc++ porting work to Cygwin/Mingw32.
59657 * Robin Kirkham for cpu32 support.
59659 * Mark Klein for PA improvements.
59661 * Thomas Koenig for various bug fixes.
59663 * Bruce Korb for the new and improved fixincludes code.
59666 effort.
59669 Android and m68k/Coldfire ports, and optimizations.
59672 68020 system.
59675 support to GNU Fortran, and for other GNU Fortran improvements.
59681 hacking.
59683 * Walter Lee for work on the TILE-Gx and TILEPro ports.
59686 helping with analysis and improvements of x86 performance.
59688 * Victor Leikehman for work on GNU Fortran.
59690 * Ted Lemon wrote parts of the RTL reader and printer.
59693 template parameter support, and many C++ fixes.
59696 and random work on the Java front end.
59698 * Alain Lichnewsky ported GCC to the MIPS CPU.
59701 and patches.
59703 * Robert Lipe for OpenServer support, new testsuites, testing, etc.
59706 maintaining the S+core port.
59710 regression testing of GCC and reporting numerous bugs.
59712 * Weiwen Liu for testing and various bug fixes.
59715 diagnostics fixes and improvements.
59718 runtime libraries.
59722 assistance with libstdc++/compiler merges.
59724 * H.J. Lu for his previous contributions to the steering committee,
59726 ports working.
59728 * Greg McGary for random fixes and (someday) bounded pointers.
59732 etc.
59739 allocators.
59742 self-tests and unit testing.
59744 * Bob Manson for his behind the scenes work on dejagnu.
59746 * John Marino for contributing the DragonFly BSD port.
59749 fixes and improvements, and string clean up and testsuites.
59753 improvements.
59755 * All of the Mauve project contributors for Java test code.
59757 * Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
59759 * Adam Megacz for his work on the Microsoft Windows port of GCJ.
59762 powerpc, haifa, ECOFF debug support, and other assorted hacking.
59765 leading the G++ effort.
59768 entire Debian archive.
59771 SPARC work, improvements in jump.c and interfacing with the Linux
59772 kernel developers.
59774 * Gary Miller ported GCC to Charles River Data Systems machines.
59777 the entire libstdc++ testsuite namespace-compatible.
59782 release manager from 2000 to 2011.
59784 * Alan Modra for various GNU/Linux bits and testing.
59787 maintenance, and his ongoing work to make us make Fortran run fast.
59790 services on the gcc.gnu.org (formerly egcs.cygnus.com)
59791 machine--mail, web services, ftp services, etc etc. Doing all this
59792 work on scrap paper and the backs of envelopes would have been...
59793 difficult.
59797 Linux kernels.
59799 * Mike Moreton for his various Java patches.
59802 initial IA-64 port.
59806 numbers wider than 64 bits and for ISO C99 support.
59808 * Bill Moyer for his behind the scenes work on various issues.
59810 * Philippe De Muyter for his work on the m68k port.
59812 * Joseph S. Myers for his work on the PDP-11 port, format checking
59814 to) documentation.
59820 forth). Later, more work on MT-safe string and shadow headers.
59822 * Felix Natter for documentation on porting libstdc++.
59824 * Nathanael Nerode for cleaning up the configuration/build process.
59826 * NeXT, Inc. donated the front end that supports the Objective-C
59827 language.
59831 fixes.
59833 * Geoff Noer for his work on getting cygwin native builds working.
59836 reporting numerous bugs.
59839 tracking web pages, GIMPLE tuples, and assorted fixes.
59843 infrastructure improvements.
59847 sane and happy.
59849 * Stefan Olsson for work on mt_alloc.
59851 * Melissa O'Neill for various NeXT fixes.
59856 Solaris 2, and Tru64 UNIX ports.
59860 generate 'float.h' in older versions of GCC.
59862 * Hartmut Penner for work on the s390 port.
59864 * Paul Petersen wrote the machine description for the Alliant FX/8.
59867 and continued Java maintainership.
59869 * Matthias Pfaller for major improvements to the NS32k port.
59873 web pages, and taking care of documentation maintenance in general.
59876 general bug fixing.
59878 * Andrew Pinski for processing bug reports by the dozen.
59881 runtime libraries.
59884 I/O.
59887 various cleanups in the compiler.
59889 * Rolf W. Rasmussen for hacking on AWT.
59892 PowerPC port.
59895 reporting numerous bugs.
59899 reports.
59902 hacking and developing and maintaining the Epiphany port.
59904 * Loren J. Rittle for improvements to libstdc++-v3 including the
59908 and continuous testing.
59910 * Craig Rodrigues for processing tons of bug reports.
59912 * Ola Ro"nnerup for work on mt_alloc.
59914 * Gavin Romig-Koch for lots of behind the scenes MIPS work.
59918 translation of the old 'g77-0.5.16/f/DOC' file.
59920 * Ken Rose for fixes to GCC's delay slot filling code.
59922 * Ira Rosen for her contributions to the auto-vectorizer.
59924 * Paul Rubin wrote most of the preprocessor.
59927 formatted I/O and large file support in C++ filebuf.
59930 traits, Makefiles, libio, libtool hackery, and "long long" support.
59932 * Juha Sarlin for improvements to the H8 code generator.
59935 300.
59938 optimizers as well as for fixing numerous bugs.
59940 * Bradley Schatz for his work on the GCJ FAQ.
59943 Alpha.
59945 * William Schelter did most of the work on the Intel 80386 support.
59947 * Tobias Schlu"ter for work on GNU Fortran.
59950 work in the reload pass, serving as release manager for GCC 2.95.3,
59951 and work on the Blackfin and C6X ports.
59955 the release criteria--and libstdc++ header file tweaks.
59957 * Jason Schroeder for jcf-dump patches.
59959 * Andreas Schwab for his work on the m68k port.
59961 * Lars Segerlund for work on GNU Fortran.
59964 improvements.
59966 * Tim Shen for major work on '<regex>'.
59969 contributions and RTEMS testing.
59971 * Nathan Sidwell for many C++ fixes/improvements.
59975 constant folding and help with the original VAX & m68k ports.
59979 ISO).
59982 GNU/Linux.
59984 * Andrey Slepuhin for assorted AIX hacking.
59986 * Trevor Smigiel for contributing the SPU port.
59988 * Christopher Smith did the port for Convex machines.
59990 * Danny Smith for his major efforts on the Mingw (and Cygwin) ports.
59992 new maintainers into the role.
59994 * Randy Smith finished the Sun FPA support.
59997 functions, '<random>', and various improvements to C++11 features.
60000 libstdc++ testsuite entries. Also for providing the patch to G77
60002 'LOGICAL*1'.
60005 reporting numerous bugs.
60008 reporting numerous bugs.
60010 * Jayant Sonar for contributing the CR16 port.
60012 * Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
60015 GNU project.
60018 Genix, as well as part of the 32000 machine description.
60021 and reporting numerous bugs.
60023 * Nigel Stephens for various mips16 related fixes/improvements.
60026 computer.
60028 * Graham Stott for various infrastructure improvements.
60030 * John Stracke for his Java HTTP protocol fixes.
60035 * Jeff Sturm for Java porting help, bug fixes, and encouragement.
60038 reporting numerous bugs.
60041 reporting numerous bugs.
60043 * Shigeya Suzuki for this fixes for the bsdi platforms.
60046 support, general configury hacking, fixincludes, etc.
60048 * Holger Teutsch provided the support for the Clipper CPU.
60051 GNU/Linux.
60053 * Paul Thomas for contributions to GNU Fortran.
60057 * Jason Thorpe for thread support in libstdc++ on NetBSD.
60060 language and the fantastic Java bytecode interpreter.
60064 and M88k machine description work, delay slot scheduling.
60066 * Andreas Tobler for his work porting libgcj to Darwin.
60068 * Teemu Torma for thread safe exception handling support.
60071 definitions, and of the VAX machine description.
60074 maintain the picoChip port.
60077 contributions and libgcj maintainership.
60079 * Lassi Tuura for improvements to config.guess to determine HP
60080 processor types.
60082 * Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
60085 Fortran front end.
60088 associated configure steps.
60090 * Todd Vierling for contributions for NetBSD ports.
60093 maintaining it.
60096 guidance and maintaining libstdc++.
60099 texinfo in time for GCC 3.0.
60101 * Krister Walfridsson for random bug fixes.
60103 * Feng Wang for contributions to GNU Fortran.
60105 * Stephen M. Webb for time and effort on making libstdc++ shadow
60107 build-time header tree. Also, for starting and driving the
60108 '<regex>' effort.
60112 value range propagation and other work, WE32k port.
60114 * Ulrich Weigand for work on the s390 port.
60116 * Janus Weil for contributions to GNU Fortran.
60118 * Zack Weinberg for major work on cpplib and various other bug fixes.
60120 * Matt Welsh for help with Linux Threads support in GCJ.
60122 * Urban Widmark for help fixing java.io.
60125 with Classpath.
60127 * Dale Wiles helped port GCC to the Tahoe.
60129 * Bob Wilson from Tensilica, Inc. for the Xtensa port.
60133 strength reduction and other loop optimizations.
60135 * Paul Woegerer and Tal Agmon for the CRX port.
60137 * Carlo Wood for various fixes.
60139 * Tom Wood for work on the m88k port.
60141 * Chung-Ju Wu for his work on the Andes NDS32 port.
60143 * Canqun Yang for work on GNU Fortran.
60146 description for the Tron architecture (specifically, the Gmicro).
60148 * Kevin Zachmann helped port GCC to the Tahoe.
60150 * Ayal Zaks for Swing Modulo Scheduling (SMS).
60153 reporting numerous bugs.
60155 * Xiaoqiang Zhang for work on GNU Fortran.
60157 * Gilles Zunino for help porting Java to Irix.
60259 additions and bug fixes.
60261 * Wolfgang Baer for 'GapContent' bug fixes.
60264 event fixes, lots of Free Swing work including 'JTable' editing.
60266 * Stuart Ballard for RMI constant fixes.
60268 * Goffredo Baroncelli for 'HTTPURLConnection' fixes.
60270 * Gary Benson for 'MessageFormat' fixes.
60272 * Daniel Bonniot for 'Serialization' fixes.
60274 * Chris Burdess for lots of gnu.xml and http protocol fixes, 'StAX'
60275 and 'DOM xml:id' support.
60277 * Ka-Hing Cheung for 'TreePath' and 'TreeSelection' fixes.
60280 'URLClassLoader' updates.
60282 * Kelley Cook for build fixes.
60284 * Martin Cordova for Suggestions for better 'SocketTimeoutException'.
60287 improvements.
60290 2D support. Lots of imageio framework additions, lots of AWT and
60291 Free Swing bug fixes.
60294 fixes, better 'Proxy' support, bug fixes and IKVM integration.
60296 * Santiago Gala for 'AccessControlContext' fixes.
60299 improvements.
60302 lots of documenting, Lots of Free Swing and metal theme additions.
60303 'MetalIconFactory' implementation.
60305 * Anthony Green for 'MIDI' framework, 'ALSA' and 'DSSI' providers.
60308 build speedups.
60310 * Kim Ho for 'JFileChooser' implementation.
60314 work, VMIntegration guide update.
60316 * Bastiaan Huisman for 'TimeZone' bug fixing.
60318 * Andreas Jaeger for mprec updates.
60320 * Paul Jenner for better '-Werror' support.
60322 * Ito Kazumitsu for 'NetworkInterface' implementation and updates.
60325 bug fixes all over. Lots of Free Swing work including styled text.
60327 * Simon Kitching for 'String' cleanups and optimization suggestions.
60330 build fixes.
60333 Kaffe integration. JCL native 'Pointer' updates. Logger bug
60334 fixes.
60337 cleanups.
60339 * Aaron Luchko for JDWP updates and documentation fixes.
60342 features.
60345 fixes. 'GtkImage' rewrite, 2D, awt, free swing and date/time fixes
60346 and implementing the Qt4 peers.
60350 'FileChannel.map' support, security and policy updates.
60352 * Bryce McKinlay for RMI work.
60355 testing and documenting.
60357 * Kalle Olavi Niemitalo for build fixes.
60359 * Rainer Orth for build fixes.
60361 * Andrew Overholt for 'File' locking fixes.
60363 * Ingo Proetel for 'Image', 'Logger' and 'URLClassLoader' updates.
60365 * Olga Rodimina for 'MenuSelectionManager' implementation.
60367 * Jan Roehrich for 'BasicTreeUI' and 'JTree' fixes.
60369 * Julian Scheid for documentation updates and gjdoc support.
60371 * Christian Schlichtherle for zip fixes and cleanups.
60375 and URL, AWT and Free Swing bug fixes.
60377 * Keith Seitz for lots of JDWP work.
60380 interface fixes and 'CACAO' integration, 'fdlibm' updates.
60382 * Gael Thomas for 'VMClassLoader' boot packages support suggestions.
60385 support for Darwin/OS X, 'Graphics2D' support, 'gtk+' updates.
60388 integration. 'Qt4' build infrastructure, 'SHA1PRNG' and
60389 'GdkPixbugDecoder' updates.
60392 fixes and gcj integration including coordinating The Big Merge.
60396 timeouts and 'GdkPixpufDecoder' fixes.
60442 * Robert A. French
60446 * Mark K. Gardner
60468 * Bryan W. Headley
60470 * Kevin B. Hendricks
60484 * A. O. V. Le Blanc
60502 * Anon A. Mous
60534 * Wayne K. Schroll
60548 * Pedro A. M. Vazquez
60554 * David E. Young
60560 place.
60563 File: gcc.info, Node: Option Index, Next: Keyword Index, Prev: Contributors, Up: Top
60569 '--'. Where an option has both positive and negative forms (such as
60572 look up both forms.
60577 * ###: Overall Options. (line 214)
60578 * 80387: x86 Options. (line 532)
60579 * A: Preprocessor Options.
60581 * allowable_client: Darwin Options. (line 196)
60582 * all_load: Darwin Options. (line 110)
60583 * analyzer: Static Analyzer Options.
60585 * ansi: Standards. (line 13)
60586 * ansi <1>: C Dialect Options. (line 11)
60587 * ansi <2>: Other Builtins. (line 31)
60588 * ansi <3>: Non-bugs. (line 107)
60589 * arch_errors_fatal: Darwin Options. (line 114)
60590 * aux-info: C Dialect Options. (line 229)
60591 * B: Directory Options. (line 122)
60592 * Bdynamic: VxWorks Options. (line 22)
60593 * bind_at_load: Darwin Options. (line 118)
60594 * Bstatic: VxWorks Options. (line 22)
60595 * bundle: Darwin Options. (line 123)
60596 * bundle_loader: Darwin Options. (line 127)
60597 * c: Overall Options. (line 169)
60598 * C: Preprocessor Options.
60600 * c <1>: Link Options. (line 20)
60601 * CC: Preprocessor Options.
60603 * client_name: Darwin Options. (line 196)
60604 * compatibility_version: Darwin Options. (line 196)
60605 * coverage: Instrumentation Options.
60607 * current_version: Darwin Options. (line 196)
60608 * D: Preprocessor Options.
60610 * d: Preprocessor Options.
60612 * d <1>: Developer Options. (line 52)
60613 * da: Developer Options. (line 246)
60614 * dA: Developer Options. (line 249)
60615 * dD: Preprocessor Options.
60617 * dD <1>: Developer Options. (line 253)
60618 * dead_strip: Darwin Options. (line 196)
60619 * dependency-file: Darwin Options. (line 196)
60620 * dH: Developer Options. (line 257)
60621 * dI: Preprocessor Options.
60623 * dM: Preprocessor Options.
60625 * dN: Preprocessor Options.
60627 * dp: Developer Options. (line 260)
60628 * dP: Developer Options. (line 265)
60629 * dU: Preprocessor Options.
60631 * dump-analyzer-exploded-nodes: Static Analyzer Options.
60633 * dump-analyzer-exploded-nodes-2: Static Analyzer Options.
60635 * dump-analyzer-exploded-nodes-3: Static Analyzer Options.
60637 * dumpfullversion: Developer Options. (line 1025)
60638 * dumpmachine: Developer Options. (line 1013)
60639 * dumpspecs: Developer Options. (line 1030)
60640 * dumpversion: Developer Options. (line 1017)
60641 * dx: Developer Options. (line 269)
60642 * dylib_file: Darwin Options. (line 196)
60643 * dylinker_install_name: Darwin Options. (line 196)
60644 * dynamic: Darwin Options. (line 196)
60645 * dynamiclib: Darwin Options. (line 131)
60646 * E: Overall Options. (line 190)
60647 * E <1>: Link Options. (line 20)
60648 * e: Link Options. (line 169)
60649 * EB: ARC Options. (line 597)
60650 * EB <1>: C-SKY Options. (line 29)
60651 * EB <2>: MIPS Options. (line 7)
60652 * EL: ARC Options. (line 606)
60653 * EL <1>: C-SKY Options. (line 31)
60654 * EL <2>: MIPS Options. (line 10)
60655 * entry: Link Options. (line 169)
60656 * exported_symbols_list: Darwin Options. (line 196)
60657 * F: Darwin Options. (line 31)
60658 * fabi-compat-version: C++ Dialect Options.
60660 * fabi-version: C++ Dialect Options.
60662 * faccess-control: C++ Dialect Options.
60664 * fada-spec-parent: Overall Options. (line 397)
60665 * faggressive-loop-optimizations: Optimize Options. (line 546)
60666 * falign-functions: Optimize Options. (line 1668)
60667 * falign-jumps: Optimize Options. (line 1750)
60668 * falign-labels: Optimize Options. (line 1709)
60669 * falign-loops: Optimize Options. (line 1729)
60670 * faligned-new: C++ Dialect Options.
60672 * fallow-parameterless-variadic-functions: C Dialect Options.
60674 * fallow-store-data-races: Optimize Options. (line 1770)
60675 * fanalyzer: Static Analyzer Options.
60677 * fanalyzer-call-summaries: Static Analyzer Options.
60679 * fanalyzer-checker: Static Analyzer Options.
60681 * fanalyzer-fine-grained: Static Analyzer Options.
60683 * fanalyzer-show-duplicate-count: Static Analyzer Options.
60685 * fanalyzer-state-merge: Static Analyzer Options.
60687 * fanalyzer-state-purge: Static Analyzer Options.
60689 * fanalyzer-transitivity: Static Analyzer Options.
60691 * fasan-shadow-offset: Instrumentation Options.
60693 * fasm: C Dialect Options. (line 252)
60694 * fassociative-math: Optimize Options. (line 2283)
60695 * fasynchronous-unwind-tables: Code Gen Options. (line 156)
60696 * fauto-inc-dec: Optimize Options. (line 568)
60697 * fauto-profile: Optimize Options. (line 2158)
60698 * fbranch-count-reg: Optimize Options. (line 420)
60699 * fbranch-probabilities: Optimize Options. (line 2429)
60700 * fbuiltin: C Dialect Options. (line 266)
60701 * fcall-saved: Code Gen Options. (line 448)
60702 * fcall-used: Code Gen Options. (line 434)
60703 * fcaller-saves: Optimize Options. (line 926)
60704 * fcallgraph-info: Developer Options. (line 34)
60705 * fcf-protection: Instrumentation Options.
60707 * fchar8_t: C++ Dialect Options.
60709 * fcheck-new: C++ Dialect Options.
60711 * fchecking: Developer Options. (line 705)
60712 * fcode-hoisting: Optimize Options. (line 967)
60713 * fcombine-stack-adjustments: Optimize Options. (line 938)
60714 * fcommon: Code Gen Options. (line 231)
60715 * fcommon <1>: Common Variable Attributes.
60717 * fcompare-debug: Developer Options. (line 799)
60718 * fcompare-debug-second: Developer Options. (line 825)
60719 * fcompare-elim: Optimize Options. (line 2088)
60720 * fconcepts: C++ Dialect Options.
60722 * fconcepts-ts: C++ Dialect Options.
60724 * fcond-mismatch: C Dialect Options. (line 396)
60725 * fconserve-stack: Optimize Options. (line 957)
60726 * fconstant-string-class: Objective-C and Objective-C++ Dialect Options.
60728 * fconstexpr-cache-depth: C++ Dialect Options.
60730 * fconstexpr-depth: C++ Dialect Options.
60732 * fconstexpr-loop-limit: C++ Dialect Options.
60734 * fconstexpr-ops-limit: C++ Dialect Options.
60736 * fcoroutines: C++ Dialect Options.
60738 * fcprop-registers: Optimize Options. (line 2100)
60739 * fcrossjumping: Optimize Options. (line 561)
60740 * fcse-follow-jumps: Optimize Options. (line 480)
60741 * fcse-skip-blocks: Optimize Options. (line 489)
60742 * fcx-fortran-rules: Optimize Options. (line 2416)
60743 * fcx-limited-range: Optimize Options. (line 2404)
60744 * fdata-sections: Optimize Options. (line 2567)
60745 * fdbg-cnt: Developer Options. (line 935)
60746 * fdbg-cnt-list: Developer Options. (line 932)
60747 * fdce: Optimize Options. (line 574)
60748 * fdebug-cpp: Preprocessor Options.
60750 * fdebug-prefix-map: Debugging Options. (line 141)
60751 * fdebug-types-section: Debugging Options. (line 192)
60752 * fdeclone-ctor-dtor: Optimize Options. (line 597)
60753 * fdefer-pop: Optimize Options. (line 221)
60754 * fdelayed-branch: Optimize Options. (line 750)
60755 * fdelete-dead-exceptions: Code Gen Options. (line 141)
60756 * fdelete-null-pointer-checks: Optimize Options. (line 608)
60757 * fdevirtualize: Optimize Options. (line 629)
60758 * fdevirtualize-at-ltrans: Optimize Options. (line 646)
60759 * fdevirtualize-speculatively: Optimize Options. (line 636)
60760 * fdiagnostics-color: Diagnostic Message Formatting Options.
60762 * fdiagnostics-format: Diagnostic Message Formatting Options.
60764 * fdiagnostics-generate-patch: Diagnostic Message Formatting Options.
60766 * fdiagnostics-minimum-margin-width: Diagnostic Message Formatting Options.
60768 * fdiagnostics-parseable-fixits: Diagnostic Message Formatting Options.
60770 * fdiagnostics-path-format: Diagnostic Message Formatting Options.
60772 * fdiagnostics-show-caret: Diagnostic Message Formatting Options.
60774 * fdiagnostics-show-cwe: Diagnostic Message Formatting Options.
60776 * fdiagnostics-show-labels: Diagnostic Message Formatting Options.
60778 * fdiagnostics-show-line-numbers: Diagnostic Message Formatting Options.
60780 * fdiagnostics-show-location: Diagnostic Message Formatting Options.
60782 * fdiagnostics-show-option: Diagnostic Message Formatting Options.
60784 * fdiagnostics-show-path-depths: Diagnostic Message Formatting Options.
60786 * fdiagnostics-show-template-tree: Diagnostic Message Formatting Options.
60788 * fdiagnostics-urls: Diagnostic Message Formatting Options.
60790 * fdirectives-only: Preprocessor Options.
60792 * fdisable-: Developer Options. (line 636)
60793 * fdollars-in-identifiers: Preprocessor Options.
60795 * fdollars-in-identifiers <1>: Interoperation. (line 141)
60796 * fdpic: SH Options. (line 388)
60797 * fdse: Optimize Options. (line 578)
60798 * fdump-ada-spec: Overall Options. (line 392)
60799 * fdump-analyzer: Static Analyzer Options.
60801 * fdump-analyzer-callgraph: Static Analyzer Options.
60803 * fdump-analyzer-exploded-graph: Static Analyzer Options.
60805 * fdump-analyzer-state-purge: Static Analyzer Options.
60807 * fdump-analyzer-stderr: Static Analyzer Options.
60809 * fdump-analyzer-supergraph: Static Analyzer Options.
60811 * fdump-debug: Developer Options. (line 273)
60812 * fdump-earlydebug: Developer Options. (line 277)
60813 * fdump-final-insns: Developer Options. (line 793)
60814 * fdump-go-spec: Overall Options. (line 401)
60815 * fdump-ipa: Developer Options. (line 303)
60816 * fdump-lang: Developer Options. (line 335)
60817 * fdump-lang-all: Developer Options. (line 335)
60818 * fdump-noaddr: Developer Options. (line 281)
60819 * fdump-passes: Developer Options. (line 353)
60820 * fdump-rtl-alignments: Developer Options. (line 65)
60821 * fdump-rtl-all: Developer Options. (line 246)
60822 * fdump-rtl-asmcons: Developer Options. (line 68)
60823 * fdump-rtl-auto_inc_dec: Developer Options. (line 72)
60824 * fdump-rtl-barriers: Developer Options. (line 76)
60825 * fdump-rtl-bbpart: Developer Options. (line 79)
60826 * fdump-rtl-bbro: Developer Options. (line 82)
60827 * fdump-rtl-btl2: Developer Options. (line 86)
60828 * fdump-rtl-btl2 <1>: Developer Options. (line 86)
60829 * fdump-rtl-bypass: Developer Options. (line 90)
60830 * fdump-rtl-ce1: Developer Options. (line 101)
60831 * fdump-rtl-ce2: Developer Options. (line 101)
60832 * fdump-rtl-ce3: Developer Options. (line 101)
60833 * fdump-rtl-combine: Developer Options. (line 93)
60834 * fdump-rtl-compgotos: Developer Options. (line 96)
60835 * fdump-rtl-cprop_hardreg: Developer Options. (line 105)
60836 * fdump-rtl-csa: Developer Options. (line 108)
60837 * fdump-rtl-cse1: Developer Options. (line 112)
60838 * fdump-rtl-cse2: Developer Options. (line 112)
60839 * fdump-rtl-dbr: Developer Options. (line 119)
60840 * fdump-rtl-dce: Developer Options. (line 116)
60841 * fdump-rtl-dce1: Developer Options. (line 123)
60842 * fdump-rtl-dce2: Developer Options. (line 123)
60843 * fdump-rtl-dfinish: Developer Options. (line 242)
60844 * fdump-rtl-dfinit: Developer Options. (line 242)
60845 * fdump-rtl-eh: Developer Options. (line 127)
60846 * fdump-rtl-eh_ranges: Developer Options. (line 130)
60847 * fdump-rtl-expand: Developer Options. (line 133)
60848 * fdump-rtl-fwprop1: Developer Options. (line 137)
60849 * fdump-rtl-fwprop2: Developer Options. (line 137)
60850 * fdump-rtl-gcse1: Developer Options. (line 142)
60851 * fdump-rtl-gcse2: Developer Options. (line 142)
60852 * fdump-rtl-init-regs: Developer Options. (line 146)
60853 * fdump-rtl-initvals: Developer Options. (line 149)
60854 * fdump-rtl-into_cfglayout: Developer Options. (line 152)
60855 * fdump-rtl-ira: Developer Options. (line 155)
60856 * fdump-rtl-jump: Developer Options. (line 158)
60857 * fdump-rtl-loop2: Developer Options. (line 161)
60858 * fdump-rtl-mach: Developer Options. (line 165)
60859 * fdump-rtl-mode_sw: Developer Options. (line 169)
60860 * fdump-rtl-outof_cfglayout: Developer Options. (line 175)
60861 * fdump-rtl-PASS: Developer Options. (line 52)
60862 * fdump-rtl-peephole2: Developer Options. (line 178)
60863 * fdump-rtl-postreload: Developer Options. (line 181)
60864 * fdump-rtl-pro_and_epilogue: Developer Options. (line 184)
60865 * fdump-rtl-ree: Developer Options. (line 192)
60866 * fdump-rtl-regclass: Developer Options. (line 242)
60867 * fdump-rtl-rnreg: Developer Options. (line 172)
60868 * fdump-rtl-sched1: Developer Options. (line 188)
60869 * fdump-rtl-sched2: Developer Options. (line 188)
60870 * fdump-rtl-seqabstr: Developer Options. (line 195)
60871 * fdump-rtl-shorten: Developer Options. (line 198)
60872 * fdump-rtl-sibling: Developer Options. (line 201)
60873 * fdump-rtl-sms: Developer Options. (line 212)
60874 * fdump-rtl-split1: Developer Options. (line 208)
60875 * fdump-rtl-split2: Developer Options. (line 208)
60876 * fdump-rtl-split3: Developer Options. (line 208)
60877 * fdump-rtl-split4: Developer Options. (line 208)
60878 * fdump-rtl-split5: Developer Options. (line 208)
60879 * fdump-rtl-stack: Developer Options. (line 216)
60880 * fdump-rtl-subreg1: Developer Options. (line 222)
60881 * fdump-rtl-subreg2: Developer Options. (line 222)
60882 * fdump-rtl-subregs_of_mode_finish: Developer Options. (line 242)
60883 * fdump-rtl-subregs_of_mode_init: Developer Options. (line 242)
60884 * fdump-rtl-unshare: Developer Options. (line 226)
60885 * fdump-rtl-vartrack: Developer Options. (line 229)
60886 * fdump-rtl-vregs: Developer Options. (line 232)
60887 * fdump-rtl-web: Developer Options. (line 235)
60888 * fdump-statistics: Developer Options. (line 357)
60889 * fdump-tree: Developer Options. (line 370)
60890 * fdump-tree-all: Developer Options. (line 370)
60891 * fdump-unnumbered: Developer Options. (line 291)
60892 * fdump-unnumbered-links: Developer Options. (line 297)
60893 * fdwarf2-cfi-asm: Debugging Options. (line 397)
60894 * fearly-inlining: Optimize Options. (line 320)
60895 * felide-constructors: C++ Dialect Options.
60897 * felide-type: Diagnostic Message Formatting Options.
60899 * feliminate-unused-debug-symbols: Debugging Options. (line 121)
60900 * feliminate-unused-debug-types: Debugging Options. (line 401)
60901 * femit-class-debug-always: Debugging Options. (line 126)
60902 * femit-struct-debug-baseonly: Debugging Options. (line 328)
60903 * femit-struct-debug-detailed: Debugging Options. (line 355)
60904 * femit-struct-debug-reduced: Debugging Options. (line 341)
60905 * fenable-: Developer Options. (line 636)
60906 * fenforce-eh-specs: C++ Dialect Options.
60908 * fexceptions: Code Gen Options. (line 119)
60909 * fexcess-precision: Optimize Options. (line 2209)
60910 * fexec-charset: Preprocessor Options.
60912 * fexpensive-optimizations: Optimize Options. (line 653)
60913 * fext-numeric-literals: C++ Dialect Options.
60915 * fextended-identifiers: Preprocessor Options.
60917 * fextern-tls-init: C++ Dialect Options.
60919 * ffast-math: Optimize Options. (line 2233)
60920 * ffat-lto-objects: Optimize Options. (line 2065)
60921 * ffile-prefix-map: Overall Options. (line 372)
60922 * ffinite-loops: Optimize Options. (line 1207)
60923 * ffinite-math-only: Optimize Options. (line 2310)
60924 * ffix-and-continue: Darwin Options. (line 104)
60925 * ffixed: Code Gen Options. (line 422)
60926 * ffloat-store: Optimize Options. (line 2195)
60927 * ffloat-store <1>: Disappointments. (line 77)
60928 * fforward-propagate: Optimize Options. (line 228)
60929 * ffp-contract: Optimize Options. (line 237)
60930 * ffp-int-builtin-inexact: Optimize Options. (line 2382)
60931 * ffreestanding: Standards. (line 99)
60932 * ffreestanding <1>: C Dialect Options. (line 314)
60933 * ffreestanding <2>: Warning Options. (line 412)
60934 * ffreestanding <3>: Common Function Attributes.
60936 * ffunction-cse: Optimize Options. (line 434)
60937 * ffunction-sections: Optimize Options. (line 2567)
60938 * fgcse: Optimize Options. (line 503)
60939 * fgcse-after-reload: Optimize Options. (line 539)
60940 * fgcse-las: Optimize Options. (line 532)
60941 * fgcse-lm: Optimize Options. (line 514)
60942 * fgcse-sm: Optimize Options. (line 523)
60943 * fgimple: C Dialect Options. (line 300)
60944 * fgnu-keywords: C++ Dialect Options.
60946 * fgnu-runtime: Objective-C and Objective-C++ Dialect Options.
60948 * fgnu-tm: C Dialect Options. (line 353)
60949 * fgnu-unique: Code Gen Options. (line 162)
60950 * fgnu89-inline: C Dialect Options. (line 190)
60951 * fgraphite-identity: Optimize Options. (line 1249)
60952 * fguess-branch-probability: Optimize Options. (line 1548)
60953 * fhoist-adjacent-loads: Optimize Options. (line 997)
60954 * fhosted: C Dialect Options. (line 306)
60955 * fident: Code Gen Options. (line 252)
60956 * fif-conversion: Optimize Options. (line 582)
60957 * fif-conversion2: Optimize Options. (line 591)
60958 * fiji: AMD GCN Options. (line 13)
60959 * filelist: Darwin Options. (line 196)
60960 * fimplement-inlines: C++ Dialect Options.
60962 * fimplicit-inline-templates: C++ Dialect Options.
60964 * fimplicit-templates: C++ Dialect Options.
60966 * findirect-data: Darwin Options. (line 104)
60967 * findirect-inlining: Optimize Options. (line 292)
60968 * finhibit-size-directive: Code Gen Options. (line 255)
60969 * finline: Optimize Options. (line 275)
60970 * finline-functions: Optimize Options. (line 300)
60971 * finline-functions-called-once: Optimize Options. (line 312)
60972 * finline-limit: Optimize Options. (line 336)
60973 * finline-small-functions: Optimize Options. (line 283)
60974 * finput-charset: Preprocessor Options.
60976 * finstrument-functions: Instrumentation Options.
60978 * finstrument-functions <1>: Common Function Attributes.
60980 * finstrument-functions-exclude-file-list: Instrumentation Options.
60982 * finstrument-functions-exclude-function-list: Instrumentation Options.
60984 * fipa-bit-cp: Optimize Options. (line 1057)
60985 * fipa-cp: Optimize Options. (line 1038)
60986 * fipa-cp-clone: Optimize Options. (line 1047)
60987 * fipa-icf: Optimize Options. (line 1067)
60988 * fipa-profile: Optimize Options. (line 1030)
60989 * fipa-pta: Optimize Options. (line 1024)
60990 * fipa-pure-const: Optimize Options. (line 1008)
60991 * fipa-ra: Optimize Options. (line 944)
60992 * fipa-reference: Optimize Options. (line 1012)
60993 * fipa-reference-addressable: Optimize Options. (line 1016)
60994 * fipa-sra: Optimize Options. (line 329)
60995 * fipa-stack-alignment: Optimize Options. (line 1020)
60996 * fipa-vrp: Optimize Options. (line 1062)
60997 * fira-algorithm: Optimize Options. (line 687)
60998 * fira-hoist-pressure: Optimize Options. (line 716)
60999 * fira-loop-pressure: Optimize Options. (line 723)
61000 * fira-region: Optimize Options. (line 695)
61001 * fira-share-save-slots: Optimize Options. (line 731)
61002 * fira-share-spill-slots: Optimize Options. (line 737)
61003 * fira-verbose: Developer Options. (line 862)
61004 * fisolate-erroneous-paths-attribute: Optimize Options. (line 1149)
61005 * fisolate-erroneous-paths-dereference: Optimize Options. (line 1141)
61006 * fivar-visibility: Objective-C and Objective-C++ Dialect Options.
61008 * fivopts: Optimize Options. (line 1374)
61009 * fjump-tables: Code Gen Options. (line 414)
61010 * fkeep-inline-dllexport: Optimize Options. (line 361)
61011 * fkeep-inline-functions: Optimize Options. (line 367)
61012 * fkeep-inline-functions <1>: Inline. (line 51)
61013 * fkeep-static-consts: Optimize Options. (line 378)
61014 * fkeep-static-functions: Optimize Options. (line 374)
61015 * flat_namespace: Darwin Options. (line 196)
61016 * flax-vector-conversions: C Dialect Options. (line 401)
61017 * fleading-underscore: Code Gen Options. (line 478)
61018 * flifetime-dse: Optimize Options. (line 667)
61019 * flinker-output: Link Options. (line 25)
61020 * flive-patching: Optimize Options. (line 1081)
61021 * flive-range-shrinkage: Optimize Options. (line 682)
61022 * flocal-ivars: Objective-C and Objective-C++ Dialect Options.
61024 * floop-block: Optimize Options. (line 1243)
61025 * floop-interchange: Optimize Options. (line 1327)
61026 * floop-nest-optimize: Optimize Options. (line 1257)
61027 * floop-parallelize-all: Optimize Options. (line 1263)
61028 * floop-strip-mine: Optimize Options. (line 1243)
61029 * floop-unroll-and-jam: Optimize Options. (line 1344)
61030 * flra-remat: Optimize Options. (line 743)
61031 * flto: Optimize Options. (line 1817)
61032 * flto-compression-level: Optimize Options. (line 2039)
61033 * flto-partition: Optimize Options. (line 2025)
61034 * flto-report: Developer Options. (line 868)
61035 * flto-report-wpa: Developer Options. (line 876)
61036 * fmacro-prefix-map: Preprocessor Options.
61038 * fmath-errno: Optimize Options. (line 2247)
61039 * fmax-errors: Warning Options. (line 18)
61040 * fmax-include-depth: Preprocessor Options.
61042 * fmem-report: Developer Options. (line 880)
61043 * fmem-report-wpa: Developer Options. (line 884)
61044 * fmerge-all-constants: Optimize Options. (line 397)
61045 * fmerge-constants: Optimize Options. (line 387)
61046 * fmerge-debug-strings: Debugging Options. (line 134)
61047 * fmessage-length: Diagnostic Message Formatting Options.
61049 * fmodulo-sched: Optimize Options. (line 408)
61050 * fmodulo-sched-allow-regmoves: Optimize Options. (line 413)
61051 * fmove-loop-invariants: Optimize Options. (line 2527)
61052 * fms-extensions: C Dialect Options. (line 368)
61053 * fms-extensions <1>: C++ Dialect Options.
61055 * fms-extensions <2>: Unnamed Fields. (line 36)
61056 * fnew-inheriting-ctors: C++ Dialect Options.
61058 * fnew-ttp-matching: C++ Dialect Options.
61060 * fnext-runtime: Objective-C and Objective-C++ Dialect Options.
61062 * fnil-receivers: Objective-C and Objective-C++ Dialect Options.
61064 * fno-access-control: C++ Dialect Options.
61066 * fno-allocation-dce: Optimize Options. (line 1767)
61067 * fno-analyzer: Static Analyzer Options.
61069 * fno-analyzer-call-summaries: Static Analyzer Options.
61071 * fno-analyzer-fine-grained: Static Analyzer Options.
61073 * fno-analyzer-show-duplicate-count: Static Analyzer Options.
61075 * fno-analyzer-state-merge: Static Analyzer Options.
61077 * fno-analyzer-state-purge: Static Analyzer Options.
61079 * fno-analyzer-transitivity: Static Analyzer Options.
61081 * fno-asm: C Dialect Options. (line 252)
61082 * fno-branch-count-reg: Optimize Options. (line 420)
61083 * fno-builtin: C Dialect Options. (line 266)
61084 * fno-builtin <1>: Warning Options. (line 412)
61085 * fno-builtin <2>: Common Function Attributes.
61087 * fno-builtin <3>: Other Builtins. (line 21)
61088 * fno-canonical-system-headers: Preprocessor Options.
61090 * fno-char8_t: C++ Dialect Options.
61092 * fno-checking: Developer Options. (line 705)
61093 * fno-common: Code Gen Options. (line 231)
61094 * fno-common <1>: Common Variable Attributes.
61096 * fno-compare-debug: Developer Options. (line 799)
61097 * fno-debug-types-section: Debugging Options. (line 192)
61098 * fno-default-inline: Inline. (line 68)
61099 * fno-defer-pop: Optimize Options. (line 221)
61100 * fno-diagnostics-show-caret: Diagnostic Message Formatting Options.
61102 * fno-diagnostics-show-cwe: Diagnostic Message Formatting Options.
61104 * fno-diagnostics-show-labels: Diagnostic Message Formatting Options.
61106 * fno-diagnostics-show-line-numbers: Diagnostic Message Formatting Options.
61108 * fno-diagnostics-show-option: Diagnostic Message Formatting Options.
61110 * fno-dwarf2-cfi-asm: Debugging Options. (line 397)
61111 * fno-elide-constructors: C++ Dialect Options.
61113 * fno-elide-type: Diagnostic Message Formatting Options.
61115 * fno-eliminate-unused-debug-symbols: Debugging Options. (line 121)
61116 * fno-eliminate-unused-debug-types: Debugging Options. (line 401)
61117 * fno-enforce-eh-specs: C++ Dialect Options.
61119 * fno-ext-numeric-literals: C++ Dialect Options.
61121 * fno-extern-tls-init: C++ Dialect Options.
61123 * fno-finite-loops: Optimize Options. (line 1207)
61124 * fno-fp-int-builtin-inexact: Optimize Options. (line 2382)
61125 * fno-function-cse: Optimize Options. (line 434)
61126 * fno-gnu-keywords: C++ Dialect Options.
61128 * fno-gnu-unique: Code Gen Options. (line 162)
61129 * fno-guess-branch-probability: Optimize Options. (line 1548)
61130 * fno-ident: Code Gen Options. (line 252)
61131 * fno-implement-inlines: C++ Dialect Options.
61133 * fno-implement-inlines <1>: C++ Interface. (line 66)
61134 * fno-implicit-inline-templates: C++ Dialect Options.
61136 * fno-implicit-templates: C++ Dialect Options.
61138 * fno-implicit-templates <1>: Template Instantiation.
61140 * fno-inline: Optimize Options. (line 275)
61141 * fno-ira-share-save-slots: Optimize Options. (line 731)
61142 * fno-ira-share-spill-slots: Optimize Options. (line 737)
61143 * fno-jump-tables: Code Gen Options. (line 414)
61144 * fno-keep-inline-dllexport: Optimize Options. (line 361)
61145 * fno-lifetime-dse: Optimize Options. (line 667)
61146 * fno-local-ivars: Objective-C and Objective-C++ Dialect Options.
61148 * fno-math-errno: Optimize Options. (line 2247)
61149 * fno-merge-debug-strings: Debugging Options. (line 134)
61150 * fno-nil-receivers: Objective-C and Objective-C++ Dialect Options.
61152 * fno-nonansi-builtins: C++ Dialect Options.
61154 * fno-operator-names: C++ Dialect Options.
61156 * fno-optional-diags: C++ Dialect Options.
61158 * fno-peephole: Optimize Options. (line 1539)
61159 * fno-peephole2: Optimize Options. (line 1539)
61160 * fno-plt: Code Gen Options. (line 396)
61161 * fno-pretty-templates: C++ Dialect Options.
61163 * fno-printf-return-value: Optimize Options. (line 1516)
61164 * fno-rtti: C++ Dialect Options.
61166 * fno-sanitize-recover: Instrumentation Options.
61168 * fno-sanitize=all: Instrumentation Options.
61170 * fno-sched-interblock: Optimize Options. (line 776)
61171 * fno-sched-spec: Optimize Options. (line 781)
61172 * fno-set-stack-executable: x86 Windows Options.
61174 * fno-show-column: Diagnostic Message Formatting Options.
61176 * fno-signed-bitfields: C Dialect Options. (line 434)
61177 * fno-signed-zeros: Optimize Options. (line 2322)
61178 * fno-stack-limit: Instrumentation Options.
61180 * fno-threadsafe-statics: C++ Dialect Options.
61182 * fno-toplevel-reorder: Optimize Options. (line 1782)
61183 * fno-trapping-math: Optimize Options. (line 2332)
61184 * fno-unsigned-bitfields: C Dialect Options. (line 434)
61185 * fno-use-cxa-get-exception-ptr: C++ Dialect Options.
61187 * fno-var-tracking-assignments: Debugging Options. (line 161)
61188 * fno-var-tracking-assignments-toggle: Developer Options. (line 846)
61189 * fno-weak: C++ Dialect Options.
61191 * fno-working-directory: Preprocessor Options.
61193 * fno-writable-relocated-rdata: x86 Windows Options.
61195 * fno-zero-initialized-in-bss: Optimize Options. (line 445)
61196 * fnon-call-exceptions: Code Gen Options. (line 133)
61197 * fnonansi-builtins: C++ Dialect Options.
61199 * fnothrow-opt: C++ Dialect Options.
61201 * fobjc-abi-version: Objective-C and Objective-C++ Dialect Options.
61203 * fobjc-call-cxx-cdtors: Objective-C and Objective-C++ Dialect Options.
61205 * fobjc-direct-dispatch: Objective-C and Objective-C++ Dialect Options.
61207 * fobjc-exceptions: Objective-C and Objective-C++ Dialect Options.
61209 * fobjc-gc: Objective-C and Objective-C++ Dialect Options.
61211 * fobjc-nilcheck: Objective-C and Objective-C++ Dialect Options.
61213 * fobjc-std: Objective-C and Objective-C++ Dialect Options.
61215 * fomit-frame-pointer: Optimize Options. (line 248)
61216 * fopenacc: C Dialect Options. (line 325)
61217 * fopenacc-dim: C Dialect Options. (line 334)
61218 * fopenmp: C Dialect Options. (line 340)
61219 * fopenmp-simd: C Dialect Options. (line 349)
61220 * foperator-names: C++ Dialect Options.
61222 * fopt-info: Developer Options. (line 476)
61223 * foptimize-sibling-calls: Optimize Options. (line 263)
61224 * foptimize-strlen: Optimize Options. (line 268)
61225 * foptional-diags: C++ Dialect Options.
61227 * force_cpusubtype_ALL: Darwin Options. (line 135)
61228 * force_flat_namespace: Darwin Options. (line 196)
61229 * fpack-struct: Code Gen Options. (line 465)
61230 * fpartial-inlining: Optimize Options. (line 1491)
61231 * fpatchable-function-entry: Instrumentation Options.
61233 * fpcc-struct-return: Code Gen Options. (line 175)
61234 * fpcc-struct-return <1>: Incompatibilities. (line 170)
61235 * fpch-deps: Preprocessor Options.
61237 * fpch-preprocess: Preprocessor Options.
61239 * fpeel-loops: Optimize Options. (line 2519)
61240 * fpeephole: Optimize Options. (line 1539)
61241 * fpeephole2: Optimize Options. (line 1539)
61242 * fpermissive: C++ Dialect Options.
61244 * fpermitted-flt-eval-methods: C Dialect Options. (line 207)
61245 * fpermitted-flt-eval-methods=c11: C Dialect Options. (line 207)
61246 * fpermitted-flt-eval-methods=ts-18661-3: C Dialect Options. (line 207)
61247 * fpic: Code Gen Options. (line 353)
61248 * fPIC: Code Gen Options. (line 374)
61249 * fpie: Code Gen Options. (line 387)
61250 * fPIE: Code Gen Options. (line 387)
61251 * fplan9-extensions: C Dialect Options. (line 386)
61252 * fplan9-extensions <1>: Unnamed Fields. (line 43)
61253 * fplt: Code Gen Options. (line 396)
61254 * fplugin: Overall Options. (line 381)
61255 * fplugin-arg: Overall Options. (line 388)
61256 * fpost-ipa-mem-report: Developer Options. (line 889)
61257 * fpre-ipa-mem-report: Developer Options. (line 888)
61258 * fpredictive-commoning: Optimize Options. (line 1498)
61259 * fprefetch-loop-arrays: Optimize Options. (line 1506)
61260 * fpreprocessed: Preprocessor Options.
61262 * fpretty-templates: C++ Dialect Options.
61264 * fprintf-return-value: Optimize Options. (line 1516)
61265 * fprofile-abs-path: Instrumentation Options.
61267 * fprofile-arcs: Instrumentation Options.
61269 * fprofile-arcs <1>: Other Builtins. (line 563)
61270 * fprofile-correction: Optimize Options. (line 2107)
61271 * fprofile-dir: Instrumentation Options.
61273 * fprofile-exclude-files: Instrumentation Options.
61275 * fprofile-filter-files: Instrumentation Options.
61277 * fprofile-generate: Instrumentation Options.
61279 * fprofile-note: Instrumentation Options.
61281 * fprofile-partial-training: Optimize Options. (line 2116)
61282 * fprofile-prefix-path: Instrumentation Options.
61284 * fprofile-reorder-functions: Optimize Options. (line 2459)
61285 * fprofile-report: Developer Options. (line 893)
61286 * fprofile-reproducible: Instrumentation Options.
61288 * fprofile-update: Instrumentation Options.
61290 * fprofile-use: Optimize Options. (line 2130)
61291 * fprofile-values: Optimize Options. (line 2449)
61292 * fpu: RX Options. (line 17)
61293 * frandom-seed: Developer Options. (line 710)
61294 * freciprocal-math: Optimize Options. (line 2300)
61295 * frecord-gcc-switches: Code Gen Options. (line 341)
61296 * free: Optimize Options. (line 659)
61297 * freg-struct-return: Code Gen Options. (line 193)
61298 * frename-registers: Optimize Options. (line 2478)
61299 * freorder-blocks: Optimize Options. (line 1569)
61300 * freorder-blocks-algorithm: Optimize Options. (line 1575)
61301 * freorder-blocks-and-partition: Optimize Options. (line 1586)
61302 * freorder-functions: Optimize Options. (line 1603)
61303 * freplace-objc-classes: Objective-C and Objective-C++ Dialect Options.
61305 * freport-bug: Developer Options. (line 287)
61306 * frerun-cse-after-loop: Optimize Options. (line 497)
61307 * freschedule-modulo-scheduled-loops: Optimize Options. (line 875)
61308 * frounding-math: Optimize Options. (line 2347)
61309 * frtti: C++ Dialect Options.
61311 * fsanitize-address-use-after-scope: Instrumentation Options.
61313 * fsanitize-coverage=trace-cmp: Instrumentation Options.
61315 * fsanitize-coverage=trace-pc: Instrumentation Options.
61317 * fsanitize-recover: Instrumentation Options.
61319 * fsanitize-sections: Instrumentation Options.
61321 * fsanitize-undefined-trap-on-error: Instrumentation Options.
61323 * fsanitize=address: Instrumentation Options.
61325 * fsanitize=alignment: Instrumentation Options.
61327 * fsanitize=bool: Instrumentation Options.
61329 * fsanitize=bounds: Instrumentation Options.
61331 * fsanitize=bounds-strict: Instrumentation Options.
61333 * fsanitize=builtin: Instrumentation Options.
61335 * fsanitize=enum: Instrumentation Options.
61337 * fsanitize=float-cast-overflow: Instrumentation Options.
61339 * fsanitize=float-divide-by-zero: Instrumentation Options.
61341 * fsanitize=integer-divide-by-zero: Instrumentation Options.
61343 * fsanitize=kernel-address: Instrumentation Options.
61345 * fsanitize=leak: Instrumentation Options.
61347 * fsanitize=nonnull-attribute: Instrumentation Options.
61349 * fsanitize=null: Instrumentation Options.
61351 * fsanitize=object-size: Instrumentation Options.
61353 * fsanitize=pointer-compare: Instrumentation Options.
61355 * fsanitize=pointer-overflow: Instrumentation Options.
61357 * fsanitize=pointer-subtract: Instrumentation Options.
61359 * fsanitize=return: Instrumentation Options.
61361 * fsanitize=returns-nonnull-attribute: Instrumentation Options.
61363 * fsanitize=shift: Instrumentation Options.
61365 * fsanitize=shift-base: Instrumentation Options.
61367 * fsanitize=shift-exponent: Instrumentation Options.
61369 * fsanitize=signed-integer-overflow: Instrumentation Options.
61371 * fsanitize=thread: Instrumentation Options.
61373 * fsanitize=undefined: Instrumentation Options.
61375 * fsanitize=unreachable: Instrumentation Options.
61377 * fsanitize=vla-bound: Instrumentation Options.
61379 * fsanitize=vptr: Instrumentation Options.
61381 * fsave-optimization-record: Developer Options. (line 582)
61382 * fsched-critical-path-heuristic: Optimize Options. (line 841)
61383 * fsched-dep-count-heuristic: Optimize Options. (line 868)
61384 * fsched-group-heuristic: Optimize Options. (line 835)
61385 * fsched-interblock: Optimize Options. (line 776)
61386 * fsched-last-insn-heuristic: Optimize Options. (line 861)
61387 * fsched-pressure: Optimize Options. (line 786)
61388 * fsched-rank-heuristic: Optimize Options. (line 854)
61389 * fsched-spec: Optimize Options. (line 781)
61390 * fsched-spec-insn-heuristic: Optimize Options. (line 847)
61391 * fsched-spec-load: Optimize Options. (line 795)
61392 * fsched-spec-load-dangerous: Optimize Options. (line 800)
61393 * fsched-stalled-insns: Optimize Options. (line 806)
61394 * fsched-stalled-insns-dep: Optimize Options. (line 816)
61395 * fsched-verbose: Developer Options. (line 622)
61396 * fsched2-use-superblocks: Optimize Options. (line 825)
61397 * fschedule-fusion: Optimize Options. (line 2488)
61398 * fschedule-insns: Optimize Options. (line 757)
61399 * fschedule-insns2: Optimize Options. (line 767)
61400 * fsection-anchors: Optimize Options. (line 2600)
61401 * fsel-sched-pipelining: Optimize Options. (line 888)
61402 * fsel-sched-pipelining-outer-loops: Optimize Options. (line 893)
61403 * fselective-scheduling: Optimize Options. (line 880)
61404 * fselective-scheduling2: Optimize Options. (line 884)
61405 * fsemantic-interposition: Optimize Options. (line 898)
61406 * fset-stack-executable: x86 Windows Options.
61408 * fshort-enums: Code Gen Options. (line 211)
61409 …short-enums <1>: Structures unions enumerations and bit-fields implementation.
61411 * fshort-enums <2>: Common Type Attributes.
61413 * fshort-enums <3>: Non-bugs. (line 42)
61414 * fshort-wchar: Code Gen Options. (line 221)
61415 * fshow-column: Diagnostic Message Formatting Options.
61417 * fshrink-wrap: Optimize Options. (line 915)
61418 * fshrink-wrap-separate: Optimize Options. (line 920)
61419 * fsignaling-nans: Optimize Options. (line 2367)
61420 * fsigned-bitfields: C Dialect Options. (line 434)
61421 * fsigned-bitfields <1>: Non-bugs. (line 57)
61422 * fsigned-char: C Dialect Options. (line 424)
61423 * fsigned-char <1>: Characters implementation.
61425 * fsigned-zeros: Optimize Options. (line 2322)
61426 * fsimd-cost-model: Optimize Options. (line 1448)
61427 * fsingle-precision-constant: Optimize Options. (line 2400)
61428 * fsized-deallocation: C++ Dialect Options.
61430 * fsplit-ivs-in-unroller: Optimize Options. (line 1469)
61431 * fsplit-loops: Optimize Options. (line 2531)
61432 * fsplit-paths: Optimize Options. (line 1464)
61433 * fsplit-stack: Instrumentation Options.
61435 * fsplit-stack <1>: Common Function Attributes.
61437 * fsplit-wide-types: Optimize Options. (line 466)
61438 * fsplit-wide-types-early: Optimize Options. (line 474)
61439 * fssa-backprop: Optimize Options. (line 1173)
61440 * fssa-phiopt: Optimize Options. (line 1179)
61441 * fsso-struct: C Dialect Options. (line 440)
61442 * fstack-check: Instrumentation Options.
61444 * fstack-clash-protection: Instrumentation Options.
61446 * fstack-limit-register: Instrumentation Options.
61448 * fstack-limit-symbol: Instrumentation Options.
61450 * fstack-protector: Instrumentation Options.
61452 * fstack-protector-all: Instrumentation Options.
61454 * fstack-protector-explicit: Instrumentation Options.
61456 * fstack-protector-strong: Instrumentation Options.
61458 * fstack-usage: Developer Options. (line 897)
61459 * fstack_reuse: Code Gen Options. (line 15)
61460 * fstats: Developer Options. (line 926)
61461 * fstdarg-opt: Optimize Options. (line 2596)
61462 * fstore-merging: Optimize Options. (line 1398)
61463 * fstrict-aliasing: Optimize Options. (line 1618)
61464 * fstrict-enums: C++ Dialect Options.
61466 * fstrict-overflow: Code Gen Options. (line 115)
61467 * fstrict-volatile-bitfields: Code Gen Options. (line 589)
61468 * fstrong-eval-order: C++ Dialect Options.
61470 * fsync-libcalls: Code Gen Options. (line 621)
61471 * fsyntax-only: Warning Options. (line 14)
61472 * ftabstop: Preprocessor Options.
61474 * ftemplate-backtrace-limit: C++ Dialect Options.
61476 * ftemplate-depth: C++ Dialect Options.
61478 * ftest-coverage: Instrumentation Options.
61480 * fthread-jumps: Optimize Options. (line 457)
61481 * fthreadsafe-statics: C++ Dialect Options.
61483 * ftime-report: Developer Options. (line 854)
61484 * ftime-report-details: Developer Options. (line 858)
61485 * ftls-model: Code Gen Options. (line 489)
61486 * ftoplevel-reorder: Optimize Options. (line 1782)
61487 * ftracer: Optimize Options. (line 2496)
61488 * ftrack-macro-expansion: Preprocessor Options.
61490 * ftrampolines: Code Gen Options. (line 500)
61491 * ftrapping-math: Optimize Options. (line 2332)
61492 * ftrapv: Code Gen Options. (line 91)
61493 * ftree-bit-ccp: Optimize Options. (line 1161)
61494 * ftree-builtin-call-dce: Optimize Options. (line 1201)
61495 * ftree-ccp: Optimize Options. (line 1168)
61496 * ftree-ch: Optimize Options. (line 1230)
61497 * ftree-coalesce-vars: Optimize Options. (line 1269)
61498 * ftree-copy-prop: Optimize Options. (line 1003)
61499 * ftree-dce: Optimize Options. (line 1197)
61500 * ftree-dominator-opts: Optimize Options. (line 1216)
61501 * ftree-dse: Optimize Options. (line 1223)
61502 * ftree-forwprop: Optimize Options. (line 982)
61503 * ftree-fre: Optimize Options. (line 986)
61504 * ftree-loop-distribute-patterns: Optimize Options. (line 1305)
61505 * ftree-loop-distribution: Optimize Options. (line 1286)
61506 * ftree-loop-if-convert: Optimize Options. (line 1279)
61507 * ftree-loop-im: Optimize Options. (line 1350)
61508 * ftree-loop-ivcanon: Optimize Options. (line 1359)
61509 * ftree-loop-linear: Optimize Options. (line 1243)
61510 * ftree-loop-optimize: Optimize Options. (line 1237)
61511 * ftree-loop-vectorize: Optimize Options. (line 1424)
61512 * ftree-parallelize-loops: Optimize Options. (line 1379)
61513 * ftree-partial-pre: Optimize Options. (line 978)
61514 * ftree-phiprop: Optimize Options. (line 993)
61515 * ftree-pre: Optimize Options. (line 974)
61516 * ftree-pta: Optimize Options. (line 1388)
61517 * ftree-reassoc: Optimize Options. (line 963)
61518 * ftree-scev-cprop: Optimize Options. (line 1365)
61519 * ftree-sink: Optimize Options. (line 1157)
61520 * ftree-slp-vectorize: Optimize Options. (line 1429)
61521 * ftree-slsr: Optimize Options. (line 1413)
61522 * ftree-sra: Optimize Options. (line 1392)
61523 * ftree-switch-conversion: Optimize Options. (line 1184)
61524 * ftree-tail-merge: Optimize Options. (line 1189)
61525 * ftree-ter: Optimize Options. (line 1405)
61526 * ftree-vectorize: Optimize Options. (line 1419)
61527 * ftree-vrp: Optimize Options. (line 1455)
61528 * funconstrained-commons: Optimize Options. (line 555)
61529 * funit-at-a-time: Optimize Options. (line 1775)
61530 * funroll-all-loops: Optimize Options. (line 2513)
61531 * funroll-loops: Optimize Options. (line 2503)
61532 * funsafe-math-optimizations: Optimize Options. (line 2265)
61533 * funsigned-bitfields: C Dialect Options. (line 434)
61534 …unsigned-bitfields <1>: Structures unions enumerations and bit-fields implementation.
61536 * funsigned-bitfields <2>: Non-bugs. (line 57)
61537 * funsigned-char: C Dialect Options. (line 406)
61538 * funsigned-char <1>: Characters implementation.
61540 * funswitch-loops: Optimize Options. (line 2537)
61541 * funwind-tables: Code Gen Options. (line 149)
61542 * fuse-cxa-atexit: C++ Dialect Options.
61544 * fuse-cxa-get-exception-ptr: C++ Dialect Options.
61546 * fuse-ld=bfd: Link Options. (line 74)
61547 * fuse-ld=gold: Link Options. (line 77)
61548 * fuse-ld=lld: Link Options. (line 80)
61549 * fuse-linker-plugin: Optimize Options. (line 2047)
61550 * fvar-tracking: Debugging Options. (line 151)
61551 * fvar-tracking-assignments: Debugging Options. (line 161)
61552 * fvar-tracking-assignments-toggle: Developer Options. (line 846)
61553 * fvariable-expansion-in-unroller: Optimize Options. (line 1483)
61554 * fvect-cost-model: Optimize Options. (line 1434)
61555 * fverbose-asm: Code Gen Options. (line 262)
61556 * fversion-loops-for-strides: Optimize Options. (line 2544)
61557 * fvisibility: Code Gen Options. (line 524)
61558 * fvisibility-inlines-hidden: C++ Dialect Options.
61560 * fvisibility-ms-compat: C++ Dialect Options.
61562 * fvpt: Optimize Options. (line 2466)
61563 * fvtable-verify: Instrumentation Options.
61565 * fvtv-counts: Instrumentation Options.
61567 * fvtv-debug: Instrumentation Options.
61569 * fweak: C++ Dialect Options.
61571 * fweb: Optimize Options. (line 1795)
61572 * fwhole-program: Optimize Options. (line 1806)
61573 * fwide-exec-charset: Preprocessor Options.
61575 * fworking-directory: Preprocessor Options.
61577 * fwrapv: Code Gen Options. (line 99)
61578 * fwrapv-pointer: Code Gen Options. (line 109)
61579 * fwritable-relocated-rdata: x86 Windows Options.
61581 * fzero-initialized-in-bss: Optimize Options. (line 445)
61582 * fzero-link: Objective-C and Objective-C++ Dialect Options.
61584 * g: Debugging Options. (line 25)
61585 * G: ARC Options. (line 416)
61586 * G <1>: M32R/D Options. (line 57)
61587 * G <2>: MIPS Options. (line 460)
61588 * G <3>: Nios II Options. (line 9)
61589 * G <4>: RS/6000 and PowerPC Options.
61591 * G <5>: System V Options. (line 10)
61592 * gas-loc-support: Debugging Options. (line 221)
61593 * gas-locview-support: Debugging Options. (line 237)
61594 * gcolumn-info: Debugging Options. (line 249)
61595 * gdescribe-dies: Debugging Options. (line 179)
61596 * gdwarf: Debugging Options. (line 45)
61597 * gen-decls: Objective-C and Objective-C++ Dialect Options.
61599 * gfull: Darwin Options. (line 69)
61600 * ggdb: Debugging Options. (line 38)
61601 * ggnu-pubnames: Debugging Options. (line 187)
61602 * ginline-points: Debugging Options. (line 308)
61603 * ginternal-reset-location-views: Debugging Options. (line 297)
61604 * gno-as-loc-support: Debugging Options. (line 233)
61605 * gno-column-info: Debugging Options. (line 249)
61606 * gno-inline-points: Debugging Options. (line 308)
61607 * gno-internal-reset-location-views: Debugging Options. (line 297)
61608 * gno-record-gcc-switches: Debugging Options. (line 202)
61609 * gno-statement-frontiers: Debugging Options. (line 254)
61610 * gno-strict-dwarf: Debugging Options. (line 217)
61611 * gno-variable-location-views: Debugging Options. (line 265)
61612 * gpubnames: Debugging Options. (line 184)
61613 * grecord-gcc-switches: Debugging Options. (line 202)
61614 * gsplit-dwarf: Debugging Options. (line 172)
61615 * gstabs: Debugging Options. (line 63)
61616 * gstabs+: Debugging Options. (line 71)
61617 * gstatement-frontiers: Debugging Options. (line 254)
61618 * gstrict-dwarf: Debugging Options. (line 211)
61619 * gtoggle: Developer Options. (line 838)
61620 * gused: Darwin Options. (line 64)
61621 * gvariable-location-views: Debugging Options. (line 265)
61622 * gvariable-location-views=incompat5: Debugging Options. (line 265)
61623 * gvms: Debugging Options. (line 90)
61624 * gxcoff: Debugging Options. (line 77)
61625 * gxcoff+: Debugging Options. (line 82)
61626 * gz: Debugging Options. (line 317)
61627 * H: Preprocessor Options.
61629 * headerpad_max_install_names: Darwin Options. (line 196)
61630 * help: Overall Options. (line 220)
61631 * I: Directory Options. (line 13)
61632 * I-: Directory Options. (line 65)
61633 * idirafter: Directory Options. (line 13)
61634 * iframework: Darwin Options. (line 57)
61635 * imacros: Preprocessor Options.
61637 * image_base: Darwin Options. (line 196)
61638 * imultilib: Directory Options. (line 98)
61639 * include: Preprocessor Options.
61641 * init: Darwin Options. (line 196)
61642 * install_name: Darwin Options. (line 196)
61643 * iplugindir=: Directory Options. (line 113)
61644 * iprefix: Directory Options. (line 80)
61645 * iquote: Directory Options. (line 13)
61646 * isysroot: Directory Options. (line 92)
61647 * isystem: Directory Options. (line 13)
61648 * iwithprefix: Directory Options. (line 86)
61649 * iwithprefixbefore: Directory Options. (line 86)
61650 * keep_private_externs: Darwin Options. (line 196)
61651 * l: Link Options. (line 84)
61652 * L: Directory Options. (line 118)
61653 * lobjc: Link Options. (line 110)
61654 * M: Preprocessor Options.
61656 * m: RS/6000 and PowerPC Options.
61658 * m1: SH Options. (line 9)
61659 * m10: PDP-11 Options. (line 29)
61660 * m128bit-long-double: x86 Options. (line 584)
61661 * m16: x86 Options. (line 1425)
61662 * m16-bit: CRIS Options. (line 64)
61663 * m16-bit <1>: NDS32 Options. (line 51)
61664 * m1reg-: Adapteva Epiphany Options.
61666 * m2: SH Options. (line 12)
61667 * m210: MCore Options. (line 43)
61668 * m2a: SH Options. (line 30)
61669 * m2a-nofpu: SH Options. (line 18)
61670 * m2a-single: SH Options. (line 26)
61671 * m2a-single-only: SH Options. (line 22)
61672 * m3: SH Options. (line 34)
61673 * m31: S/390 and zSeries Options.
61675 * m32: Nvidia PTX Options. (line 10)
61676 * m32 <1>: RS/6000 and PowerPC Options.
61678 * m32 <2>: SPARC Options. (line 315)
61679 * m32 <3>: TILE-Gx Options. (line 23)
61680 * m32 <4>: TILEPro Options. (line 13)
61681 * m32 <5>: x86 Options. (line 1425)
61682 * m32-bit: CRIS Options. (line 64)
61683 * m32bit-doubles: RL78 Options. (line 73)
61684 * m32bit-doubles <1>: RX Options. (line 10)
61685 * m32r: M32R/D Options. (line 15)
61686 * m32r2: M32R/D Options. (line 9)
61687 * m32rx: M32R/D Options. (line 12)
61688 * m340: MCore Options. (line 43)
61689 * m3dnow: x86 Options. (line 807)
61690 * m3dnowa: x86 Options. (line 808)
61691 * m3e: SH Options. (line 37)
61692 * m4: SH Options. (line 51)
61693 * m4-100: SH Options. (line 54)
61694 * m4-100-nofpu: SH Options. (line 57)
61695 * m4-100-single: SH Options. (line 61)
61696 * m4-100-single-only: SH Options. (line 65)
61697 * m4-200: SH Options. (line 69)
61698 * m4-200-nofpu: SH Options. (line 72)
61699 * m4-200-single: SH Options. (line 76)
61700 * m4-200-single-only: SH Options. (line 80)
61701 * m4-300: SH Options. (line 84)
61702 * m4-300-nofpu: SH Options. (line 87)
61703 * m4-300-single: SH Options. (line 91)
61704 * m4-300-single-only: SH Options. (line 95)
61705 * m4-340: SH Options. (line 99)
61706 * m4-500: SH Options. (line 102)
61707 * m4-nofpu: SH Options. (line 40)
61708 * m4-single: SH Options. (line 47)
61709 * m4-single-only: SH Options. (line 43)
61710 * m40: PDP-11 Options. (line 23)
61711 * m45: PDP-11 Options. (line 26)
61712 * m4a: SH Options. (line 118)
61713 * m4a-nofpu: SH Options. (line 106)
61714 * m4a-single: SH Options. (line 114)
61715 * m4a-single-only: SH Options. (line 110)
61716 * m4al: SH Options. (line 121)
61717 * m4byte-functions: MCore Options. (line 27)
61718 * m5200: M680x0 Options. (line 144)
61719 * m5206e: M680x0 Options. (line 153)
61720 * m528x: M680x0 Options. (line 157)
61721 * m5307: M680x0 Options. (line 161)
61722 * m5407: M680x0 Options. (line 165)
61723 * m64: Nvidia PTX Options. (line 10)
61724 * m64 <1>: RS/6000 and PowerPC Options.
61726 * m64 <2>: S/390 and zSeries Options.
61728 * m64 <3>: SPARC Options. (line 315)
61729 * m64 <4>: TILE-Gx Options. (line 23)
61730 * m64 <5>: x86 Options. (line 1425)
61731 * m64bit-doubles: RL78 Options. (line 73)
61732 * m64bit-doubles <1>: RX Options. (line 10)
61733 * m68000: M680x0 Options. (line 93)
61734 * m68010: M680x0 Options. (line 101)
61735 * m68020: M680x0 Options. (line 107)
61736 * m68020-40: M680x0 Options. (line 175)
61737 * m68020-60: M680x0 Options. (line 184)
61738 * m68030: M680x0 Options. (line 112)
61739 * m68040: M680x0 Options. (line 117)
61740 * m68060: M680x0 Options. (line 126)
61741 * m68881: M680x0 Options. (line 194)
61742 * m8-bit: CRIS Options. (line 64)
61743 * m8bit-idiv: x86 Options. (line 1346)
61744 * m8byte-align: V850 Options. (line 170)
61745 * m96bit-long-double: x86 Options. (line 584)
61746 * mA6: ARC Options. (line 23)
61747 * mA7: ARC Options. (line 30)
61748 * mabi: AArch64 Options. (line 9)
61749 * mabi <1>: ARM Options. (line 9)
61750 * mabi <2>: PRU Options. (line 28)
61751 * mabi <3>: RISC-V Options. (line 17)
61752 * mabi <4>: RS/6000 and PowerPC Options.
61754 * mabi <5>: x86 Options. (line 1039)
61755 * mabi=32: MIPS Options. (line 156)
61756 * mabi=64: MIPS Options. (line 156)
61757 * mabi=eabi: MIPS Options. (line 156)
61758 * mabi=elfv1: RS/6000 and PowerPC Options.
61760 * mabi=elfv2: RS/6000 and PowerPC Options.
61762 * mabi=gnu: MMIX Options. (line 20)
61763 * mabi=ibmlongdouble: RS/6000 and PowerPC Options.
61765 * mabi=ieeelongdouble: RS/6000 and PowerPC Options.
61767 * mabi=mmixware: MMIX Options. (line 20)
61768 * mabi=n32: MIPS Options. (line 156)
61769 * mabi=o64: MIPS Options. (line 156)
61770 * mabicalls: MIPS Options. (line 192)
61771 * mabm: x86 Options. (line 810)
61772 * mabort-on-noreturn: ARM Options. (line 750)
61773 * mabs=2008: MIPS Options. (line 300)
61774 * mabs=legacy: MIPS Options. (line 300)
61775 * mabsdata: AVR Options. (line 163)
61776 * mabsdiff: MeP Options. (line 7)
61777 * mac0: PDP-11 Options. (line 16)
61778 * macc-4: FRV Options. (line 139)
61779 * macc-8: FRV Options. (line 143)
61780 * maccumulate-args: AVR Options. (line 170)
61781 * maccumulate-outgoing-args: SH Options. (line 314)
61782 * maccumulate-outgoing-args <1>: x86 Options. (line 1083)
61783 * maddress-mode=long: x86 Options. (line 1475)
61784 * maddress-mode=short: x86 Options. (line 1480)
61785 * mads: RS/6000 and PowerPC Options.
61787 * madx: x86 Options. (line 811)
61788 * maes: x86 Options. (line 788)
61789 * maix-struct-return: RS/6000 and PowerPC Options.
61791 * maix32: RS/6000 and PowerPC Options.
61793 * maix64: RS/6000 and PowerPC Options.
61795 * malign-300: H8/300 Options. (line 41)
61796 * malign-call: ARC Options. (line 435)
61797 * malign-data: RISC-V Options. (line 127)
61798 * malign-data <1>: x86 Options. (line 624)
61799 * malign-double: x86 Options. (line 569)
61800 * malign-int: M680x0 Options. (line 261)
61801 * malign-labels: FRV Options. (line 128)
61802 * malign-loops: M32R/D Options. (line 73)
61803 * malign-natural: RS/6000 and PowerPC Options.
61805 * malign-power: RS/6000 and PowerPC Options.
61807 * malign-stringops: x86 Options. (line 1219)
61808 * mall-opts: MeP Options. (line 11)
61809 * malloc-cc: FRV Options. (line 31)
61810 * mallow-string-insns: RX Options. (line 150)
61811 * mallregs: RL78 Options. (line 66)
61812 * maltivec: RS/6000 and PowerPC Options.
61814 * mam33: MN10300 Options. (line 17)
61815 * mam33-2: MN10300 Options. (line 24)
61816 * mam34: MN10300 Options. (line 27)
61817 * manchor: C-SKY Options. (line 110)
61818 * mandroid: GNU/Linux Options. (line 26)
61819 * mannotate-align: ARC Options. (line 382)
61820 * mapcs: ARM Options. (line 21)
61821 * mapcs-frame: ARM Options. (line 13)
61822 * mapp-regs: SPARC Options. (line 10)
61823 * mapp-regs <1>: V850 Options. (line 181)
61824 * mARC600: ARC Options. (line 23)
61825 * mARC601: ARC Options. (line 27)
61826 * mARC700: ARC Options. (line 30)
61827 * march: AArch64 Options. (line 165)
61828 * march <1>: AMD GCN Options. (line 9)
61829 * march <2>: ARM Options. (line 80)
61830 * march <3>: C6X Options. (line 7)
61831 * march <4>: CRIS Options. (line 10)
61832 * march <5>: HPPA Options. (line 9)
61833 * march <6>: HPPA Options. (line 162)
61834 * march <7>: M680x0 Options. (line 12)
61835 * march <8>: MIPS Options. (line 14)
61836 * march <9>: NDS32 Options. (line 64)
61837 * march <10>: Nios II Options. (line 94)
61838 * march <11>: Nvidia PTX Options. (line 13)
61839 * march <12>: RISC-V Options. (line 54)
61840 * march <13>: S/390 and zSeries Options.
61842 * march <14>: x86 Options. (line 9)
61843 * march=: C-SKY Options. (line 9)
61844 * marclinux: ARC Options. (line 388)
61845 * marclinux_prof: ARC Options. (line 395)
61846 * margonaut: ARC Options. (line 593)
61847 * marm: ARM Options. (line 822)
61848 * mas100-syntax: RX Options. (line 76)
61849 * masm-hex: MSP430 Options. (line 9)
61850 * masm-syntax-unified: ARM Options. (line 921)
61851 * masm=DIALECT: x86 Options. (line 518)
61852 * matomic: ARC Options. (line 155)
61853 * matomic-model=MODEL: SH Options. (line 193)
61854 * mauto-litpools: Xtensa Options. (line 60)
61855 * mauto-modify-reg: ARC Options. (line 438)
61856 * mauto-pic: IA-64 Options. (line 50)
61857 * maverage: MeP Options. (line 16)
61858 * mavoid-indexed-addresses: RS/6000 and PowerPC Options.
61860 * mavx: x86 Options. (line 776)
61861 * mavx2: x86 Options. (line 777)
61862 * mavx256-split-unaligned-load: x86 Options. (line 1354)
61863 * mavx256-split-unaligned-store: x86 Options. (line 1354)
61864 * mavx5124fmaps: x86 Options. (line 838)
61865 * mavx5124vnniw: x86 Options. (line 840)
61866 * mavx512bf16: x86 Options. (line 827)
61867 * mavx512bitalg: x86 Options. (line 832)
61868 * mavx512bw: x86 Options. (line 783)
61869 * mavx512cd: x86 Options. (line 781)
61870 * mavx512dq: x86 Options. (line 784)
61871 * mavx512er: x86 Options. (line 780)
61872 * mavx512f: x86 Options. (line 778)
61873 * mavx512ifma: x86 Options. (line 785)
61874 * mavx512pf: x86 Options. (line 779)
61875 * mavx512vbmi: x86 Options. (line 786)
61876 * mavx512vbmi2: x86 Options. (line 826)
61877 * mavx512vl: x86 Options. (line 782)
61878 * mavx512vnni: x86 Options. (line 839)
61879 * mavx512vp2intersect: x86 Options. (line 837)
61880 * mavx512vpopcntdq: x86 Options. (line 836)
61881 * max-vect-align: Adapteva Epiphany Options.
61883 * mb: SH Options. (line 126)
61884 * mbackchain: S/390 and zSeries Options.
61886 * mbarrel-shift-enabled: LM32 Options. (line 9)
61887 * mbarrel-shifter: ARC Options. (line 10)
61888 * mbarrel_shifter: ARC Options. (line 613)
61889 * mbase-addresses: MMIX Options. (line 53)
61890 * mbased=: MeP Options. (line 20)
61891 * mbbit-peephole: ARC Options. (line 441)
61892 * mbe8: ARM Options. (line 72)
61893 * mbig: RS/6000 and PowerPC Options.
61895 * mbig-endian: AArch64 Options. (line 20)
61896 * mbig-endian <1>: ARC Options. (line 596)
61897 * mbig-endian <2>: ARM Options. (line 67)
61898 * mbig-endian <3>: C6X Options. (line 13)
61899 * mbig-endian <4>: C-SKY Options. (line 28)
61900 * mbig-endian <5>: eBPF Options. (line 22)
61901 * mbig-endian <6>: IA-64 Options. (line 9)
61902 * mbig-endian <7>: MCore Options. (line 39)
61903 * mbig-endian <8>: MicroBlaze Options. (line 56)
61904 * mbig-endian <9>: NDS32 Options. (line 9)
61905 * mbig-endian <10>: RS/6000 and PowerPC Options.
61907 * mbig-endian <11>: TILE-Gx Options. (line 29)
61908 * mbig-endian-data: RX Options. (line 42)
61909 * mbig-switch: V850 Options. (line 176)
61910 * mbigtable: SH Options. (line 141)
61911 * mbionic: GNU/Linux Options. (line 22)
61912 * mbit-align: RS/6000 and PowerPC Options.
61914 * mbit-ops: CR16 Options. (line 25)
61915 * mbitfield: M680x0 Options. (line 231)
61916 * mbitops: MeP Options. (line 26)
61917 * mbitops <1>: SH Options. (line 145)
61918 * mblock-compare-inline-limit: RS/6000 and PowerPC Options.
61920 * mblock-compare-inline-loop-limit: RS/6000 and PowerPC Options.
61922 * mblock-move-inline-limit: RS/6000 and PowerPC Options.
61924 * mbmi: x86 Options. (line 812)
61925 * mbmi2: x86 Options. (line 813)
61926 * mboard: OpenRISC Options. (line 9)
61927 * mbranch-cost: Adapteva Epiphany Options.
61929 * mbranch-cost <1>: AVR Options. (line 185)
61930 * mbranch-cost <2>: MIPS Options. (line 785)
61931 * mbranch-cost <3>: RISC-V Options. (line 9)
61932 * mbranch-cost=: C-SKY Options. (line 143)
61933 * mbranch-cost=NUM: SH Options. (line 334)
61934 * mbranch-cost=NUMBER: M32R/D Options. (line 82)
61935 * mbranch-index: ARC Options. (line 329)
61936 * mbranch-likely: MIPS Options. (line 792)
61937 * mbranch-predict: MMIX Options. (line 48)
61938 * mbranch-protection: AArch64 Options. (line 296)
61939 * mbss-plt: RS/6000 and PowerPC Options.
61941 * mbuild-constants: DEC Alpha Options. (line 141)
61942 * mbwx: DEC Alpha Options. (line 163)
61943 * mbypass-cache: Nios II Options. (line 103)
61944 * mc68000: M680x0 Options. (line 93)
61945 * mc68020: M680x0 Options. (line 107)
61946 * mc=: MeP Options. (line 31)
61947 * mcache: C-SKY Options. (line 77)
61948 * mcache-block-size: NDS32 Options. (line 60)
61949 * mcache-volatile: Nios II Options. (line 109)
61950 * mcall-eabi: RS/6000 and PowerPC Options.
61952 * mcall-freebsd: RS/6000 and PowerPC Options.
61954 * mcall-linux: RS/6000 and PowerPC Options.
61956 * mcall-ms2sysv-xlogues: x86 Options. (line 1059)
61957 * mcall-netbsd: RS/6000 and PowerPC Options.
61959 * mcall-netbsd <1>: RS/6000 and PowerPC Options.
61961 * mcall-prologues: AVR Options. (line 190)
61962 * mcall-sysv: RS/6000 and PowerPC Options.
61964 * mcall-sysv-eabi: RS/6000 and PowerPC Options.
61966 * mcall-sysv-noeabi: RS/6000 and PowerPC Options.
61968 * mcallee-super-interworking: ARM Options. (line 851)
61969 * mcaller-copies: HPPA Options. (line 23)
61970 * mcaller-super-interworking: ARM Options. (line 858)
61971 * mcallgraph-data: MCore Options. (line 31)
61972 * mcase-vector-pcrel: ARC Options. (line 450)
61973 * mcbcond: SPARC Options. (line 260)
61974 * mcbranch-force-delay-slot: SH Options. (line 349)
61975 * mcc-init: CRIS Options. (line 42)
61976 * mccrt: C-SKY Options. (line 139)
61977 * mcfv4e: M680x0 Options. (line 169)
61978 * mcheck-zero-division: MIPS Options. (line 570)
61979 * mcix: DEC Alpha Options. (line 163)
61980 * mcld: x86 Options. (line 892)
61981 * mcldemote: x86 Options. (line 841)
61982 * mclear-hwcap: Solaris 2 Options. (line 9)
61983 * mclflushopt: x86 Options. (line 790)
61984 * mclip: MeP Options. (line 35)
61985 * mclwb: x86 Options. (line 791)
61986 * mclzero: x86 Options. (line 824)
61987 * mcmodel: NDS32 Options. (line 67)
61988 * mcmodel <1>: SPARC Options. (line 320)
61989 * mcmodel=kernel: x86 Options. (line 1459)
61990 * mcmodel=large: AArch64 Options. (line 45)
61991 * mcmodel=large <1>: RS/6000 and PowerPC Options.
61993 * mcmodel=large <2>: TILE-Gx Options. (line 14)
61994 * mcmodel=large <3>: x86 Options. (line 1471)
61995 * mcmodel=medany: RISC-V Options. (line 105)
61996 * mcmodel=medium: RS/6000 and PowerPC Options.
61998 * mcmodel=medium <1>: x86 Options. (line 1464)
61999 * mcmodel=medlow: RISC-V Options. (line 98)
62000 * mcmodel=small: AArch64 Options. (line 39)
62001 * mcmodel=small <1>: RS/6000 and PowerPC Options.
62003 * mcmodel=small <2>: TILE-Gx Options. (line 9)
62004 * mcmodel=small <3>: x86 Options. (line 1453)
62005 * mcmodel=tiny: AArch64 Options. (line 34)
62006 * mcmov: NDS32 Options. (line 21)
62007 * mcmov <1>: OpenRISC Options. (line 45)
62008 * mcmove: Adapteva Epiphany Options.
62010 * mcmpb: RS/6000 and PowerPC Options.
62012 * mcmse: ARM Options. (line 950)
62013 * mcode-density: ARC Options. (line 163)
62014 * mcode-density-frame: ARC Options. (line 511)
62015 * mcode-readable: MIPS Options. (line 530)
62016 * mcode-region: MSP430 Options. (line 135)
62017 * mcompact-branches=always: MIPS Options. (line 804)
62018 * mcompact-branches=never: MIPS Options. (line 804)
62019 * mcompact-branches=optimal: MIPS Options. (line 804)
62020 * mcompact-casesi: ARC Options. (line 454)
62021 * mcompat-align-parm: RS/6000 and PowerPC Options.
62023 * mcompress: FT32 Options. (line 26)
62024 * mcond-exec: FRV Options. (line 187)
62025 * mcond-move: FRV Options. (line 159)
62026 * mconfig=: MeP Options. (line 39)
62027 * mconsole: x86 Windows Options.
62029 * mconst-align: CRIS Options. (line 55)
62030 * mconst16: Xtensa Options. (line 10)
62031 * mconstant-gp: IA-64 Options. (line 46)
62032 * mconstpool: C-SKY Options. (line 127)
62033 * mcop: MeP Options. (line 48)
62034 * mcop32: MeP Options. (line 53)
62035 * mcop64: MeP Options. (line 56)
62036 * mcorea: Blackfin Options. (line 154)
62037 * mcoreb: Blackfin Options. (line 161)
62038 * mcp: C-SKY Options. (line 74)
62039 * mcpu: AArch64 Options. (line 243)
62040 * mcpu <1>: ARC Options. (line 18)
62041 * mcpu <2>: ARM Options. (line 620)
62042 * mcpu <3>: CRIS Options. (line 10)
62043 * mcpu <4>: DEC Alpha Options. (line 215)
62044 * mcpu <5>: FRV Options. (line 258)
62045 * mcpu <6>: M680x0 Options. (line 28)
62046 * mcpu <7>: picoChip Options. (line 9)
62047 * mcpu <8>: RL78 Options. (line 32)
62048 * mcpu <9>: RS/6000 and PowerPC Options.
62050 * mcpu <10>: RX Options. (line 30)
62051 * mcpu <11>: SPARC Options. (line 115)
62052 * mcpu <12>: TILE-Gx Options. (line 18)
62053 * mcpu <13>: TILEPro Options. (line 9)
62054 * mcpu <14>: Visium Options. (line 33)
62055 * mcpu <15>: x86 Options. (line 464)
62056 * mcpu32: M680x0 Options. (line 135)
62057 * mcpu=: Blackfin Options. (line 7)
62058 * mcpu= <1>: C-SKY Options. (line 14)
62059 * mcpu= <2>: M32C Options. (line 7)
62060 * mcpu= <3>: MicroBlaze Options. (line 20)
62061 * mcpu= <4>: MSP430 Options. (line 72)
62062 * mcr16c: CR16 Options. (line 14)
62063 * mcr16cplus: CR16 Options. (line 14)
62064 * mcrc: MIPS Options. (line 416)
62065 * mcrc32: x86 Options. (line 960)
62066 * mcrypto: RS/6000 and PowerPC Options.
62068 * mcsync-anomaly: Blackfin Options. (line 57)
62069 * mcsync-anomaly <1>: Blackfin Options. (line 63)
62070 * mctor-dtor: NDS32 Options. (line 81)
62071 * mcustom-fpu-cfg: Nios II Options. (line 259)
62072 * mcustom-INSN: Nios II Options. (line 139)
62073 * mcx16: x86 Options. (line 933)
62074 * MD: Preprocessor Options.
62076 * mdalign: SH Options. (line 132)
62077 * mdata-align: CRIS Options. (line 55)
62078 * mdata-model: CR16 Options. (line 28)
62079 * mdata-region: MSP430 Options. (line 135)
62080 * mdc: MeP Options. (line 62)
62081 * mdebug: M32R/D Options. (line 69)
62082 * mdebug <1>: S/390 and zSeries Options.
62084 * mdebug <2>: Visium Options. (line 7)
62085 * mdebug-main=PREFIX: VMS Options. (line 13)
62086 * mdec-asm: PDP-11 Options. (line 46)
62087 * mdisable-callt: V850 Options. (line 92)
62088 * mdisable-fpregs: HPPA Options. (line 34)
62089 * mdisable-indexing: HPPA Options. (line 40)
62090 * mdiv: C-SKY Options. (line 93)
62091 * mdiv <1>: M680x0 Options. (line 206)
62092 * mdiv <2>: MCore Options. (line 15)
62093 * mdiv <3>: MeP Options. (line 65)
62094 * mdiv <4>: RISC-V Options. (line 49)
62095 * mdiv-rem: ARC Options. (line 160)
62096 * mdiv=STRATEGY: SH Options. (line 284)
62097 * mdivide-breaks: MIPS Options. (line 576)
62098 * mdivide-enabled: LM32 Options. (line 12)
62099 * mdivide-traps: MIPS Options. (line 576)
62100 * mdivsi3_libfunc=NAME: SH Options. (line 320)
62101 * mdll: x86 Windows Options.
62103 * mdlmzb: RS/6000 and PowerPC Options.
62105 * mdmx: MIPS Options. (line 376)
62106 * mdouble: AVR Options. (line 195)
62107 * mdouble <1>: FRV Options. (line 48)
62108 * mdouble-float: C-SKY Options. (line 42)
62109 * mdouble-float <1>: MIPS Options. (line 288)
62110 * mdouble-float <2>: OpenRISC Options. (line 33)
62111 * mdpfp: ARC Options. (line 99)
62112 * mdpfp-compact: ARC Options. (line 100)
62113 * mdpfp-fast: ARC Options. (line 104)
62114 * mdpfp_compact: ARC Options. (line 616)
62115 * mdpfp_fast: ARC Options. (line 619)
62116 * mdsp: C-SKY Options. (line 86)
62117 * mdsp <1>: MIPS Options. (line 353)
62118 * mdsp-packa: ARC Options. (line 335)
62119 * mdspr2: MIPS Options. (line 359)
62120 * mdsp_packa: ARC Options. (line 622)
62121 * mdump-tune-features: x86 Options. (line 874)
62122 * mdvbf: ARC Options. (line 340)
62123 * mdwarf2-asm: IA-64 Options. (line 94)
62124 * mdword: FRV Options. (line 40)
62125 * mdword <1>: FRV Options. (line 44)
62126 * mdynamic-no-pic: RS/6000 and PowerPC Options.
62128 * mea: ARC Options. (line 112)
62129 * mEA: ARC Options. (line 625)
62130 * meabi: RS/6000 and PowerPC Options.
62132 * mearly-cbranchsi: ARC Options. (line 476)
62133 * mearly-stop-bits: IA-64 Options. (line 100)
62134 * meb: MeP Options. (line 68)
62135 * meb <1>: Moxie Options. (line 7)
62136 * meb <2>: Nios II Options. (line 90)
62137 * meb <3>: Score Options. (line 9)
62138 * medsp: C-SKY Options. (line 87)
62139 * mel: MeP Options. (line 71)
62140 * mel <1>: Moxie Options. (line 11)
62141 * mel <2>: Nios II Options. (line 90)
62142 * mel <3>: Score Options. (line 12)
62143 * melf: CRIS Options. (line 87)
62144 * melf <1>: MMIX Options. (line 43)
62145 * melrw: C-SKY Options. (line 60)
62146 * memb: RS/6000 and PowerPC Options.
62148 * membedded-data: MIPS Options. (line 517)
62149 * memregs=: M32C Options. (line 21)
62150 * menqcmd: x86 Options. (line 835)
62151 * mep: V850 Options. (line 16)
62152 * mepsilon: MMIX Options. (line 15)
62153 * mesa: S/390 and zSeries Options.
62155 * metrax100: CRIS Options. (line 27)
62156 * metrax4: CRIS Options. (line 27)
62157 * meva: MIPS Options. (line 403)
62158 * mexpand-adddi: ARC Options. (line 479)
62159 * mexplicit-relocs: DEC Alpha Options. (line 176)
62160 * mexplicit-relocs <1>: MIPS Options. (line 561)
62161 * mexr: H8/300 Options. (line 28)
62162 * mexr <1>: H8/300 Options. (line 33)
62163 * mext-perf: NDS32 Options. (line 27)
62164 * mext-perf2: NDS32 Options. (line 33)
62165 * mext-string: NDS32 Options. (line 39)
62166 * mextern-sdata: MIPS Options. (line 480)
62167 * MF: Preprocessor Options.
62169 * mf16c: x86 Options. (line 795)
62170 * mfancy-math-387: x86 Options. (line 559)
62171 * mfast-fp: Blackfin Options. (line 130)
62172 * mfast-indirect-calls: HPPA Options. (line 52)
62173 * mfast-sw-div: Nios II Options. (line 115)
62174 * mfaster-structs: SPARC Options. (line 91)
62175 * mfdiv: RISC-V Options. (line 42)
62176 * mfdivdu: C-SKY Options. (line 48)
62177 * mfdpic: ARM Options. (line 965)
62178 * mfdpic <1>: FRV Options. (line 72)
62179 * mfentry: x86 Options. (line 1293)
62180 * mfentry-name: x86 Options. (line 1324)
62181 * mfentry-section: x86 Options. (line 1328)
62182 * mfix: DEC Alpha Options. (line 163)
62183 * mfix-24k: MIPS Options. (line 641)
62184 * mfix-and-continue: Darwin Options. (line 104)
62185 * mfix-at697f: SPARC Options. (line 294)
62186 * mfix-cmse-cve-2021-35465: ARM Options. (line 956)
62187 * mfix-cortex-a53-835769: AArch64 Options. (line 105)
62188 * mfix-cortex-a53-843419: AArch64 Options. (line 112)
62189 * mfix-cortex-m3-ldrd: ARM Options. (line 892)
62190 * mfix-gr712rc: SPARC Options. (line 307)
62191 * mfix-r10000: MIPS Options. (line 663)
62192 * mfix-r4000: MIPS Options. (line 647)
62193 * mfix-r4400: MIPS Options. (line 657)
62194 * mfix-r5900: MIPS Options. (line 674)
62195 * mfix-rm7000: MIPS Options. (line 684)
62196 * mfix-sb1: MIPS Options. (line 709)
62197 * mfix-ut699: SPARC Options. (line 299)
62198 * mfix-ut700: SPARC Options. (line 303)
62199 * mfix-vr4120: MIPS Options. (line 689)
62200 * mfix-vr4130: MIPS Options. (line 702)
62201 * mfixed-cc: FRV Options. (line 35)
62202 * mfixed-range: HPPA Options. (line 59)
62203 * mfixed-range <1>: IA-64 Options. (line 105)
62204 * mfixed-range <2>: SH Options. (line 327)
62205 * mflat: SPARC Options. (line 22)
62206 * mflip-mips16: MIPS Options. (line 128)
62207 * mflip-thumb: ARM Options. (line 834)
62208 * mfloat-abi: ARM Options. (line 41)
62209 * mfloat-ieee: DEC Alpha Options. (line 171)
62210 * mfloat-vax: DEC Alpha Options. (line 171)
62211 * mfloat128: RS/6000 and PowerPC Options.
62213 * mfloat128-hardware: RS/6000 and PowerPC Options.
62215 * mflush-func: MIPS Options. (line 776)
62216 * mflush-func=NAME: M32R/D Options. (line 93)
62217 * mflush-trap=NUMBER: M32R/D Options. (line 86)
62218 * mfma: x86 Options. (line 796)
62219 * mfma4: x86 Options. (line 799)
62220 * mfmaf: SPARC Options. (line 267)
62221 * mfmovd: SH Options. (line 148)
62222 * mforce-indirect-call: x86 Options. (line 1048)
62223 * mforce-no-pic: Xtensa Options. (line 41)
62224 * mfp-exceptions: MIPS Options. (line 824)
62225 * mfp-mode: Adapteva Epiphany Options.
62227 * mfp-reg: DEC Alpha Options. (line 25)
62228 * mfp-ret-in-387: x86 Options. (line 549)
62229 * mfp-rounding-mode: DEC Alpha Options. (line 85)
62230 * mfp-trap-mode: DEC Alpha Options. (line 63)
62231 * mfp16-format: ARM Options. (line 728)
62232 * mfp32: MIPS Options. (line 258)
62233 * mfp64: MIPS Options. (line 261)
62234 * mfpmath: Optimize Options. (line 2226)
62235 * mfpmath <1>: x86 Options. (line 467)
62236 * mfpr-32: FRV Options. (line 15)
62237 * mfpr-64: FRV Options. (line 19)
62238 * mfprnd: RS/6000 and PowerPC Options.
62240 * mfpu: ARC Options. (line 231)
62241 * mfpu <1>: ARM Options. (line 700)
62242 * mfpu <2>: PDP-11 Options. (line 9)
62243 * mfpu <3>: SPARC Options. (line 34)
62244 * mfpu <4>: Visium Options. (line 19)
62245 * mfpu=: C-SKY Options. (line 53)
62246 * mfpxx: MIPS Options. (line 264)
62247 * mfract-convert-truncate: AVR Options. (line 286)
62248 * mframe-header-opt: MIPS Options. (line 885)
62249 * mfriz: RS/6000 and PowerPC Options.
62251 * mfsca: SH Options. (line 365)
62252 * mfsgsbase: x86 Options. (line 792)
62253 * mfsmuld: SPARC Options. (line 274)
62254 * mfsrra: SH Options. (line 374)
62255 * mft32b: FT32 Options. (line 23)
62256 * mfull-regs: NDS32 Options. (line 18)
62257 * mfull-toc: RS/6000 and PowerPC Options.
62259 * mfunction-return: x86 Options. (line 1396)
62260 * mfused-madd: IA-64 Options. (line 88)
62261 * mfused-madd <1>: MIPS Options. (line 624)
62262 * mfused-madd <2>: RS/6000 and PowerPC Options.
62264 * mfused-madd <3>: S/390 and zSeries Options.
62266 * mfused-madd <4>: SH Options. (line 356)
62267 * mfused-madd <5>: Xtensa Options. (line 19)
62268 * mfxsr: x86 Options. (line 815)
62269 * MG: Preprocessor Options.
62271 * mg: VAX Options. (line 17)
62272 * mg10: RL78 Options. (line 62)
62273 * mg13: RL78 Options. (line 62)
62274 * mg14: RL78 Options. (line 62)
62275 * mgas: HPPA Options. (line 75)
62276 * mgas-isr-prologues: AVR Options. (line 203)
62277 * mgcc-abi: V850 Options. (line 148)
62278 * mgeneral-regs-only: AArch64 Options. (line 24)
62279 * mgeneral-regs-only <1>: ARM Options. (line 57)
62280 * mgeneral-regs-only <2>: x86 Options. (line 1372)
62281 * mgfni: x86 Options. (line 828)
62282 * mghs: V850 Options. (line 127)
62283 * mginv: MIPS Options. (line 421)
62284 * mglibc: GNU/Linux Options. (line 9)
62285 * mgnu: VAX Options. (line 13)
62286 * mgnu-as: IA-64 Options. (line 18)
62287 * mgnu-asm: PDP-11 Options. (line 49)
62288 * mgnu-attribute: RS/6000 and PowerPC Options.
62290 * mgnu-ld: HPPA Options. (line 111)
62291 * mgnu-ld <1>: IA-64 Options. (line 23)
62292 * mgomp: Nvidia PTX Options. (line 53)
62293 * mgotplt: CRIS Options. (line 81)
62294 * mgp32: MIPS Options. (line 252)
62295 * mgp64: MIPS Options. (line 255)
62296 * mgpopt: MIPS Options. (line 502)
62297 * mgpopt <1>: Nios II Options. (line 16)
62298 * mgpr-32: FRV Options. (line 7)
62299 * mgpr-64: FRV Options. (line 11)
62300 * mgprel-ro: FRV Options. (line 99)
62301 * mgprel-sec: Nios II Options. (line 65)
62302 * mh: H8/300 Options. (line 14)
62303 * mhal: Nios II Options. (line 304)
62304 * mhalf-reg-file: Adapteva Epiphany Options.
62306 * mhard-dfp: RS/6000 and PowerPC Options.
62308 * mhard-dfp <1>: S/390 and zSeries Options.
62310 * mhard-div: OpenRISC Options. (line 19)
62311 * mhard-float: C-SKY Options. (line 35)
62312 * mhard-float <1>: FRV Options. (line 23)
62313 * mhard-float <2>: M680x0 Options. (line 194)
62314 * mhard-float <3>: MicroBlaze Options. (line 10)
62315 * mhard-float <4>: MIPS Options. (line 267)
62316 * mhard-float <5>: OpenRISC Options. (line 29)
62317 * mhard-float <6>: RS/6000 and PowerPC Options.
62319 * mhard-float <7>: S/390 and zSeries Options.
62321 * mhard-float <8>: SPARC Options. (line 34)
62322 * mhard-float <9>: V850 Options. (line 113)
62323 * mhard-float <10>: Visium Options. (line 19)
62324 * mhard-float <11>: x86 Options. (line 532)
62325 * mhard-mul: OpenRISC Options. (line 24)
62326 * mhard-quad-float: SPARC Options. (line 55)
62327 * mharden-sls: AArch64 Options. (line 309)
62328 * mhardlit: MCore Options. (line 10)
62329 * mhigh-registers: C-SKY Options. (line 104)
62330 * mhle: x86 Options. (line 821)
62331 * mhotpatch: S/390 and zSeries Options.
62333 * mhp-ld: HPPA Options. (line 123)
62334 * mhtm: RS/6000 and PowerPC Options.
62336 * mhtm <1>: S/390 and zSeries Options.
62338 * mhw-div: Nios II Options. (line 124)
62339 * mhw-mul: Nios II Options. (line 124)
62340 * mhw-mulx: Nios II Options. (line 124)
62341 * mhwmult=: MSP430 Options. (line 93)
62342 * miamcu: x86 Options. (line 1425)
62343 * micplb: Blackfin Options. (line 175)
62344 * mid-shared-library: Blackfin Options. (line 78)
62345 * mid-shared-library <1>: Blackfin Options. (line 85)
62346 * mieee: DEC Alpha Options. (line 39)
62347 * mieee <1>: SH Options. (line 165)
62348 * mieee-conformant: DEC Alpha Options. (line 134)
62349 * mieee-fp: x86 Options. (line 526)
62350 * mieee-with-inexact: DEC Alpha Options. (line 52)
62351 * milp32: IA-64 Options. (line 121)
62352 * mimadd: MIPS Options. (line 617)
62353 * mimpure-text: Solaris 2 Options. (line 15)
62354 * mincoming-stack-boundary: x86 Options. (line 742)
62355 * mindexed-loads: ARC Options. (line 483)
62356 * mindirect-branch: x86 Options. (line 1377)
62357 * mindirect-branch-register: x86 Options. (line 1415)
62358 * minline-all-stringops: x86 Options. (line 1224)
62359 * minline-float-divide-max-throughput: IA-64 Options. (line 58)
62360 * minline-float-divide-min-latency: IA-64 Options. (line 54)
62361 * minline-ic_invalidate: SH Options. (line 174)
62362 * minline-int-divide: IA-64 Options. (line 73)
62363 * minline-int-divide-max-throughput: IA-64 Options. (line 69)
62364 * minline-int-divide-min-latency: IA-64 Options. (line 65)
62365 * minline-plt: Blackfin Options. (line 135)
62366 * minline-plt <1>: FRV Options. (line 81)
62367 * minline-sqrt-max-throughput: IA-64 Options. (line 80)
62368 * minline-sqrt-min-latency: IA-64 Options. (line 76)
62369 * minline-stringops-dynamically: x86 Options. (line 1232)
62370 * minrt: MSP430 Options. (line 115)
62371 * minrt <1>: PRU Options. (line 9)
62372 * minsert-sched-nops: RS/6000 and PowerPC Options.
62374 * minstrument-return: x86 Options. (line 1312)
62375 * mint-register: RX Options. (line 100)
62376 * mint16: PDP-11 Options. (line 33)
62377 * mint32: CR16 Options. (line 22)
62378 * mint32 <1>: H8/300 Options. (line 38)
62379 * mint32 <2>: PDP-11 Options. (line 37)
62380 * mint8: AVR Options. (line 213)
62381 * minterlink-compressed: MIPS Options. (line 135)
62382 * minterlink-mips16: MIPS Options. (line 147)
62383 * mio-volatile: MeP Options. (line 74)
62384 * mips1: MIPS Options. (line 80)
62385 * mips16: MIPS Options. (line 120)
62386 * mips2: MIPS Options. (line 83)
62387 * mips3: MIPS Options. (line 86)
62388 * mips32: MIPS Options. (line 92)
62389 * mips32r3: MIPS Options. (line 95)
62390 * mips32r5: MIPS Options. (line 98)
62391 * mips32r6: MIPS Options. (line 101)
62392 * mips3d: MIPS Options. (line 382)
62393 * mips4: MIPS Options. (line 89)
62394 * mips64: MIPS Options. (line 104)
62395 * mips64r2: MIPS Options. (line 107)
62396 * mips64r3: MIPS Options. (line 110)
62397 * mips64r5: MIPS Options. (line 113)
62398 * mips64r6: MIPS Options. (line 116)
62399 * mirq-ctrl-saved: ARC Options. (line 296)
62400 * misel: RS/6000 and PowerPC Options.
62402 * misize: ARC Options. (line 379)
62403 * misize <1>: SH Options. (line 186)
62404 * misr-vector-size: NDS32 Options. (line 57)
62405 * missue-rate=NUMBER: M32R/D Options. (line 79)
62406 * mistack: C-SKY Options. (line 65)
62407 * mivc2: MeP Options. (line 59)
62408 * mjli-alawys: ARC Options. (line 14)
62409 * mjsr: RX Options. (line 169)
62410 * mjump-in-delay: HPPA Options. (line 30)
62411 * mkernel: Darwin Options. (line 82)
62412 * mkernel <1>: eBPF Options. (line 13)
62413 * mknuthdiv: MMIX Options. (line 32)
62414 * ml: MeP Options. (line 78)
62415 * ml <1>: SH Options. (line 129)
62416 * mlarge: MSP430 Options. (line 82)
62417 * mlarge-data: DEC Alpha Options. (line 187)
62418 * mlarge-data-threshold: x86 Options. (line 631)
62419 * mlarge-text: DEC Alpha Options. (line 205)
62420 * mleadz: MeP Options. (line 81)
62421 * mleaf-id-shared-library: Blackfin Options. (line 89)
62422 * mleaf-id-shared-library <1>: Blackfin Options. (line 95)
62423 * mlibfuncs: MMIX Options. (line 10)
62424 * mlibrary-pic: FRV Options. (line 135)
62425 * mlinked-fp: FRV Options. (line 116)
62426 * mlinker-opt: HPPA Options. (line 85)
62427 * mlinux: CRIS Options. (line 91)
62428 * mlittle: RS/6000 and PowerPC Options.
62430 * mlittle-endian: AArch64 Options. (line 30)
62431 * mlittle-endian <1>: ARC Options. (line 605)
62432 * mlittle-endian <2>: ARM Options. (line 63)
62433 * mlittle-endian <3>: C6X Options. (line 16)
62434 * mlittle-endian <4>: C-SKY Options. (line 30)
62435 * mlittle-endian <5>: eBPF Options. (line 25)
62436 * mlittle-endian <6>: IA-64 Options. (line 13)
62437 * mlittle-endian <7>: MCore Options. (line 39)
62438 * mlittle-endian <8>: MicroBlaze Options. (line 59)
62439 * mlittle-endian <9>: NDS32 Options. (line 12)
62440 * mlittle-endian <10>: RS/6000 and PowerPC Options.
62442 * mlittle-endian <11>: TILE-Gx Options. (line 29)
62443 * mlittle-endian-data: RX Options. (line 42)
62444 * mliw: MN10300 Options. (line 54)
62445 * mll64: ARC Options. (line 167)
62446 * mllsc: MIPS Options. (line 339)
62447 * mload-store-pairs: MIPS Options. (line 590)
62448 * mlocal-sdata: MIPS Options. (line 468)
62449 * mlock: ARC Options. (line 345)
62450 * mlong-calls: Adapteva Epiphany Options.
62452 * mlong-calls <1>: ARC Options. (line 404)
62453 * mlong-calls <2>: ARM Options. (line 755)
62454 * mlong-calls <3>: Blackfin Options. (line 118)
62455 * mlong-calls <4>: FRV Options. (line 122)
62456 * mlong-calls <5>: HPPA Options. (line 136)
62457 * mlong-calls <6>: MIPS Options. (line 603)
62458 * mlong-calls <7>: V850 Options. (line 10)
62459 * mlong-double: AVR Options. (line 195)
62460 * mlong-double-128: S/390 and zSeries Options.
62462 * mlong-double-128 <1>: x86 Options. (line 610)
62463 * mlong-double-64: S/390 and zSeries Options.
62465 * mlong-double-64 <1>: x86 Options. (line 610)
62466 * mlong-double-80: x86 Options. (line 610)
62467 * mlong-jump-table-offsets: M680x0 Options. (line 339)
62468 * mlong-jumps: V850 Options. (line 108)
62469 * mlong-load-store: HPPA Options. (line 66)
62470 * mlong32: MIPS Options. (line 443)
62471 * mlong64: MIPS Options. (line 438)
62472 * mlongcall: RS/6000 and PowerPC Options.
62474 * mlongcalls: Xtensa Options. (line 87)
62475 * mloongson-ext: MIPS Options. (line 430)
62476 * mloongson-ext2: MIPS Options. (line 434)
62477 * mloongson-mmi: MIPS Options. (line 425)
62478 * mloop: PRU Options. (line 25)
62479 * mloop <1>: V850 Options. (line 121)
62480 * mlow-precision-div: AArch64 Options. (line 135)
62481 * mlow-precision-recip-sqrt: AArch64 Options. (line 118)
62482 * mlow-precision-sqrt: AArch64 Options. (line 126)
62483 * mlow64k: Blackfin Options. (line 67)
62484 * mlp64: IA-64 Options. (line 121)
62485 * mlpc-width: ARC Options. (line 313)
62486 * mlra: ARC Options. (line 488)
62487 * mlra <1>: FT32 Options. (line 16)
62488 * mlra <2>: PDP-11 Options. (line 52)
62489 * mlra <3>: SPARC Options. (line 111)
62490 * mlra-priority-compact: ARC Options. (line 496)
62491 * mlra-priority-noncompact: ARC Options. (line 499)
62492 * mlra-priority-none: ARC Options. (line 493)
62493 * mlwp: x86 Options. (line 806)
62494 * mlxc1-sxc1: MIPS Options. (line 895)
62495 * mlzcnt: x86 Options. (line 814)
62496 * MM: Preprocessor Options.
62498 * mm: MeP Options. (line 84)
62499 * mmac: CR16 Options. (line 9)
62500 * mmac <1>: Score Options. (line 21)
62501 * mmac-24: ARC Options. (line 354)
62502 * mmac-d16: ARC Options. (line 350)
62503 * mmac_24: ARC Options. (line 628)
62504 * mmac_d16: ARC Options. (line 631)
62505 * mmad: MIPS Options. (line 612)
62506 * mmadd4: MIPS Options. (line 900)
62507 * mmain-is-OS_task: AVR Options. (line 219)
62508 * mmainkernel: Nvidia PTX Options. (line 18)
62509 * mmalloc64: VMS Options. (line 17)
62510 * mmanual-endbr: x86 Options. (line 1053)
62511 * mmax: DEC Alpha Options. (line 163)
62512 * mmax-constant-size: RX Options. (line 82)
62513 * mmax-stack-frame: CRIS Options. (line 23)
62514 * mmcount-ra-address: MIPS Options. (line 872)
62515 * mmcu: AVR Options. (line 9)
62516 * mmcu <1>: MIPS Options. (line 399)
62517 * mmcu <2>: PRU Options. (line 17)
62518 * mmcu=: MSP430 Options. (line 14)
62519 * MMD: Preprocessor Options.
62521 * mmedia: FRV Options. (line 56)
62522 * mmedium-calls: ARC Options. (line 408)
62523 * mmemcpy: MicroBlaze Options. (line 13)
62524 * mmemcpy <1>: MIPS Options. (line 597)
62525 * mmemcpy-strategy=STRATEGY: x86 Options. (line 1254)
62526 * mmemory-latency: DEC Alpha Options. (line 268)
62527 * mmemory-model: SPARC Options. (line 348)
62528 * mmemset-strategy=STRATEGY: x86 Options. (line 1266)
62529 * mmfcrf: RS/6000 and PowerPC Options.
62531 * mmicromips: MIPS Options. (line 387)
62532 * mmillicode: ARC Options. (line 502)
62533 * mminimal-toc: RS/6000 and PowerPC Options.
62535 * mminmax: MeP Options. (line 87)
62536 * mmixed-code: ARC Options. (line 516)
62537 * mmma: RS/6000 and PowerPC Options.
62539 * mmmx: x86 Options. (line 767)
62540 * mmodel=large: M32R/D Options. (line 33)
62541 * mmodel=medium: M32R/D Options. (line 27)
62542 * mmodel=small: M32R/D Options. (line 18)
62543 * mmovbe: x86 Options. (line 952)
62544 * mmovdir64b: x86 Options. (line 834)
62545 * mmovdiri: x86 Options. (line 833)
62546 * mmp: C-SKY Options. (line 71)
62547 * mmpy: ARC Options. (line 117)
62548 * mmpy-option: ARC Options. (line 173)
62549 * mms-bitfields: x86 Options. (line 1099)
62550 * mmt: MIPS Options. (line 395)
62551 * mmul: RL78 Options. (line 15)
62552 * mmul-bug-workaround: CRIS Options. (line 32)
62553 * mmul.x: Moxie Options. (line 14)
62554 * mmul32x16: ARC Options. (line 121)
62555 * mmul64: ARC Options. (line 124)
62556 * mmuladd: FRV Options. (line 64)
62557 * mmulhw: RS/6000 and PowerPC Options.
62559 * mmult: MeP Options. (line 90)
62560 * mmult-bug: MN10300 Options. (line 9)
62561 * mmultcost: ARC Options. (line 578)
62562 * mmulti-cond-exec: FRV Options. (line 215)
62563 * mmulticore: Blackfin Options. (line 139)
62564 * mmultiple: RS/6000 and PowerPC Options.
62566 * mmultiple-stld: C-SKY Options. (line 121)
62567 * mmusl: GNU/Linux Options. (line 18)
62568 * mmvcle: S/390 and zSeries Options.
62570 * mmvme: RS/6000 and PowerPC Options.
62572 * mmwaitx: x86 Options. (line 823)
62573 * mn: H8/300 Options. (line 20)
62574 * mn-flash: AVR Options. (line 224)
62575 * mnan=2008: MIPS Options. (line 320)
62576 * mnan=legacy: MIPS Options. (line 320)
62577 * mneon-for-64bits: ARM Options. (line 912)
62578 * mnested-cond-exec: FRV Options. (line 230)
62579 * mnewlib: OpenRISC Options. (line 13)
62580 * mnhwloop: Score Options. (line 15)
62581 * mno-16-bit: NDS32 Options. (line 54)
62582 * mno-4byte-functions: MCore Options. (line 27)
62583 * mno-8byte-align: V850 Options. (line 170)
62584 * mno-abicalls: MIPS Options. (line 192)
62585 * mno-ac0: PDP-11 Options. (line 20)
62586 * mno-align-double: x86 Options. (line 569)
62587 * mno-align-int: M680x0 Options. (line 261)
62588 * mno-align-loops: M32R/D Options. (line 76)
62589 * mno-align-stringops: x86 Options. (line 1219)
62590 * mno-allow-string-insns: RX Options. (line 150)
62591 * mno-altivec: RS/6000 and PowerPC Options.
62593 * mno-am33: MN10300 Options. (line 20)
62594 * mno-app-regs: SPARC Options. (line 10)
62595 * mno-app-regs <1>: V850 Options. (line 185)
62596 * mno-as100-syntax: RX Options. (line 76)
62597 * mno-auto-litpools: Xtensa Options. (line 60)
62598 * mno-avoid-indexed-addresses: RS/6000 and PowerPC Options.
62600 * mno-backchain: S/390 and zSeries Options.
62602 * mno-base-addresses: MMIX Options. (line 53)
62603 * mno-bit-align: RS/6000 and PowerPC Options.
62605 * mno-bitfield: M680x0 Options. (line 227)
62606 * mno-branch-likely: MIPS Options. (line 792)
62607 * mno-branch-predict: MMIX Options. (line 48)
62608 * mno-brcc: ARC Options. (line 444)
62609 * mno-bwx: DEC Alpha Options. (line 163)
62610 * mno-bypass-cache: Nios II Options. (line 103)
62611 * mno-cache-volatile: Nios II Options. (line 109)
62612 * mno-call-ms2sysv-xlogues: x86 Options. (line 1059)
62613 * mno-callgraph-data: MCore Options. (line 31)
62614 * mno-cbcond: SPARC Options. (line 260)
62615 * mno-check-zero-division: MIPS Options. (line 570)
62616 * mno-cix: DEC Alpha Options. (line 163)
62617 * mno-clearbss: MicroBlaze Options. (line 16)
62618 * mno-cmov: NDS32 Options. (line 24)
62619 * mno-cmpb: RS/6000 and PowerPC Options.
62621 * mno-cond-exec: ARC Options. (line 458)
62622 * mno-cond-exec <1>: FRV Options. (line 194)
62623 * mno-cond-move: FRV Options. (line 166)
62624 * mno-const-align: CRIS Options. (line 55)
62625 * mno-const16: Xtensa Options. (line 10)
62626 * mno-crc: MIPS Options. (line 416)
62627 * mno-crt0: MN10300 Options. (line 43)
62628 * mno-crt0 <1>: Moxie Options. (line 18)
62629 * mno-crypto: RS/6000 and PowerPC Options.
62631 * mno-csync-anomaly: Blackfin Options. (line 63)
62632 * mno-custom-INSN: Nios II Options. (line 139)
62633 * mno-data-align: CRIS Options. (line 55)
62634 * mno-debug: S/390 and zSeries Options.
62636 * mno-default: x86 Options. (line 888)
62637 * mno-disable-callt: V850 Options. (line 92)
62638 * mno-div: M680x0 Options. (line 206)
62639 * mno-div <1>: MCore Options. (line 15)
62640 * mno-dlmzb: RS/6000 and PowerPC Options.
62642 * mno-double: FRV Options. (line 52)
62643 * mno-dpfp-lrsr: ARC Options. (line 108)
62644 * mno-dsp: MIPS Options. (line 353)
62645 * mno-dspr2: MIPS Options. (line 359)
62646 * mno-dwarf2-asm: IA-64 Options. (line 94)
62647 * mno-dword: FRV Options. (line 44)
62648 * mno-eabi: RS/6000 and PowerPC Options.
62650 * mno-early-stop-bits: IA-64 Options. (line 100)
62651 * mno-eflags: FRV Options. (line 155)
62652 * mno-embedded-data: MIPS Options. (line 517)
62653 * mno-ep: V850 Options. (line 16)
62654 * mno-epsilon: MMIX Options. (line 15)
62655 * mno-eva: MIPS Options. (line 403)
62656 * mno-explicit-relocs: DEC Alpha Options. (line 176)
62657 * mno-explicit-relocs <1>: MIPS Options. (line 561)
62658 * mno-exr: H8/300 Options. (line 33)
62659 * mno-ext-perf: NDS32 Options. (line 30)
62660 * mno-ext-perf2: NDS32 Options. (line 36)
62661 * mno-ext-string: NDS32 Options. (line 42)
62662 * mno-extern-sdata: MIPS Options. (line 480)
62663 * mno-fancy-math-387: x86 Options. (line 559)
62664 * mno-fast-sw-div: Nios II Options. (line 115)
62665 * mno-faster-structs: SPARC Options. (line 91)
62666 * mno-fdpic: ARM Options. (line 965)
62667 * mno-fix: DEC Alpha Options. (line 163)
62668 * mno-fix-24k: MIPS Options. (line 641)
62669 * mno-fix-cortex-a53-835769: AArch64 Options. (line 105)
62670 * mno-fix-cortex-a53-843419: AArch64 Options. (line 112)
62671 * mno-fix-r10000: MIPS Options. (line 663)
62672 * mno-fix-r4000: MIPS Options. (line 647)
62673 * mno-fix-r4400: MIPS Options. (line 657)
62674 * mno-flat: SPARC Options. (line 22)
62675 * mno-float: MIPS Options. (line 274)
62676 * mno-float128: RS/6000 and PowerPC Options.
62678 * mno-float128-hardware: RS/6000 and PowerPC Options.
62680 * mno-flush-func: M32R/D Options. (line 98)
62681 * mno-flush-trap: M32R/D Options. (line 90)
62682 * mno-fmaf: SPARC Options. (line 267)
62683 * mno-fp-in-toc: RS/6000 and PowerPC Options.
62685 * mno-fp-regs: DEC Alpha Options. (line 25)
62686 * mno-fp-ret-in-387: x86 Options. (line 549)
62687 * mno-fprnd: RS/6000 and PowerPC Options.
62689 * mno-fpu: SPARC Options. (line 39)
62690 * mno-fpu <1>: Visium Options. (line 24)
62691 * mno-fsca: SH Options. (line 365)
62692 * mno-fsmuld: SPARC Options. (line 274)
62693 * mno-fsrra: SH Options. (line 374)
62694 * mno-fused-madd: IA-64 Options. (line 88)
62695 * mno-fused-madd <1>: MIPS Options. (line 624)
62696 * mno-fused-madd <2>: RS/6000 and PowerPC Options.
62698 * mno-fused-madd <3>: S/390 and zSeries Options.
62700 * mno-fused-madd <4>: SH Options. (line 356)
62701 * mno-fused-madd <5>: Xtensa Options. (line 19)
62702 * mno-ginv: MIPS Options. (line 421)
62703 * mno-gnu-as: IA-64 Options. (line 18)
62704 * mno-gnu-attribute: RS/6000 and PowerPC Options.
62706 * mno-gnu-ld: IA-64 Options. (line 23)
62707 * mno-gotplt: CRIS Options. (line 81)
62708 * mno-gpopt: MIPS Options. (line 502)
62709 * mno-gpopt <1>: Nios II Options. (line 16)
62710 * mno-hard-dfp: RS/6000 and PowerPC Options.
62712 * mno-hard-dfp <1>: S/390 and zSeries Options.
62714 * mno-hardlit: MCore Options. (line 10)
62715 * mno-htm: RS/6000 and PowerPC Options.
62717 * mno-htm <1>: S/390 and zSeries Options.
62719 * mno-hw-div: Nios II Options. (line 124)
62720 * mno-hw-mul: Nios II Options. (line 124)
62721 * mno-hw-mulx: Nios II Options. (line 124)
62722 * mno-id-shared-library: Blackfin Options. (line 85)
62723 * mno-ieee: SH Options. (line 165)
62724 * mno-ieee-fp: x86 Options. (line 526)
62725 * mno-imadd: MIPS Options. (line 617)
62726 * mno-inline-float-divide: IA-64 Options. (line 62)
62727 * mno-inline-int-divide: IA-64 Options. (line 73)
62728 * mno-inline-sqrt: IA-64 Options. (line 84)
62729 * mno-int16: PDP-11 Options. (line 37)
62730 * mno-int32: PDP-11 Options. (line 33)
62731 * mno-interlink-compressed: MIPS Options. (line 135)
62732 * mno-interlink-mips16: MIPS Options. (line 147)
62733 * mno-interrupts: AVR Options. (line 227)
62734 * mno-isel: RS/6000 and PowerPC Options.
62736 * mno-jsr: RX Options. (line 169)
62737 * mno-knuthdiv: MMIX Options. (line 32)
62738 * mno-leaf-id-shared-library: Blackfin Options. (line 95)
62739 * mno-libfuncs: MMIX Options. (line 10)
62740 * mno-liw: MN10300 Options. (line 59)
62741 * mno-llsc: MIPS Options. (line 339)
62742 * mno-load-store-pairs: MIPS Options. (line 590)
62743 * mno-local-sdata: MIPS Options. (line 468)
62744 * mno-long-calls: ARM Options. (line 755)
62745 * mno-long-calls <1>: Blackfin Options. (line 118)
62746 * mno-long-calls <2>: HPPA Options. (line 136)
62747 * mno-long-calls <3>: MIPS Options. (line 603)
62748 * mno-long-calls <4>: V850 Options. (line 10)
62749 * mno-long-jumps: V850 Options. (line 108)
62750 * mno-longcall: RS/6000 and PowerPC Options.
62752 * mno-longcalls: Xtensa Options. (line 87)
62753 * mno-loongson-ext: MIPS Options. (line 430)
62754 * mno-loongson-ext2: MIPS Options. (line 434)
62755 * mno-loongson-mmi: MIPS Options. (line 425)
62756 * mno-low-precision-div: AArch64 Options. (line 135)
62757 * mno-low-precision-recip-sqrt: AArch64 Options. (line 118)
62758 * mno-low-precision-sqrt: AArch64 Options. (line 126)
62759 * mno-low64k: Blackfin Options. (line 71)
62760 * mno-lra: SPARC Options. (line 111)
62761 * mno-lsim: FR30 Options. (line 14)
62762 * mno-lsim <1>: MCore Options. (line 46)
62763 * mno-mad: MIPS Options. (line 612)
62764 * mno-max: DEC Alpha Options. (line 163)
62765 * mno-mcount-ra-address: MIPS Options. (line 872)
62766 * mno-mcu: MIPS Options. (line 399)
62767 * mno-mdmx: MIPS Options. (line 376)
62768 * mno-media: FRV Options. (line 60)
62769 * mno-memcpy: MIPS Options. (line 597)
62770 * mno-mfcrf: RS/6000 and PowerPC Options.
62772 * mno-mips16: MIPS Options. (line 120)
62773 * mno-mips3d: MIPS Options. (line 382)
62774 * mno-mma: RS/6000 and PowerPC Options.
62776 * mno-mmicromips: MIPS Options. (line 387)
62777 * mno-mpy: ARC Options. (line 117)
62778 * mno-ms-bitfields: x86 Options. (line 1099)
62779 * mno-mt: MIPS Options. (line 395)
62780 * mno-mul-bug-workaround: CRIS Options. (line 32)
62781 * mno-muladd: FRV Options. (line 68)
62782 * mno-mulhw: RS/6000 and PowerPC Options.
62784 * mno-mult-bug: MN10300 Options. (line 13)
62785 * mno-multi-cond-exec: FRV Options. (line 223)
62786 * mno-multiple: RS/6000 and PowerPC Options.
62788 * mno-mvcle: S/390 and zSeries Options.
62790 * mno-nested-cond-exec: FRV Options. (line 237)
62791 * mno-odd-spreg: MIPS Options. (line 293)
62792 * mno-omit-leaf-frame-pointer: AArch64 Options. (line 58)
62793 * mno-optimize-membar: FRV Options. (line 249)
62794 * mno-opts: MeP Options. (line 93)
62795 * mno-pack: FRV Options. (line 151)
62796 * mno-packed-stack: S/390 and zSeries Options.
62798 * mno-paired-single: MIPS Options. (line 370)
62799 * mno-pc-relative-literal-loads: AArch64 Options. (line 282)
62800 * mno-pcrel: RS/6000 and PowerPC Options.
62802 * mno-pic: IA-64 Options. (line 26)
62803 * mno-pid: RX Options. (line 117)
62804 * mno-plt: MIPS Options. (line 219)
62805 * mno-pltseq: RS/6000 and PowerPC Options.
62807 * mno-popc: SPARC Options. (line 281)
62808 * mno-popcntb: RS/6000 and PowerPC Options.
62810 * mno-popcntd: RS/6000 and PowerPC Options.
62812 * mno-postinc: Adapteva Epiphany Options.
62814 * mno-postmodify: Adapteva Epiphany Options.
62816 * mno-power8-fusion: RS/6000 and PowerPC Options.
62818 * mno-power8-vector: RS/6000 and PowerPC Options.
62820 * mno-powerpc-gfxopt: RS/6000 and PowerPC Options.
62822 * mno-powerpc-gpopt: RS/6000 and PowerPC Options.
62824 * mno-powerpc64: RS/6000 and PowerPC Options.
62826 * mno-prefixed: RS/6000 and PowerPC Options.
62828 * mno-prolog-function: V850 Options. (line 23)
62829 * mno-prologue-epilogue: CRIS Options. (line 71)
62830 * mno-prototype: RS/6000 and PowerPC Options.
62832 * mno-push-args: x86 Options. (line 1076)
62833 * mno-quad-memory: RS/6000 and PowerPC Options.
62835 * mno-quad-memory-atomic: RS/6000 and PowerPC Options.
62837 * mno-readonly-in-sdata: RS/6000 and PowerPC Options.
62839 * mno-red-zone: x86 Options. (line 1445)
62840 * mno-register-names: IA-64 Options. (line 37)
62841 * mno-regnames: RS/6000 and PowerPC Options.
62843 * mno-relax: PRU Options. (line 21)
62844 * mno-relax <1>: V850 Options. (line 103)
62845 * mno-relax-immediate: MCore Options. (line 19)
62846 * mno-relocatable: RS/6000 and PowerPC Options.
62848 * mno-relocatable-lib: RS/6000 and PowerPC Options.
62850 * mno-renesas: SH Options. (line 155)
62851 * mno-round-nearest: Adapteva Epiphany Options.
62853 * mno-save-mduc-in-interrupts: RL78 Options. (line 79)
62854 * mno-scc: FRV Options. (line 180)
62855 * mno-sched-ar-data-spec: IA-64 Options. (line 135)
62856 * mno-sched-ar-in-data-spec: IA-64 Options. (line 157)
62857 * mno-sched-br-data-spec: IA-64 Options. (line 128)
62858 * mno-sched-br-in-data-spec: IA-64 Options. (line 150)
62859 * mno-sched-control-spec: IA-64 Options. (line 142)
62860 * mno-sched-count-spec-in-critical-path: IA-64 Options. (line 185)
62861 * mno-sched-in-control-spec: IA-64 Options. (line 164)
62862 * mno-sched-prefer-non-control-spec-insns: IA-64 Options. (line 178)
62863 * mno-sched-prefer-non-data-spec-insns: IA-64 Options. (line 171)
62864 * mno-sched-prolog: ARM Options. (line 32)
62865 * mno-sdata: ARC Options. (line 422)
62866 * mno-sdata <1>: IA-64 Options. (line 42)
62867 * mno-sdata <2>: RS/6000 and PowerPC Options.
62869 * mno-sep-data: Blackfin Options. (line 113)
62870 * mno-serialize-volatile: Xtensa Options. (line 35)
62871 * mno-setlb: MN10300 Options. (line 69)
62872 * mno-short: M680x0 Options. (line 222)
62873 * mno-side-effects: CRIS Options. (line 46)
62874 * mno-sim: RX Options. (line 71)
62875 * mno-single-exit: MMIX Options. (line 65)
62876 * mno-slow-bytes: MCore Options. (line 35)
62877 * mno-small-exec: S/390 and zSeries Options.
62879 * mno-smartmips: MIPS Options. (line 366)
62880 * mno-soft-cmpsf: Adapteva Epiphany Options.
62882 * mno-soft-float: DEC Alpha Options. (line 10)
62883 * mno-space-regs: HPPA Options. (line 45)
62884 * mno-specld-anomaly: Blackfin Options. (line 53)
62885 * mno-split-addresses: MIPS Options. (line 555)
62886 * mno-split-lohi: Adapteva Epiphany Options.
62888 * mno-stack-align: CRIS Options. (line 55)
62889 * mno-stack-bias: SPARC Options. (line 372)
62890 * mno-std-struct-return: SPARC Options. (line 102)
62891 * mno-strict-align: AArch64 Options. (line 52)
62892 * mno-strict-align <1>: M680x0 Options. (line 280)
62893 * mno-strict-align <2>: RS/6000 and PowerPC Options.
62895 * mno-subxc: SPARC Options. (line 288)
62896 * mno-sum-in-toc: RS/6000 and PowerPC Options.
62898 * mno-sym32: MIPS Options. (line 453)
62899 * mno-target-align: Xtensa Options. (line 74)
62900 * mno-text-section-literals: Xtensa Options. (line 47)
62901 * mno-tls-markers: RS/6000 and PowerPC Options.
62903 * mno-toc: RS/6000 and PowerPC Options.
62905 * mno-toplevel-symbols: MMIX Options. (line 39)
62906 * mno-tpf-trace: S/390 and zSeries Options.
62908 * mno-tpf-trace-skip: S/390 and zSeries Options.
62910 * mno-unaligned-access: ARM Options. (line 899)
62911 * mno-unaligned-doubles: SPARC Options. (line 73)
62912 * mno-uninit-const-in-rodata: MIPS Options. (line 525)
62913 * mno-update: RS/6000 and PowerPC Options.
62915 * mno-user-mode: SPARC Options. (line 85)
62916 * mno-usermode: SH Options. (line 274)
62917 * mno-v3push: NDS32 Options. (line 48)
62918 * mno-v8plus: SPARC Options. (line 214)
62919 * mno-vect-double: Adapteva Epiphany Options.
62921 * mno-virt: MIPS Options. (line 407)
62922 * mno-vis: SPARC Options. (line 221)
62923 * mno-vis2: SPARC Options. (line 227)
62924 * mno-vis3: SPARC Options. (line 235)
62925 * mno-vis4: SPARC Options. (line 243)
62926 * mno-vis4b: SPARC Options. (line 251)
62927 * mno-vliw-branch: FRV Options. (line 208)
62928 * mno-volatile-asm-stop: IA-64 Options. (line 32)
62929 * mno-volatile-cache: ARC Options. (line 431)
62930 * mno-vrsave: RS/6000 and PowerPC Options.
62932 * mno-vsx: RS/6000 and PowerPC Options.
62934 * mno-vx: S/390 and zSeries Options.
62936 * mno-warn-devices-csv: MSP430 Options. (line 153)
62937 * mno-warn-mcu: MSP430 Options. (line 65)
62938 * mno-warn-multiple-fast-interrupts: RX Options. (line 143)
62939 * mno-wide-bitfields: MCore Options. (line 23)
62940 * mno-xgot: M680x0 Options. (line 312)
62941 * mno-xgot <1>: MIPS Options. (line 229)
62942 * mno-xl-compat: RS/6000 and PowerPC Options.
62944 * mno-xpa: MIPS Options. (line 411)
62945 * mno-zdcbranch: SH Options. (line 341)
62946 * mno-zero-extend: MMIX Options. (line 26)
62947 * mno-zvector: S/390 and zSeries Options.
62949 * mnobitfield: M680x0 Options. (line 227)
62950 * mnodiv: FT32 Options. (line 20)
62951 * mnomacsave: SH Options. (line 160)
62952 * mnop-fun-dllimport: x86 Windows Options.
62954 * mnop-mcount: x86 Options. (line 1306)
62955 * mnopm: FT32 Options. (line 29)
62956 * mnops: Adapteva Epiphany Options.
62958 * mnorm: ARC Options. (line 128)
62959 * modd-spreg: MIPS Options. (line 293)
62960 * momit-leaf-frame-pointer: AArch64 Options. (line 58)
62961 * momit-leaf-frame-pointer <1>: Blackfin Options. (line 43)
62962 * momit-leaf-frame-pointer <2>: x86 Options. (line 1270)
62963 * mone-byte-bool: Darwin Options. (line 90)
62964 * moptimize: Nvidia PTX Options. (line 22)
62965 * moptimize-membar: FRV Options. (line 244)
62966 * moptimize-membar <1>: FRV Options. (line 249)
62967 * moverride: AArch64 Options. (line 269)
62968 * MP: Preprocessor Options.
62970 * mpa-risc-1-0: HPPA Options. (line 19)
62971 * mpa-risc-1-1: HPPA Options. (line 19)
62972 * mpa-risc-2-0: HPPA Options. (line 19)
62973 * mpack: FRV Options. (line 147)
62974 * mpacked-stack: S/390 and zSeries Options.
62976 * mpadstruct: SH Options. (line 189)
62977 * mpaired-single: MIPS Options. (line 370)
62978 * mpc-relative-literal-loads: AArch64 Options. (line 282)
62979 * mpc32: x86 Options. (line 691)
62980 * mpc64: x86 Options. (line 691)
62981 * mpc80: x86 Options. (line 691)
62982 * mpclmul: x86 Options. (line 789)
62983 * mpconfig: x86 Options. (line 797)
62984 * mpcrel: M680x0 Options. (line 272)
62985 * mpcrel <1>: RS/6000 and PowerPC Options.
62987 * mpdebug: CRIS Options. (line 36)
62988 * mpe: RS/6000 and PowerPC Options.
62990 * mpe-aligned-commons: x86 Windows Options.
62992 * mpic-data-is-text-relative: ARM Options. (line 792)
62993 * mpic-data-is-text-relative <1>: MicroBlaze Options. (line 70)
62994 * mpic-register: ARM Options. (line 785)
62995 * mpid: RX Options. (line 117)
62996 * mpku: x86 Options. (line 825)
62997 * mplt: MIPS Options. (line 219)
62998 * mpltseq: RS/6000 and PowerPC Options.
63000 * mpointer-size=SIZE: VMS Options. (line 20)
63001 * mpointers-to-nested-functions: RS/6000 and PowerPC Options.
63003 * mpoke-function-name: ARM Options. (line 800)
63004 * mpopc: SPARC Options. (line 281)
63005 * mpopcnt: x86 Options. (line 809)
63006 * mpopcntb: RS/6000 and PowerPC Options.
63008 * mpopcntd: RS/6000 and PowerPC Options.
63010 * mportable-runtime: HPPA Options. (line 71)
63011 * mpostinc: Adapteva Epiphany Options.
63013 * mpostmodify: Adapteva Epiphany Options.
63015 * mpower8-fusion: RS/6000 and PowerPC Options.
63017 * mpower8-vector: RS/6000 and PowerPC Options.
63019 * mpowerpc-gfxopt: RS/6000 and PowerPC Options.
63021 * mpowerpc-gpopt: RS/6000 and PowerPC Options.
63023 * mpowerpc64: RS/6000 and PowerPC Options.
63025 * mprefer-avx128: x86 Options. (line 912)
63026 * mprefer-short-insn-regs: Adapteva Epiphany Options.
63028 * mprefer-vector-width: x86 Options. (line 916)
63029 * mprefergot: SH Options. (line 268)
63030 * mpreferred-stack-boundary: RISC-V Options. (line 73)
63031 * mpreferred-stack-boundary <1>: x86 Options. (line 721)
63032 * mprefetchwt1: x86 Options. (line 802)
63033 * mprefixed: RS/6000 and PowerPC Options.
63035 * mpretend-cmove: SH Options. (line 383)
63036 * mprfchw: x86 Options. (line 800)
63037 * mprint-tune-info: ARM Options. (line 933)
63038 * mprioritize-restricted-insns: RS/6000 and PowerPC Options.
63040 * mprolog-function: V850 Options. (line 23)
63041 * mprologue-epilogue: CRIS Options. (line 71)
63042 * mprototype: RS/6000 and PowerPC Options.
63044 * mptwrite: x86 Options. (line 793)
63045 * mpure-code: ARM Options. (line 943)
63046 * mpush-args: x86 Options. (line 1076)
63047 * mpushpop: C-SKY Options. (line 114)
63048 * MQ: Preprocessor Options.
63050 * mq-class: ARC Options. (line 521)
63051 * mquad-memory: RS/6000 and PowerPC Options.
63053 * mquad-memory-atomic: RS/6000 and PowerPC Options.
63055 * mr0rel-sec: Nios II Options. (line 76)
63056 * mr10k-cache-barrier: MIPS Options. (line 714)
63057 * mRcq: ARC Options. (line 525)
63058 * mRcw: ARC Options. (line 529)
63059 * mrdpid: x86 Options. (line 801)
63060 * mrdrnd: x86 Options. (line 794)
63061 * mrdseed: x86 Options. (line 803)
63062 * mreadonly-in-sdata: RS/6000 and PowerPC Options.
63064 * mrecip: RS/6000 and PowerPC Options.
63066 * mrecip <1>: x86 Options. (line 966)
63067 * mrecip-precision: RS/6000 and PowerPC Options.
63069 * mrecip=opt: RS/6000 and PowerPC Options.
63071 * mrecip=opt <1>: x86 Options. (line 988)
63072 * mrecord-mcount: x86 Options. (line 1300)
63073 * mrecord-return: x86 Options. (line 1320)
63074 * mred-zone: x86 Options. (line 1445)
63075 * mreduced-regs: NDS32 Options. (line 15)
63076 * mregister-names: IA-64 Options. (line 37)
63077 * mregnames: RS/6000 and PowerPC Options.
63079 * mregparm: x86 Options. (line 661)
63080 * mrelax: AVR Options. (line 231)
63081 * mrelax <1>: H8/300 Options. (line 9)
63082 * mrelax <2>: MN10300 Options. (line 46)
63083 * mrelax <3>: MSP430 Options. (line 88)
63084 * mrelax <4>: NDS32 Options. (line 84)
63085 * mrelax <5>: RX Options. (line 95)
63086 * mrelax <6>: SH Options. (line 137)
63087 * mrelax <7>: V850 Options. (line 103)
63088 * mrelax-immediate: MCore Options. (line 19)
63089 * mrelax-pic-calls: MIPS Options. (line 859)
63090 * mrelocatable: RS/6000 and PowerPC Options.
63092 * mrelocatable-lib: RS/6000 and PowerPC Options.
63094 * mrenesas: SH Options. (line 152)
63095 * mrepeat: MeP Options. (line 96)
63096 * mrestrict-it: ARM Options. (line 927)
63097 * mreturn-pointer-on-d0: MN10300 Options. (line 36)
63098 * mrf16: ARC Options. (line 324)
63099 * mrgf-banked-regs: ARC Options. (line 304)
63100 * mrh850-abi: V850 Options. (line 127)
63101 * mrl78: RL78 Options. (line 62)
63102 * mrmw: AVR Options. (line 245)
63103 * mror: OpenRISC Options. (line 49)
63104 * mrori: OpenRISC Options. (line 54)
63105 * mround-nearest: Adapteva Epiphany Options.
63107 * mrtd: M680x0 Options. (line 236)
63108 * mrtd <1>: x86 Options. (line 637)
63109 * mrtd <2>: x86 Function Attributes.
63111 * mrtm: x86 Options. (line 820)
63112 * mrtp: VxWorks Options. (line 11)
63113 * mrtsc: ARC Options. (line 358)
63114 * ms: H8/300 Options. (line 17)
63115 * ms <1>: MeP Options. (line 100)
63116 * ms2600: H8/300 Options. (line 24)
63117 * msahf: x86 Options. (line 942)
63118 * msatur: MeP Options. (line 105)
63119 * msave-acc-in-interrupts: RX Options. (line 109)
63120 * msave-mduc-in-interrupts: RL78 Options. (line 79)
63121 * msave-restore: RISC-V Options. (line 87)
63122 * msave-toc-indirect: RS/6000 and PowerPC Options.
63124 * mscc: FRV Options. (line 173)
63125 * msched-ar-data-spec: IA-64 Options. (line 135)
63126 * msched-ar-in-data-spec: IA-64 Options. (line 157)
63127 * msched-br-data-spec: IA-64 Options. (line 128)
63128 * msched-br-in-data-spec: IA-64 Options. (line 150)
63129 * msched-control-spec: IA-64 Options. (line 142)
63130 * msched-costly-dep: RS/6000 and PowerPC Options.
63132 * msched-count-spec-in-critical-path: IA-64 Options. (line 185)
63133 * msched-fp-mem-deps-zero-cost: IA-64 Options. (line 202)
63134 * msched-in-control-spec: IA-64 Options. (line 164)
63135 * msched-max-memory-insns: IA-64 Options. (line 211)
63136 * msched-max-memory-insns-hard-limit: IA-64 Options. (line 217)
63137 * msched-prefer-non-control-spec-insns: IA-64 Options. (line 178)
63138 * msched-prefer-non-data-spec-insns: IA-64 Options. (line 171)
63139 * msched-prolog: ARM Options. (line 32)
63140 * msched-prolog <1>: C-SKY Options. (line 148)
63141 * msched-spec-ldc: IA-64 Options. (line 191)
63142 * msched-spec-ldc <1>: IA-64 Options. (line 194)
63143 * msched-stop-bits-after-every-cycle: IA-64 Options. (line 198)
63144 * mschedule: HPPA Options. (line 78)
63145 * mscore5: Score Options. (line 25)
63146 * mscore5u: Score Options. (line 28)
63147 * mscore7: Score Options. (line 31)
63148 * mscore7d: Score Options. (line 35)
63149 * msda: V850 Options. (line 40)
63150 * msdata: ARC Options. (line 422)
63151 * msdata <1>: IA-64 Options. (line 42)
63152 * msdata <2>: RS/6000 and PowerPC Options.
63154 * msdata=all: C6X Options. (line 30)
63155 * msdata=data: RS/6000 and PowerPC Options.
63157 * msdata=default: C6X Options. (line 22)
63158 * msdata=default <1>: RS/6000 and PowerPC Options.
63160 * msdata=eabi: RS/6000 and PowerPC Options.
63162 * msdata=none: C6X Options. (line 35)
63163 * msdata=none <1>: M32R/D Options. (line 40)
63164 * msdata=none <2>: RS/6000 and PowerPC Options.
63166 * msdata=sdata: M32R/D Options. (line 49)
63167 * msdata=sysv: RS/6000 and PowerPC Options.
63169 * msdata=use: M32R/D Options. (line 53)
63170 * msdram: Blackfin Options. (line 169)
63171 * msdram <1>: MeP Options. (line 110)
63172 * msecure-plt: RS/6000 and PowerPC Options.
63174 * msecurity: C-SKY Options. (line 80)
63175 * msel-sched-dont-check-control-spec: IA-64 Options. (line 207)
63176 * msep-data: Blackfin Options. (line 107)
63177 * msep-data <1>: Blackfin Options. (line 113)
63178 * mserialize-volatile: Xtensa Options. (line 35)
63179 * msetlb: MN10300 Options. (line 64)
63180 * msext: OpenRISC Options. (line 59)
63181 * msfimm: OpenRISC Options. (line 63)
63182 * msgx: x86 Options. (line 804)
63183 * msha: x86 Options. (line 787)
63184 * mshared-library-id: Blackfin Options. (line 100)
63185 * mshftimm: OpenRISC Options. (line 68)
63186 * mshort: M680x0 Options. (line 216)
63187 * mshort-calls: AVR Options. (line 249)
63188 * mshstk: x86 Options. (line 956)
63189 * mside-effects: CRIS Options. (line 46)
63190 * msign-extend-enabled: LM32 Options. (line 18)
63191 * msign-return-address: AArch64 Options. (line 288)
63192 * msilicon-errata: MSP430 Options. (line 144)
63193 * msilicon-errata-warn: MSP430 Options. (line 148)
63194 * msim: Blackfin Options. (line 36)
63195 * msim <1>: C6X Options. (line 19)
63196 * msim <2>: CR16 Options. (line 18)
63197 * msim <3>: FT32 Options. (line 9)
63198 * msim <4>: M32C Options. (line 13)
63199 * msim <5>: MeP Options. (line 114)
63200 * msim <6>: MSP430 Options. (line 77)
63201 * msim <7>: RL78 Options. (line 7)
63202 * msim <8>: RS/6000 and PowerPC Options.
63204 * msim <9>: RX Options. (line 71)
63205 * msim <10>: Visium Options. (line 13)
63206 * msim <11>: Xstormy16 Options. (line 9)
63207 * msimd: ARC Options. (line 141)
63208 * msimnovec: MeP Options. (line 117)
63209 * msingle-exit: MMIX Options. (line 65)
63210 * msingle-float: MIPS Options. (line 284)
63211 * msingle-pic-base: ARM Options. (line 779)
63212 * msingle-pic-base <1>: RS/6000 and PowerPC Options.
63214 * msio: HPPA Options. (line 105)
63215 * msize-level: ARC Options. (line 533)
63216 * mskip-rax-setup: x86 Options. (line 1333)
63217 * mslow-bytes: MCore Options. (line 35)
63218 * mslow-flash-data: ARM Options. (line 915)
63219 * msmall: MSP430 Options. (line 85)
63220 * msmall-data: DEC Alpha Options. (line 187)
63221 * msmall-data-limit: RISC-V Options. (line 82)
63222 * msmall-data-limit <1>: RX Options. (line 47)
63223 * msmall-divides: MicroBlaze Options. (line 38)
63224 * msmall-exec: S/390 and zSeries Options.
63226 * msmall-model: FR30 Options. (line 9)
63227 * msmall-text: DEC Alpha Options. (line 205)
63228 * msmall16: Adapteva Epiphany Options.
63230 * msmallc: Nios II Options. (line 310)
63231 * msmart: C-SKY Options. (line 97)
63232 * msmartmips: MIPS Options. (line 366)
63233 * msoft-cmpsf: Adapteva Epiphany Options.
63235 * msoft-div: OpenRISC Options. (line 19)
63236 * msoft-float: ARC Options. (line 145)
63237 * msoft-float <1>: C-SKY Options. (line 36)
63238 * msoft-float <2>: DEC Alpha Options. (line 10)
63239 * msoft-float <3>: FRV Options. (line 27)
63240 * msoft-float <4>: HPPA Options. (line 91)
63241 * msoft-float <5>: M680x0 Options. (line 200)
63242 * msoft-float <6>: MicroBlaze Options. (line 7)
63243 * msoft-float <7>: MIPS Options. (line 270)
63244 * msoft-float <8>: OpenRISC Options. (line 29)
63245 * msoft-float <9>: PDP-11 Options. (line 13)
63246 * msoft-float <10>: RS/6000 and PowerPC Options.
63248 * msoft-float <11>: S/390 and zSeries Options.
63250 * msoft-float <12>: SPARC Options. (line 39)
63251 * msoft-float <13>: V850 Options. (line 113)
63252 * msoft-float <14>: Visium Options. (line 24)
63253 * msoft-float <15>: x86 Options. (line 536)
63254 * msoft-mul: OpenRISC Options. (line 24)
63255 * msoft-quad-float: SPARC Options. (line 59)
63256 * msoft-stack: Nvidia PTX Options. (line 26)
63257 * msp8: AVR Options. (line 256)
63258 * mspace: V850 Options. (line 30)
63259 * mspace-regs: HPPA Options. (line 45)
63260 * mspecld-anomaly: Blackfin Options. (line 48)
63261 * mspecld-anomaly <1>: Blackfin Options. (line 53)
63262 * mspfp: ARC Options. (line 132)
63263 * mspfp-compact: ARC Options. (line 133)
63264 * mspfp-fast: ARC Options. (line 137)
63265 * mspfp_compact: ARC Options. (line 634)
63266 * mspfp_fast: ARC Options. (line 637)
63267 * msplit: PDP-11 Options. (line 40)
63268 * msplit-addresses: MIPS Options. (line 555)
63269 * msplit-lohi: Adapteva Epiphany Options.
63271 * msplit-vecmove-early: Adapteva Epiphany Options.
63273 * msse: x86 Options. (line 768)
63274 * msse2: x86 Options. (line 769)
63275 * msse2avx: x86 Options. (line 1288)
63276 * msse3: x86 Options. (line 770)
63277 * msse4: x86 Options. (line 772)
63278 * msse4.1: x86 Options. (line 774)
63279 * msse4.2: x86 Options. (line 775)
63280 * msse4a: x86 Options. (line 773)
63281 * msseregparm: x86 Options. (line 672)
63282 * mssse3: x86 Options. (line 771)
63283 * mstack-align: CRIS Options. (line 55)
63284 * mstack-bias: SPARC Options. (line 372)
63285 * mstack-check-l1: Blackfin Options. (line 74)
63286 * mstack-guard: S/390 and zSeries Options.
63288 * mstack-increment: MCore Options. (line 50)
63289 * mstack-offset: Adapteva Epiphany Options.
63291 * mstack-protector-guard: AArch64 Options. (line 64)
63292 * mstack-protector-guard <1>: AArch64 Options. (line 79)
63293 * mstack-protector-guard <2>: RS/6000 and PowerPC Options.
63295 * mstack-protector-guard <3>: x86 Options. (line 1359)
63296 * mstack-protector-guard-offset: AArch64 Options. (line 64)
63297 * mstack-protector-guard-offset <1>: AArch64 Options. (line 79)
63298 * mstack-protector-guard-offset <2>: RS/6000 and PowerPC Options.
63300 * mstack-protector-guard-offset <3>: x86 Options. (line 1359)
63301 * mstack-protector-guard-reg: AArch64 Options. (line 64)
63302 * mstack-protector-guard-reg <1>: AArch64 Options. (line 79)
63303 * mstack-protector-guard-reg <2>: RS/6000 and PowerPC Options.
63305 * mstack-protector-guard-reg <3>: x86 Options. (line 1359)
63306 * mstack-protector-guard-symbol: RS/6000 and PowerPC Options.
63308 * mstack-size: AMD GCN Options. (line 23)
63309 * mstack-size <1>: C-SKY Options. (line 134)
63310 * mstack-size <2>: S/390 and zSeries Options.
63312 * mstackrealign: x86 Options. (line 712)
63313 * mstd-struct-return: SPARC Options. (line 102)
63314 * mstrict-align: AArch64 Options. (line 52)
63315 * mstrict-align <1>: M680x0 Options. (line 280)
63316 * mstrict-align <2>: RISC-V Options. (line 93)
63317 * mstrict-align <3>: RS/6000 and PowerPC Options.
63319 * mstrict-X: AVR Options. (line 269)
63320 * mstring-compare-inline-limit: RS/6000 and PowerPC Options.
63322 * mstringop-strategy=ALG: x86 Options. (line 1236)
63323 * mstructure-size-boundary: ARM Options. (line 734)
63324 * msubxc: SPARC Options. (line 288)
63325 * msv-mode: Visium Options. (line 52)
63326 * msve-vector-bits: AArch64 Options. (line 317)
63327 * msvr4-struct-return: RS/6000 and PowerPC Options.
63329 * mswap: ARC Options. (line 152)
63330 * mswape: ARC Options. (line 363)
63331 * msym32: MIPS Options. (line 453)
63332 * msynci: MIPS Options. (line 845)
63333 * msys-crt0: Nios II Options. (line 314)
63334 * msys-lib: Nios II Options. (line 318)
63335 * MT: Preprocessor Options.
63337 * mtarget-align: Xtensa Options. (line 74)
63338 * mtas: SH Options. (line 259)
63339 * mtbm: x86 Options. (line 822)
63340 * mtda: V850 Options. (line 34)
63341 * mtelephony: ARC Options. (line 368)
63342 * mtext-section-literals: Xtensa Options. (line 47)
63343 * mtf: MeP Options. (line 121)
63344 * mthread: x86 Windows Options.
63346 * mthreads: x86 Options. (line 1091)
63347 * mthumb: ARM Options. (line 822)
63348 * mthumb-interwork: ARM Options. (line 24)
63349 * mtiny-printf: MSP430 Options. (line 122)
63350 * mtiny-stack: AVR Options. (line 283)
63351 * mtiny=: MeP Options. (line 125)
63352 * mTLS: FRV Options. (line 90)
63353 * mtls: FRV Options. (line 94)
63354 * mtls-dialect: ARM Options. (line 874)
63355 * mtls-dialect <1>: x86 Options. (line 1069)
63356 * mtls-dialect=desc: AArch64 Options. (line 92)
63357 * mtls-dialect=traditional: AArch64 Options. (line 96)
63358 * mtls-direct-seg-refs: x86 Options. (line 1278)
63359 * mtls-markers: RS/6000 and PowerPC Options.
63361 * mtls-size: AArch64 Options. (line 100)
63362 * mtls-size <1>: IA-64 Options. (line 112)
63363 * mtoc: RS/6000 and PowerPC Options.
63365 * mtomcat-stats: FRV Options. (line 254)
63366 * mtoplevel-symbols: MMIX Options. (line 39)
63367 * mtp: ARM Options. (line 866)
63368 * mtp-regno: ARC Options. (line 170)
63369 * mtpcs-frame: ARM Options. (line 839)
63370 * mtpcs-leaf-frame: ARM Options. (line 845)
63371 * mtpf-trace: S/390 and zSeries Options.
63373 * mtpf-trace-skip: S/390 and zSeries Options.
63375 * mtraceback: RS/6000 and PowerPC Options.
63377 * mtrap-precision: DEC Alpha Options. (line 109)
63378 * mtrust: C-SKY Options. (line 83)
63379 * mtune: AArch64 Options. (line 199)
63380 * mtune <1>: AMD GCN Options. (line 10)
63381 * mtune <2>: ARC Options. (line 554)
63382 * mtune <3>: ARC Options. (line 640)
63383 * mtune <4>: ARM Options. (line 571)
63384 * mtune <5>: CRIS Options. (line 17)
63385 * mtune <6>: DEC Alpha Options. (line 259)
63386 * mtune <7>: IA-64 Options. (line 116)
63387 * mtune <8>: M680x0 Options. (line 68)
63388 * mtune <9>: MIPS Options. (line 66)
63389 * mtune <10>: MN10300 Options. (line 30)
63390 * mtune <11>: RISC-V Options. (line 59)
63391 * mtune <12>: RS/6000 and PowerPC Options.
63393 * mtune <13>: S/390 and zSeries Options.
63395 * mtune <14>: SPARC Options. (line 199)
63396 * mtune <15>: Visium Options. (line 47)
63397 * mtune <16>: x86 Options. (line 410)
63398 * mtune-ctrl=FEATURE-LIST: x86 Options. (line 879)
63399 * muclibc: GNU/Linux Options. (line 14)
63400 * muls: Score Options. (line 18)
63401 * multcost: ARC Options. (line 645)
63402 * multcost=NUMBER: SH Options. (line 281)
63403 * multilib-library-pic: FRV Options. (line 110)
63404 * multiply-enabled: LM32 Options. (line 15)
63405 * multiply_defined: Darwin Options. (line 196)
63406 * multiply_defined_unused: Darwin Options. (line 196)
63407 * multi_module: Darwin Options. (line 196)
63408 * munalign-prob-threshold: ARC Options. (line 582)
63409 * munaligned-access: ARM Options. (line 899)
63410 * munaligned-doubles: SPARC Options. (line 73)
63411 * municode: x86 Windows Options.
63413 * muniform-simt: Nvidia PTX Options. (line 38)
63414 * muninit-const-in-rodata: MIPS Options. (line 525)
63415 * munix: VAX Options. (line 9)
63416 * munix-asm: PDP-11 Options. (line 43)
63417 * munordered-float: OpenRISC Options. (line 39)
63418 * mupdate: RS/6000 and PowerPC Options.
63420 * muser-enabled: LM32 Options. (line 21)
63421 * muser-mode: SPARC Options. (line 85)
63422 * muser-mode <1>: Visium Options. (line 57)
63423 * musermode: SH Options. (line 274)
63424 * mv3push: NDS32 Options. (line 45)
63425 * mv850: V850 Options. (line 49)
63426 * mv850e: V850 Options. (line 79)
63427 * mv850e1: V850 Options. (line 70)
63428 * mv850e2: V850 Options. (line 66)
63429 * mv850e2v3: V850 Options. (line 61)
63430 * mv850e2v4: V850 Options. (line 57)
63431 * mv850e3v5: V850 Options. (line 52)
63432 * mv850es: V850 Options. (line 75)
63433 * mv8plus: SPARC Options. (line 214)
63434 * mvaes: x86 Options. (line 829)
63435 * mvdsp: C-SKY Options. (line 88)
63436 * mveclibabi: RS/6000 and PowerPC Options.
63438 * mveclibabi <1>: x86 Options. (line 1017)
63439 * mvect-double: Adapteva Epiphany Options.
63441 * mvect8-ret-in-mem: x86 Options. (line 682)
63442 * mverbose-cost-dump: AArch64 Options. (line 277)
63443 * mverbose-cost-dump <1>: ARM Options. (line 939)
63444 * mvirt: MIPS Options. (line 407)
63445 * mvis: SPARC Options. (line 221)
63446 * mvis2: SPARC Options. (line 227)
63447 * mvis3: SPARC Options. (line 235)
63448 * mvis4: SPARC Options. (line 243)
63449 * mvis4b: SPARC Options. (line 251)
63450 * mvliw-branch: FRV Options. (line 201)
63451 * mvms-return-codes: VMS Options. (line 9)
63452 * mvolatile-asm-stop: IA-64 Options. (line 32)
63453 * mvolatile-cache: ARC Options. (line 427)
63454 * mvolatile-cache <1>: ARC Options. (line 431)
63455 * mvpclmulqdq: x86 Options. (line 831)
63456 * mvr4130-align: MIPS Options. (line 834)
63457 * mvrsave: RS/6000 and PowerPC Options.
63459 * mvsx: RS/6000 and PowerPC Options.
63461 * mvx: S/390 and zSeries Options.
63463 * mvxworks: RS/6000 and PowerPC Options.
63465 * mvzeroupper: x86 Options. (line 906)
63466 * mwaitpkg: x86 Options. (line 830)
63467 * mwarn-devices-csv: MSP430 Options. (line 153)
63468 * mwarn-dynamicstack: S/390 and zSeries Options.
63470 * mwarn-framesize: S/390 and zSeries Options.
63472 * mwarn-mcu: MSP430 Options. (line 65)
63473 * mwarn-multiple-fast-interrupts: RX Options. (line 143)
63474 * mwbnoinvd: x86 Options. (line 798)
63475 * mwide-bitfields: MCore Options. (line 23)
63476 * mwin32: x86 Windows Options.
63478 * mwindows: x86 Windows Options.
63480 * mword-relocations: ARM Options. (line 885)
63481 * mx32: x86 Options. (line 1425)
63482 * mxgot: M680x0 Options. (line 312)
63483 * mxgot <1>: MIPS Options. (line 229)
63484 * mxl-barrel-shift: MicroBlaze Options. (line 32)
63485 * mxl-compat: RS/6000 and PowerPC Options.
63487 * mxl-float-convert: MicroBlaze Options. (line 50)
63488 * mxl-float-sqrt: MicroBlaze Options. (line 53)
63489 * mxl-gp-opt: MicroBlaze Options. (line 44)
63490 * mxl-multiply-high: MicroBlaze Options. (line 47)
63491 * mxl-pattern-compare: MicroBlaze Options. (line 35)
63492 * mxl-reorder: MicroBlaze Options. (line 62)
63493 * mxl-soft-div: MicroBlaze Options. (line 29)
63494 * mxl-soft-mul: MicroBlaze Options. (line 26)
63495 * mxl-stack-check: MicroBlaze Options. (line 41)
63496 * mxop: x86 Options. (line 805)
63497 * mxpa: MIPS Options. (line 411)
63498 * mxsave: x86 Options. (line 816)
63499 * mxsavec: x86 Options. (line 818)
63500 * mxsaveopt: x86 Options. (line 817)
63501 * mxsaves: x86 Options. (line 819)
63502 * mxy: ARC Options. (line 373)
63503 * myellowknife: RS/6000 and PowerPC Options.
63505 * mzarch: S/390 and zSeries Options.
63507 * mzda: V850 Options. (line 45)
63508 * mzdcbranch: SH Options. (line 341)
63509 * mzero-extend: MMIX Options. (line 26)
63510 * mzvector: S/390 and zSeries Options.
63512 * no-80387: x86 Options. (line 536)
63513 * no-canonical-prefixes: Directory Options. (line 164)
63514 * no-integrated-cpp: Preprocessor Options.
63516 * no-pie: Link Options. (line 181)
63517 * no-sysroot-suffix: Directory Options. (line 183)
63518 * noall_load: Darwin Options. (line 196)
63519 * nocpp: MIPS Options. (line 636)
63520 * nodefaultlibs: Link Options. (line 119)
63521 * nodevicelib: AVR Options. (line 290)
63522 * nodevicespecs: AVR Options. (line 293)
63523 * nofixprebinding: Darwin Options. (line 196)
63524 * nofpu: RX Options. (line 17)
63525 * nolibc: Link Options. (line 131)
63526 * nolibdld: HPPA Options. (line 188)
63527 * nomultidefs: Darwin Options. (line 196)
63528 * non-static: VxWorks Options. (line 16)
63529 * noprebind: Darwin Options. (line 196)
63530 * noseglinkedit: Darwin Options. (line 196)
63531 * nostartfiles: Link Options. (line 114)
63532 * nostdinc: Directory Options. (line 102)
63533 * nostdinc++: C++ Dialect Options.
63535 * nostdinc++ <1>: Directory Options. (line 108)
63536 * nostdlib: Link Options. (line 143)
63537 * no_dead_strip_inits_and_terms: Darwin Options. (line 196)
63538 * o: Overall Options. (line 197)
63539 * O: Optimize Options. (line 39)
63540 * O0: Optimize Options. (line 164)
63541 * O1: Optimize Options. (line 39)
63542 * O2: Optimize Options. (line 95)
63543 * O3: Optimize Options. (line 143)
63544 * Ofast: Optimize Options. (line 180)
63545 * Og: Optimize Options. (line 188)
63546 * Os: Optimize Options. (line 168)
63547 * p: Instrumentation Options.
63549 * P: Preprocessor Options.
63551 * p <1>: Common Function Attributes.
63553 * pagezero_size: Darwin Options. (line 196)
63554 * param: Optimize Options. (line 2624)
63555 * pass-exit-codes: Overall Options. (line 339)
63556 * pedantic: Standards. (line 13)
63557 * pedantic <1>: Warning Options. (line 86)
63558 * pedantic <2>: C Extensions. (line 6)
63559 * pedantic <3>: Alternate Keywords. (line 30)
63560 * pedantic <4>: Warnings and Errors.
63562 * pedantic-errors: Standards. (line 13)
63563 * pedantic-errors <1>: Warning Options. (line 129)
63564 * pedantic-errors <2>: Non-bugs. (line 216)
63565 * pedantic-errors <3>: Warnings and Errors.
63567 * pg: Instrumentation Options.
63569 * pg <1>: Common Function Attributes.
63571 * pie: Link Options. (line 175)
63572 * pipe: Overall Options. (line 347)
63573 * plt: RISC-V Options. (line 13)
63574 * prebind: Darwin Options. (line 196)
63575 * prebind_all_twolevel_modules: Darwin Options. (line 196)
63576 * print-file-name: Developer Options. (line 946)
63577 * print-libgcc-file-name: Developer Options. (line 980)
63578 * print-multi-directory: Developer Options. (line 952)
63579 * print-multi-lib: Developer Options. (line 957)
63580 * print-multi-os-directory: Developer Options. (line 964)
63581 * print-multiarch: Developer Options. (line 973)
63582 * print-objc-runtime-info: Objective-C and Objective-C++ Dialect Options.
63584 * print-prog-name: Developer Options. (line 977)
63585 * print-search-dirs: Developer Options. (line 988)
63586 * print-sysroot: Developer Options. (line 1001)
63587 * print-sysroot-headers-suffix: Developer Options. (line 1008)
63588 * private_bundle: Darwin Options. (line 196)
63589 * pthread: Preprocessor Options.
63591 * pthread <1>: Link Options. (line 192)
63592 * pthreads: Solaris 2 Options. (line 30)
63593 * Q: Developer Options. (line 850)
63594 * Qn: System V Options. (line 18)
63595 * Qy: System V Options. (line 14)
63596 * r: Link Options. (line 199)
63597 * rdynamic: Link Options. (line 203)
63598 * read_only_relocs: Darwin Options. (line 196)
63599 * remap: Preprocessor Options.
63601 * S: Overall Options. (line 180)
63602 * S <1>: Link Options. (line 20)
63603 * s: Link Options. (line 210)
63604 * save-temps: Developer Options. (line 725)
63605 * save-temps=obj: Developer Options. (line 751)
63606 * sectalign: Darwin Options. (line 196)
63607 * sectcreate: Darwin Options. (line 196)
63608 * sectobjectsymbols: Darwin Options. (line 196)
63609 * sectobjectsymbols <1>: Darwin Options. (line 196)
63610 * sectorder: Darwin Options. (line 196)
63611 * seg1addr: Darwin Options. (line 196)
63612 * segaddr: Darwin Options. (line 196)
63613 * seglinkedit: Darwin Options. (line 196)
63614 * segprot: Darwin Options. (line 196)
63615 * segs_read_only_addr: Darwin Options. (line 196)
63616 * segs_read_only_addr <1>: Darwin Options. (line 196)
63617 * segs_read_write_addr: Darwin Options. (line 196)
63618 * segs_read_write_addr <1>: Darwin Options. (line 196)
63619 * seg_addr_table: Darwin Options. (line 196)
63620 * seg_addr_table_filename: Darwin Options. (line 196)
63621 * shared: Link Options. (line 219)
63622 * shared-libgcc: Link Options. (line 227)
63623 * short-calls: Adapteva Epiphany Options.
63625 * sim: CRIS Options. (line 95)
63626 * sim2: CRIS Options. (line 101)
63627 * single_module: Darwin Options. (line 196)
63628 * specs: Overall Options. (line 353)
63629 * static: Link Options. (line 214)
63630 * static <1>: Darwin Options. (line 196)
63631 * static <2>: HPPA Options. (line 192)
63632 * static-libasan: Link Options. (line 261)
63633 * static-libgcc: Link Options. (line 227)
63634 * static-liblsan: Link Options. (line 277)
63635 * static-libstdc++: Link Options. (line 294)
63636 * static-libtsan: Link Options. (line 269)
63637 * static-libubsan: Link Options. (line 285)
63638 * static-pie: Link Options. (line 184)
63639 * std: Standards. (line 13)
63640 * std <1>: C Dialect Options. (line 46)
63641 * std <2>: Other Builtins. (line 31)
63642 * std <3>: Non-bugs. (line 107)
63643 * sub_library: Darwin Options. (line 196)
63644 * sub_umbrella: Darwin Options. (line 196)
63645 * symbolic: Link Options. (line 305)
63646 * sysroot: Directory Options. (line 168)
63647 * T: Link Options. (line 311)
63648 * target-help: Overall Options. (line 229)
63649 * threads: HPPA Options. (line 205)
63650 * time: Developer Options. (line 766)
63651 * tno-android-cc: GNU/Linux Options. (line 36)
63652 * tno-android-ld: GNU/Linux Options. (line 40)
63653 * traditional: Preprocessor Options.
63655 * traditional <1>: Incompatibilities. (line 6)
63656 * traditional-cpp: Preprocessor Options.
63658 * trigraphs: Preprocessor Options.
63660 * twolevel_namespace: Darwin Options. (line 196)
63661 * U: Preprocessor Options.
63663 * u: Link Options. (line 343)
63664 * umbrella: Darwin Options. (line 196)
63665 * undef: Preprocessor Options.
63667 * undefined: Darwin Options. (line 196)
63668 * unexported_symbols_list: Darwin Options. (line 196)
63669 * v: Overall Options. (line 208)
63670 * version: Overall Options. (line 336)
63671 * w: Warning Options. (line 25)
63672 * W: Warning Options. (line 212)
63673 * W <1>: Warning Options. (line 2618)
63674 * W <2>: Warning Options. (line 2726)
63675 * W <3>: Incompatibilities. (line 64)
63676 * Wa: Assembler Options. (line 9)
63677 * Wabi: Warning Options. (line 256)
63678 * Wabi-tag: C++ Dialect Options.
63680 * Wabi-tag <1>: C++ Dialect Options.
63682 * Wabsolute-value: Warning Options. (line 2147)
63683 * Waddr-space-convert: AVR Options. (line 308)
63684 * Waddress: Warning Options. (line 2488)
63685 * Waddress-of-packed-member: Warning Options. (line 2501)
63686 * Waggregate-return: Warning Options. (line 2529)
63687 * Waggressive-loop-optimizations: Warning Options. (line 2534)
63688 * Waligned-new: C++ Dialect Options.
63690 * Wall: Warning Options. (line 138)
63691 * Wall <1>: Standard Libraries. (line 6)
63692 * Walloc-size-larger-than=: Warning Options. (line 1616)
63693 * Walloc-zero: Warning Options. (line 1606)
63694 * Walloca: Warning Options. (line 1631)
63695 * Walloca-larger-than=: Warning Options. (line 1634)
63696 * Wanalyzer-double-fclose: Static Analyzer Options.
63698 * Wanalyzer-double-free: Static Analyzer Options.
63700 * Wanalyzer-exposure-through-output-file: Static Analyzer Options.
63702 * Wanalyzer-file-leak: Static Analyzer Options.
63704 * Wanalyzer-free-of-non-heap: Static Analyzer Options.
63706 * Wanalyzer-malloc-leak: Static Analyzer Options.
63708 * Wanalyzer-null-argument: Static Analyzer Options.
63710 * Wanalyzer-null-dereference: Static Analyzer Options.
63712 * Wanalyzer-possible-null-argument: Static Analyzer Options.
63714 * Wanalyzer-possible-null-dereference: Static Analyzer Options.
63716 * Wanalyzer-stale-setjmp-buffer: Static Analyzer Options.
63718 * Wanalyzer-tainted-array-index: Static Analyzer Options.
63720 * Wanalyzer-too-complex: Static Analyzer Options.
63722 * Wanalyzer-unsafe-call-within-signal-handler: Static Analyzer Options.
63724 * Wanalyzer-use-after-free: Static Analyzer Options.
63726 * Wanalyzer-use-of-pointer-in-stale-stack-frame: Static Analyzer Options.
63728 * Warith-conversion: Warning Options. (line 1699)
63729 * Warray-bounds: Warning Options. (line 1712)
63730 * Wassign-intercept: Objective-C and Objective-C++ Dialect Options.
63732 * Wattribute-alias: Warning Options. (line 1729)
63733 * Wattribute-warning: Warning Options. (line 2697)
63734 * Wattributes: Warning Options. (line 2539)
63735 * Wbad-function-cast: Warning Options. (line 2216)
63736 * Wbool-compare: Warning Options. (line 1761)
63737 * Wbool-operation: Warning Options. (line 1770)
63738 * Wbuiltin-declaration-mismatch: Warning Options. (line 2545)
63739 * Wbuiltin-macro-redefined: Warning Options. (line 2566)
63740 * Wc++-compat: Warning Options. (line 2244)
63741 * Wc++11-compat: Warning Options. (line 2249)
63742 * Wc++14-compat: Warning Options. (line 2255)
63743 * Wc++17-compat: Warning Options. (line 2259)
63744 * Wc++20-compat: Warning Options. (line 2263)
63745 * Wc11-c2x-compat: Warning Options. (line 2236)
63746 * Wc90-c99-compat: Warning Options. (line 2221)
63747 * Wc99-c11-compat: Warning Options. (line 2228)
63748 * Wcast-align: Warning Options. (line 2283)
63749 * Wcast-align=strict: Warning Options. (line 2289)
63750 * Wcast-function-type: Warning Options. (line 2294)
63751 * Wcast-qual: Warning Options. (line 2267)
63752 * Wcatch-value: C++ Dialect Options.
63754 * Wchar-subscripts: Warning Options. (line 366)
63755 * Wclass-conversion: C++ Dialect Options.
63757 * Wclass-memaccess: C++ Dialect Options.
63759 * Wclobbered: Warning Options. (line 2320)
63760 * Wcomma-subscript: C++ Dialect Options.
63762 * Wcomment: Warning Options. (line 2158)
63763 * Wcomments: Warning Options. (line 2158)
63764 * Wconditionally-supported: C++ Dialect Options.
63766 * Wconversion: Warning Options. (line 2324)
63767 * Wconversion-null: C++ Dialect Options.
63769 * Wcoverage-mismatch: Warning Options. (line 371)
63770 * Wcpp: Warning Options. (line 385)
63771 * Wctor-dtor-privacy: C++ Dialect Options.
63773 * Wdangling-else: Warning Options. (line 2345)
63774 * Wdate-time: Warning Options. (line 2379)
63775 * Wdeclaration-after-statement: Warning Options. (line 1990)
63776 * Wdelete-incomplete: C++ Dialect Options.
63778 * Wdelete-non-virtual-dtor: C++ Dialect Options.
63780 * Wdeprecated: Warning Options. (line 2704)
63781 * Wdeprecated-copy: C++ Dialect Options.
63783 * Wdeprecated-declarations: Warning Options. (line 2708)
63784 * Wdesignated-init: Warning Options. (line 2959)
63785 * Wdisabled-optimization: Warning Options. (line 2910)
63786 * Wdiscarded-array-qualifiers: Warning Options. (line 1809)
63787 * Wdiscarded-qualifiers: Warning Options. (line 1803)
63788 * Wdiv-by-zero: Warning Options. (line 1850)
63789 * Wdouble-promotion: Warning Options. (line 389)
63790 * Wduplicate-decl-specifier: Warning Options. (line 407)
63791 * Wduplicated-branches: Warning Options. (line 1780)
63792 * Wduplicated-cond: Warning Options. (line 1791)
63793 * weak_reference_mismatches: Darwin Options. (line 196)
63794 * Weffc++: C++ Dialect Options.
63796 * Wempty-body: Warning Options. (line 2384)
63797 * Wendif-labels: Warning Options. (line 2202)
63798 * Wendif-labels <1>: Warning Options. (line 2388)
63799 * Wenum-compare: Warning Options. (line 2391)
63800 * Wenum-conversion: Warning Options. (line 2397)
63801 * Werror: Warning Options. (line 28)
63802 * Werror=: Warning Options. (line 31)
63803 * Wexpansion-to-defined: Warning Options. (line 2177)
63804 * Wextra: Warning Options. (line 212)
63805 * Wextra <1>: Warning Options. (line 2618)
63806 * Wextra <2>: Warning Options. (line 2726)
63807 * Wextra-semi: C++ Dialect Options.
63809 * Wfatal-errors: Warning Options. (line 48)
63810 * Wfloat-conversion: Warning Options. (line 2424)
63811 * Wfloat-equal: Warning Options. (line 1890)
63812 * Wformat: Warning Options. (line 412)
63813 * Wformat <1>: Warning Options. (line 437)
63814 * Wformat <2>: Warning Options. (line 1577)
63815 * Wformat <3>: Common Function Attributes.
63817 * Wformat-contains-nul: Warning Options. (line 451)
63818 * Wformat-extra-args: Warning Options. (line 455)
63819 * Wformat-nonliteral: Warning Options. (line 548)
63820 * Wformat-nonliteral <1>: Common Function Attributes.
63822 * Wformat-overflow: Warning Options. (line 469)
63823 * Wformat-overflow <1>: Warning Options. (line 480)
63824 * Wformat-security: Warning Options. (line 553)
63825 * Wformat-signedness: Warning Options. (line 564)
63826 * Wformat-truncation: Warning Options. (line 569)
63827 * Wformat-truncation <1>: Warning Options. (line 581)
63828 * Wformat-y2k: Warning Options. (line 592)
63829 * Wformat-zero-length: Warning Options. (line 544)
63830 * Wformat=: Warning Options. (line 412)
63831 * Wformat=1: Warning Options. (line 437)
63832 * Wformat=2: Warning Options. (line 446)
63833 * Wframe-address: Warning Options. (line 1797)
63834 * Wframe-larger-than=: Warning Options. (line 2059)
63835 * Wfree-nonheap-object: Warning Options. (line 2076)
63836 * whatsloaded: Darwin Options. (line 196)
63837 * Whsa: Warning Options. (line 2964)
63838 * whyload: Darwin Options. (line 196)
63839 * Wif-not-aligned: Warning Options. (line 765)
63840 * Wignored-attributes: Warning Options. (line 780)
63841 * Wignored-qualifiers: Warning Options. (line 769)
63842 * Wimplicit: Warning Options. (line 643)
63843 * Wimplicit-fallthrough: Warning Options. (line 647)
63844 * Wimplicit-fallthrough=: Warning Options. (line 652)
63845 * Wimplicit-function-declaration: Warning Options. (line 637)
63846 * Wimplicit-int: Warning Options. (line 632)
63847 * Winaccessible-base: C++ Dialect Options.
63849 * Wincompatible-pointer-types: Warning Options. (line 1815)
63850 * Winherited-variadic-ctor: C++ Dialect Options.
63852 * Winit-list-lifetime: C++ Dialect Options.
63854 * Winit-self: Warning Options. (line 617)
63855 * Winline: Warning Options. (line 2819)
63856 * Winline <1>: Inline. (line 60)
63857 * Wint-conversion: Warning Options. (line 1821)
63858 * Wint-in-bool-context: Warning Options. (line 2832)
63859 * Wint-to-pointer-cast: Warning Options. (line 2840)
63860 * Winvalid-memory-model: Warning Options. (line 1237)
63861 * Winvalid-offsetof: C++ Dialect Options.
63863 * Winvalid-pch: Warning Options. (line 2849)
63864 * Wjump-misses-init: Warning Options. (line 2401)
63865 * Wl: Link Options. (line 335)
63866 * Wlarger-than-BYTE-SIZE: Warning Options. (line 2049)
63867 * Wlarger-than=: Warning Options. (line 2049)
63868 * Wliteral-suffix: C++ Dialect Options.
63870 * Wlogical-not-parentheses: Warning Options. (line 2514)
63871 * Wlogical-op: Warning Options. (line 2506)
63872 * Wlong-long: Warning Options. (line 2853)
63873 * Wlto-type-mismatch: Warning Options. (line 2953)
63874 * Wmain: Warning Options. (line 787)
63875 * Wmaybe-uninitialized: Warning Options. (line 1254)
63876 * Wmemset-elt-size: Warning Options. (line 2469)
63877 * Wmemset-transposed-args: Warning Options. (line 2477)
63878 * Wmisleading-indentation: Warning Options. (line 794)
63879 * Wmismatched-tags: C++ Dialect Options.
63881 * Wmissing-attributes: Warning Options. (line 828)
63882 * Wmissing-braces: Warning Options. (line 872)
63883 * Wmissing-declarations: Warning Options. (line 2608)
63884 * Wmissing-field-initializers: Warning Options. (line 2618)
63885 * Wmissing-format-attribute: Warning Options. (line 1577)
63886 * Wmissing-include-dirs: Warning Options. (line 882)
63887 * Wmissing-noreturn: Warning Options. (line 1563)
63888 * Wmissing-parameter-type: Warning Options. (line 2590)
63889 * Wmissing-profile: Warning Options. (line 885)
63890 * Wmissing-prototypes: Warning Options. (line 2598)
63891 * Wmisspelled-isr: AVR Options. (line 313)
63892 * Wmultichar: Warning Options. (line 2648)
63893 * Wmultiple-inheritance: C++ Dialect Options.
63895 * Wmultistatement-macros: Warning Options. (line 901)
63896 * Wnamespaces: C++ Dialect Options.
63898 * Wnarrowing: C++ Dialect Options.
63900 * Wnested-externs: Warning Options. (line 2816)
63901 * Wno-abi: Warning Options. (line 256)
63902 * Wno-absolute-value: Warning Options. (line 2147)
63903 * Wno-addr-space-convert: AVR Options. (line 308)
63904 * Wno-address: Warning Options. (line 2488)
63905 * Wno-address-of-packed-member: Warning Options. (line 2501)
63906 * Wno-aggregate-return: Warning Options. (line 2529)
63907 * Wno-aggressive-loop-optimizations: Warning Options. (line 2534)
63908 * Wno-aligned-new: C++ Dialect Options.
63910 * Wno-all: Warning Options. (line 138)
63911 * Wno-alloc-size-larger-than: Warning Options. (line 1616)
63912 * Wno-alloc-size-larger-than <1>: Warning Options. (line 1627)
63913 * Wno-alloc-zero: Warning Options. (line 1606)
63914 * Wno-alloca: Warning Options. (line 1631)
63915 * Wno-alloca-larger-than: Warning Options. (line 1634)
63916 * Wno-alloca-larger-than <1>: Warning Options. (line 1695)
63917 * Wno-analyzer-double-fclose: Static Analyzer Options.
63919 * Wno-analyzer-double-free: Static Analyzer Options.
63921 * Wno-analyzer-exposure-through-output-file: Static Analyzer Options.
63923 * Wno-analyzer-file-leak: Static Analyzer Options.
63925 * Wno-analyzer-free-of-non-heap: Static Analyzer Options.
63927 * Wno-analyzer-malloc-leak: Static Analyzer Options.
63929 * Wno-analyzer-null-argument: Static Analyzer Options.
63931 * Wno-analyzer-null-dereference: Static Analyzer Options.
63933 * Wno-analyzer-possible-null-argument: Static Analyzer Options.
63935 * Wno-analyzer-possible-null-dereference: Static Analyzer Options.
63937 * Wno-analyzer-stale-setjmp-buffer: Static Analyzer Options.
63939 * Wno-analyzer-tainted-array-index: Static Analyzer Options.
63941 * Wno-analyzer-too-complex: Static Analyzer Options.
63943 * Wno-analyzer-unsafe-call-within-signal-handler: Static Analyzer Options.
63945 * Wno-analyzer-use-after-free: Static Analyzer Options.
63947 * Wno-analyzer-use-of-pointer-in-stale-stack-frame: Static Analyzer Options.
63949 * Wno-arith-conversion: Warning Options. (line 1699)
63950 * Wno-array-bounds: Warning Options. (line 1712)
63951 * Wno-assign-intercept: Objective-C and Objective-C++ Dialect Options.
63953 * Wno-attribute-alias: Warning Options. (line 1729)
63954 * Wno-attribute-warning: Warning Options. (line 2697)
63955 * Wno-attributes: Warning Options. (line 2539)
63956 * Wno-bad-function-cast: Warning Options. (line 2216)
63957 * Wno-bool-compare: Warning Options. (line 1761)
63958 * Wno-bool-operation: Warning Options. (line 1770)
63959 * Wno-builtin-declaration-mismatch: Warning Options. (line 2545)
63960 * Wno-builtin-macro-redefined: Warning Options. (line 2566)
63961 * Wno-c++-compat: Warning Options. (line 2244)
63962 * Wno-c++11-compat: Warning Options. (line 2249)
63963 * Wno-c++14-compat: Warning Options. (line 2255)
63964 * Wno-c++17-compat: Warning Options. (line 2259)
63965 * Wno-c++20-compat: Warning Options. (line 2263)
63966 * Wno-c11-c2x-compat: Warning Options. (line 2236)
63967 * Wno-c90-c99-compat: Warning Options. (line 2221)
63968 * Wno-c99-c11-compat: Warning Options. (line 2228)
63969 * Wno-cast-align: Warning Options. (line 2283)
63970 * Wno-cast-function-type: Warning Options. (line 2294)
63971 * Wno-cast-qual: Warning Options. (line 2267)
63972 * Wno-catch-value: C++ Dialect Options.
63974 * Wno-char-subscripts: Warning Options. (line 366)
63975 * Wno-class-conversion: C++ Dialect Options.
63977 * Wno-class-memaccess: C++ Dialect Options.
63979 * Wno-clobbered: Warning Options. (line 2320)
63980 * Wno-comma-subscript: C++ Dialect Options.
63982 * Wno-conditionally-supported: C++ Dialect Options.
63984 * Wno-conversion: Warning Options. (line 2324)
63985 * Wno-conversion-null: C++ Dialect Options.
63987 * Wno-coverage-mismatch: Warning Options. (line 371)
63988 * Wno-cpp: Warning Options. (line 385)
63989 * Wno-ctor-dtor-privacy: C++ Dialect Options.
63991 * Wno-dangling-else: Warning Options. (line 2345)
63992 * Wno-date-time: Warning Options. (line 2379)
63993 * Wno-declaration-after-statement: Warning Options. (line 1990)
63994 * Wno-delete-incomplete: C++ Dialect Options.
63996 * Wno-delete-non-virtual-dtor: C++ Dialect Options.
63998 * Wno-deprecated: Warning Options. (line 2704)
63999 * Wno-deprecated-copy: C++ Dialect Options.
64001 * Wno-deprecated-declarations: Warning Options. (line 2708)
64002 * Wno-designated-init: Warning Options. (line 2959)
64003 * Wno-disabled-optimization: Warning Options. (line 2910)
64004 * Wno-discarded-array-qualifiers: Warning Options. (line 1809)
64005 * Wno-discarded-qualifiers: Warning Options. (line 1803)
64006 * Wno-div-by-zero: Warning Options. (line 1850)
64007 * Wno-double-promotion: Warning Options. (line 389)
64008 * Wno-duplicate-decl-specifier: Warning Options. (line 407)
64009 * Wno-duplicated-branches: Warning Options. (line 1780)
64010 * Wno-duplicated-cond: Warning Options. (line 1791)
64011 * Wno-effc++: C++ Dialect Options.
64013 * Wno-empty-body: Warning Options. (line 2384)
64014 * Wno-endif-labels: Warning Options. (line 2202)
64015 * Wno-endif-labels <1>: Warning Options. (line 2388)
64016 * Wno-enum-compare: Warning Options. (line 2391)
64017 * Wno-enum-conversion: Warning Options. (line 2397)
64018 * Wno-error: Warning Options. (line 28)
64019 * Wno-error=: Warning Options. (line 31)
64020 * Wno-extra: Warning Options. (line 212)
64021 * Wno-extra <1>: Warning Options. (line 2618)
64022 * Wno-extra <2>: Warning Options. (line 2726)
64023 * Wno-extra-semi: C++ Dialect Options.
64025 * Wno-fatal-errors: Warning Options. (line 48)
64026 * Wno-float-conversion: Warning Options. (line 2424)
64027 * Wno-float-equal: Warning Options. (line 1890)
64028 * Wno-format: Warning Options. (line 412)
64029 * Wno-format <1>: Warning Options. (line 1577)
64030 * Wno-format-contains-nul: Warning Options. (line 451)
64031 * Wno-format-extra-args: Warning Options. (line 455)
64032 * Wno-format-nonliteral: Warning Options. (line 548)
64033 * Wno-format-overflow: Warning Options. (line 469)
64034 * Wno-format-overflow <1>: Warning Options. (line 480)
64035 * Wno-format-security: Warning Options. (line 553)
64036 * Wno-format-signedness: Warning Options. (line 564)
64037 * Wno-format-truncation: Warning Options. (line 569)
64038 * Wno-format-truncation <1>: Warning Options. (line 581)
64039 * Wno-format-y2k: Warning Options. (line 592)
64040 * Wno-format-zero-length: Warning Options. (line 544)
64041 * Wno-frame-address: Warning Options. (line 1797)
64042 * Wno-frame-larger-than: Warning Options. (line 2059)
64043 * Wno-frame-larger-than <1>: Warning Options. (line 2072)
64044 * Wno-free-nonheap-object: Warning Options. (line 2076)
64045 * Wno-hsa: Warning Options. (line 2964)
64046 * Wno-if-not-aligned: Warning Options. (line 765)
64047 * Wno-ignored-attributes: Warning Options. (line 780)
64048 * Wno-ignored-qualifiers: Warning Options. (line 769)
64049 * Wno-implicit: Warning Options. (line 643)
64050 * Wno-implicit-fallthrough: Warning Options. (line 647)
64051 * Wno-implicit-function-declaration: Warning Options. (line 637)
64052 * Wno-implicit-int: Warning Options. (line 632)
64053 * Wno-inaccessible-base: C++ Dialect Options.
64055 * Wno-incompatible-pointer-types: Warning Options. (line 1815)
64056 * Wno-inherited-variadic-ctor: C++ Dialect Options.
64058 * Wno-init-list-lifetime: C++ Dialect Options.
64060 * Wno-init-self: Warning Options. (line 617)
64061 * Wno-inline: Warning Options. (line 2819)
64062 * Wno-int-conversion: Warning Options. (line 1821)
64063 * Wno-int-in-bool-context: Warning Options. (line 2832)
64064 * Wno-int-to-pointer-cast: Warning Options. (line 2840)
64065 * Wno-invalid-memory-model: Warning Options. (line 1237)
64066 * Wno-invalid-offsetof: C++ Dialect Options.
64068 * Wno-invalid-pch: Warning Options. (line 2849)
64069 * Wno-jump-misses-init: Warning Options. (line 2401)
64070 * Wno-larger-than: Warning Options. (line 2055)
64071 * Wno-literal-suffix: C++ Dialect Options.
64073 * Wno-logical-not-parentheses: Warning Options. (line 2514)
64074 * Wno-logical-op: Warning Options. (line 2506)
64075 * Wno-long-long: Warning Options. (line 2853)
64076 * Wno-lto-type-mismatch: Warning Options. (line 2953)
64077 * Wno-main: Warning Options. (line 787)
64078 * Wno-maybe-uninitialized: Warning Options. (line 1254)
64079 * Wno-memset-elt-size: Warning Options. (line 2469)
64080 * Wno-memset-transposed-args: Warning Options. (line 2477)
64081 * Wno-misleading-indentation: Warning Options. (line 794)
64082 * Wno-mismatched-tags: C++ Dialect Options.
64084 * Wno-missing-attributes: Warning Options. (line 828)
64085 * Wno-missing-braces: Warning Options. (line 872)
64086 * Wno-missing-declarations: Warning Options. (line 2608)
64087 * Wno-missing-field-initializers: Warning Options. (line 2618)
64088 * Wno-missing-format-attribute: Warning Options. (line 1577)
64089 * Wno-missing-include-dirs: Warning Options. (line 882)
64090 * Wno-missing-noreturn: Warning Options. (line 1563)
64091 * Wno-missing-parameter-type: Warning Options. (line 2590)
64092 * Wno-missing-profile: Warning Options. (line 885)
64093 * Wno-missing-prototypes: Warning Options. (line 2598)
64094 * Wno-misspelled-isr: AVR Options. (line 313)
64095 * Wno-multichar: Warning Options. (line 2648)
64096 * Wno-multiple-inheritance: C++ Dialect Options.
64098 * Wno-multistatement-macros: Warning Options. (line 901)
64099 * Wno-namespaces: C++ Dialect Options.
64101 * Wno-narrowing: C++ Dialect Options.
64103 * Wno-nested-externs: Warning Options. (line 2816)
64104 * Wno-noexcept: C++ Dialect Options.
64106 * Wno-noexcept-type: C++ Dialect Options.
64108 * Wno-non-template-friend: C++ Dialect Options.
64110 * Wno-non-virtual-dtor: C++ Dialect Options.
64112 * Wno-nonnull: Warning Options. (line 596)
64113 * Wno-nonnull-compare: Warning Options. (line 603)
64114 * Wno-normalized: Warning Options. (line 2654)
64115 * Wno-null-dereference: Warning Options. (line 610)
64116 * Wno-odr: Warning Options. (line 2717)
64117 * Wno-old-style-cast: C++ Dialect Options.
64119 * Wno-old-style-declaration: Warning Options. (line 2577)
64120 * Wno-old-style-definition: Warning Options. (line 2583)
64121 * Wno-openmp-simd: Warning Options. (line 2721)
64122 * Wno-overflow: Warning Options. (line 2714)
64123 * Wno-overlength-strings: Warning Options. (line 2930)
64124 * Wno-overloaded-virtual: C++ Dialect Options.
64126 * Wno-override-init: Warning Options. (line 2726)
64127 * Wno-override-init-side-effects: Warning Options. (line 2734)
64128 * Wno-packed: Warning Options. (line 2739)
64129 * Wno-packed-bitfield-compat: Warning Options. (line 2756)
64130 * Wno-packed-not-aligned: Warning Options. (line 2773)
64131 * Wno-padded: Warning Options. (line 2786)
64132 * Wno-parentheses: Warning Options. (line 921)
64133 * Wno-pedantic: Warning Options. (line 86)
64134 * Wno-pedantic-ms-format: Warning Options. (line 2114)
64135 * Wno-pessimizing-move: C++ Dialect Options.
64137 * Wno-placement-new: C++ Dialect Options.
64139 * Wno-pmf-conversions: C++ Dialect Options.
64141 * Wno-pmf-conversions <1>: Bound member functions.
64143 * Wno-pointer-arith: Warning Options. (line 2120)
64144 * Wno-pointer-compare: Warning Options. (line 2127)
64145 * Wno-pointer-sign: Warning Options. (line 2919)
64146 * Wno-pointer-to-int-cast: Warning Options. (line 2845)
64147 * Wno-pragmas: Warning Options. (line 1306)
64148 * Wno-prio-ctor-dtor: Warning Options. (line 1311)
64149 * Wno-property-assign-default: Objective-C and Objective-C++ Dialect Options.
64151 * Wno-protocol: Objective-C and Objective-C++ Dialect Options.
64153 * Wno-redundant-decls: Warning Options. (line 2793)
64154 * Wno-redundant-move: C++ Dialect Options.
64156 * Wno-redundant-tags: C++ Dialect Options.
64158 * Wno-register: C++ Dialect Options.
64160 * Wno-reorder: C++ Dialect Options.
64162 * Wno-restrict: Warning Options. (line 2797)
64163 * Wno-return-local-addr: Warning Options. (line 1001)
64164 * Wno-return-type: Warning Options. (line 1005)
64165 * Wno-scalar-storage-order: Warning Options. (line 2430)
64166 * Wno-selector: Objective-C and Objective-C++ Dialect Options.
64168 * Wno-sequence-point: Warning Options. (line 948)
64169 * Wno-shadow: Warning Options. (line 1996)
64170 * Wno-shadow-ivar: Warning Options. (line 2007)
64171 * Wno-shift-count-negative: Warning Options. (line 1026)
64172 * Wno-shift-count-overflow: Warning Options. (line 1030)
64173 * Wno-shift-negative-value: Warning Options. (line 1034)
64174 * Wno-shift-overflow: Warning Options. (line 1039)
64175 * Wno-sign-compare: Warning Options. (line 2412)
64176 * Wno-sign-conversion: Warning Options. (line 2418)
64177 * Wno-sign-promo: C++ Dialect Options.
64179 * Wno-sized-deallocation: C++ Dialect Options.
64181 * Wno-sizeof-array-argument: Warning Options. (line 2464)
64182 * Wno-sizeof-pointer-div: Warning Options. (line 2434)
64183 * Wno-sizeof-pointer-memaccess: Warning Options. (line 2442)
64184 * Wno-stack-protector: Warning Options. (line 2925)
64185 * Wno-stack-usage: Warning Options. (line 2080)
64186 * Wno-stack-usage <1>: Warning Options. (line 2104)
64187 * Wno-strict-aliasing: Warning Options. (line 1319)
64188 * Wno-strict-null-sentinel: C++ Dialect Options.
64190 * Wno-strict-overflow: Warning Options. (line 1358)
64191 * Wno-strict-prototypes: Warning Options. (line 2571)
64192 * Wno-strict-selector-match: Objective-C and Objective-C++ Dialect Options.
64194 * Wno-string-compare: Warning Options. (line 1406)
64195 * Wno-stringop-overflow: Warning Options. (line 1427)
64196 * Wno-stringop-overflow <1>: Warning Options. (line 1466)
64197 * Wno-stringop-truncation: Warning Options. (line 1504)
64198 * Wno-subobject-linkage: C++ Dialect Options.
64200 * Wno-suggest-attribute=: Warning Options. (line 1555)
64201 * Wno-suggest-attribute=cold: Warning Options. (line 1598)
64202 * Wno-suggest-attribute=const: Warning Options. (line 1563)
64203 * Wno-suggest-attribute=format: Warning Options. (line 1577)
64204 * Wno-suggest-attribute=malloc: Warning Options. (line 1563)
64205 * Wno-suggest-attribute=noreturn: Warning Options. (line 1563)
64206 * Wno-suggest-attribute=pure: Warning Options. (line 1563)
64207 * Wno-suggest-final-methods: C++ Dialect Options.
64209 * Wno-suggest-final-types: C++ Dialect Options.
64211 * Wno-suggest-override: C++ Dialect Options.
64213 * Wno-switch: Warning Options. (line 1055)
64214 * Wno-switch-bool: Warning Options. (line 1075)
64215 * Wno-switch-default: Warning Options. (line 1063)
64216 * Wno-switch-enum: Warning Options. (line 1066)
64217 * Wno-switch-outside-range: Warning Options. (line 1086)
64218 * Wno-switch-unreachable: Warning Options. (line 1091)
64219 * Wno-sync-nand: Warning Options. (line 1115)
64220 * Wno-system-headers: Warning Options. (line 1855)
64221 * Wno-tautological-compare: Warning Options. (line 1866)
64222 * Wno-templates: C++ Dialect Options.
64224 * Wno-terminate: C++ Dialect Options.
64226 * Wno-traditional: Warning Options. (line 1905)
64227 * Wno-traditional-conversion: Warning Options. (line 1982)
64228 * Wno-trampolines: Warning Options. (line 1880)
64229 * Wno-type-limits: Warning Options. (line 2140)
64230 * Wno-undeclared-selector: Objective-C and Objective-C++ Dialect Options.
64232 * Wno-undef: Warning Options. (line 2173)
64233 * Wno-uninitialized: Warning Options. (line 1216)
64234 * Wno-unknown-pragmas: Warning Options. (line 1299)
64235 * Wno-unsafe-loop-optimizations: Warning Options. (line 2108)
64236 * Wno-unsuffixed-float-constants: Warning Options. (line 2945)
64237 * Wno-unused: Warning Options. (line 1209)
64238 * Wno-unused-but-set-parameter: Warning Options. (line 1120)
64239 * Wno-unused-but-set-variable: Warning Options. (line 1129)
64240 * Wno-unused-const-variable: Warning Options. (line 1176)
64241 * Wno-unused-function: Warning Options. (line 1139)
64242 * Wno-unused-label: Warning Options. (line 1144)
64243 * Wno-unused-local-typedefs: Warning Options. (line 1151)
64244 * Wno-unused-parameter: Warning Options. (line 1155)
64245 * Wno-unused-result: Warning Options. (line 1162)
64246 * Wno-unused-value: Warning Options. (line 1199)
64247 * Wno-unused-variable: Warning Options. (line 1167)
64248 * Wno-useless-cast: C++ Dialect Options.
64250 * Wno-varargs: Warning Options. (line 2864)
64251 * Wno-variadic-macros: Warning Options. (line 2858)
64252 * Wno-vector-operation-performance: Warning Options. (line 2869)
64253 * Wno-virtual-inheritance: C++ Dialect Options.
64255 * Wno-virtual-move-assign: C++ Dialect Options.
64257 * Wno-vla: Warning Options. (line 2879)
64258 * Wno-vla-larger-than: Warning Options. (line 2883)
64259 * Wno-vla-larger-than <1>: Warning Options. (line 2900)
64260 * Wno-volatile: C++ Dialect Options.
64262 * Wno-volatile-register-var: Warning Options. (line 2904)
64263 * Wno-write-strings: Warning Options. (line 2307)
64264 * Wno-zero-as-null-pointer-constant: C++ Dialect Options.
64266 * Wnoexcept: C++ Dialect Options.
64268 * Wnoexcept-type: C++ Dialect Options.
64270 * Wnon-template-friend: C++ Dialect Options.
64272 * Wnon-virtual-dtor: C++ Dialect Options.
64274 * Wnonnull: Warning Options. (line 596)
64275 * Wnonnull-compare: Warning Options. (line 603)
64276 * Wnormalized: Warning Options. (line 2654)
64277 * Wnormalized=: Warning Options. (line 2654)
64278 * Wnull-dereference: Warning Options. (line 610)
64279 * Wodr: Warning Options. (line 2717)
64280 * Wold-style-cast: C++ Dialect Options.
64282 * Wold-style-declaration: Warning Options. (line 2577)
64283 * Wold-style-definition: Warning Options. (line 2583)
64284 * Wopenmp-simd: Warning Options. (line 2721)
64285 * Woverflow: Warning Options. (line 2714)
64286 * Woverlength-strings: Warning Options. (line 2930)
64287 * Woverloaded-virtual: C++ Dialect Options.
64289 * Woverride-init: Warning Options. (line 2726)
64290 * Woverride-init-side-effects: Warning Options. (line 2734)
64291 * Wp: Preprocessor Options.
64293 * Wpacked: Warning Options. (line 2739)
64294 * Wpacked-bitfield-compat: Warning Options. (line 2756)
64295 * Wpacked-not-aligned: Warning Options. (line 2773)
64296 * Wpadded: Warning Options. (line 2786)
64297 * Wparentheses: Warning Options. (line 921)
64298 * Wpedantic: Warning Options. (line 86)
64299 * Wpedantic-ms-format: Warning Options. (line 2114)
64300 * Wpessimizing-move: C++ Dialect Options.
64302 * Wplacement-new: C++ Dialect Options.
64304 * Wpmf-conversions: C++ Dialect Options.
64306 * Wpointer-arith: Warning Options. (line 2120)
64307 * Wpointer-arith <1>: Pointer Arith. (line 13)
64308 * Wpointer-compare: Warning Options. (line 2127)
64309 * Wpointer-sign: Warning Options. (line 2919)
64310 * Wpointer-to-int-cast: Warning Options. (line 2845)
64311 * Wpragmas: Warning Options. (line 1306)
64312 * Wprio-ctor-dtor: Warning Options. (line 1311)
64313 * Wproperty-assign-default: Objective-C and Objective-C++ Dialect Options.
64315 * Wprotocol: Objective-C and Objective-C++ Dialect Options.
64317 * wrapper: Overall Options. (line 362)
64318 * Wredundant-decls: Warning Options. (line 2793)
64319 * Wredundant-move: C++ Dialect Options.
64321 * Wredundant-tags: C++ Dialect Options.
64323 * Wregister: C++ Dialect Options.
64325 * Wreorder: C++ Dialect Options.
64327 * Wrestrict: Warning Options. (line 2797)
64328 * Wreturn-local-addr: Warning Options. (line 1001)
64329 * Wreturn-type: Warning Options. (line 1005)
64330 * Wscalar-storage-order: Warning Options. (line 2430)
64331 * Wselector: Objective-C and Objective-C++ Dialect Options.
64333 * Wsequence-point: Warning Options. (line 948)
64334 * Wshadow: Warning Options. (line 1996)
64335 * Wshadow-ivar: Warning Options. (line 2007)
64336 * Wshadow=compatible-local: Warning Options. (line 2018)
64337 * Wshadow=global: Warning Options. (line 2011)
64338 * Wshadow=local: Warning Options. (line 2014)
64339 * Wshift-count-negative: Warning Options. (line 1026)
64340 * Wshift-count-overflow: Warning Options. (line 1030)
64341 * Wshift-negative-value: Warning Options. (line 1034)
64342 * Wshift-overflow: Warning Options. (line 1039)
64343 * Wsign-compare: Warning Options. (line 2412)
64344 * Wsign-conversion: Warning Options. (line 2418)
64345 * Wsign-promo: C++ Dialect Options.
64347 * Wsized-deallocation: C++ Dialect Options.
64349 * Wsizeof-array-argument: Warning Options. (line 2464)
64350 * Wsizeof-pointer-div: Warning Options. (line 2434)
64351 * Wsizeof-pointer-memaccess: Warning Options. (line 2442)
64352 * Wstack-protector: Warning Options. (line 2925)
64353 * Wstack-usage: Warning Options. (line 2080)
64354 * Wstrict-aliasing: Warning Options. (line 1319)
64355 * Wstrict-aliasing=n: Warning Options. (line 1326)
64356 * Wstrict-null-sentinel: C++ Dialect Options.
64358 * Wstrict-overflow: Warning Options. (line 1358)
64359 * Wstrict-prototypes: Warning Options. (line 2571)
64360 * Wstrict-selector-match: Objective-C and Objective-C++ Dialect Options.
64362 * Wstring-compare: Warning Options. (line 1406)
64363 * Wstringop-overflow: Warning Options. (line 1427)
64364 * Wstringop-overflow <1>: Warning Options. (line 1466)
64365 * Wstringop-truncation: Warning Options. (line 1504)
64366 * Wsubobject-linkage: C++ Dialect Options.
64368 * Wsuggest-attribute=: Warning Options. (line 1555)
64369 * Wsuggest-attribute=cold: Warning Options. (line 1598)
64370 * Wsuggest-attribute=const: Warning Options. (line 1563)
64371 * Wsuggest-attribute=format: Warning Options. (line 1577)
64372 * Wsuggest-attribute=malloc: Warning Options. (line 1563)
64373 * Wsuggest-attribute=noreturn: Warning Options. (line 1563)
64374 * Wsuggest-attribute=pure: Warning Options. (line 1563)
64375 * Wsuggest-final-methods: C++ Dialect Options.
64377 * Wsuggest-final-types: C++ Dialect Options.
64379 * Wsuggest-override: C++ Dialect Options.
64381 * Wswitch: Warning Options. (line 1055)
64382 * Wswitch-bool: Warning Options. (line 1075)
64383 * Wswitch-default: Warning Options. (line 1063)
64384 * Wswitch-enum: Warning Options. (line 1066)
64385 * Wswitch-outside-range: Warning Options. (line 1086)
64386 * Wswitch-unreachable: Warning Options. (line 1091)
64387 * Wsync-nand: Warning Options. (line 1115)
64388 * Wsystem-headers: Warning Options. (line 1855)
64389 * Wtautological-compare: Warning Options. (line 1866)
64390 * Wtemplates: C++ Dialect Options.
64392 * Wterminate: C++ Dialect Options.
64394 * Wtraditional: Warning Options. (line 1905)
64395 * Wtraditional-conversion: Warning Options. (line 1982)
64396 * Wtrampolines: Warning Options. (line 1880)
64397 * Wtrigraphs: Warning Options. (line 2163)
64398 * Wtype-limits: Warning Options. (line 2140)
64399 * Wundeclared-selector: Objective-C and Objective-C++ Dialect Options.
64401 * Wundef: Warning Options. (line 2173)
64402 * Wuninitialized: Warning Options. (line 1216)
64403 * Wunknown-pragmas: Warning Options. (line 1299)
64404 * Wunsafe-loop-optimizations: Warning Options. (line 2108)
64405 * Wunsuffixed-float-constants: Warning Options. (line 2945)
64406 * Wunused: Warning Options. (line 1209)
64407 * Wunused-but-set-parameter: Warning Options. (line 1120)
64408 * Wunused-but-set-variable: Warning Options. (line 1129)
64409 * Wunused-const-variable: Warning Options. (line 1176)
64410 * Wunused-function: Warning Options. (line 1139)
64411 * Wunused-label: Warning Options. (line 1144)
64412 * Wunused-local-typedefs: Warning Options. (line 1151)
64413 * Wunused-macros: Warning Options. (line 2183)
64414 * Wunused-parameter: Warning Options. (line 1155)
64415 * Wunused-result: Warning Options. (line 1162)
64416 * Wunused-value: Warning Options. (line 1199)
64417 * Wunused-variable: Warning Options. (line 1167)
64418 * Wuseless-cast: C++ Dialect Options.
64420 * Wvarargs: Warning Options. (line 2864)
64421 * Wvariadic-macros: Warning Options. (line 2858)
64422 * Wvector-operation-performance: Warning Options. (line 2869)
64423 * Wvirtual-inheritance: C++ Dialect Options.
64425 * Wvirtual-move-assign: C++ Dialect Options.
64427 * Wvla: Warning Options. (line 2879)
64428 * Wvla-larger-than=: Warning Options. (line 2883)
64429 * Wvolatile: C++ Dialect Options.
64431 * Wvolatile-register-var: Warning Options. (line 2904)
64432 * Wwrite-strings: Warning Options. (line 2307)
64433 * Wzero-as-null-pointer-constant: C++ Dialect Options.
64435 * Wzero-length-bounds: Warning Options. (line 1827)
64436 * Wzero-length-bounds <1>: Warning Options. (line 1827)
64437 * x: Overall Options. (line 138)
64438 * Xassembler: Assembler Options. (line 13)
64439 * Xbind-lazy: VxWorks Options. (line 26)
64440 * Xbind-now: VxWorks Options. (line 30)
64441 * Xlinker: Link Options. (line 317)
64442 * Xpreprocessor: Preprocessor Options.
64444 * Ym: System V Options. (line 26)
64445 * YP: System V Options. (line 22)
64446 * z: Link Options. (line 348)
64449 File: gcc.info, Node: Keyword Index, Prev: Option Index, Up: Top
64457 * #pragma: Pragmas. (line 6)
64458 * #pragma implementation: C++ Interface. (line 36)
64459 * #pragma implementation, implied: C++ Interface. (line 43)
64460 * #pragma interface: C++ Interface. (line 17)
64461 * $: Dollar Signs. (line 6)
64462 * % in constraint: Modifiers. (line 52)
64463 * %include: Spec Files. (line 26)
64464 * %include_noerr: Spec Files. (line 30)
64465 * %rename: Spec Files. (line 34)
64466 * & in constraint: Modifiers. (line 25)
64467 * ': Incompatibilities. (line 116)
64468 * *__builtin_alloca: Other Builtins. (line 129)
64469 * *__builtin_alloca_with_align: Other Builtins. (line 166)
64470 * *__builtin_alloca_with_align_and_max: Other Builtins. (line 211)
64471 * + in constraint: Modifiers. (line 12)
64472 * -lgcc, use with -nodefaultlibs: Link Options. (line 154)
64473 * -lgcc, use with -nostdlib: Link Options. (line 154)
64474 * -march feature modifiers: AArch64 Options. (line 339)
64475 * -mcpu feature modifiers: AArch64 Options. (line 339)
64476 * -nodefaultlibs and unresolved references: Link Options. (line 154)
64477 * -nostdlib and unresolved references: Link Options. (line 154)
64478 * .sdata/.sdata2 references (PowerPC): RS/6000 and PowerPC Options.
64480 * //: C++ Comments. (line 6)
64481 * 0 in constraint: Simple Constraints. (line 125)
64482 * < in constraint: Simple Constraints. (line 47)
64483 * = in constraint: Modifiers. (line 8)
64484 * > in constraint: Simple Constraints. (line 59)
64485 * ?: extensions: Conditionals. (line 6)
64486 * ?: side effect: Conditionals. (line 20)
64487 * _ in variables in macros: Typeof. (line 46)
64488 * _Accum data type: Fixed-Point. (line 6)
64489 * _Complex keyword: Complex. (line 6)
64490 * _Decimal128 data type: Decimal Float. (line 6)
64491 * _Decimal32 data type: Decimal Float. (line 6)
64492 * _Decimal64 data type: Decimal Float. (line 6)
64493 * _Exit: Other Builtins. (line 6)
64494 * _exit: Other Builtins. (line 6)
64495 * _FloatN data types: Floating Types. (line 6)
64496 * _FloatNx data types: Floating Types. (line 6)
64497 * _Fract data type: Fixed-Point. (line 6)
64498 * _get_ssp: x86 control-flow protection intrinsics.
64500 * _HTM_FIRST_USER_ABORT_CODE: S/390 System z Built-in Functions.
64502 * _inc_ssp: x86 control-flow protection intrinsics.
64504 * _Sat data type: Fixed-Point. (line 6)
64505 * _xabort: x86 transactional memory intrinsics.
64507 * _xbegin: x86 transactional memory intrinsics.
64509 * _xend: x86 transactional memory intrinsics.
64511 * _xtest: x86 transactional memory intrinsics.
64513 * __atomic_add_fetch: __atomic Builtins. (line 179)
64514 * __atomic_always_lock_free: __atomic Builtins. (line 267)
64515 * __atomic_and_fetch: __atomic Builtins. (line 183)
64516 * __atomic_clear: __atomic Builtins. (line 241)
64517 * __atomic_compare_exchange: __atomic Builtins. (line 171)
64518 * __atomic_compare_exchange_n: __atomic Builtins. (line 147)
64519 * __atomic_exchange: __atomic Builtins. (line 141)
64520 * __atomic_exchange_n: __atomic Builtins. (line 131)
64521 * __atomic_fetch_add: __atomic Builtins. (line 204)
64522 * __atomic_fetch_and: __atomic Builtins. (line 208)
64523 * __atomic_fetch_nand: __atomic Builtins. (line 214)
64524 * __atomic_fetch_or: __atomic Builtins. (line 212)
64525 * __atomic_fetch_sub: __atomic Builtins. (line 206)
64526 * __atomic_fetch_xor: __atomic Builtins. (line 210)
64527 * __atomic_is_lock_free: __atomic Builtins. (line 281)
64528 * __atomic_load: __atomic Builtins. (line 113)
64529 * __atomic_load_n: __atomic Builtins. (line 106)
64530 * __atomic_nand_fetch: __atomic Builtins. (line 189)
64531 * __atomic_or_fetch: __atomic Builtins. (line 187)
64532 * __atomic_signal_fence: __atomic Builtins. (line 260)
64533 * __atomic_store: __atomic Builtins. (line 126)
64534 * __atomic_store_n: __atomic Builtins. (line 118)
64535 * __atomic_sub_fetch: __atomic Builtins. (line 181)
64536 * __atomic_test_and_set: __atomic Builtins. (line 229)
64537 * __atomic_thread_fence: __atomic Builtins. (line 253)
64538 * __atomic_xor_fetch: __atomic Builtins. (line 185)
64539 * __builtin_addf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64541 * __builtin_add_overflow: Integer Overflow Builtins.
64543 * __builtin_add_overflow_p: Integer Overflow Builtins.
64545 * __builtin_alloca: Other Builtins. (line 6)
64546 * __builtin_alloca_with_align: Other Builtins. (line 6)
64547 * __builtin_alloca_with_align_and_max: Other Builtins. (line 6)
64548 * __builtin_apply: Constructing Calls. (line 29)
64549 * __builtin_apply_args: Constructing Calls. (line 19)
64550 * __builtin_arc_aligned: ARC Built-in Functions.
64552 * __builtin_arc_brk: ARC Built-in Functions.
64554 * __builtin_arc_core_read: ARC Built-in Functions.
64556 * __builtin_arc_core_write: ARC Built-in Functions.
64558 * __builtin_arc_divaw: ARC Built-in Functions.
64560 * __builtin_arc_flag: ARC Built-in Functions.
64562 * __builtin_arc_lr: ARC Built-in Functions.
64564 * __builtin_arc_mul64: ARC Built-in Functions.
64566 * __builtin_arc_mulu64: ARC Built-in Functions.
64568 * __builtin_arc_nop: ARC Built-in Functions.
64570 * __builtin_arc_norm: ARC Built-in Functions.
64572 * __builtin_arc_normw: ARC Built-in Functions.
64574 * __builtin_arc_rtie: ARC Built-in Functions.
64576 * __builtin_arc_sleep: ARC Built-in Functions.
64578 * __builtin_arc_sr: ARC Built-in Functions.
64580 * __builtin_arc_swap: ARC Built-in Functions.
64582 * __builtin_arc_swi: ARC Built-in Functions.
64584 * __builtin_arc_sync: ARC Built-in Functions.
64586 * __builtin_arc_trap_s: ARC Built-in Functions.
64588 * __builtin_arc_unimp_s: ARC Built-in Functions.
64590 * __builtin_assume_aligned: Other Builtins. (line 662)
64591 * __builtin_bswap16: Other Builtins. (line 983)
64592 * __builtin_bswap32: Other Builtins. (line 987)
64593 * __builtin_bswap64: Other Builtins. (line 991)
64594 * __builtin_call_with_static_chain: Other Builtins. (line 6)
64595 * __builtin_call_with_static_chain <1>: Other Builtins. (line 385)
64596 * __builtin_choose_expr: Other Builtins. (line 396)
64597 * __builtin_clrsb: Other Builtins. (line 913)
64598 * __builtin_clrsbl: Other Builtins. (line 935)
64599 * __builtin_clrsbll: Other Builtins. (line 958)
64600 * __builtin_clz: Other Builtins. (line 905)
64601 * __builtin_clzl: Other Builtins. (line 927)
64602 * __builtin_clzll: Other Builtins. (line 950)
64603 * __builtin_complex: Other Builtins. (line 490)
64604 * __builtin_constant_p: Other Builtins. (line 499)
64605 * __builtin_convertvector: Vector Extensions. (line 165)
64606 …ltin_cpu_init: Basic PowerPC Built-in Functions Available on all Configurations.
64608 * __builtin_cpu_init <1>: x86 Built-in Functions.
64610 …ltin_cpu_is: Basic PowerPC Built-in Functions Available on all Configurations.
64612 * __builtin_cpu_is <1>: x86 Built-in Functions.
64614 …ltin_cpu_supports: Basic PowerPC Built-in Functions Available on all Configurations.
64616 * __builtin_cpu_supports <1>: x86 Built-in Functions.
64618 * __builtin_ctz: Other Builtins. (line 909)
64619 * __builtin_ctzl: Other Builtins. (line 931)
64620 * __builtin_ctzll: Other Builtins. (line 954)
64621 * __builtin_divf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64623 * __builtin_expect: Other Builtins. (line 562)
64624 * __builtin_expect_with_probability: Other Builtins. (line 597)
64625 * __builtin_extend_pointer: Other Builtins. (line 6)
64626 * __builtin_extend_pointer <1>: Other Builtins. (line 995)
64627 * __builtin_extract_return_addr: Return Address. (line 50)
64628 * __builtin_ffs: Other Builtins. (line 901)
64629 * __builtin_ffsl: Other Builtins. (line 924)
64630 * __builtin_ffsll: Other Builtins. (line 946)
64631 * __builtin_FILE: Other Builtins. (line 695)
64632 * __builtin_fmaf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64634 * __builtin_fpclassify: Other Builtins. (line 6)
64635 * __builtin_fpclassify <1>: Other Builtins. (line 797)
64636 * __builtin_frame_address: Return Address. (line 62)
64637 * __builtin_frob_return_addr: Return Address. (line 59)
64638 * __builtin_FUNCTION: Other Builtins. (line 687)
64639 * __builtin_goacc_parlevel_id: Other Builtins. (line 1002)
64640 * __builtin_goacc_parlevel_size: Other Builtins. (line 1006)
64641 * __builtin_has_attribute: Other Builtins. (line 6)
64642 * __builtin_has_attribute <1>: Other Builtins. (line 220)
64643 * __builtin_huge_val: Other Builtins. (line 777)
64644 * __builtin_huge_valf: Other Builtins. (line 782)
64645 * __builtin_huge_valfN: Other Builtins. (line 789)
64646 * __builtin_huge_valfNx: Other Builtins. (line 793)
64647 * __builtin_huge_vall: Other Builtins. (line 785)
64648 * __builtin_huge_valq: x86 Built-in Functions.
64650 * __builtin_inf: Other Builtins. (line 808)
64651 * __builtin_infd128: Other Builtins. (line 818)
64652 * __builtin_infd32: Other Builtins. (line 812)
64653 * __builtin_infd64: Other Builtins. (line 815)
64654 * __builtin_inff: Other Builtins. (line 822)
64655 * __builtin_inffN: Other Builtins. (line 831)
64656 * __builtin_inffNx: Other Builtins. (line 834)
64657 * __builtin_infl: Other Builtins. (line 827)
64658 * __builtin_infq: x86 Built-in Functions.
64660 * __builtin_isfinite: Other Builtins. (line 6)
64661 * __builtin_isgreater: Other Builtins. (line 6)
64662 * __builtin_isgreaterequal: Other Builtins. (line 6)
64663 * __builtin_isinf_sign: Other Builtins. (line 6)
64664 * __builtin_isinf_sign <1>: Other Builtins. (line 837)
64665 * __builtin_isless: Other Builtins. (line 6)
64666 * __builtin_islessequal: Other Builtins. (line 6)
64667 * __builtin_islessgreater: Other Builtins. (line 6)
64668 * __builtin_isnormal: Other Builtins. (line 6)
64669 * __builtin_isunordered: Other Builtins. (line 6)
64670 * __builtin_is_constant_evaluated: Other Builtins. (line 544)
64671 * __builtin_LINE: Other Builtins. (line 680)
64672 * __builtin_longjmp: Nonlocal Gotos. (line 37)
64673 * __builtin_mulf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64675 * __builtin_mul_overflow: Integer Overflow Builtins.
64677 * __builtin_mul_overflow_p: Integer Overflow Builtins.
64679 * __builtin_nan: Other Builtins. (line 845)
64680 * __builtin_nand128: Other Builtins. (line 867)
64681 * __builtin_nand32: Other Builtins. (line 861)
64682 * __builtin_nand64: Other Builtins. (line 864)
64683 * __builtin_nanf: Other Builtins. (line 871)
64684 * __builtin_nanfN: Other Builtins. (line 878)
64685 * __builtin_nanfNx: Other Builtins. (line 881)
64686 * __builtin_nanl: Other Builtins. (line 874)
64687 * __builtin_nanq: x86 Built-in Functions.
64689 * __builtin_nans: Other Builtins. (line 884)
64690 * __builtin_nansf: Other Builtins. (line 888)
64691 * __builtin_nansfN: Other Builtins. (line 895)
64692 * __builtin_nansfNx: Other Builtins. (line 898)
64693 * __builtin_nansl: Other Builtins. (line 891)
64694 * __builtin_nansq: x86 Built-in Functions.
64696 * __builtin_nds32_isb: NDS32 Built-in Functions.
64698 * __builtin_nds32_isync: NDS32 Built-in Functions.
64700 * __builtin_nds32_mfsr: NDS32 Built-in Functions.
64702 * __builtin_nds32_mfusr: NDS32 Built-in Functions.
64704 * __builtin_nds32_mtsr: NDS32 Built-in Functions.
64706 * __builtin_nds32_mtusr: NDS32 Built-in Functions.
64708 * __builtin_nds32_setgie_dis: NDS32 Built-in Functions.
64710 * __builtin_nds32_setgie_en: NDS32 Built-in Functions.
64712 * __builtin_non_tx_store: S/390 System z Built-in Functions.
64714 * __builtin_object_size: Object Size Checking.
64716 * __builtin_object_size <1>: Object Size Checking.
64718 * __builtin_object_size <2>: Other Builtins. (line 6)
64719 * __builtin_object_size <3>: Other Builtins. (line 772)
64720 * __builtin_offsetof: Offsetof. (line 6)
64721 * __builtin_parity: Other Builtins. (line 921)
64722 * __builtin_parityl: Other Builtins. (line 942)
64723 * __builtin_parityll: Other Builtins. (line 966)
64724 * __builtin_popcount: Other Builtins. (line 918)
64725 * __builtin_popcountl: Other Builtins. (line 938)
64726 * __builtin_popcountll: Other Builtins. (line 962)
64727 * __builtin_powi: Other Builtins. (line 6)
64728 * __builtin_powi <1>: Other Builtins. (line 970)
64729 * __builtin_powif: Other Builtins. (line 6)
64730 * __builtin_powif <1>: Other Builtins. (line 975)
64731 * __builtin_powil: Other Builtins. (line 6)
64732 * __builtin_powil <1>: Other Builtins. (line 979)
64733 * __builtin_prefetch: Other Builtins. (line 733)
64734 * __builtin_return: Constructing Calls. (line 47)
64735 * __builtin_return_address: Return Address. (line 9)
64736 * __builtin_rx_brk: RX Built-in Functions.
64738 * __builtin_rx_clrpsw: RX Built-in Functions.
64740 * __builtin_rx_int: RX Built-in Functions.
64742 * __builtin_rx_machi: RX Built-in Functions.
64744 * __builtin_rx_maclo: RX Built-in Functions.
64746 * __builtin_rx_mulhi: RX Built-in Functions.
64748 * __builtin_rx_mullo: RX Built-in Functions.
64750 * __builtin_rx_mvfachi: RX Built-in Functions.
64752 * __builtin_rx_mvfacmi: RX Built-in Functions.
64754 * __builtin_rx_mvfc: RX Built-in Functions.
64756 * __builtin_rx_mvtachi: RX Built-in Functions.
64758 * __builtin_rx_mvtaclo: RX Built-in Functions.
64760 * __builtin_rx_mvtc: RX Built-in Functions.
64762 * __builtin_rx_mvtipl: RX Built-in Functions.
64764 * __builtin_rx_racw: RX Built-in Functions.
64766 * __builtin_rx_revw: RX Built-in Functions.
64768 * __builtin_rx_rmpa: RX Built-in Functions.
64770 * __builtin_rx_round: RX Built-in Functions.
64772 * __builtin_rx_sat: RX Built-in Functions.
64774 * __builtin_rx_setpsw: RX Built-in Functions.
64776 * __builtin_rx_wait: RX Built-in Functions.
64778 * __builtin_saddll_overflow: Integer Overflow Builtins.
64780 * __builtin_saddl_overflow: Integer Overflow Builtins.
64782 * __builtin_sadd_overflow: Integer Overflow Builtins.
64784 * __builtin_setjmp: Nonlocal Gotos. (line 32)
64785 * __builtin_set_thread_pointer: SH Built-in Functions.
64787 * __builtin_shuffle: Vector Extensions. (line 127)
64788 * __builtin_sh_get_fpscr: SH Built-in Functions.
64790 * __builtin_sh_set_fpscr: SH Built-in Functions.
64792 * __builtin_smulll_overflow: Integer Overflow Builtins.
64794 * __builtin_smull_overflow: Integer Overflow Builtins.
64796 * __builtin_smul_overflow: Integer Overflow Builtins.
64798 * __builtin_speculation_safe_value: Other Builtins. (line 6)
64799 * __builtin_speculation_safe_value <1>: Other Builtins. (line 261)
64800 * __builtin_sqrtf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64802 * __builtin_ssubll_overflow: Integer Overflow Builtins.
64804 * __builtin_ssubl_overflow: Integer Overflow Builtins.
64806 * __builtin_ssub_overflow: Integer Overflow Builtins.
64808 * __builtin_subf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64810 * __builtin_sub_overflow: Integer Overflow Builtins.
64812 * __builtin_sub_overflow_p: Integer Overflow Builtins.
64814 * __builtin_tabort: S/390 System z Built-in Functions.
64816 * __builtin_tbegin: S/390 System z Built-in Functions.
64818 * __builtin_tbeginc: S/390 System z Built-in Functions.
64820 * __builtin_tbegin_nofloat: S/390 System z Built-in Functions.
64822 * __builtin_tbegin_retry: S/390 System z Built-in Functions.
64824 * __builtin_tbegin_retry_nofloat: S/390 System z Built-in Functions.
64826 * __builtin_tend: S/390 System z Built-in Functions.
64828 * __builtin_tgmath: Other Builtins. (line 436)
64829 * __builtin_thread_pointer: RISC-V Built-in Functions.
64831 * __builtin_thread_pointer <1>: SH Built-in Functions.
64833 * __builtin_trap: Other Builtins. (line 606)
64834 * __builtin_truncf128_round_to_odd: Basic PowerPC Built-in Functions Available on ISA 3.0.
64836 * __builtin_tx_assist: S/390 System z Built-in Functions.
64838 * __builtin_tx_nesting_depth: S/390 System z Built-in Functions.
64840 * __builtin_types_compatible_p: Other Builtins. (line 340)
64841 * __builtin_uaddll_overflow: Integer Overflow Builtins.
64843 * __builtin_uaddl_overflow: Integer Overflow Builtins.
64845 * __builtin_uadd_overflow: Integer Overflow Builtins.
64847 * __builtin_umulll_overflow: Integer Overflow Builtins.
64849 * __builtin_umull_overflow: Integer Overflow Builtins.
64851 * __builtin_umul_overflow: Integer Overflow Builtins.
64853 * __builtin_unreachable: Other Builtins. (line 613)
64854 * __builtin_usubll_overflow: Integer Overflow Builtins.
64856 * __builtin_usubl_overflow: Integer Overflow Builtins.
64858 * __builtin_usub_overflow: Integer Overflow Builtins.
64860 * __builtin_va_arg_pack: Constructing Calls. (line 52)
64861 * __builtin_va_arg_pack_len: Constructing Calls. (line 75)
64862 * __builtin___clear_cache: Other Builtins. (line 720)
64863 * __builtin___fprintf_chk: Object Size Checking.
64865 * __builtin___memcpy_chk: Object Size Checking.
64867 * __builtin___memmove_chk: Object Size Checking.
64869 * __builtin___mempcpy_chk: Object Size Checking.
64871 * __builtin___memset_chk: Object Size Checking.
64873 * __builtin___printf_chk: Object Size Checking.
64875 * __builtin___snprintf_chk: Object Size Checking.
64877 * __builtin___sprintf_chk: Object Size Checking.
64879 * __builtin___stpcpy_chk: Object Size Checking.
64881 * __builtin___strcat_chk: Object Size Checking.
64883 * __builtin___strcpy_chk: Object Size Checking.
64885 * __builtin___strncat_chk: Object Size Checking.
64887 * __builtin___strncpy_chk: Object Size Checking.
64889 * __builtin___vfprintf_chk: Object Size Checking.
64891 * __builtin___vprintf_chk: Object Size Checking.
64893 * __builtin___vsnprintf_chk: Object Size Checking.
64895 * __builtin___vsprintf_chk: Object Size Checking.
64897 * __complex__ keyword: Complex. (line 6)
64898 * __declspec(dllexport): Microsoft Windows Function Attributes.
64900 * __declspec(dllimport): Microsoft Windows Function Attributes.
64902 * __extension__: Alternate Keywords. (line 30)
64903 * __far M32C Named Address Spaces: Named Address Spaces.
64905 * __far RL78 Named Address Spaces: Named Address Spaces.
64907 * __flash AVR Named Address Spaces: Named Address Spaces.
64909 * __flash1 AVR Named Address Spaces: Named Address Spaces.
64911 * __flash2 AVR Named Address Spaces: Named Address Spaces.
64913 * __flash3 AVR Named Address Spaces: Named Address Spaces.
64915 * __flash4 AVR Named Address Spaces: Named Address Spaces.
64917 * __flash5 AVR Named Address Spaces: Named Address Spaces.
64919 * __float128 data type: Floating Types. (line 6)
64920 * __float80 data type: Floating Types. (line 6)
64921 * __fp16 data type: Half-Precision. (line 6)
64922 * __FUNCTION__ identifier: Function Names. (line 6)
64923 * __func__ identifier: Function Names. (line 6)
64924 * __ibm128 data type: Floating Types. (line 6)
64925 * __imag__ keyword: Complex. (line 31)
64926 * __int128 data types: __int128. (line 6)
64927 * __memx AVR Named Address Spaces: Named Address Spaces.
64929 * __PRETTY_FUNCTION__ identifier: Function Names. (line 6)
64930 * __real__ keyword: Complex. (line 31)
64931 * __seg_fs x86 named address space: Named Address Spaces.
64933 * __seg_gs x86 named address space: Named Address Spaces.
64935 * __STDC_HOSTED__: Standards. (line 13)
64936 * __sync_add_and_fetch: __sync Builtins. (line 72)
64937 * __sync_and_and_fetch: __sync Builtins. (line 72)
64938 * __sync_bool_compare_and_swap: __sync Builtins. (line 88)
64939 * __sync_fetch_and_add: __sync Builtins. (line 50)
64940 * __sync_fetch_and_and: __sync Builtins. (line 50)
64941 * __sync_fetch_and_nand: __sync Builtins. (line 50)
64942 * __sync_fetch_and_or: __sync Builtins. (line 50)
64943 * __sync_fetch_and_sub: __sync Builtins. (line 50)
64944 * __sync_fetch_and_xor: __sync Builtins. (line 50)
64945 * __sync_lock_release: __sync Builtins. (line 118)
64946 * __sync_lock_test_and_set: __sync Builtins. (line 100)
64947 * __sync_nand_and_fetch: __sync Builtins. (line 72)
64948 * __sync_or_and_fetch: __sync Builtins. (line 72)
64949 * __sync_sub_and_fetch: __sync Builtins. (line 72)
64950 * __sync_synchronize: __sync Builtins. (line 97)
64951 * __sync_val_compare_and_swap: __sync Builtins. (line 88)
64952 * __sync_xor_and_fetch: __sync Builtins. (line 72)
64953 * __thread: Thread-Local. (line 6)
64954 * AArch64 Options: AArch64 Options. (line 6)
64955 * ABI: Compatibility. (line 6)
64956 * abi_tag function attribute: C++ Attributes. (line 9)
64957 * abi_tag type attribute: C++ Attributes. (line 9)
64958 * abi_tag variable attribute: C++ Attributes. (line 9)
64959 * abort: Other Builtins. (line 6)
64960 * abs: Other Builtins. (line 6)
64961 * absdata variable attribute, AVR: AVR Variable Attributes.
64963 * accessing volatiles: Volatiles. (line 6)
64964 * accessing volatiles <1>: C++ Volatiles. (line 6)
64965 * acos: Other Builtins. (line 6)
64966 * acosf: Other Builtins. (line 6)
64967 * acosh: Other Builtins. (line 6)
64968 * acoshf: Other Builtins. (line 6)
64969 * acoshl: Other Builtins. (line 6)
64970 * acosl: Other Builtins. (line 6)
64971 * Ada: G++ and GCC. (line 6)
64972 * Ada <1>: G++ and GCC. (line 29)
64973 * additional floating types: Floating Types. (line 6)
64974 * address constraints: Simple Constraints. (line 152)
64975 * address of a label: Labels as Values. (line 6)
64976 * address variable attribute, AVR: AVR Variable Attributes.
64978 * address_operand: Simple Constraints. (line 156)
64979 * alias function attribute: Common Function Attributes.
64981 * alias variable attribute: Common Variable Attributes.
64983 * aligned function attribute: Common Function Attributes.
64985 * aligned type attribute: Common Type Attributes.
64987 * aligned variable attribute: Common Variable Attributes.
64989 * alignment: Alignment. (line 6)
64990 * alloca: Other Builtins. (line 6)
64991 * alloca vs variable-length arrays: Variable Length. (line 35)
64992 * alloc_align function attribute: Common Function Attributes.
64994 * alloc_size function attribute: Common Function Attributes.
64996 * alloc_size type attribute: Common Type Attributes.
64998 * alloc_size variable attribute: Common Variable Attributes.
65000 * Allow nesting in an interrupt handler on the Blackfin processor: Blackfin Function Attributes.
65002 * Altera Nios II options: Nios II Options. (line 6)
65003 * alternate keywords: Alternate Keywords. (line 6)
65004 * altivec type attribute, PowerPC: PowerPC Type Attributes.
65006 * altivec variable attribute, PowerPC: PowerPC Variable Attributes.
65008 * always_inline function attribute: Common Function Attributes.
65010 * AMD GCN Options: AMD GCN Options. (line 6)
65011 * AMD1: Standards. (line 13)
65012 * amdgpu_hsa_kernel function attribute, AMD GCN: AMD GCN Function Attributes.
65014 * ANSI C: Standards. (line 13)
65015 * ANSI C standard: Standards. (line 13)
65016 * ANSI C89: Standards. (line 13)
65017 * ANSI support: C Dialect Options. (line 10)
65018 * ANSI X3.159-1989: Standards. (line 13)
65019 * apostrophes: Incompatibilities. (line 116)
65020 * application binary interface: Compatibility. (line 6)
65021 * ARC options: ARC Options. (line 6)
65022 * arch= function attribute, AArch64: AArch64 Function Attributes.
65024 * arch= function attribute, ARM: ARM Function Attributes.
65026 * ARM options: ARM Options. (line 6)
65027 * ARM [Annotated C++ Reference Manual]: Backwards Compatibility.
65029 * arrays of length zero: Zero Length. (line 6)
65030 * arrays of variable length: Variable Length. (line 6)
65031 * arrays, non-lvalue: Subscripting. (line 6)
65032 * artificial function attribute: Common Function Attributes.
65034 * asin: Other Builtins. (line 6)
65035 * asinf: Other Builtins. (line 6)
65036 * asinh: Other Builtins. (line 6)
65037 * asinhf: Other Builtins. (line 6)
65038 * asinhl: Other Builtins. (line 6)
65039 * asinl: Other Builtins. (line 6)
65040 * asm assembler template: Extended Asm. (line 226)
65041 * asm clobbers: Extended Asm. (line 693)
65042 * asm constraints: Constraints. (line 6)
65043 * asm expressions: Extended Asm. (line 598)
65044 * asm flag output operands: Extended Asm. (line 488)
65045 * asm goto labels: Extended Asm. (line 880)
65046 * asm inline: Size of an asm. (line 25)
65047 * asm input operands: Extended Asm. (line 598)
65048 * asm keyword: Using Assembly Language with C.
65050 * asm output operands: Extended Asm. (line 329)
65051 * asm scratch registers: Extended Asm. (line 693)
65052 * asm volatile: Extended Asm. (line 116)
65053 * assembler names for identifiers: Asm Labels. (line 6)
65054 * assembly code, invalid: Bug Criteria. (line 12)
65055 * assembly language in C: Using Assembly Language with C.
65057 * assembly language in C, basic: Basic Asm. (line 6)
65058 * assembly language in C, extended: Extended Asm. (line 6)
65059 * assume_aligned function attribute: Common Function Attributes.
65061 * atan: Other Builtins. (line 6)
65062 * atan2: Other Builtins. (line 6)
65063 * atan2f: Other Builtins. (line 6)
65064 * atan2l: Other Builtins. (line 6)
65065 * atanf: Other Builtins. (line 6)
65066 * atanh: Other Builtins. (line 6)
65067 * atanhf: Other Builtins. (line 6)
65068 * atanhl: Other Builtins. (line 6)
65069 * atanl: Other Builtins. (line 6)
65070 * attribute of types: Type Attributes. (line 6)
65071 * attribute of variables: Variable Attributes.
65073 * attribute syntax: Attribute Syntax. (line 6)
65074 * autoincrement/decrement addressing: Simple Constraints. (line 30)
65075 * automatic inline for C++ member fns: Inline. (line 68)
65076 * aux variable attribute, ARC: ARC Variable Attributes.
65078 * AVR Options: AVR Options. (line 6)
65079 * Backwards Compatibility: Backwards Compatibility.
65081 * bank_switch function attribute, M32C: M32C Function Attributes.
65083 * base class members: Name lookup. (line 6)
65084 * based type attribute, MeP: MeP Type Attributes.
65086 * based variable attribute, MeP: MeP Variable Attributes.
65088 * basic asm: Basic Asm. (line 6)
65089 * bcmp: Other Builtins. (line 6)
65090 * below100 variable attribute, Xstormy16: Xstormy16 Variable Attributes.
65092 * binary compatibility: Compatibility. (line 6)
65093 * Binary constants using the 0b prefix: Binary constants. (line 6)
65094 * Blackfin Options: Blackfin Options. (line 6)
65095 * bound pointer to member function: Bound member functions.
65097 * branch-protection function attribute, AArch64: AArch64 Function Attributes.
65099 * break handler functions: MicroBlaze Function Attributes.
65101 * break_handler function attribute, MicroBlaze: MicroBlaze Function Attributes.
65103 * brk_interrupt function attribute, RL78: RL78 Function Attributes.
65105 * bug criteria: Bug Criteria. (line 6)
65106 * bugs: Bugs. (line 6)
65107 * bugs, known: Trouble. (line 6)
65108 * built-in functions: C Dialect Options. (line 266)
65109 * built-in functions <1>: Other Builtins. (line 6)
65110 * bzero: Other Builtins. (line 6)
65111 * C compilation options: Invoking GCC. (line 18)
65112 * C intermediate output, nonexistent: G++ and GCC. (line 34)
65113 * C language extensions: C Extensions. (line 6)
65114 * C language, traditional: Preprocessor Options.
65116 * C standard: Standards. (line 13)
65117 * C standards: Standards. (line 13)
65118 * c++: Invoking G++. (line 14)
65119 * C++: G++ and GCC. (line 29)
65120 * C++ comments: C++ Comments. (line 6)
65121 * C++ interface and implementation headers: C++ Interface. (line 6)
65122 * C++ language extensions: C++ Extensions. (line 6)
65123 * C++ member fns, automatically inline: Inline. (line 68)
65124 * C++ misunderstandings: C++ Misunderstandings.
65126 * C++ options, command-line: C++ Dialect Options.
65128 * C++ pragmas, effect on inlining: C++ Interface. (line 57)
65129 * C++ source file suffixes: Invoking G++. (line 6)
65130 * C++ static data, declaring and defining: Static Definitions.
65132 * C-SKY Options: C-SKY Options. (line 6)
65133 * C11: Standards. (line 13)
65134 * C17: Standards. (line 13)
65135 * C1X: Standards. (line 13)
65136 * C2X: Standards. (line 13)
65137 * C6X Options: C6X Options. (line 6)
65138 * C89: Standards. (line 13)
65139 * C90: Standards. (line 13)
65140 * C94: Standards. (line 13)
65141 * C95: Standards. (line 13)
65142 * C99: Standards. (line 13)
65143 * C9X: Standards. (line 13)
65144 * cabs: Other Builtins. (line 6)
65145 * cabsf: Other Builtins. (line 6)
65146 * cabsl: Other Builtins. (line 6)
65147 * cacos: Other Builtins. (line 6)
65148 * cacosf: Other Builtins. (line 6)
65149 * cacosh: Other Builtins. (line 6)
65150 * cacoshf: Other Builtins. (line 6)
65151 * cacoshl: Other Builtins. (line 6)
65152 * cacosl: Other Builtins. (line 6)
65153 * callee_pop_aggregate_return function attribute, x86: x86 Function Attributes.
65155 * calling functions through the function vector on SH2A: SH Function Attributes.
65157 * calloc: Other Builtins. (line 6)
65158 * carg: Other Builtins. (line 6)
65159 * cargf: Other Builtins. (line 6)
65160 * cargl: Other Builtins. (line 6)
65161 * case labels in initializers: Designated Inits. (line 6)
65162 * case ranges: Case Ranges. (line 6)
65163 * casin: Other Builtins. (line 6)
65164 * casinf: Other Builtins. (line 6)
65165 * casinh: Other Builtins. (line 6)
65166 * casinhf: Other Builtins. (line 6)
65167 * casinhl: Other Builtins. (line 6)
65168 * casinl: Other Builtins. (line 6)
65169 * cast to a union: Cast to Union. (line 6)
65170 * catan: Other Builtins. (line 6)
65171 * catanf: Other Builtins. (line 6)
65172 * catanh: Other Builtins. (line 6)
65173 * catanhf: Other Builtins. (line 6)
65174 * catanhl: Other Builtins. (line 6)
65175 * catanl: Other Builtins. (line 6)
65176 * cb variable attribute, MeP: MeP Variable Attributes.
65178 * cbrt: Other Builtins. (line 6)
65179 * cbrtf: Other Builtins. (line 6)
65180 * cbrtl: Other Builtins. (line 6)
65181 * ccos: Other Builtins. (line 6)
65182 * ccosf: Other Builtins. (line 6)
65183 * ccosh: Other Builtins. (line 6)
65184 * ccoshf: Other Builtins. (line 6)
65185 * ccoshl: Other Builtins. (line 6)
65186 * ccosl: Other Builtins. (line 6)
65187 * cdecl function attribute, x86-32: x86 Function Attributes.
65189 * ceil: Other Builtins. (line 6)
65190 * ceilf: Other Builtins. (line 6)
65191 * ceill: Other Builtins. (line 6)
65192 * cexp: Other Builtins. (line 6)
65193 * cexpf: Other Builtins. (line 6)
65194 * cexpl: Other Builtins. (line 6)
65195 * cf_check function attribute, x86: x86 Function Attributes.
65197 * character set, execution: Preprocessor Options.
65199 * character set, input: Preprocessor Options.
65201 * character set, input normalization: Warning Options. (line 2654)
65202 * character set, wide execution: Preprocessor Options.
65204 * cimag: Other Builtins. (line 6)
65205 * cimagf: Other Builtins. (line 6)
65206 * cimagl: Other Builtins. (line 6)
65207 * cleanup variable attribute: Common Variable Attributes.
65209 * clog: Other Builtins. (line 6)
65210 * clog10: Other Builtins. (line 6)
65211 * clog10f: Other Builtins. (line 6)
65212 * clog10l: Other Builtins. (line 6)
65213 * clogf: Other Builtins. (line 6)
65214 * clogl: Other Builtins. (line 6)
65215 * cmodel= function attribute, AArch64: AArch64 Function Attributes.
65217 * COBOL: G++ and GCC. (line 23)
65218 * code generation conventions: Code Gen Options. (line 6)
65219 * code, mixed with declarations: Mixed Declarations. (line 6)
65220 * cold function attribute: Common Function Attributes.
65222 * cold label attribute: Label Attributes. (line 45)
65223 * command options: Invoking GCC. (line 6)
65224 * comments, C++ style: C++ Comments. (line 6)
65225 * common variable attribute: Common Variable Attributes.
65227 * comparison of signed and unsigned values, warning: Warning Options.
65229 * compilation statistics: Developer Options. (line 6)
65230 * compiler bugs, reporting: Bug Reporting. (line 6)
65231 * compiler compared to C++ preprocessor: G++ and GCC. (line 34)
65232 * compiler options, C++: C++ Dialect Options.
65234 * compiler options, Objective-C and Objective-C++: Objective-C and Objective-C++ Dialect Options.
65236 * compiler version, specifying: Invoking GCC. (line 24)
65237 * COMPILER_PATH: Environment Variables.
65239 * complex conjugation: Complex. (line 38)
65240 * complex numbers: Complex. (line 6)
65241 * compound literals: Compound Literals. (line 6)
65242 * computed gotos: Labels as Values. (line 6)
65243 * conditional expressions, extensions: Conditionals. (line 6)
65244 * conflicting types: Disappointments. (line 21)
65245 * conj: Other Builtins. (line 6)
65246 * conjf: Other Builtins. (line 6)
65247 * conjl: Other Builtins. (line 6)
65248 * const applied to function: Function Attributes.
65250 * const function attribute: Common Function Attributes.
65252 * const qualifier: Pointers to Arrays. (line 6)
65253 * constants in constraints: Simple Constraints. (line 68)
65254 * constraint modifier characters: Modifiers. (line 6)
65255 * constraint, matching: Simple Constraints. (line 137)
65256 * constraints, asm: Constraints. (line 6)
65257 * constraints, machine specific: Machine Constraints.
65259 * constructing calls: Constructing Calls. (line 6)
65260 * constructor expressions: Compound Literals. (line 6)
65261 * constructor function attribute: Common Function Attributes.
65263 * contributors: Contributors. (line 6)
65264 * copy function attribute: Common Function Attributes.
65266 * copy type attribute: Common Type Attributes.
65268 * copy variable attribute: Common Variable Attributes.
65270 * copysign: Other Builtins. (line 6)
65271 * copysignf: Other Builtins. (line 6)
65272 * copysignl: Other Builtins. (line 6)
65273 * core dump: Bug Criteria. (line 9)
65274 * cos: Other Builtins. (line 6)
65275 * cosf: Other Builtins. (line 6)
65276 * cosh: Other Builtins. (line 6)
65277 * coshf: Other Builtins. (line 6)
65278 * coshl: Other Builtins. (line 6)
65279 * cosl: Other Builtins. (line 6)
65280 * CPATH: Environment Variables.
65282 * CPLUS_INCLUDE_PATH: Environment Variables.
65284 * cpow: Other Builtins. (line 6)
65285 * cpowf: Other Builtins. (line 6)
65286 * cpowl: Other Builtins. (line 6)
65287 * cproj: Other Builtins. (line 6)
65288 * cprojf: Other Builtins. (line 6)
65289 * cprojl: Other Builtins. (line 6)
65290 * cpu= function attribute, AArch64: AArch64 Function Attributes.
65292 * CR16 Options: CR16 Options. (line 6)
65293 * creal: Other Builtins. (line 6)
65294 * crealf: Other Builtins. (line 6)
65295 * creall: Other Builtins. (line 6)
65296 * CRIS Options: CRIS Options. (line 6)
65297 * critical function attribute, MSP430: MSP430 Function Attributes.
65299 * cross compiling: Invoking GCC. (line 24)
65300 * csin: Other Builtins. (line 6)
65301 * csinf: Other Builtins. (line 6)
65302 * csinh: Other Builtins. (line 6)
65303 * csinhf: Other Builtins. (line 6)
65304 * csinhl: Other Builtins. (line 6)
65305 * csinl: Other Builtins. (line 6)
65306 * csqrt: Other Builtins. (line 6)
65307 * csqrtf: Other Builtins. (line 6)
65308 * csqrtl: Other Builtins. (line 6)
65309 * ctan: Other Builtins. (line 6)
65310 * ctanf: Other Builtins. (line 6)
65311 * ctanh: Other Builtins. (line 6)
65312 * ctanhf: Other Builtins. (line 6)
65313 * ctanhl: Other Builtins. (line 6)
65314 * ctanl: Other Builtins. (line 6)
65315 * C_INCLUDE_PATH: Environment Variables.
65317 * D: G++ and GCC. (line 6)
65318 * Darwin options: Darwin Options. (line 6)
65319 * dcgettext: Other Builtins. (line 6)
65320 * dd integer suffix: Decimal Float. (line 6)
65321 * DD integer suffix: Decimal Float. (line 6)
65322 * deallocating variable length arrays: Variable Length. (line 22)
65323 * debug dump options: Developer Options. (line 6)
65324 * debugging GCC: Developer Options. (line 6)
65325 * debugging information options: Debugging Options. (line 6)
65326 * decimal floating types: Decimal Float. (line 6)
65327 * declaration scope: Incompatibilities. (line 80)
65328 * declarations inside expressions: Statement Exprs. (line 6)
65329 * declarations, mixed with code: Mixed Declarations. (line 6)
65330 * declaring attributes of functions: Function Attributes.
65332 * declaring static data in C++: Static Definitions. (line 6)
65333 * defining static data in C++: Static Definitions. (line 6)
65334 * dependencies for make as output: Environment Variables.
65336 * dependencies for make as output <1>: Environment Variables.
65338 * dependencies, make: Preprocessor Options.
65340 * DEPENDENCIES_OUTPUT: Environment Variables.
65342 * dependent name lookup: Name lookup. (line 6)
65343 * deprecated enumerator attribute: Enumerator Attributes.
65345 * deprecated function attribute: Common Function Attributes.
65347 * deprecated type attribute: Common Type Attributes.
65349 * deprecated variable attribute: Common Variable Attributes.
65351 * designated initializers: Designated Inits. (line 6)
65352 * designated_init type attribute: Common Type Attributes.
65354 * designator lists: Designated Inits. (line 96)
65355 * designators: Designated Inits. (line 64)
65356 * destructor function attribute: Common Function Attributes.
65358 * developer options: Developer Options. (line 6)
65359 * df integer suffix: Decimal Float. (line 6)
65360 * DF integer suffix: Decimal Float. (line 6)
65361 * dgettext: Other Builtins. (line 6)
65362 * diagnostic messages: Diagnostic Message Formatting Options.
65364 * dialect options: C Dialect Options. (line 6)
65365 * diff-delete GCC_COLORS capability: Diagnostic Message Formatting Options.
65367 * diff-filename GCC_COLORS capability: Diagnostic Message Formatting Options.
65369 * diff-hunk GCC_COLORS capability: Diagnostic Message Formatting Options.
65371 * diff-insert GCC_COLORS capability: Diagnostic Message Formatting Options.
65373 * digits in constraint: Simple Constraints. (line 125)
65374 * directory options: Directory Options. (line 6)
65375 * disinterrupt function attribute, Epiphany: Epiphany Function Attributes.
65377 * disinterrupt function attribute, MeP: MeP Function Attributes.
65379 * dl integer suffix: Decimal Float. (line 6)
65380 * DL integer suffix: Decimal Float. (line 6)
65381 * dllexport function attribute: Microsoft Windows Function Attributes.
65383 * dllexport variable attribute: Microsoft Windows Variable Attributes.
65385 * dllimport function attribute: Microsoft Windows Function Attributes.
65387 * dllimport variable attribute: Microsoft Windows Variable Attributes.
65389 * dollar signs in identifier names: Dollar Signs. (line 6)
65390 * double-word arithmetic: Long Long. (line 6)
65391 * downward funargs: Nested Functions. (line 6)
65392 * drem: Other Builtins. (line 6)
65393 * dremf: Other Builtins. (line 6)
65394 * dreml: Other Builtins. (line 6)
65395 * dump options: Developer Options. (line 6)
65396 * E in constraint: Simple Constraints. (line 87)
65397 * earlyclobber operand: Modifiers. (line 25)
65398 * eBPF Options: eBPF Options. (line 6)
65399 * eight-bit data on the H8/300, H8/300H, and H8S: H8/300 Variable Attributes.
65401 * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
65403 * EIND: AVR Options. (line 319)
65404 * either function attribute, MSP430: MSP430 Function Attributes.
65406 * either variable attribute, MSP430: MSP430 Variable Attributes.
65408 * empty structures: Empty Structures. (line 6)
65409 * Enumerator Attributes: Enumerator Attributes.
65411 * environment variables: Environment Variables.
65413 * erf: Other Builtins. (line 6)
65414 * erfc: Other Builtins. (line 6)
65415 * erfcf: Other Builtins. (line 6)
65416 * erfcl: Other Builtins. (line 6)
65417 * erff: Other Builtins. (line 6)
65418 * erfl: Other Builtins. (line 6)
65419 * error function attribute: Common Function Attributes.
65421 * error GCC_COLORS capability: Diagnostic Message Formatting Options.
65423 * error messages: Warnings and Errors.
65425 * escaped newlines: Escaped Newlines. (line 6)
65426 * exception function attribute: NDS32 Function Attributes.
65428 * exception handler functions, Blackfin: Blackfin Function Attributes.
65430 * exception handler functions, NDS32: NDS32 Function Attributes.
65432 * exception_handler function attribute: Blackfin Function Attributes.
65434 * exit: Other Builtins. (line 6)
65435 * exp: Other Builtins. (line 6)
65436 * exp10: Other Builtins. (line 6)
65437 * exp10f: Other Builtins. (line 6)
65438 * exp10l: Other Builtins. (line 6)
65439 * exp2: Other Builtins. (line 6)
65440 * exp2f: Other Builtins. (line 6)
65441 * exp2l: Other Builtins. (line 6)
65442 * expf: Other Builtins. (line 6)
65443 * expl: Other Builtins. (line 6)
65444 * explicit register variables: Explicit Register Variables.
65446 * expm1: Other Builtins. (line 6)
65447 * expm1f: Other Builtins. (line 6)
65448 * expm1l: Other Builtins. (line 6)
65449 * expressions containing statements: Statement Exprs. (line 6)
65450 * expressions, constructor: Compound Literals. (line 6)
65451 * extended asm: Extended Asm. (line 6)
65452 * extensible constraints: Simple Constraints. (line 161)
65453 * extensions, ?:: Conditionals. (line 6)
65454 * extensions, C language: C Extensions. (line 6)
65455 * extensions, C++ language: C++ Extensions. (line 6)
65456 * external declaration scope: Incompatibilities. (line 80)
65457 * externally_visible function attribute: Common Function Attributes.
65459 * extra NOP instructions at the function entry point: Common Function Attributes.
65461 * F in constraint: Simple Constraints. (line 92)
65462 * fabs: Other Builtins. (line 6)
65463 * fabsf: Other Builtins. (line 6)
65464 * fabsl: Other Builtins. (line 6)
65465 * fallthrough statement attribute: Statement Attributes.
65467 * far function attribute, MeP: MeP Function Attributes.
65469 * far function attribute, MIPS: MIPS Function Attributes.
65471 * far type attribute, MeP: MeP Type Attributes.
65473 * far variable attribute, MeP: MeP Variable Attributes.
65475 * fastcall function attribute, x86-32: x86 Function Attributes.
65477 * fast_interrupt function attribute, M32C: M32C Function Attributes.
65479 * fast_interrupt function attribute, MicroBlaze: MicroBlaze Function Attributes.
65481 * fast_interrupt function attribute, RX: RX Function Attributes.
65483 * fatal signal: Bug Criteria. (line 9)
65484 * fdim: Other Builtins. (line 6)
65485 * fdimf: Other Builtins. (line 6)
65486 * fdiml: Other Builtins. (line 6)
65487 * FDL, GNU Free Documentation License: GNU Free Documentation License.
65489 * fentry_name function attribute, x86: x86 Function Attributes.
65491 * fentry_section function attribute, x86: x86 Function Attributes.
65493 * ffs: Other Builtins. (line 6)
65494 * file name suffix: Overall Options. (line 14)
65495 * file names: Link Options. (line 10)
65496 * fix-cortex-a53-835769 function attribute, AArch64: AArch64 Function Attributes.
65498 * fixed-point types: Fixed-Point. (line 6)
65499 * fixit-delete GCC_COLORS capability: Diagnostic Message Formatting Options.
65501 * fixit-insert GCC_COLORS capability: Diagnostic Message Formatting Options.
65503 * flatten function attribute: Common Function Attributes.
65505 * flexible array members: Zero Length. (line 6)
65506 * float as function value type: Incompatibilities. (line 141)
65507 * floating point precision: Disappointments. (line 68)
65508 * floating-point precision: Optimize Options. (line 2199)
65509 * floor: Other Builtins. (line 6)
65510 * floorf: Other Builtins. (line 6)
65511 * floorl: Other Builtins. (line 6)
65512 * fma: Other Builtins. (line 6)
65513 * fmaf: Other Builtins. (line 6)
65514 * fmal: Other Builtins. (line 6)
65515 * fmax: Other Builtins. (line 6)
65516 * fmaxf: Other Builtins. (line 6)
65517 * fmaxl: Other Builtins. (line 6)
65518 * fmin: Other Builtins. (line 6)
65519 * fminf: Other Builtins. (line 6)
65520 * fminl: Other Builtins. (line 6)
65521 * fmod: Other Builtins. (line 6)
65522 * fmodf: Other Builtins. (line 6)
65523 * fmodl: Other Builtins. (line 6)
65524 * force_align_arg_pointer function attribute, x86: x86 Function Attributes.
65526 * format function attribute: Common Function Attributes.
65528 * format_arg function attribute: Common Function Attributes.
65530 * Fortran: G++ and GCC. (line 6)
65531 * forwarder_section function attribute, Epiphany: Epiphany Function Attributes.
65533 * forwarding calls: Constructing Calls. (line 6)
65534 * fprintf: Other Builtins. (line 6)
65535 * fprintf_unlocked: Other Builtins. (line 6)
65536 * fputs: Other Builtins. (line 6)
65537 * fputs_unlocked: Other Builtins. (line 6)
65538 * FR30 Options: FR30 Options. (line 6)
65539 * free: Other Builtins. (line 6)
65540 * freestanding environment: Standards. (line 13)
65541 * freestanding implementation: Standards. (line 13)
65542 * frexp: Other Builtins. (line 6)
65543 * frexpf: Other Builtins. (line 6)
65544 * frexpl: Other Builtins. (line 6)
65545 * FRV Options: FRV Options. (line 6)
65546 * fscanf: Other Builtins. (line 6)
65547 * fscanf, and constant strings: Incompatibilities. (line 17)
65548 * FT32 Options: FT32 Options. (line 6)
65549 * function addressability on the M32R/D: M32R/D Function Attributes.
65551 * function attributes: Function Attributes.
65553 * function pointers, arithmetic: Pointer Arith. (line 6)
65554 * function prototype declarations: Function Prototypes.
65556 * function versions: Function Multiversioning.
65558 * function, size of pointer to: Pointer Arith. (line 6)
65559 * functions in arbitrary sections: Common Function Attributes.
65561 * functions that are dynamically resolved: Common Function Attributes.
65563 * functions that are passed arguments in registers on x86-32: x86 Function Attributes.
65565 * functions that behave like malloc: Common Function Attributes.
65567 * functions that have no side effects: Common Function Attributes.
65569 * functions that have no side effects <1>: Common Function Attributes.
65571 * functions that never return: Common Function Attributes.
65573 * functions that pop the argument stack on x86-32: x86 Function Attributes.
65575 * functions that pop the argument stack on x86-32 <1>: x86 Function Attributes.
65577 * functions that pop the argument stack on x86-32 <2>: x86 Function Attributes.
65579 * functions that pop the argument stack on x86-32 <3>: x86 Function Attributes.
65581 * functions that return more than once: Common Function Attributes.
65583 * functions with non-null pointer arguments: Common Function Attributes.
65585 * functions with printf, scanf, strftime or strfmon style arguments: Common Function Attributes.
65587 * function_return function attribute, x86: x86 Function Attributes.
65589 * function_vector function attribute, H8/300: H8/300 Function Attributes.
65591 * function_vector function attribute, M16C/M32C: M32C Function Attributes.
65593 * function_vector function attribute, SH: SH Function Attributes.
65595 * G in constraint: Simple Constraints. (line 96)
65596 * g in constraint: Simple Constraints. (line 118)
65597 * g++: Invoking G++. (line 14)
65598 * G++: G++ and GCC. (line 29)
65599 * gamma: Other Builtins. (line 6)
65600 * gammaf: Other Builtins. (line 6)
65601 * gammaf_r: Other Builtins. (line 6)
65602 * gammal: Other Builtins. (line 6)
65603 * gammal_r: Other Builtins. (line 6)
65604 * gamma_r: Other Builtins. (line 6)
65605 * GCC: G++ and GCC. (line 6)
65606 * GCC command options: Invoking GCC. (line 6)
65607 * GCC_COLORS environment variable: Diagnostic Message Formatting Options.
65609 * GCC_COMPARE_DEBUG: Environment Variables.
65611 * GCC_EXEC_PREFIX: Environment Variables.
65613 * gcc_struct type attribute, PowerPC: PowerPC Type Attributes.
65615 * gcc_struct type attribute, x86: x86 Type Attributes.
65617 * gcc_struct variable attribute, PowerPC: PowerPC Variable Attributes.
65619 * gcc_struct variable attribute, x86: x86 Variable Attributes.
65621 * GCC_URLS environment variable: Diagnostic Message Formatting Options.
65623 * gcov: Instrumentation Options.
65625 * general-regs-only function attribute, AArch64: AArch64 Function Attributes.
65627 * general-regs-only function attribute, ARM: ARM Function Attributes.
65629 * gettext: Other Builtins. (line 6)
65630 * global offset table: Code Gen Options. (line 353)
65631 * global register after longjmp: Global Register Variables.
65633 * global register variables: Global Register Variables.
65635 * GNAT: G++ and GCC. (line 29)
65636 * GNU C Compiler: G++ and GCC. (line 6)
65637 * GNU Compiler Collection: G++ and GCC. (line 6)
65638 * gnu_inline function attribute: Common Function Attributes.
65640 * Go: G++ and GCC. (line 6)
65641 * goto with computed label: Labels as Values. (line 6)
65642 * gprof: Instrumentation Options.
65644 * grouping options: Invoking GCC. (line 31)
65645 * H in constraint: Simple Constraints. (line 96)
65646 * half-precision floating point: Half-Precision. (line 6)
65647 * hardware models and configurations, specifying: Submodel Options.
65649 * hex floats: Hex Floats. (line 6)
65650 * highlight, color: Diagnostic Message Formatting Options.
65652 * hk fixed-suffix: Fixed-Point. (line 6)
65653 * HK fixed-suffix: Fixed-Point. (line 6)
65654 * hosted environment: Standards. (line 13)
65655 * hosted environment <1>: C Dialect Options. (line 306)
65656 * hosted environment <2>: C Dialect Options. (line 314)
65657 * hosted implementation: Standards. (line 13)
65658 * hot function attribute: Common Function Attributes.
65660 * hot label attribute: Label Attributes. (line 38)
65661 * hotpatch function attribute, S/390: S/390 Function Attributes.
65663 * HPPA Options: HPPA Options. (line 6)
65664 * hr fixed-suffix: Fixed-Point. (line 6)
65665 * HR fixed-suffix: Fixed-Point. (line 6)
65666 * hypot: Other Builtins. (line 6)
65667 * hypotf: Other Builtins. (line 6)
65668 * hypotl: Other Builtins. (line 6)
65669 * i in constraint: Simple Constraints. (line 68)
65670 * I in constraint: Simple Constraints. (line 79)
65671 * IA-64 Options: IA-64 Options. (line 6)
65672 * IBM RS/6000 and PowerPC Options: RS/6000 and PowerPC Options.
65674 * identifier names, dollar signs in: Dollar Signs. (line 6)
65675 * identifiers, names in assembler code: Asm Labels. (line 6)
65676 * ifunc function attribute: Common Function Attributes.
65678 * ilogb: Other Builtins. (line 6)
65679 * ilogbf: Other Builtins. (line 6)
65680 * ilogbl: Other Builtins. (line 6)
65681 * imaxabs: Other Builtins. (line 6)
65682 * implementation-defined behavior, C language: C Implementation.
65684 * implementation-defined behavior, C++ language: C++ Implementation.
65686 * implied #pragma implementation: C++ Interface. (line 43)
65687 * incompatibilities of GCC: Incompatibilities. (line 6)
65688 * increment operators: Bug Criteria. (line 17)
65689 * index: Other Builtins. (line 6)
65690 * indirect calls, ARC: ARC Function Attributes.
65692 * indirect calls, ARM: ARM Function Attributes.
65694 * indirect calls, Blackfin: Blackfin Function Attributes.
65696 * indirect calls, Epiphany: Epiphany Function Attributes.
65698 * indirect calls, MIPS: MIPS Function Attributes.
65700 * indirect calls, PowerPC: PowerPC Function Attributes.
65702 * indirect functions: Common Function Attributes.
65704 * indirect_branch function attribute, x86: x86 Function Attributes.
65706 * indirect_return function attribute, x86: x86 Function Attributes.
65708 * initializations in expressions: Compound Literals. (line 6)
65709 * initializers with labeled elements: Designated Inits. (line 6)
65710 * initializers, non-constant: Initializers. (line 6)
65711 * init_priority variable attribute: C++ Attributes. (line 50)
65712 * inline assembly language: Using Assembly Language with C.
65714 * inline automatic for C++ member fns: Inline. (line 68)
65715 * inline functions: Inline. (line 6)
65716 * inline functions, omission of: Inline. (line 51)
65717 * inlining and C++ pragmas: C++ Interface. (line 57)
65718 * installation trouble: Trouble. (line 6)
65719 * instrumentation options: Instrumentation Options.
65721 * integrating function code: Inline. (line 6)
65722 * interface and implementation headers, C++: C++ Interface. (line 6)
65723 * intermediate C version, nonexistent: G++ and GCC. (line 34)
65724 * interrupt function attribute, ARC: ARC Function Attributes.
65726 * interrupt function attribute, ARM: ARM Function Attributes.
65728 * interrupt function attribute, AVR: AVR Function Attributes.
65730 * interrupt function attribute, C-SKY: C-SKY Function Attributes.
65732 * interrupt function attribute, CR16: CR16 Function Attributes.
65734 * interrupt function attribute, Epiphany: Epiphany Function Attributes.
65736 * interrupt function attribute, M32C: M32C Function Attributes.
65738 * interrupt function attribute, M32R/D: M32R/D Function Attributes.
65740 * interrupt function attribute, m68k: m68k Function Attributes.
65742 * interrupt function attribute, MeP: MeP Function Attributes.
65744 * interrupt function attribute, MIPS: MIPS Function Attributes.
65746 * interrupt function attribute, MSP430: MSP430 Function Attributes.
65748 * interrupt function attribute, NDS32: NDS32 Function Attributes.
65750 * interrupt function attribute, RISC-V: RISC-V Function Attributes.
65752 * interrupt function attribute, RL78: RL78 Function Attributes.
65754 * interrupt function attribute, RX: RX Function Attributes.
65756 * interrupt function attribute, V850: V850 Function Attributes.
65758 * interrupt function attribute, Visium: Visium Function Attributes.
65760 * interrupt function attribute, x86: x86 Function Attributes.
65762 * interrupt function attribute, Xstormy16: Xstormy16 Function Attributes.
65764 * interrupt_handler function attribute, Blackfin: Blackfin Function Attributes.
65766 * interrupt_handler function attribute, H8/300: H8/300 Function Attributes.
65768 * interrupt_handler function attribute, m68k: m68k Function Attributes.
65770 * interrupt_handler function attribute, MicroBlaze: MicroBlaze Function Attributes.
65772 * interrupt_handler function attribute, SH: SH Function Attributes.
65774 * interrupt_handler function attribute, V850: V850 Function Attributes.
65776 * interrupt_thread function attribute, fido: m68k Function Attributes.
65778 * introduction: Top. (line 6)
65779 * invalid assembly code: Bug Criteria. (line 12)
65780 * invalid input: Bug Criteria. (line 42)
65781 * invoking g++: Invoking G++. (line 22)
65782 * io variable attribute, AVR: AVR Variable Attributes.
65784 * io variable attribute, MeP: MeP Variable Attributes.
65786 * io_low variable attribute, AVR: AVR Variable Attributes.
65788 * isalnum: Other Builtins. (line 6)
65789 * isalpha: Other Builtins. (line 6)
65790 * isascii: Other Builtins. (line 6)
65791 * isblank: Other Builtins. (line 6)
65792 * iscntrl: Other Builtins. (line 6)
65793 * isdigit: Other Builtins. (line 6)
65794 * isgraph: Other Builtins. (line 6)
65795 * islower: Other Builtins. (line 6)
65796 * ISO 9899: Standards. (line 13)
65797 * ISO C: Standards. (line 13)
65798 * ISO C standard: Standards. (line 13)
65799 * ISO C11: Standards. (line 13)
65800 * ISO C17: Standards. (line 13)
65801 * ISO C1X: Standards. (line 13)
65802 * ISO C2X: Standards. (line 13)
65803 * ISO C90: Standards. (line 13)
65804 * ISO C94: Standards. (line 13)
65805 * ISO C95: Standards. (line 13)
65806 * ISO C99: Standards. (line 13)
65807 * ISO C9X: Standards. (line 13)
65808 * ISO support: C Dialect Options. (line 10)
65809 * ISO/IEC 9899: Standards. (line 13)
65810 * isprint: Other Builtins. (line 6)
65811 * ispunct: Other Builtins. (line 6)
65812 * isr function attribute, ARM: ARM Function Attributes.
65814 * isr function attribute, C-SKY: C-SKY Function Attributes.
65816 * isspace: Other Builtins. (line 6)
65817 * isupper: Other Builtins. (line 6)
65818 * iswalnum: Other Builtins. (line 6)
65819 * iswalpha: Other Builtins. (line 6)
65820 * iswblank: Other Builtins. (line 6)
65821 * iswcntrl: Other Builtins. (line 6)
65822 * iswdigit: Other Builtins. (line 6)
65823 * iswgraph: Other Builtins. (line 6)
65824 * iswlower: Other Builtins. (line 6)
65825 * iswprint: Other Builtins. (line 6)
65826 * iswpunct: Other Builtins. (line 6)
65827 * iswspace: Other Builtins. (line 6)
65828 * iswupper: Other Builtins. (line 6)
65829 * iswxdigit: Other Builtins. (line 6)
65830 * isxdigit: Other Builtins. (line 6)
65831 * j0: Other Builtins. (line 6)
65832 * j0f: Other Builtins. (line 6)
65833 * j0l: Other Builtins. (line 6)
65834 * j1: Other Builtins. (line 6)
65835 * j1f: Other Builtins. (line 6)
65836 * j1l: Other Builtins. (line 6)
65837 * jli_always function attribute, ARC: ARC Function Attributes.
65839 * jli_fixed function attribute, ARC: ARC Function Attributes.
65841 * jn: Other Builtins. (line 6)
65842 * jnf: Other Builtins. (line 6)
65843 * jnl: Other Builtins. (line 6)
65844 * k fixed-suffix: Fixed-Point. (line 6)
65845 * K fixed-suffix: Fixed-Point. (line 6)
65846 * keep_interrupts_masked function attribute, MIPS: MIPS Function Attributes.
65848 * kernel attribute, Nvidia PTX: Nvidia PTX Function Attributes.
65850 * kernel helper, function attribute, BPF: BPF Function Attributes.
65852 * keywords, alternate: Alternate Keywords. (line 6)
65853 * known causes of trouble: Trouble. (line 6)
65854 * kspisusp function attribute, Blackfin: Blackfin Function Attributes.
65856 * l1_data variable attribute, Blackfin: Blackfin Variable Attributes.
65858 * l1_data_A variable attribute, Blackfin: Blackfin Variable Attributes.
65860 * l1_data_B variable attribute, Blackfin: Blackfin Variable Attributes.
65862 * l1_text function attribute, Blackfin: Blackfin Function Attributes.
65864 * l2 function attribute, Blackfin: Blackfin Function Attributes.
65866 * l2 variable attribute, Blackfin: Blackfin Variable Attributes.
65868 * Label Attributes: Label Attributes. (line 6)
65869 * labeled elements in initializers: Designated Inits. (line 6)
65870 * labels as values: Labels as Values. (line 6)
65871 * labs: Other Builtins. (line 6)
65872 * LANG: Environment Variables.
65874 * LANG <1>: Environment Variables.
65876 * language dialect options: C Dialect Options. (line 6)
65877 * LC_ALL: Environment Variables.
65879 * LC_CTYPE: Environment Variables.
65881 * LC_MESSAGES: Environment Variables.
65883 * ldexp: Other Builtins. (line 6)
65884 * ldexpf: Other Builtins. (line 6)
65885 * ldexpl: Other Builtins. (line 6)
65886 * leaf function attribute: Common Function Attributes.
65888 * length-zero arrays: Zero Length. (line 6)
65889 * lgamma: Other Builtins. (line 6)
65890 * lgammaf: Other Builtins. (line 6)
65891 * lgammaf_r: Other Builtins. (line 6)
65892 * lgammal: Other Builtins. (line 6)
65893 * lgammal_r: Other Builtins. (line 6)
65894 * lgamma_r: Other Builtins. (line 6)
65895 * Libraries: Link Options. (line 82)
65896 * LIBRARY_PATH: Environment Variables.
65898 * link options: Link Options. (line 6)
65899 * linker script: Link Options. (line 311)
65900 * lk fixed-suffix: Fixed-Point. (line 6)
65901 * LK fixed-suffix: Fixed-Point. (line 6)
65902 * LL integer suffix: Long Long. (line 6)
65903 * llabs: Other Builtins. (line 6)
65904 * llk fixed-suffix: Fixed-Point. (line 6)
65905 * LLK fixed-suffix: Fixed-Point. (line 6)
65906 * llr fixed-suffix: Fixed-Point. (line 6)
65907 * LLR fixed-suffix: Fixed-Point. (line 6)
65908 * llrint: Other Builtins. (line 6)
65909 * llrintf: Other Builtins. (line 6)
65910 * llrintl: Other Builtins. (line 6)
65911 * llround: Other Builtins. (line 6)
65912 * llroundf: Other Builtins. (line 6)
65913 * llroundl: Other Builtins. (line 6)
65914 * LM32 options: LM32 Options. (line 6)
65915 * load address instruction: Simple Constraints. (line 152)
65916 * local labels: Local Labels. (line 6)
65917 * local variables in macros: Typeof. (line 46)
65918 * local variables, specifying registers: Local Register Variables.
65920 * locale: Environment Variables.
65922 * locale definition: Environment Variables.
65924 * locus GCC_COLORS capability: Diagnostic Message Formatting Options.
65926 * log: Other Builtins. (line 6)
65927 * log10: Other Builtins. (line 6)
65928 * log10f: Other Builtins. (line 6)
65929 * log10l: Other Builtins. (line 6)
65930 * log1p: Other Builtins. (line 6)
65931 * log1pf: Other Builtins. (line 6)
65932 * log1pl: Other Builtins. (line 6)
65933 * log2: Other Builtins. (line 6)
65934 * log2f: Other Builtins. (line 6)
65935 * log2l: Other Builtins. (line 6)
65936 * logb: Other Builtins. (line 6)
65937 * logbf: Other Builtins. (line 6)
65938 * logbl: Other Builtins. (line 6)
65939 * logf: Other Builtins. (line 6)
65940 * logl: Other Builtins. (line 6)
65941 * long: BPF Built-in Functions.
65943 * long <1>: BPF Built-in Functions.
65945 * long <2>: BPF Built-in Functions.
65947 * long long data types: Long Long. (line 6)
65948 * longcall function attribute, Blackfin: Blackfin Function Attributes.
65950 * longcall function attribute, PowerPC: PowerPC Function Attributes.
65952 * longjmp: Global Register Variables.
65954 * longjmp incompatibilities: Incompatibilities. (line 39)
65955 * longjmp warnings: Warning Options. (line 1284)
65956 * long_call function attribute, ARC: ARC Function Attributes.
65958 * long_call function attribute, ARM: ARM Function Attributes.
65960 * long_call function attribute, Epiphany: Epiphany Function Attributes.
65962 * long_call function attribute, MIPS: MIPS Function Attributes.
65964 * lower function attribute, MSP430: MSP430 Function Attributes.
65966 * lower variable attribute, MSP430: MSP430 Variable Attributes.
65968 * lr fixed-suffix: Fixed-Point. (line 6)
65969 * LR fixed-suffix: Fixed-Point. (line 6)
65970 * lrint: Other Builtins. (line 6)
65971 * lrintf: Other Builtins. (line 6)
65972 * lrintl: Other Builtins. (line 6)
65973 * lround: Other Builtins. (line 6)
65974 * lroundf: Other Builtins. (line 6)
65975 * lroundl: Other Builtins. (line 6)
65976 * m in constraint: Simple Constraints. (line 17)
65977 * M32C options: M32C Options. (line 6)
65978 * M32R/D options: M32R/D Options. (line 6)
65979 * M680x0 options: M680x0 Options. (line 6)
65980 * machine specific constraints: Machine Constraints.
65982 * machine-dependent options: Submodel Options. (line 6)
65983 * macro with variable arguments: Variadic Macros. (line 6)
65984 * macros, inline alternative: Inline. (line 6)
65985 * macros, local labels: Local Labels. (line 6)
65986 * macros, local variables in: Typeof. (line 46)
65987 * macros, statements in expressions: Statement Exprs. (line 6)
65988 * macros, types of arguments: Typeof. (line 6)
65989 * make: Preprocessor Options.
65991 * malloc: Other Builtins. (line 6)
65992 * malloc function attribute: Common Function Attributes.
65994 * matching constraint: Simple Constraints. (line 137)
65995 * may_alias type attribute: Common Type Attributes.
65997 * MCore options: MCore Options. (line 6)
65998 * medium_call function attribute, ARC: ARC Function Attributes.
66000 * member fns, automatically inline: Inline. (line 68)
66001 * memchr: Other Builtins. (line 6)
66002 * memcmp: Other Builtins. (line 6)
66003 * memcpy: Other Builtins. (line 6)
66004 * memory references in constraints: Simple Constraints. (line 17)
66005 * mempcpy: Other Builtins. (line 6)
66006 * memset: Other Builtins. (line 6)
66007 * MeP options: MeP Options. (line 6)
66008 * Mercury: G++ and GCC. (line 23)
66009 * message formatting: Diagnostic Message Formatting Options.
66011 * messages, warning: Warning Options. (line 6)
66012 * messages, warning and error: Warnings and Errors.
66014 * MicroBlaze Options: MicroBlaze Options. (line 6)
66015 * micromips function attribute: MIPS Function Attributes.
66017 * middle-operands, omitted: Conditionals. (line 6)
66018 * MIPS options: MIPS Options. (line 6)
66019 * mips16 function attribute, MIPS: MIPS Function Attributes.
66021 * misunderstandings in C++: C++ Misunderstandings.
66023 * mixed declarations and code: Mixed Declarations. (line 6)
66024 * mixing assembly language and C: Using Assembly Language with C.
66026 * mktemp, and constant strings: Incompatibilities. (line 13)
66027 * MMIX Options: MMIX Options. (line 6)
66028 * MN10300 options: MN10300 Options. (line 6)
66029 * mode type attribute: Common Type Attributes.
66031 * mode variable attribute: Common Variable Attributes.
66033 * model function attribute, M32R/D: M32R/D Function Attributes.
66035 * model variable attribute, IA-64: IA-64 Variable Attributes.
66037 * model-name variable attribute, M32R/D: M32R/D Variable Attributes.
66039 * modf: Other Builtins. (line 6)
66040 * modff: Other Builtins. (line 6)
66041 * modfl: Other Builtins. (line 6)
66042 * modifiers in constraints: Modifiers. (line 6)
66043 * Moxie Options: Moxie Options. (line 6)
66044 * MSP430 Options: MSP430 Options. (line 6)
66045 * ms_abi function attribute, x86: x86 Function Attributes.
66047 * ms_hook_prologue function attribute, x86: x86 Function Attributes.
66049 * ms_struct type attribute, PowerPC: PowerPC Type Attributes.
66051 * ms_struct type attribute, x86: x86 Type Attributes.
66053 * ms_struct variable attribute, PowerPC: PowerPC Variable Attributes.
66055 * ms_struct variable attribute, x86: x86 Variable Attributes.
66057 * multiple alternative constraints: Multi-Alternative. (line 6)
66058 * multiprecision arithmetic: Long Long. (line 6)
66059 * n in constraint: Simple Constraints. (line 73)
66060 * naked function attribute, ARC: ARC Function Attributes.
66062 * naked function attribute, ARM: ARM Function Attributes.
66064 * naked function attribute, AVR: AVR Function Attributes.
66066 * naked function attribute, C-SKY: C-SKY Function Attributes.
66068 * naked function attribute, MCORE: MCORE Function Attributes.
66070 * naked function attribute, MSP430: MSP430 Function Attributes.
66072 * naked function attribute, NDS32: NDS32 Function Attributes.
66074 * naked function attribute, RISC-V: RISC-V Function Attributes.
66076 * naked function attribute, RL78: RL78 Function Attributes.
66078 * naked function attribute, RX: RX Function Attributes.
66080 * naked function attribute, x86: x86 Function Attributes.
66082 * Named Address Spaces: Named Address Spaces.
66084 * names used in assembler code: Asm Labels. (line 6)
66085 * naming convention, implementation headers: C++ Interface. (line 43)
66086 * NDS32 Options: NDS32 Options. (line 6)
66087 * near function attribute, MeP: MeP Function Attributes.
66089 * near function attribute, MIPS: MIPS Function Attributes.
66091 * near type attribute, MeP: MeP Type Attributes.
66093 * near variable attribute, MeP: MeP Variable Attributes.
66095 * nearbyint: Other Builtins. (line 6)
66096 * nearbyintf: Other Builtins. (line 6)
66097 * nearbyintl: Other Builtins. (line 6)
66098 * nested function attribute, NDS32: NDS32 Function Attributes.
66100 * nested functions: Nested Functions. (line 6)
66101 * nested_ready function attribute, NDS32: NDS32 Function Attributes.
66103 * nesting function attribute, Blackfin: Blackfin Function Attributes.
66105 * newlines (escaped): Escaped Newlines. (line 6)
66106 * nextafter: Other Builtins. (line 6)
66107 * nextafterf: Other Builtins. (line 6)
66108 * nextafterl: Other Builtins. (line 6)
66109 * nexttoward: Other Builtins. (line 6)
66110 * nexttowardf: Other Builtins. (line 6)
66111 * nexttowardl: Other Builtins. (line 6)
66112 * NFC: Warning Options. (line 2654)
66113 * NFKC: Warning Options. (line 2654)
66114 * Nios II options: Nios II Options. (line 6)
66115 * nmi function attribute, NDS32: NDS32 Function Attributes.
66117 * NMI handler functions on the Blackfin processor: Blackfin Function Attributes.
66119 * nmi_handler function attribute, Blackfin: Blackfin Function Attributes.
66121 * nocf_check function attribute: x86 Function Attributes.
66123 * noclone function attribute: Common Function Attributes.
66125 * nocommon variable attribute: Common Variable Attributes.
66127 * nocompression function attribute, MIPS: MIPS Function Attributes.
66129 * noinit variable attribute: Common Variable Attributes.
66131 * noinit variable attribute, MSP430: MSP430 Variable Attributes.
66133 * noinline function attribute: Common Function Attributes.
66135 * noipa function attribute: Common Function Attributes.
66137 * nomicromips function attribute: MIPS Function Attributes.
66139 * nomips16 function attribute, MIPS: MIPS Function Attributes.
66141 * non-constant initializers: Initializers. (line 6)
66142 * non-static inline function: Inline. (line 82)
66143 * nonlocal gotos: Nonlocal Gotos. (line 6)
66144 * nonnull function attribute: Common Function Attributes.
66146 * nonstring variable attribute: Common Variable Attributes.
66148 * noplt function attribute: Common Function Attributes.
66150 * noreturn function attribute: Common Function Attributes.
66152 * nosave_low_regs function attribute, SH: SH Function Attributes.
66154 * note GCC_COLORS capability: Diagnostic Message Formatting Options.
66156 * nothrow function attribute: Common Function Attributes.
66158 * notshared type attribute, ARM: ARM Type Attributes.
66160 * not_nested function attribute, NDS32: NDS32 Function Attributes.
66162 * no_caller_saved_registers function attribute, x86: x86 Function Attributes.
66164 * no_gccisr function attribute, AVR: AVR Function Attributes.
66166 * no_icf function attribute: Common Function Attributes.
66168 * no_instrument_function function attribute: Common Function Attributes.
66170 * no_profile_instrument_function function attribute: Common Function Attributes.
66172 * no_reorder function attribute: Common Function Attributes.
66174 * no_sanitize function attribute: Common Function Attributes.
66176 * no_sanitize_address function attribute: Common Function Attributes.
66178 * no_sanitize_thread function attribute: Common Function Attributes.
66180 * no_sanitize_undefined function attribute: Common Function Attributes.
66182 * no_split_stack function attribute: Common Function Attributes.
66184 * no_stack_limit function attribute: Common Function Attributes.
66186 * Nvidia PTX options: Nvidia PTX Options. (line 6)
66187 * nvptx options: Nvidia PTX Options. (line 6)
66188 * o in constraint: Simple Constraints. (line 23)
66189 * OBJC_INCLUDE_PATH: Environment Variables.
66191 * Objective-C: G++ and GCC. (line 6)
66192 * Objective-C <1>: Standards. (line 189)
66193 …Objective-C and Objective-C++ options, command-line: Objective-C and Objective-C++ Dialect Options.
66195 * Objective-C++: G++ and GCC. (line 6)
66196 * Objective-C++ <1>: Standards. (line 189)
66197 * offsettable address: Simple Constraints. (line 23)
66198 * old-style function definitions: Function Prototypes.
66200 * omit-leaf-frame-pointer function attribute, AArch64: AArch64 Function Attributes.
66202 * omitted middle-operands: Conditionals. (line 6)
66203 * open coding: Inline. (line 6)
66204 * OpenACC accelerator programming: C Dialect Options. (line 325)
66205 * OpenACC accelerator programming <1>: C Dialect Options. (line 334)
66206 * OpenMP parallel: C Dialect Options. (line 340)
66207 * OpenMP SIMD: C Dialect Options. (line 349)
66208 * OpenRISC Options: OpenRISC Options. (line 6)
66209 * operand constraints, asm: Constraints. (line 6)
66210 * optimize function attribute: Common Function Attributes.
66212 * optimize options: Optimize Options. (line 6)
66213 * options to control diagnostics formatting: Diagnostic Message Formatting Options.
66215 * options to control warnings: Warning Options. (line 6)
66216 * options, C++: C++ Dialect Options.
66218 * options, code generation: Code Gen Options. (line 6)
66219 * options, debugging: Debugging Options. (line 6)
66220 * options, dialect: C Dialect Options. (line 6)
66221 * options, directory search: Directory Options. (line 6)
66222 * options, GCC command: Invoking GCC. (line 6)
66223 * options, grouping: Invoking GCC. (line 31)
66224 * options, linking: Link Options. (line 6)
66225 * options, Objective-C and Objective-C++: Objective-C and Objective-C++ Dialect Options.
66227 * options, optimization: Optimize Options. (line 6)
66228 * options, order: Invoking GCC. (line 35)
66229 * options, preprocessor: Preprocessor Options.
66231 * options, profiling: Instrumentation Options.
66233 * options, program instrumentation: Instrumentation Options.
66235 * options, run-time error checking: Instrumentation Options.
66237 * order of evaluation, side effects: Non-bugs. (line 196)
66238 * order of options: Invoking GCC. (line 35)
66239 * OS_main function attribute, AVR: AVR Function Attributes.
66241 * OS_task function attribute, AVR: AVR Function Attributes.
66243 * other register constraints: Simple Constraints. (line 161)
66244 * outline-atomics function attribute, AArch64: AArch64 Function Attributes.
66246 * output file option: Overall Options. (line 196)
66247 * overloaded virtual function, warning: C++ Dialect Options.
66249 * p in constraint: Simple Constraints. (line 152)
66250 * packed type attribute: Common Type Attributes.
66252 * packed variable attribute: Common Variable Attributes.
66254 * parameter forward declaration: Variable Length. (line 66)
66255 * partial_save function attribute, NDS32: NDS32 Function Attributes.
66257 * patchable_function_entry function attribute: Common Function Attributes.
66259 * path GCC_COLORS capability: Diagnostic Message Formatting Options.
66261 * pcs function attribute, ARM: ARM Function Attributes.
66263 * PDP-11 Options: PDP-11 Options. (line 6)
66264 * persistent variable attribute, MSP430: MSP430 Variable Attributes.
66266 * PIC: Code Gen Options. (line 353)
66267 * picoChip options: picoChip Options. (line 6)
66268 * pmf: Bound member functions.
66270 * pointer arguments: Common Function Attributes.
66272 * pointer arguments in variadic functions: Variadic Pointer Args.
66274 * pointer to member function: Bound member functions.
66276 * pointers to arrays: Pointers to Arrays. (line 6)
66277 * portions of temporary objects, pointers to: Temporaries. (line 6)
66278 * pow: Other Builtins. (line 6)
66279 * pow10: Other Builtins. (line 6)
66280 * pow10f: Other Builtins. (line 6)
66281 * pow10l: Other Builtins. (line 6)
66282 * PowerPC options: PowerPC Options. (line 6)
66283 * powf: Other Builtins. (line 6)
66284 * powl: Other Builtins. (line 6)
66285 * pragma GCC ivdep: Loop-Specific Pragmas.
66287 * pragma GCC optimize: Function Specific Option Pragmas.
66289 * pragma GCC pop_options: Function Specific Option Pragmas.
66291 * pragma GCC push_options: Function Specific Option Pragmas.
66293 * pragma GCC reset_options: Function Specific Option Pragmas.
66295 * pragma GCC target: Function Specific Option Pragmas.
66297 * pragma GCC unroll N: Loop-Specific Pragmas.
66299 * pragma, address: M32C Pragmas. (line 15)
66300 * pragma, align: Solaris Pragmas. (line 11)
66301 * pragma, call: MeP Pragmas. (line 48)
66302 * pragma, coprocessor available: MeP Pragmas. (line 13)
66303 * pragma, coprocessor call_saved: MeP Pragmas. (line 20)
66304 * pragma, coprocessor subclass: MeP Pragmas. (line 28)
66305 * pragma, ctable_entry: PRU Pragmas. (line 7)
66306 * pragma, custom io_volatile: MeP Pragmas. (line 7)
66307 * pragma, diagnostic: Diagnostic Pragmas. (line 14)
66308 * pragma, diagnostic <1>: Diagnostic Pragmas. (line 57)
66309 * pragma, diagnostic <2>: Diagnostic Pragmas. (line 77)
66310 * pragma, diagnostic <3>: Diagnostic Pragmas. (line 99)
66311 * pragma, disinterrupt: MeP Pragmas. (line 38)
66312 * pragma, fini: Solaris Pragmas. (line 20)
66313 * pragma, init: Solaris Pragmas. (line 26)
66314 * pragma, longcall: RS/6000 and PowerPC Pragmas.
66316 * pragma, long_calls: ARM Pragmas. (line 11)
66317 * pragma, long_calls_off: ARM Pragmas. (line 17)
66318 * pragma, mark: Darwin Pragmas. (line 11)
66319 * pragma, memregs: M32C Pragmas. (line 7)
66320 * pragma, no_long_calls: ARM Pragmas. (line 14)
66321 * pragma, options align: Darwin Pragmas. (line 14)
66322 * pragma, pop_macro: Push/Pop Macro Pragmas.
66324 * pragma, push_macro: Push/Pop Macro Pragmas.
66326 * pragma, redefine_extname: Symbol-Renaming Pragmas.
66328 * pragma, segment: Darwin Pragmas. (line 21)
66329 * pragma, unused: Darwin Pragmas. (line 24)
66330 * pragma, visibility: Visibility Pragmas. (line 8)
66331 * pragma, weak: Weak Pragmas. (line 10)
66332 * pragmas: Pragmas. (line 6)
66333 * pragmas in C++, effect on inlining: C++ Interface. (line 57)
66334 * pragmas, interface and implementation: C++ Interface. (line 6)
66335 * pragmas, warning of unknown: Warning Options. (line 1299)
66336 * precompiled headers: Precompiled Headers.
66338 * preprocessing numbers: Incompatibilities. (line 173)
66339 * preprocessing tokens: Incompatibilities. (line 173)
66340 * preprocessor options: Preprocessor Options.
66342 * printf: Other Builtins. (line 6)
66343 * printf_unlocked: Other Builtins. (line 6)
66344 * prof: Instrumentation Options.
66346 * profiling options: Instrumentation Options.
66348 * progmem variable attribute, AVR: AVR Variable Attributes.
66350 * program instrumentation options: Instrumentation Options.
66352 * promotion of formal parameters: Function Prototypes.
66354 * PRU Options: PRU Options. (line 6)
66355 * pure function attribute: Common Function Attributes.
66357 * push address instruction: Simple Constraints. (line 152)
66358 * putchar: Other Builtins. (line 6)
66359 * puts: Other Builtins. (line 6)
66360 * q floating point suffix: Floating Types. (line 6)
66361 * Q floating point suffix: Floating Types. (line 6)
66362 * qsort, and global register variables: Global Register Variables.
66364 * quote GCC_COLORS capability: Diagnostic Message Formatting Options.
66366 * r fixed-suffix: Fixed-Point. (line 6)
66367 * R fixed-suffix: Fixed-Point. (line 6)
66368 * r in constraint: Simple Constraints. (line 64)
66369 * RAMPD: AVR Options. (line 430)
66370 * RAMPX: AVR Options. (line 430)
66371 * RAMPY: AVR Options. (line 430)
66372 * RAMPZ: AVR Options. (line 430)
66373 * range1 GCC_COLORS capability: Diagnostic Message Formatting Options.
66375 * range2 GCC_COLORS capability: Diagnostic Message Formatting Options.
66377 * ranges in case statements: Case Ranges. (line 6)
66378 * read-only strings: Incompatibilities. (line 9)
66379 * realloc: Other Builtins. (line 6)
66380 * reentrant function attribute, MSP430: MSP430 Function Attributes.
66382 * register variable after longjmp: Global Register Variables.
66384 * registers for local variables: Local Register Variables.
66386 * registers in constraints: Simple Constraints. (line 64)
66387 * registers, global allocation: Global Register Variables.
66389 * registers, global variables in: Global Register Variables.
66391 * regparm function attribute, x86: x86 Function Attributes.
66393 * relocation truncated to fit (ColdFire): M680x0 Options. (line 322)
66394 * relocation truncated to fit (MIPS): MIPS Options. (line 237)
66395 * remainder: Other Builtins. (line 6)
66396 * remainderf: Other Builtins. (line 6)
66397 * remainderl: Other Builtins. (line 6)
66398 * remquo: Other Builtins. (line 6)
66399 * remquof: Other Builtins. (line 6)
66400 * remquol: Other Builtins. (line 6)
66401 * renesas function attribute, SH: SH Function Attributes.
66403 * reordering, warning: C++ Dialect Options.
66405 * reporting bugs: Bugs. (line 6)
66406 * resbank function attribute, SH: SH Function Attributes.
66408 * reset function attribute, NDS32: NDS32 Function Attributes.
66410 * reset handler functions: NDS32 Function Attributes.
66412 * rest argument (in macro): Variadic Macros. (line 6)
66413 * restricted pointers: Restricted Pointers.
66415 * restricted references: Restricted Pointers.
66417 * restricted this pointer: Restricted Pointers.
66419 * returns_nonnull function attribute: Common Function Attributes.
66421 * returns_twice function attribute: Common Function Attributes.
66423 * rindex: Other Builtins. (line 6)
66424 * rint: Other Builtins. (line 6)
66425 * rintf: Other Builtins. (line 6)
66426 * rintl: Other Builtins. (line 6)
66427 * RISC-V Options: RISC-V Options. (line 6)
66428 * RL78 Options: RL78 Options. (line 6)
66429 * round: Other Builtins. (line 6)
66430 * roundf: Other Builtins. (line 6)
66431 * roundl: Other Builtins. (line 6)
66432 * RS/6000 and PowerPC Options: RS/6000 and PowerPC Options.
66434 * RTTI: Vague Linkage. (line 42)
66435 * run-time error checking options: Instrumentation Options.
66437 * run-time options: Code Gen Options. (line 6)
66438 * RX Options: RX Options. (line 6)
66439 * s in constraint: Simple Constraints. (line 100)
66440 * S/390 and zSeries Options: S/390 and zSeries Options.
66442 * saddr variable attribute, RL78: RL78 Variable Attributes.
66444 * save all registers on the Blackfin: Blackfin Function Attributes.
66446 * save all registers on the H8/300, H8/300H, and H8S: H8/300 Function Attributes.
66448 * saveall function attribute, Blackfin: Blackfin Function Attributes.
66450 * saveall function attribute, H8/300: H8/300 Function Attributes.
66452 * save_all function attribute, NDS32: NDS32 Function Attributes.
66454 * save_volatiles function attribute, MicroBlaze: MicroBlaze Function Attributes.
66456 * scalar_storage_order type attribute: Common Type Attributes.
66458 * scalb: Other Builtins. (line 6)
66459 * scalbf: Other Builtins. (line 6)
66460 * scalbl: Other Builtins. (line 6)
66461 * scalbln: Other Builtins. (line 6)
66462 * scalblnf: Other Builtins. (line 6)
66463 * scalblnf <1>: Other Builtins. (line 6)
66464 * scalbn: Other Builtins. (line 6)
66465 * scalbnf: Other Builtins. (line 6)
66466 * scanf, and constant strings: Incompatibilities. (line 17)
66467 * scanfnl: Other Builtins. (line 6)
66468 * scope of a variable length array: Variable Length. (line 22)
66469 * scope of declaration: Disappointments. (line 21)
66470 * scope of external declarations: Incompatibilities. (line 80)
66471 * Score Options: Score Options. (line 6)
66472 * sda variable attribute, V850: V850 Variable Attributes.
66474 * search path: Directory Options. (line 6)
66475 * section function attribute: Common Function Attributes.
66477 * section variable attribute: Common Variable Attributes.
66479 * secure_call function attribute, ARC: ARC Function Attributes.
66481 * selectany variable attribute: Microsoft Windows Variable Attributes.
66483 * sentinel function attribute: Common Function Attributes.
66485 * setjmp: Global Register Variables.
66487 * setjmp incompatibilities: Incompatibilities. (line 39)
66488 * shared attribute, Nvidia PTX: Nvidia PTX Variable Attributes.
66490 * shared strings: Incompatibilities. (line 9)
66491 * shared variable attribute: Microsoft Windows Variable Attributes.
66493 * shortcall function attribute, Blackfin: Blackfin Function Attributes.
66495 * shortcall function attribute, PowerPC: PowerPC Function Attributes.
66497 * short_call function attribute, ARC: ARC Function Attributes.
66499 * short_call function attribute, ARM: ARM Function Attributes.
66501 * short_call function attribute, Epiphany: Epiphany Function Attributes.
66503 * short_call function attribute, MIPS: MIPS Function Attributes.
66505 * side effect in ?:: Conditionals. (line 20)
66506 * side effects, macro argument: Statement Exprs. (line 35)
66507 * side effects, order of evaluation: Non-bugs. (line 196)
66508 * sign-return-address function attribute, AArch64: AArch64 Function Attributes.
66510 * signal function attribute, AVR: AVR Function Attributes.
66512 * signbit: Other Builtins. (line 6)
66513 * signbitd128: Other Builtins. (line 6)
66514 * signbitd32: Other Builtins. (line 6)
66515 * signbitd64: Other Builtins. (line 6)
66516 * signbitf: Other Builtins. (line 6)
66517 * signbitl: Other Builtins. (line 6)
66518 * signed and unsigned values, comparison warning: Warning Options.
66520 * significand: Other Builtins. (line 6)
66521 * significandf: Other Builtins. (line 6)
66522 * significandl: Other Builtins. (line 6)
66523 * SIMD: C Dialect Options. (line 349)
66524 * simd function attribute: Common Function Attributes.
66526 * simple constraints: Simple Constraints. (line 6)
66527 * sin: Other Builtins. (line 6)
66528 * sincos: Other Builtins. (line 6)
66529 * sincosf: Other Builtins. (line 6)
66530 * sincosl: Other Builtins. (line 6)
66531 * sinf: Other Builtins. (line 6)
66532 * sinh: Other Builtins. (line 6)
66533 * sinhf: Other Builtins. (line 6)
66534 * sinhl: Other Builtins. (line 6)
66535 * sinl: Other Builtins. (line 6)
66536 * sizeof: Typeof. (line 6)
66537 * smaller data references: M32R/D Options. (line 57)
66538 * smaller data references <1>: Nios II Options. (line 9)
66539 * smaller data references (PowerPC): RS/6000 and PowerPC Options.
66541 * snprintf: Other Builtins. (line 6)
66542 * Solaris 2 options: Solaris 2 Options. (line 6)
66543 * SOURCE_DATE_EPOCH: Environment Variables.
66545 * SPARC options: SPARC Options. (line 6)
66546 * Spec Files: Spec Files. (line 6)
66547 * specified registers: Explicit Register Variables.
66549 * specifying compiler version and target machine: Invoking GCC.
66551 * specifying hardware config: Submodel Options. (line 6)
66552 * specifying machine version: Invoking GCC. (line 24)
66553 * specifying registers for local variables: Local Register Variables.
66555 * speed of compilation: Precompiled Headers.
66557 * sprintf: Other Builtins. (line 6)
66558 * sp_switch function attribute, SH: SH Function Attributes.
66560 * sqrt: Other Builtins. (line 6)
66561 * sqrtf: Other Builtins. (line 6)
66562 * sqrtl: Other Builtins. (line 6)
66563 * sscanf: Other Builtins. (line 6)
66564 * sscanf, and constant strings: Incompatibilities. (line 17)
66565 * sseregparm function attribute, x86: x86 Function Attributes.
66567 * stack_protect function attribute: Common Function Attributes.
66569 * Statement Attributes: Statement Attributes.
66571 * statements inside expressions: Statement Exprs. (line 6)
66572 * static data in C++, declaring and defining: Static Definitions.
66574 * stdcall function attribute, x86-32: x86 Function Attributes.
66576 * stpcpy: Other Builtins. (line 6)
66577 * stpncpy: Other Builtins. (line 6)
66578 * strcasecmp: Other Builtins. (line 6)
66579 * strcat: Other Builtins. (line 6)
66580 * strchr: Other Builtins. (line 6)
66581 * strcmp: Other Builtins. (line 6)
66582 * strcpy: Other Builtins. (line 6)
66583 * strcspn: Other Builtins. (line 6)
66584 * strdup: Other Builtins. (line 6)
66585 * strfmon: Other Builtins. (line 6)
66586 * strftime: Other Builtins. (line 6)
66587 * strict-align function attribute, AArch64: AArch64 Function Attributes.
66589 * string constants: Incompatibilities. (line 9)
66590 * strlen: Other Builtins. (line 6)
66591 * strncasecmp: Other Builtins. (line 6)
66592 * strncat: Other Builtins. (line 6)
66593 * strncmp: Other Builtins. (line 6)
66594 * strncpy: Other Builtins. (line 6)
66595 * strndup: Other Builtins. (line 6)
66596 * strnlen: Other Builtins. (line 6)
66597 * strpbrk: Other Builtins. (line 6)
66598 * strrchr: Other Builtins. (line 6)
66599 * strspn: Other Builtins. (line 6)
66600 * strstr: Other Builtins. (line 6)
66601 * struct: Unnamed Fields. (line 6)
66602 * struct __htm_tdb: S/390 System z Built-in Functions.
66604 * structures: Incompatibilities. (line 146)
66605 * structures, constructor expression: Compound Literals. (line 6)
66606 * submodel options: Submodel Options. (line 6)
66607 * subscripting: Subscripting. (line 6)
66608 * subscripting and function values: Subscripting. (line 6)
66609 * suffixes for C++ source: Invoking G++. (line 6)
66610 * SUNPRO_DEPENDENCIES: Environment Variables.
66612 * suppressing warnings: Warning Options. (line 6)
66613 * surprises in C++: C++ Misunderstandings.
66615 * symver function attribute: Common Function Attributes.
66617 * syntax checking: Warning Options. (line 13)
66618 * syscall_linkage function attribute, IA-64: IA-64 Function Attributes.
66620 * system headers, warnings from: Warning Options. (line 1855)
66621 * sysv_abi function attribute, x86: x86 Function Attributes.
66623 * tan: Other Builtins. (line 6)
66624 * tanf: Other Builtins. (line 6)
66625 * tanh: Other Builtins. (line 6)
66626 * tanhf: Other Builtins. (line 6)
66627 * tanhl: Other Builtins. (line 6)
66628 * tanl: Other Builtins. (line 6)
66629 * target function attribute: Common Function Attributes.
66631 * target function attribute <1>: ARM Function Attributes.
66633 * target function attribute <2>: Nios II Function Attributes.
66635 * target function attribute <3>: PowerPC Function Attributes.
66637 * target function attribute <4>: S/390 Function Attributes.
66639 * target function attribute <5>: x86 Function Attributes.
66641 * target machine, specifying: Invoking GCC. (line 24)
66642 * target("3dnow") function attribute, x86: x86 Function Attributes.
66644 * target("3dnowa") function attribute, x86: x86 Function Attributes.
66646 * target("abm") function attribute, x86: x86 Function Attributes.
66648 * target("adx") function attribute, x86: x86 Function Attributes.
66650 * target("aes") function attribute, x86: x86 Function Attributes.
66652 * target("align-stringops") function attribute, x86: x86 Function Attributes.
66654 * target("altivec") function attribute, PowerPC: PowerPC Function Attributes.
66656 * target("arch=ARCH") function attribute, x86: x86 Function Attributes.
66658 * target("arm") function attribute, ARM: ARM Function Attributes.
66660 * target("avoid-indexed-addresses") function attribute, PowerPC: PowerPC Function Attributes.
66662 * target("avx") function attribute, x86: x86 Function Attributes.
66664 * target("avx2") function attribute, x86: x86 Function Attributes.
66666 * target("avx5124fmaps") function attribute, x86: x86 Function Attributes.
66668 * target("avx5124vnniw") function attribute, x86: x86 Function Attributes.
66670 * target("avx512bitalg") function attribute, x86: x86 Function Attributes.
66672 * target("avx512bw") function attribute, x86: x86 Function Attributes.
66674 * target("avx512cd") function attribute, x86: x86 Function Attributes.
66676 * target("avx512dq") function attribute, x86: x86 Function Attributes.
66678 * target("avx512er") function attribute, x86: x86 Function Attributes.
66680 * target("avx512f") function attribute, x86: x86 Function Attributes.
66682 * target("avx512ifma") function attribute, x86: x86 Function Attributes.
66684 * target("avx512pf") function attribute, x86: x86 Function Attributes.
66686 * target("avx512vbmi") function attribute, x86: x86 Function Attributes.
66688 * target("avx512vbmi2") function attribute, x86: x86 Function Attributes.
66690 * target("avx512vl") function attribute, x86: x86 Function Attributes.
66692 * target("avx512vnni") function attribute, x86: x86 Function Attributes.
66694 * target("avx512vpopcntdq") function attribute, x86: x86 Function Attributes.
66696 * target("bmi") function attribute, x86: x86 Function Attributes.
66698 * target("bmi2") function attribute, x86: x86 Function Attributes.
66700 * target("cld") function attribute, x86: x86 Function Attributes.
66702 * target("cldemote") function attribute, x86: x86 Function Attributes.
66704 * target("clflushopt") function attribute, x86: x86 Function Attributes.
66706 * target("clwb") function attribute, x86: x86 Function Attributes.
66708 * target("clzero") function attribute, x86: x86 Function Attributes.
66710 * target("cmpb") function attribute, PowerPC: PowerPC Function Attributes.
66712 * target("cpu=CPU") function attribute, PowerPC: PowerPC Function Attributes.
66714 * target("crc32") function attribute, x86: x86 Function Attributes.
66716 * target("custom-fpu-cfg=NAME") function attribute, Nios II: Nios II Function Attributes.
66718 * target("custom-INSN=N") function attribute, Nios II: Nios II Function Attributes.
66720 * target("cx16") function attribute, x86: x86 Function Attributes.
66722 * target("default") function attribute, x86: x86 Function Attributes.
66724 * target("dlmzb") function attribute, PowerPC: PowerPC Function Attributes.
66726 * target("f16c") function attribute, x86: x86 Function Attributes.
66728 * target("fancy-math-387") function attribute, x86: x86 Function Attributes.
66730 * target("fma") function attribute, x86: x86 Function Attributes.
66732 * target("fma4") function attribute, x86: x86 Function Attributes.
66734 * target("fpmath=FPMATH") function attribute, x86: x86 Function Attributes.
66736 * target("fprnd") function attribute, PowerPC: PowerPC Function Attributes.
66738 * target("fpu=") function attribute, ARM: ARM Function Attributes.
66740 * target("friz") function attribute, PowerPC: PowerPC Function Attributes.
66742 * target("fsgsbase") function attribute, x86: x86 Function Attributes.
66744 * target("fxsr") function attribute, x86: x86 Function Attributes.
66746 * target("gfni") function attribute, x86: x86 Function Attributes.
66748 * target("hard-dfp") function attribute, PowerPC: PowerPC Function Attributes.
66750 * target("hle") function attribute, x86: x86 Function Attributes.
66752 * target("ieee-fp") function attribute, x86: x86 Function Attributes.
66754 * target("inline-all-stringops") function attribute, x86: x86 Function Attributes.
66756 * target("inline-stringops-dynamically") function attribute, x86: x86 Function Attributes.
66758 * target("isel") function attribute, PowerPC: PowerPC Function Attributes.
66760 * target("longcall") function attribute, PowerPC: PowerPC Function Attributes.
66762 * target("lwp") function attribute, x86: x86 Function Attributes.
66764 * target("lzcnt") function attribute, x86: x86 Function Attributes.
66766 * target("mfcrf") function attribute, PowerPC: PowerPC Function Attributes.
66768 * target("mmx") function attribute, x86: x86 Function Attributes.
66770 * target("movbe") function attribute, x86: x86 Function Attributes.
66772 * target("movdir64b") function attribute, x86: x86 Function Attributes.
66774 * target("movdiri") function attribute, x86: x86 Function Attributes.
66776 * target("mulhw") function attribute, PowerPC: PowerPC Function Attributes.
66778 * target("multiple") function attribute, PowerPC: PowerPC Function Attributes.
66780 * target("mwaitx") function attribute, x86: x86 Function Attributes.
66782 * target("no-custom-INSN") function attribute, Nios II: Nios II Function Attributes.
66784 * target("paired") function attribute, PowerPC: PowerPC Function Attributes.
66786 * target("pclmul") function attribute, x86: x86 Function Attributes.
66788 * target("pconfig") function attribute, x86: x86 Function Attributes.
66790 * target("pku") function attribute, x86: x86 Function Attributes.
66792 * target("popcnt") function attribute, x86: x86 Function Attributes.
66794 * target("popcntb") function attribute, PowerPC: PowerPC Function Attributes.
66796 * target("popcntd") function attribute, PowerPC: PowerPC Function Attributes.
66798 * target("powerpc-gfxopt") function attribute, PowerPC: PowerPC Function Attributes.
66800 * target("powerpc-gpopt") function attribute, PowerPC: PowerPC Function Attributes.
66802 * target("prefetchwt1") function attribute, x86: x86 Function Attributes.
66804 * target("prfchw") function attribute, x86: x86 Function Attributes.
66806 * target("ptwrite") function attribute, x86: x86 Function Attributes.
66808 * target("rdpid") function attribute, x86: x86 Function Attributes.
66810 * target("rdrnd") function attribute, x86: x86 Function Attributes.
66812 * target("rdseed") function attribute, x86: x86 Function Attributes.
66814 * target("recip") function attribute, x86: x86 Function Attributes.
66816 * target("recip-precision") function attribute, PowerPC: PowerPC Function Attributes.
66818 * target("rtm") function attribute, x86: x86 Function Attributes.
66820 * target("sahf") function attribute, x86: x86 Function Attributes.
66822 * target("sgx") function attribute, x86: x86 Function Attributes.
66824 * target("sha") function attribute, x86: x86 Function Attributes.
66826 * target("shstk") function attribute, x86: x86 Function Attributes.
66828 * target("sse") function attribute, x86: x86 Function Attributes.
66830 * target("sse2") function attribute, x86: x86 Function Attributes.
66832 * target("sse3") function attribute, x86: x86 Function Attributes.
66834 * target("sse4") function attribute, x86: x86 Function Attributes.
66836 * target("sse4.1") function attribute, x86: x86 Function Attributes.
66838 * target("sse4.2") function attribute, x86: x86 Function Attributes.
66840 * target("sse4a") function attribute, x86: x86 Function Attributes.
66842 * target("ssse3") function attribute, x86: x86 Function Attributes.
66844 * target("string") function attribute, PowerPC: PowerPC Function Attributes.
66846 * target("tbm") function attribute, x86: x86 Function Attributes.
66848 * target("thumb") function attribute, ARM: ARM Function Attributes.
66850 * target("tune=TUNE") function attribute, PowerPC: PowerPC Function Attributes.
66852 * target("tune=TUNE") function attribute, x86: x86 Function Attributes.
66854 * target("update") function attribute, PowerPC: PowerPC Function Attributes.
66856 * target("vaes") function attribute, x86: x86 Function Attributes.
66858 * target("vpclmulqdq") function attribute, x86: x86 Function Attributes.
66860 * target("vsx") function attribute, PowerPC: PowerPC Function Attributes.
66862 * target("waitpkg") function attribute, x86: x86 Function Attributes.
66864 * target("wbnoinvd") function attribute, x86: x86 Function Attributes.
66866 * target("xop") function attribute, x86: x86 Function Attributes.
66868 * target("xsave") function attribute, x86: x86 Function Attributes.
66870 * target("xsavec") function attribute, x86: x86 Function Attributes.
66872 * target("xsaveopt") function attribute, x86: x86 Function Attributes.
66874 * target("xsaves") function attribute, x86: x86 Function Attributes.
66876 * target-dependent options: Submodel Options. (line 6)
66877 * target_clones function attribute: Common Function Attributes.
66879 * TC1: Standards. (line 13)
66880 * TC2: Standards. (line 13)
66881 * TC3: Standards. (line 13)
66882 * tda variable attribute, V850: V850 Variable Attributes.
66884 * Technical Corrigenda: Standards. (line 13)
66885 * Technical Corrigendum 1: Standards. (line 13)
66886 * Technical Corrigendum 2: Standards. (line 13)
66887 * Technical Corrigendum 3: Standards. (line 13)
66888 * template instantiation: Template Instantiation.
66890 * temporaries, lifetime of: Temporaries. (line 6)
66891 * tentative definitions: Code Gen Options. (line 231)
66892 * TERM_URLS environment variable: Diagnostic Message Formatting Options.
66894 * tgamma: Other Builtins. (line 6)
66895 * tgammaf: Other Builtins. (line 6)
66896 * tgammal: Other Builtins. (line 6)
66897 * thiscall function attribute, x86-32: x86 Function Attributes.
66899 * Thread-Local Storage: Thread-Local. (line 6)
66900 * thunks: Nested Functions. (line 6)
66901 * TILE-Gx options: TILE-Gx Options. (line 6)
66902 * TILEPro options: TILEPro Options. (line 6)
66903 * tiny data section on the H8/300H and H8S: H8/300 Variable Attributes.
66905 * tiny type attribute, MeP: MeP Type Attributes.
66907 * tiny variable attribute, MeP: MeP Variable Attributes.
66909 * tiny_data variable attribute, H8/300: H8/300 Variable Attributes.
66911 * TLS: Thread-Local. (line 6)
66912 * tls-dialect= function attribute, AArch64: AArch64 Function Attributes.
66914 * tls_model variable attribute: Common Variable Attributes.
66916 * TMPDIR: Environment Variables.
66918 * toascii: Other Builtins. (line 6)
66919 * tolower: Other Builtins. (line 6)
66920 * toupper: Other Builtins. (line 6)
66921 * towlower: Other Builtins. (line 6)
66922 * towupper: Other Builtins. (line 6)
66923 * traditional C language: Preprocessor Options.
66925 * transparent_union type attribute: Common Type Attributes.
66927 * trapa_handler function attribute, SH: SH Function Attributes.
66929 * trap_exit function attribute, SH: SH Function Attributes.
66931 * trunc: Other Builtins. (line 6)
66932 * truncf: Other Builtins. (line 6)
66933 * truncl: Other Builtins. (line 6)
66934 * tune= function attribute, AArch64: AArch64 Function Attributes.
66936 * two-stage name lookup: Name lookup. (line 6)
66937 * type alignment: Alignment. (line 6)
66938 * type attributes: Type Attributes. (line 6)
66939 * type-diff GCC_COLORS capability: Diagnostic Message Formatting Options.
66941 * typedef names as function parameters: Incompatibilities. (line 97)
66942 * typeof: Typeof. (line 6)
66943 * type_info: Vague Linkage. (line 42)
66944 * uhk fixed-suffix: Fixed-Point. (line 6)
66945 * UHK fixed-suffix: Fixed-Point. (line 6)
66946 * uhr fixed-suffix: Fixed-Point. (line 6)
66947 * UHR fixed-suffix: Fixed-Point. (line 6)
66948 * uk fixed-suffix: Fixed-Point. (line 6)
66949 * UK fixed-suffix: Fixed-Point. (line 6)
66950 * ulk fixed-suffix: Fixed-Point. (line 6)
66951 * ULK fixed-suffix: Fixed-Point. (line 6)
66952 * ULL integer suffix: Long Long. (line 6)
66953 * ullk fixed-suffix: Fixed-Point. (line 6)
66954 * ULLK fixed-suffix: Fixed-Point. (line 6)
66955 * ullr fixed-suffix: Fixed-Point. (line 6)
66956 * ULLR fixed-suffix: Fixed-Point. (line 6)
66957 * ulr fixed-suffix: Fixed-Point. (line 6)
66958 * ULR fixed-suffix: Fixed-Point. (line 6)
66959 * uncached type attribute, ARC: ARC Type Attributes.
66961 * undefined behavior: Bug Criteria. (line 17)
66962 * undefined function value: Bug Criteria. (line 17)
66963 * underscores in variables in macros: Typeof. (line 46)
66964 * union: Unnamed Fields. (line 6)
66965 * union, casting to a: Cast to Union. (line 6)
66966 * unions: Incompatibilities. (line 146)
66967 * unknown pragmas, warning: Warning Options. (line 1299)
66968 * unresolved references and -nodefaultlibs: Link Options. (line 154)
66969 * unresolved references and -nostdlib: Link Options. (line 154)
66970 * unused function attribute: Common Function Attributes.
66972 * unused label attribute: Label Attributes. (line 31)
66973 * unused type attribute: Common Type Attributes.
66975 * unused variable attribute: Common Variable Attributes.
66977 * upper function attribute, MSP430: MSP430 Function Attributes.
66979 * upper variable attribute, MSP430: MSP430 Variable Attributes.
66981 * ur fixed-suffix: Fixed-Point. (line 6)
66982 * UR fixed-suffix: Fixed-Point. (line 6)
66983 * urls: Diagnostic Message Formatting Options.
66985 * used function attribute: Common Function Attributes.
66987 * used variable attribute: Common Variable Attributes.
66989 * User stack pointer in interrupts on the Blackfin: Blackfin Function Attributes.
66991 * use_debug_exception_return function attribute, MIPS: MIPS Function Attributes.
66993 * use_shadow_register_set function attribute, MIPS: MIPS Function Attributes.
66995 * V in constraint: Simple Constraints. (line 43)
66996 * V850 Options: V850 Options. (line 6)
66997 * vague linkage: Vague Linkage. (line 6)
66998 * value after longjmp: Global Register Variables.
67000 * variable addressability on the M32R/D: M32R/D Variable Attributes.
67002 * variable alignment: Alignment. (line 6)
67003 * variable attributes: Variable Attributes.
67005 * variable number of arguments: Variadic Macros. (line 6)
67006 * variable-length array in a structure: Variable Length. (line 26)
67007 * variable-length array scope: Variable Length. (line 22)
67008 * variable-length arrays: Variable Length. (line 6)
67009 * variables in specified registers: Explicit Register Variables.
67011 * variables, local, in macros: Typeof. (line 46)
67012 * variadic functions, pointer arguments: Variadic Pointer Args.
67014 * variadic macros: Variadic Macros. (line 6)
67015 * VAX options: VAX Options. (line 6)
67016 * vector function attribute, RX: RX Function Attributes.
67018 * vector types, using with x86 intrinsics: Vector Extensions.
67020 * vector_size type attribute: Common Type Attributes.
67022 * vector_size variable attribute: Common Variable Attributes.
67024 * version_id function attribute, IA-64: IA-64 Function Attributes.
67026 * vfprintf: Other Builtins. (line 6)
67027 * vfscanf: Other Builtins. (line 6)
67028 * visibility function attribute: Common Function Attributes.
67030 * visibility type attribute: Common Type Attributes.
67032 * visibility variable attribute: Common Variable Attributes.
67034 * Visium options: Visium Options. (line 6)
67035 * VLAs: Variable Length. (line 6)
67036 * vliw function attribute, MeP: MeP Function Attributes.
67038 * void pointers, arithmetic: Pointer Arith. (line 6)
67039 * void, size of pointer to: Pointer Arith. (line 6)
67040 * volatile access: Volatiles. (line 6)
67041 * volatile access <1>: C++ Volatiles. (line 6)
67042 * volatile applied to function: Function Attributes.
67044 * volatile asm: Extended Asm. (line 116)
67045 * volatile read: Volatiles. (line 6)
67046 * volatile read <1>: C++ Volatiles. (line 6)
67047 * volatile write: Volatiles. (line 6)
67048 * volatile write <1>: C++ Volatiles. (line 6)
67049 * vprintf: Other Builtins. (line 6)
67050 * vscanf: Other Builtins. (line 6)
67051 * vsnprintf: Other Builtins. (line 6)
67052 * vsprintf: Other Builtins. (line 6)
67053 * vsscanf: Other Builtins. (line 6)
67054 * vtable: Vague Linkage. (line 27)
67055 * VxWorks Options: VxWorks Options. (line 6)
67056 * w floating point suffix: Floating Types. (line 6)
67057 * W floating point suffix: Floating Types. (line 6)
67058 * wakeup function attribute, MSP430: MSP430 Function Attributes.
67060 * warm function attribute, NDS32: NDS32 Function Attributes.
67062 * warning for comparison of signed and unsigned values: Warning Options.
67064 * warning for overloaded virtual function: C++ Dialect Options.
67066 * warning for reordering of member initializers: C++ Dialect Options.
67068 * warning for unknown pragmas: Warning Options. (line 1299)
67069 * warning function attribute: Common Function Attributes.
67071 * warning GCC_COLORS capability: Diagnostic Message Formatting Options.
67073 * warning messages: Warning Options. (line 6)
67074 * warnings from system headers: Warning Options. (line 1855)
67075 * warnings vs errors: Warnings and Errors.
67077 * warn_if_not_aligned type attribute: Common Type Attributes.
67079 * warn_if_not_aligned variable attribute: Common Variable Attributes.
67081 * warn_unused type attribute: C++ Attributes. (line 71)
67082 * warn_unused_result function attribute: Common Function Attributes.
67084 * weak function attribute: Common Function Attributes.
67086 * weak variable attribute: Common Variable Attributes.
67088 * weakref function attribute: Common Function Attributes.
67090 * whitespace: Incompatibilities. (line 112)
67091 * Windows Options for x86: x86 Windows Options.
67093 * X in constraint: Simple Constraints. (line 122)
67094 * X3.159-1989: Standards. (line 13)
67095 * x86 named address spaces: Named Address Spaces.
67097 * x86 Options: x86 Options. (line 6)
67098 * x86 Windows Options: x86 Windows Options.
67100 * Xstormy16 Options: Xstormy16 Options. (line 6)
67101 * Xtensa Options: Xtensa Options. (line 6)
67102 * y0: Other Builtins. (line 6)
67103 * y0f: Other Builtins. (line 6)
67104 * y0l: Other Builtins. (line 6)
67105 * y1: Other Builtins. (line 6)
67106 * y1f: Other Builtins. (line 6)
67107 * y1l: Other Builtins. (line 6)
67108 * yn: Other Builtins. (line 6)
67109 * ynf: Other Builtins. (line 6)
67110 * ynl: Other Builtins. (line 6)
67111 * zda variable attribute, V850: V850 Variable Attributes.
67113 * zero-length arrays: Zero Length. (line 6)
67114 * zero-size structures: Empty Structures. (line 6)
67115 * zSeries options: zSeries Options. (line 6)