VOP_FSYNC.9: Missing comma
[dragonfly.git] / contrib / gcc-4.7 / gcc / doc / g++.1
1 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
29 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
30 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
31 .\" nothing in troff, for use with C<>.
32 .tr \(*W-
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" Escape single quotes in literal strings from groff's Unicode transform.
52 .ie \n(.g .ds Aq \(aq
53 .el       .ds Aq '
54 .\"
55 .\" If the F register is turned on, we'll generate index entries on stderr for
56 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
57 .\" entries marked with X<> in POD.  Of course, you'll have to process the
58 .\" output yourself in some meaningful fashion.
59 .ie \nF \{\
60 .    de IX
61 .    tm Index:\\$1\t\\n%\t"\\$2"
62 ..
63 .    nr % 0
64 .    rr F
65 .\}
66 .el \{\
67 .    de IX
68 ..
69 .\}
70 .\"
71 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
72 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
73 .    \" fudge factors for nroff and troff
74 .if n \{\
75 .    ds #H 0
76 .    ds #V .8m
77 .    ds #F .3m
78 .    ds #[ \f1
79 .    ds #] \fP
80 .\}
81 .if t \{\
82 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
83 .    ds #V .6m
84 .    ds #F 0
85 .    ds #[ \&
86 .    ds #] \&
87 .\}
88 .    \" simple accents for nroff and troff
89 .if n \{\
90 .    ds ' \&
91 .    ds ` \&
92 .    ds ^ \&
93 .    ds , \&
94 .    ds ~ ~
95 .    ds /
96 .\}
97 .if t \{\
98 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
99 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
100 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
101 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
102 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
103 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
104 .\}
105 .    \" troff and (daisy-wheel) nroff accents
106 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
107 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
108 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
109 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
110 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
111 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
112 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
113 .ds ae a\h'-(\w'a'u*4/10)'e
114 .ds Ae A\h'-(\w'A'u*4/10)'E
115 .    \" corrections for vroff
116 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
117 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
118 .    \" for low resolution devices (crt and lpr)
119 .if \n(.H>23 .if \n(.V>19 \
120 \{\
121 .    ds : e
122 .    ds 8 ss
123 .    ds o a
124 .    ds d- d\h'-1'\(ga
125 .    ds D- D\h'-1'\(hy
126 .    ds th \o'bp'
127 .    ds Th \o'LP'
128 .    ds ae ae
129 .    ds Ae AE
130 .\}
131 .rm #[ #] #H #V #F C
132 .\" ========================================================================
133 .\"
134 .IX Title "GCC 1"
135 .TH GCC 1 "2013-04-11" "gcc-4.7.3" "GNU"
136 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
137 .\" way too many mistakes in technical documents.
138 .if n .ad l
139 .nh
140 .SH "NAME"
141 gcc \- GNU project C and C++ compiler
142 .SH "SYNOPSIS"
143 .IX Header "SYNOPSIS"
144 gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
145     [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
146     [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR]
147     [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
148     [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
149     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...]
150     [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
151 .PP
152 Only the most useful options are listed here; see below for the
153 remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
154 .SH "DESCRIPTION"
155 .IX Header "DESCRIPTION"
156 When you invoke \s-1GCC\s0, it normally does preprocessing, compilation,
157 assembly and linking.  The \*(L"overall options\*(R" allow you to stop this
158 process at an intermediate stage.  For example, the \fB\-c\fR option
159 says not to run the linker.  Then the output consists of object files
160 output by the assembler.
161 .PP
162 Other options are passed on to one stage of processing.  Some options
163 control the preprocessor and others the compiler itself.  Yet other
164 options control the assembler and linker; most of these are not
165 documented here, since you rarely need to use any of them.
166 .PP
167 Most of the command-line options that you can use with \s-1GCC\s0 are useful
168 for C programs; when an option is only useful with another language
169 (usually \*(C+), the explanation says so explicitly.  If the description
170 for a particular option does not mention a source language, you can use
171 that option with all supported languages.
172 .PP
173 The \fBgcc\fR program accepts options and file names as operands.  Many
174 options have multi-letter names; therefore multiple single-letter options
175 may \fInot\fR be grouped: \fB\-dv\fR is very different from \fB\-d\ \-v\fR.
176 .PP
177 You can mix options and other arguments.  For the most part, the order
178 you use doesn't matter.  Order does matter when you use several
179 options of the same kind; for example, if you specify \fB\-L\fR more
180 than once, the directories are searched in the order specified.  Also,
181 the placement of the \fB\-l\fR option is significant.
182 .PP
183 Many options have long names starting with \fB\-f\fR or with
184 \&\fB\-W\fR\-\-\-for example,
185 \&\fB\-fmove\-loop\-invariants\fR, \fB\-Wformat\fR and so on.  Most of
186 these have both positive and negative forms; the negative form of
187 \&\fB\-ffoo\fR would be \fB\-fno\-foo\fR.  This manual documents
188 only one of these two forms, whichever one is not the default.
189 .SH "OPTIONS"
190 .IX Header "OPTIONS"
191 .Sh "Option Summary"
192 .IX Subsection "Option Summary"
193 Here is a summary of all the options, grouped by type.  Explanations are
194 in the following sections.
195 .IP "\fIOverall Options\fR" 4
196 .IX Item "Overall Options"
197 \&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-no\-canonical\-prefixes  
198 \&\-pipe  \-pass\-exit\-codes  
199 \&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help\fR[\fB=\fR\fIclass\fR[\fB,...\fR]]  \fB\-\-target\-help  
200 \&\-\-version \-wrapper @\fR\fIfile\fR \fB\-fplugin=\fR\fIfile\fR \fB\-fplugin\-arg\-\fR\fIname\fR\fB=\fR\fIarg\fR  
201 \&\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] \fB\-fdump\-go\-spec=\fR\fIfile\fR
202 .IP "\fIC Language Options\fR" 4
203 .IX Item "C Language Options"
204 \&\fB\-ansi  \-std=\fR\fIstandard\fR  \fB\-fgnu89\-inline 
205 \&\-aux\-info\fR \fIfilename\fR \fB\-fallow\-parameterless\-variadic\-functions 
206 \&\-fno\-asm  \-fno\-builtin  \-fno\-builtin\-\fR\fIfunction\fR 
207 \&\fB\-fhosted  \-ffreestanding \-fopenmp \-fms\-extensions \-fplan9\-extensions 
208 \&\-trigraphs  \-no\-integrated\-cpp  \-traditional  \-traditional\-cpp 
209 \&\-fallow\-single\-precision  \-fcond\-mismatch \-flax\-vector\-conversions 
210 \&\-fsigned\-bitfields  \-fsigned\-char 
211 \&\-funsigned\-bitfields  \-funsigned\-char\fR
212 .IP "\fI\*(C+ Language Options\fR" 4
213 .IX Item " Language Options"
214 \&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control  \-fcheck\-new 
215 \&\-fconserve\-space  \-fconstexpr\-depth=\fR\fIn\fR  \fB\-ffriend\-injection 
216 \&\-fno\-elide\-constructors 
217 \&\-fno\-enforce\-eh\-specs 
218 \&\-ffor\-scope  \-fno\-for\-scope  \-fno\-gnu\-keywords 
219 \&\-fno\-implicit\-templates 
220 \&\-fno\-implicit\-inline\-templates 
221 \&\-fno\-implement\-inlines  \-fms\-extensions 
222 \&\-fno\-nonansi\-builtins  \-fnothrow\-opt  \-fno\-operator\-names 
223 \&\-fno\-optional\-diags  \-fpermissive 
224 \&\-fno\-pretty\-templates 
225 \&\-frepo  \-fno\-rtti  \-fstats  \-ftemplate\-depth=\fR\fIn\fR 
226 \&\fB\-fno\-threadsafe\-statics \-fuse\-cxa\-atexit  \-fno\-weak  \-nostdinc++ 
227 \&\-fno\-default\-inline  \-fvisibility\-inlines\-hidden 
228 \&\-fvisibility\-ms\-compat 
229 \&\-Wabi  \-Wconversion\-null  \-Wctor\-dtor\-privacy 
230 \&\-Wdelete\-non\-virtual\-dtor \-Wnarrowing \-Wnoexcept 
231 \&\-Wnon\-virtual\-dtor  \-Wreorder 
232 \&\-Weffc++  \-Wstrict\-null\-sentinel 
233 \&\-Wno\-non\-template\-friend  \-Wold\-style\-cast 
234 \&\-Woverloaded\-virtual  \-Wno\-pmf\-conversions 
235 \&\-Wsign\-promo\fR
236 .IP "\fIObjective-C and Objective\-\*(C+ Language Options\fR" 4
237 .IX Item "Objective-C and Objective- Language Options"
238 \&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR 
239 \&\fB\-fgnu\-runtime  \-fnext\-runtime 
240 \&\-fno\-nil\-receivers 
241 \&\-fobjc\-abi\-version=\fR\fIn\fR 
242 \&\fB\-fobjc\-call\-cxx\-cdtors 
243 \&\-fobjc\-direct\-dispatch 
244 \&\-fobjc\-exceptions 
245 \&\-fobjc\-gc 
246 \&\-fobjc\-nilcheck 
247 \&\-fobjc\-std=objc1 
248 \&\-freplace\-objc\-classes 
249 \&\-fzero\-link 
250 \&\-gen\-decls 
251 \&\-Wassign\-intercept 
252 \&\-Wno\-protocol  \-Wselector 
253 \&\-Wstrict\-selector\-match 
254 \&\-Wundeclared\-selector\fR
255 .IP "\fILanguage Independent Options\fR" 4
256 .IX Item "Language Independent Options"
257 \&\fB\-fmessage\-length=\fR\fIn\fR  
258 \&\fB\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR]  
259 \&\fB\-fno\-diagnostics\-show\-option\fR
260 .IP "\fIWarning Options\fR" 4
261 .IX Item "Warning Options"
262 \&\fB\-fsyntax\-only  \-fmax\-errors=\fR\fIn\fR  \fB\-pedantic 
263 \&\-pedantic\-errors 
264 \&\-w  \-Wextra  \-Wall  \-Waddress  \-Waggregate\-return  \-Warray\-bounds 
265 \&\-Wno\-attributes \-Wno\-builtin\-macro\-redefined 
266 \&\-Wc++\-compat \-Wc++11\-compat \-Wcast\-align  \-Wcast\-qual  
267 \&\-Wchar\-subscripts \-Wclobbered  \-Wcomment 
268 \&\-Wconversion  \-Wcoverage\-mismatch  \-Wno\-cpp  \-Wno\-deprecated  
269 \&\-Wno\-deprecated\-declarations \-Wdisabled\-optimization  
270 \&\-Wno\-div\-by\-zero \-Wdouble\-promotion \-Wempty\-body  \-Wenum\-compare 
271 \&\-Wno\-endif\-labels \-Werror  \-Werror=* 
272 \&\-Wfatal\-errors  \-Wfloat\-equal  \-Wformat  \-Wformat=2 
273 \&\-Wno\-format\-contains\-nul \-Wno\-format\-extra\-args \-Wformat\-nonliteral 
274 \&\-Wformat\-security  \-Wformat\-y2k 
275 \&\-Wframe\-larger\-than=\fR\fIlen\fR \fB\-Wno\-free\-nonheap\-object \-Wjump\-misses\-init 
276 \&\-Wignored\-qualifiers 
277 \&\-Wimplicit  \-Wimplicit\-function\-declaration  \-Wimplicit\-int 
278 \&\-Winit\-self  \-Winline \-Wmaybe\-uninitialized 
279 \&\-Wno\-int\-to\-pointer\-cast \-Wno\-invalid\-offsetof 
280 \&\-Winvalid\-pch \-Wlarger\-than=\fR\fIlen\fR  \fB\-Wunsafe\-loop\-optimizations 
281 \&\-Wlogical\-op \-Wlong\-long 
282 \&\-Wmain \-Wmaybe\-uninitialized \-Wmissing\-braces  \-Wmissing\-field\-initializers 
283 \&\-Wmissing\-format\-attribute  \-Wmissing\-include\-dirs 
284 \&\-Wno\-mudflap 
285 \&\-Wno\-multichar  \-Wnonnull  \-Wno\-overflow 
286 \&\-Woverlength\-strings  \-Wpacked  \-Wpacked\-bitfield\-compat  \-Wpadded 
287 \&\-Wparentheses  \-Wpedantic\-ms\-format \-Wno\-pedantic\-ms\-format 
288 \&\-Wpointer\-arith  \-Wno\-pointer\-to\-int\-cast 
289 \&\-Wredundant\-decls 
290 \&\-Wreturn\-type  \-Wsequence\-point  \-Wshadow 
291 \&\-Wsign\-compare  \-Wsign\-conversion  \-Wstack\-protector 
292 \&\-Wstack\-usage=\fR\fIlen\fR \fB\-Wstrict\-aliasing \-Wstrict\-aliasing=n 
293 \&\-Wstrict\-overflow \-Wstrict\-overflow=\fR\fIn\fR 
294 \&\fB\-Wsuggest\-attribute=\fR[\fBpure\fR|\fBconst\fR|\fBnoreturn\fR] 
295 \&\fB\-Wswitch  \-Wswitch\-default  \-Wswitch\-enum \-Wsync\-nand 
296 \&\-Wsystem\-headers  \-Wtrampolines  \-Wtrigraphs  \-Wtype\-limits  \-Wundef 
297 \&\-Wuninitialized  \-Wunknown\-pragmas  \-Wno\-pragmas 
298 \&\-Wunsuffixed\-float\-constants  \-Wunused  \-Wunused\-function 
299 \&\-Wunused\-label  \-Wunused\-local\-typedefs \-Wunused\-parameter 
300 \&\-Wno\-unused\-result \-Wunused\-value  \-Wunused\-variable 
301 \&\-Wunused\-but\-set\-parameter \-Wunused\-but\-set\-variable 
302 \&\-Wvariadic\-macros \-Wvector\-operation\-performance \-Wvla 
303 \&\-Wvolatile\-register\-var  \-Wwrite\-strings \-Wzero\-as\-null\-pointer\-constant\fR
304 .IP "\fIC and Objective-C-only Warning Options\fR" 4
305 .IX Item "C and Objective-C-only Warning Options"
306 \&\fB\-Wbad\-function\-cast  \-Wmissing\-declarations 
307 \&\-Wmissing\-parameter\-type  \-Wmissing\-prototypes  \-Wnested\-externs 
308 \&\-Wold\-style\-declaration  \-Wold\-style\-definition 
309 \&\-Wstrict\-prototypes  \-Wtraditional  \-Wtraditional\-conversion 
310 \&\-Wdeclaration\-after\-statement \-Wpointer\-sign\fR
311 .IP "\fIDebugging Options\fR" 4
312 .IX Item "Debugging Options"
313 \&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion 
314 \&\-fdbg\-cnt\-list \-fdbg\-cnt=\fR\fIcounter-value-list\fR 
315 \&\fB\-fdisable\-ipa\-\fR\fIpass_name\fR 
316 \&\fB\-fdisable\-rtl\-\fR\fIpass_name\fR 
317 \&\fB\-fdisable\-rtl\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR 
318 \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR 
319 \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR 
320 \&\fB\-fdump\-noaddr \-fdump\-unnumbered \-fdump\-unnumbered\-links 
321 \&\-fdump\-translation\-unit\fR[\fB\-\fR\fIn\fR] 
322 \&\fB\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR] 
323 \&\fB\-fdump\-ipa\-all \-fdump\-ipa\-cgraph \-fdump\-ipa\-inline 
324 \&\-fdump\-passes 
325 \&\-fdump\-statistics 
326 \&\-fdump\-tree\-all 
327 \&\-fdump\-tree\-original\fR[\fB\-\fR\fIn\fR]  
328 \&\fB\-fdump\-tree\-optimized\fR[\fB\-\fR\fIn\fR] 
329 \&\fB\-fdump\-tree\-cfg \-fdump\-tree\-vcg \-fdump\-tree\-alias 
330 \&\-fdump\-tree\-ch 
331 \&\-fdump\-tree\-ssa\fR[\fB\-\fR\fIn\fR] \fB\-fdump\-tree\-pre\fR[\fB\-\fR\fIn\fR] 
332 \&\fB\-fdump\-tree\-ccp\fR[\fB\-\fR\fIn\fR] \fB\-fdump\-tree\-dce\fR[\fB\-\fR\fIn\fR] 
333 \&\fB\-fdump\-tree\-gimple\fR[\fB\-raw\fR] \fB\-fdump\-tree\-mudflap\fR[\fB\-\fR\fIn\fR] 
334 \&\fB\-fdump\-tree\-dom\fR[\fB\-\fR\fIn\fR] 
335 \&\fB\-fdump\-tree\-dse\fR[\fB\-\fR\fIn\fR] 
336 \&\fB\-fdump\-tree\-phiprop\fR[\fB\-\fR\fIn\fR] 
337 \&\fB\-fdump\-tree\-phiopt\fR[\fB\-\fR\fIn\fR] 
338 \&\fB\-fdump\-tree\-forwprop\fR[\fB\-\fR\fIn\fR] 
339 \&\fB\-fdump\-tree\-copyrename\fR[\fB\-\fR\fIn\fR] 
340 \&\fB\-fdump\-tree\-nrv \-fdump\-tree\-vect 
341 \&\-fdump\-tree\-sink 
342 \&\-fdump\-tree\-sra\fR[\fB\-\fR\fIn\fR] 
343 \&\fB\-fdump\-tree\-forwprop\fR[\fB\-\fR\fIn\fR] 
344 \&\fB\-fdump\-tree\-fre\fR[\fB\-\fR\fIn\fR] 
345 \&\fB\-fdump\-tree\-vrp\fR[\fB\-\fR\fIn\fR] 
346 \&\fB\-ftree\-vectorizer\-verbose=\fR\fIn\fR 
347 \&\fB\-fdump\-tree\-storeccp\fR[\fB\-\fR\fIn\fR] 
348 \&\fB\-fdump\-final\-insns=\fR\fIfile\fR 
349 \&\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]  \fB\-fcompare\-debug\-second 
350 \&\-feliminate\-dwarf2\-dups \-feliminate\-unused\-debug\-types 
351 \&\-feliminate\-unused\-debug\-symbols \-femit\-class\-debug\-always 
352 \&\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR 
353 \&\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR 
354 \&\fB\-fdebug\-types\-section 
355 \&\-fmem\-report \-fpre\-ipa\-mem\-report \-fpost\-ipa\-mem\-report \-fprofile\-arcs 
356 \&\-frandom\-seed=\fR\fIstring\fR \fB\-fsched\-verbose=\fR\fIn\fR 
357 \&\fB\-fsel\-sched\-verbose \-fsel\-sched\-dump\-cfg \-fsel\-sched\-pipelining\-verbose 
358 \&\-fstack\-usage  \-ftest\-coverage  \-ftime\-report \-fvar\-tracking 
359 \&\-fvar\-tracking\-assignments  \-fvar\-tracking\-assignments\-toggle 
360 \&\-g  \-g\fR\fIlevel\fR  \fB\-gtoggle  \-gcoff  \-gdwarf\-\fR\fIversion\fR 
361 \&\fB\-ggdb  \-grecord\-gcc\-switches  \-gno\-record\-gcc\-switches 
362 \&\-gstabs  \-gstabs+  \-gstrict\-dwarf  \-gno\-strict\-dwarf 
363 \&\-gvms  \-gxcoff  \-gxcoff+ 
364 \&\-fno\-merge\-debug\-strings \-fno\-dwarf2\-cfi\-asm 
365 \&\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 
366 \&\fB\-femit\-struct\-debug\-baseonly \-femit\-struct\-debug\-reduced 
367 \&\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec-list\fR] 
368 \&\fB\-p  \-pg  \-print\-file\-name=\fR\fIlibrary\fR  \fB\-print\-libgcc\-file\-name 
369 \&\-print\-multi\-directory  \-print\-multi\-lib  \-print\-multi\-os\-directory 
370 \&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q 
371 \&\-print\-sysroot \-print\-sysroot\-headers\-suffix 
372 \&\-save\-temps \-save\-temps=cwd \-save\-temps=obj \-time\fR[\fB=\fR\fIfile\fR]
373 .IP "\fIOptimization Options\fR" 4
374 .IX Item "Optimization Options"
375 \&\fB\-falign\-functions[=\fR\fIn\fR\fB] \-falign\-jumps[=\fR\fIn\fR\fB] 
376 \&\-falign\-labels[=\fR\fIn\fR\fB] \-falign\-loops[=\fR\fIn\fR\fB] \-fassociative\-math 
377 \&\-fauto\-inc\-dec \-fbranch\-probabilities \-fbranch\-target\-load\-optimize 
378 \&\-fbranch\-target\-load\-optimize2 \-fbtr\-bb\-exclusive \-fcaller\-saves 
379 \&\-fcheck\-data\-deps \-fcombine\-stack\-adjustments \-fconserve\-stack 
380 \&\-fcompare\-elim \-fcprop\-registers \-fcrossjumping 
381 \&\-fcse\-follow\-jumps \-fcse\-skip\-blocks \-fcx\-fortran\-rules 
382 \&\-fcx\-limited\-range 
383 \&\-fdata\-sections \-fdce \-fdelayed\-branch 
384 \&\-fdelete\-null\-pointer\-checks \-fdevirtualize \-fdse 
385 \&\-fearly\-inlining \-fipa\-sra \-fexpensive\-optimizations \-ffat\-lto\-objects 
386 \&\-ffast\-math \-ffinite\-math\-only \-ffloat\-store \-fexcess\-precision=\fR\fIstyle\fR 
387 \&\fB\-fforward\-propagate \-ffp\-contract=\fR\fIstyle\fR \fB\-ffunction\-sections 
388 \&\-fgcse \-fgcse\-after\-reload \-fgcse\-las \-fgcse\-lm \-fgraphite\-identity 
389 \&\-fgcse\-sm \-fif\-conversion \-fif\-conversion2 \-findirect\-inlining 
390 \&\-finline\-functions \-finline\-functions\-called\-once \-finline\-limit=\fR\fIn\fR 
391 \&\fB\-finline\-small\-functions \-fipa\-cp \-fipa\-cp\-clone \-fipa\-matrix\-reorg 
392 \&\-fipa\-pta \-fipa\-profile \-fipa\-pure\-const \-fipa\-reference 
393 \&\-fira\-algorithm=\fR\fIalgorithm\fR 
394 \&\fB\-fira\-region=\fR\fIregion\fR 
395 \&\fB\-fira\-loop\-pressure \-fno\-ira\-share\-save\-slots 
396 \&\-fno\-ira\-share\-spill\-slots \-fira\-verbose=\fR\fIn\fR 
397 \&\fB\-fivopts \-fkeep\-inline\-functions \-fkeep\-static\-consts 
398 \&\-floop\-block \-floop\-flatten \-floop\-interchange \-floop\-strip\-mine 
399 \&\-floop\-parallelize\-all \-flto \-flto\-compression\-level 
400 \&\-flto\-partition=\fR\fIalg\fR \fB\-flto\-report \-fmerge\-all\-constants 
401 \&\-fmerge\-constants \-fmodulo\-sched \-fmodulo\-sched\-allow\-regmoves 
402 \&\-fmove\-loop\-invariants fmudflap \-fmudflapir \-fmudflapth \-fno\-branch\-count\-reg 
403 \&\-fno\-default\-inline 
404 \&\-fno\-defer\-pop \-fno\-function\-cse \-fno\-guess\-branch\-probability 
405 \&\-fno\-inline \-fno\-math\-errno \-fno\-peephole \-fno\-peephole2 
406 \&\-fno\-sched\-interblock \-fno\-sched\-spec \-fno\-signed\-zeros 
407 \&\-fno\-toplevel\-reorder \-fno\-trapping\-math \-fno\-zero\-initialized\-in\-bss 
408 \&\-fomit\-frame\-pointer \-foptimize\-register\-move \-foptimize\-sibling\-calls 
409 \&\-fpartial\-inlining \-fpeel\-loops \-fpredictive\-commoning 
410 \&\-fprefetch\-loop\-arrays 
411 \&\-fprofile\-correction \-fprofile\-dir=\fR\fIpath\fR \fB\-fprofile\-generate 
412 \&\-fprofile\-generate=\fR\fIpath\fR 
413 \&\fB\-fprofile\-use \-fprofile\-use=\fR\fIpath\fR \fB\-fprofile\-values 
414 \&\-freciprocal\-math \-free \-fregmove \-frename\-registers \-freorder\-blocks 
415 \&\-freorder\-blocks\-and\-partition \-freorder\-functions 
416 \&\-frerun\-cse\-after\-loop \-freschedule\-modulo\-scheduled\-loops 
417 \&\-frounding\-math \-fsched2\-use\-superblocks \-fsched\-pressure 
418 \&\-fsched\-spec\-load \-fsched\-spec\-load\-dangerous 
419 \&\-fsched\-stalled\-insns\-dep[=\fR\fIn\fR\fB] \-fsched\-stalled\-insns[=\fR\fIn\fR\fB] 
420 \&\-fsched\-group\-heuristic \-fsched\-critical\-path\-heuristic 
421 \&\-fsched\-spec\-insn\-heuristic \-fsched\-rank\-heuristic 
422 \&\-fsched\-last\-insn\-heuristic \-fsched\-dep\-count\-heuristic 
423 \&\-fschedule\-insns \-fschedule\-insns2 \-fsection\-anchors 
424 \&\-fselective\-scheduling \-fselective\-scheduling2 
425 \&\-fsel\-sched\-pipelining \-fsel\-sched\-pipelining\-outer\-loops 
426 \&\-fshrink\-wrap \-fsignaling\-nans \-fsingle\-precision\-constant 
427 \&\-fsplit\-ivs\-in\-unroller \-fsplit\-wide\-types \-fstack\-protector 
428 \&\-fstack\-protector\-all \-fstrict\-aliasing \-fstrict\-overflow 
429 \&\-fthread\-jumps \-ftracer \-ftree\-bit\-ccp 
430 \&\-ftree\-builtin\-call\-dce \-ftree\-ccp \-ftree\-ch \-ftree\-copy\-prop 
431 \&\-ftree\-copyrename \-ftree\-dce \-ftree\-dominator\-opts \-ftree\-dse 
432 \&\-ftree\-forwprop \-ftree\-fre \-ftree\-loop\-if\-convert 
433 \&\-ftree\-loop\-if\-convert\-stores \-ftree\-loop\-im 
434 \&\-ftree\-phiprop \-ftree\-loop\-distribution \-ftree\-loop\-distribute\-patterns 
435 \&\-ftree\-loop\-ivcanon \-ftree\-loop\-linear \-ftree\-loop\-optimize 
436 \&\-ftree\-parallelize\-loops=\fR\fIn\fR \fB\-ftree\-pre \-ftree\-pta \-ftree\-reassoc 
437 \&\-ftree\-sink \-ftree\-sra \-ftree\-switch\-conversion \-ftree\-tail\-merge 
438 \&\-ftree\-ter \-ftree\-vect\-loop\-version \-ftree\-vectorize \-ftree\-vrp 
439 \&\-funit\-at\-a\-time \-funroll\-all\-loops \-funroll\-loops 
440 \&\-funsafe\-loop\-optimizations \-funsafe\-math\-optimizations \-funswitch\-loops 
441 \&\-fvariable\-expansion\-in\-unroller \-fvect\-cost\-model \-fvpt \-fweb 
442 \&\-fwhole\-program \-fwpa \-fuse\-linker\-plugin 
443 \&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR
444 \&\fB\-O  \-O0  \-O1  \-O2  \-O3  \-Os \-Ofast\fR
445 .IP "\fIPreprocessor Options\fR" 4
446 .IX Item "Preprocessor Options"
447 \&\fB\-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR 
448 \&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR] 
449 \&\fB\-C  \-dD  \-dI  \-dM  \-dN 
450 \&\-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR]  \fB\-E  \-H 
451 \&\-idirafter\fR \fIdir\fR 
452 \&\fB\-include\fR \fIfile\fR  \fB\-imacros\fR \fIfile\fR 
453 \&\fB\-iprefix\fR \fIfile\fR  \fB\-iwithprefix\fR \fIdir\fR 
454 \&\fB\-iwithprefixbefore\fR \fIdir\fR  \fB\-isystem\fR \fIdir\fR 
455 \&\fB\-imultilib\fR \fIdir\fR \fB\-isysroot\fR \fIdir\fR 
456 \&\fB\-M  \-MM  \-MF  \-MG  \-MP  \-MQ  \-MT  \-nostdinc  
457 \&\-P  \-fdebug\-cpp \-ftrack\-macro\-expansion \-fworking\-directory 
458 \&\-remap \-trigraphs  \-undef  \-U\fR\fImacro\fR  
459 \&\fB\-Wp,\fR\fIoption\fR \fB\-Xpreprocessor\fR \fIoption\fR
460 .IP "\fIAssembler Option\fR" 4
461 .IX Item "Assembler Option"
462 \&\fB\-Wa,\fR\fIoption\fR  \fB\-Xassembler\fR \fIoption\fR
463 .IP "\fILinker Options\fR" 4
464 .IX Item "Linker Options"
465 \&\fIobject-file-name\fR  \fB\-l\fR\fIlibrary\fR 
466 \&\fB\-nostartfiles  \-nodefaultlibs  \-nostdlib \-pie \-rdynamic 
467 \&\-s  \-static  \-static\-libgcc  \-static\-libstdc++ \-shared  
468 \&\-shared\-libgcc  \-symbolic 
469 \&\-T\fR \fIscript\fR  \fB\-Wl,\fR\fIoption\fR  \fB\-Xlinker\fR \fIoption\fR 
470 \&\fB\-u\fR \fIsymbol\fR
471 .IP "\fIDirectory Options\fR" 4
472 .IX Item "Directory Options"
473 \&\fB\-B\fR\fIprefix\fR \fB\-I\fR\fIdir\fR \fB\-iplugindir=\fR\fIdir\fR 
474 \&\fB\-iquote\fR\fIdir\fR \fB\-L\fR\fIdir\fR \fB\-specs=\fR\fIfile\fR \fB\-I\- 
475 \&\-\-sysroot=\fR\fIdir\fR
476 .IP "\fIMachine Dependent Options\fR" 4
477 .IX Item "Machine Dependent Options"
478 \&\fIAdapteva Epiphany Options\fR
479 \&\fB\-mhalf\-reg\-file \-mprefer\-short\-insn\-regs 
480 \&\-mbranch\-cost=\fR\fInum\fR \fB\-mcmove \-mnops=\fR\fInum\fR \fB\-msoft\-cmpsf 
481 \&\-msplit\-lohi \-mpost\-inc \-mpost\-modify \-mstack\-offset=\fR\fInum\fR 
482 \&\fB\-mround\-nearest \-mlong\-calls \-mshort\-calls \-msmall16 
483 \&\-mfp\-mode=\fR\fImode\fR \fB\-mvect\-double \-max\-vect\-align=\fR\fInum\fR 
484 \&\fB\-msplit\-vecmove\-early \-m1reg\-\fR\fIreg\fR
485 .Sp
486 \&\fI\s-1ARM\s0 Options\fR
487 \&\fB\-mapcs\-frame  \-mno\-apcs\-frame 
488 \&\-mabi=\fR\fIname\fR 
489 \&\fB\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check 
490 \&\-mapcs\-float  \-mno\-apcs\-float 
491 \&\-mapcs\-reentrant  \-mno\-apcs\-reentrant 
492 \&\-msched\-prolog  \-mno\-sched\-prolog 
493 \&\-mlittle\-endian  \-mbig\-endian  \-mwords\-little\-endian 
494 \&\-mfloat\-abi=\fR\fIname\fR  \fB\-mfpe 
495 \&\-mfp16\-format=\fR\fIname\fR
496 \&\fB\-mthumb\-interwork  \-mno\-thumb\-interwork 
497 \&\-mcpu=\fR\fIname\fR  \fB\-march=\fR\fIname\fR  \fB\-mfpu=\fR\fIname\fR  
498 \&\fB\-mstructure\-size\-boundary=\fR\fIn\fR 
499 \&\fB\-mabort\-on\-noreturn 
500 \&\-mlong\-calls  \-mno\-long\-calls 
501 \&\-msingle\-pic\-base  \-mno\-single\-pic\-base 
502 \&\-mpic\-register=\fR\fIreg\fR 
503 \&\fB\-mnop\-fun\-dllimport 
504 \&\-mcirrus\-fix\-invalid\-insns \-mno\-cirrus\-fix\-invalid\-insns 
505 \&\-mpoke\-function\-name 
506 \&\-mthumb  \-marm 
507 \&\-mtpcs\-frame  \-mtpcs\-leaf\-frame 
508 \&\-mcaller\-super\-interworking  \-mcallee\-super\-interworking 
509 \&\-mtp=\fR\fIname\fR \fB\-mtls\-dialect=\fR\fIdialect\fR 
510 \&\fB\-mword\-relocations 
511 \&\-mfix\-cortex\-m3\-ldrd 
512 \&\-munaligned\-access\fR
513 .Sp
514 \&\fI\s-1AVR\s0 Options\fR
515 \&\fB\-mmcu=\fR\fImcu\fR \fB\-maccumulate\-args \-mbranch\-cost=\fR\fIcost\fR 
516 \&\fB\-mcall\-prologues \-mint8 \-mno\-interrupts \-mrelax \-mshort\-calls 
517 \&\-mstrict\-X \-mtiny\-stack\fR
518 .Sp
519 \&\fIBlackfin Options\fR
520 \&\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 
521 \&\fB\-msim \-momit\-leaf\-frame\-pointer  \-mno\-omit\-leaf\-frame\-pointer 
522 \&\-mspecld\-anomaly  \-mno\-specld\-anomaly  \-mcsync\-anomaly  \-mno\-csync\-anomaly 
523 \&\-mlow\-64k \-mno\-low64k  \-mstack\-check\-l1  \-mid\-shared\-library 
524 \&\-mno\-id\-shared\-library  \-mshared\-library\-id=\fR\fIn\fR 
525 \&\fB\-mleaf\-id\-shared\-library  \-mno\-leaf\-id\-shared\-library 
526 \&\-msep\-data  \-mno\-sep\-data  \-mlong\-calls  \-mno\-long\-calls 
527 \&\-mfast\-fp \-minline\-plt \-mmulticore  \-mcorea  \-mcoreb  \-msdram 
528 \&\-micplb\fR
529 .Sp
530 \&\fIC6X Options\fR
531 \&\fB\-mbig\-endian  \-mlittle\-endian \-march=\fR\fIcpu\fR 
532 \&\fB\-msim \-msdata=\fR\fIsdata-type\fR
533 .Sp
534 \&\fI\s-1CRIS\s0 Options\fR
535 \&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR  \fB\-mtune=\fR\fIcpu\fR 
536 \&\fB\-mmax\-stack\-frame=\fR\fIn\fR  \fB\-melinux\-stacksize=\fR\fIn\fR 
537 \&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects 
538 \&\-mstack\-align  \-mdata\-align  \-mconst\-align 
539 \&\-m32\-bit  \-m16\-bit  \-m8\-bit  \-mno\-prologue\-epilogue  \-mno\-gotplt 
540 \&\-melf  \-maout  \-melinux  \-mlinux  \-sim  \-sim2 
541 \&\-mmul\-bug\-workaround  \-mno\-mul\-bug\-workaround\fR
542 .Sp
543 \&\fI\s-1CR16\s0 Options\fR
544 \&\fB\-mmac 
545 \&\-mcr16cplus \-mcr16c 
546 \&\-msim \-mint32 \-mbit\-ops
547 \&\-mdata\-model=\fR\fImodel\fR
548 .Sp
549 \&\fIDarwin Options\fR
550 \&\fB\-all_load  \-allowable_client  \-arch  \-arch_errors_fatal 
551 \&\-arch_only  \-bind_at_load  \-bundle  \-bundle_loader 
552 \&\-client_name  \-compatibility_version  \-current_version 
553 \&\-dead_strip 
554 \&\-dependency\-file  \-dylib_file  \-dylinker_install_name 
555 \&\-dynamic  \-dynamiclib  \-exported_symbols_list 
556 \&\-filelist  \-flat_namespace  \-force_cpusubtype_ALL 
557 \&\-force_flat_namespace  \-headerpad_max_install_names 
558 \&\-iframework 
559 \&\-image_base  \-init  \-install_name  \-keep_private_externs 
560 \&\-multi_module  \-multiply_defined  \-multiply_defined_unused 
561 \&\-noall_load   \-no_dead_strip_inits_and_terms 
562 \&\-nofixprebinding \-nomultidefs  \-noprebind  \-noseglinkedit 
563 \&\-pagezero_size  \-prebind  \-prebind_all_twolevel_modules 
564 \&\-private_bundle  \-read_only_relocs  \-sectalign 
565 \&\-sectobjectsymbols  \-whyload  \-seg1addr 
566 \&\-sectcreate  \-sectobjectsymbols  \-sectorder 
567 \&\-segaddr \-segs_read_only_addr \-segs_read_write_addr 
568 \&\-seg_addr_table  \-seg_addr_table_filename  \-seglinkedit 
569 \&\-segprot  \-segs_read_only_addr  \-segs_read_write_addr 
570 \&\-single_module  \-static  \-sub_library  \-sub_umbrella 
571 \&\-twolevel_namespace  \-umbrella  \-undefined 
572 \&\-unexported_symbols_list  \-weak_reference_mismatches 
573 \&\-whatsloaded \-F \-gused \-gfull \-mmacosx\-version\-min=\fR\fIversion\fR 
574 \&\fB\-mkernel \-mone\-byte\-bool\fR
575 .Sp
576 \&\fI\s-1DEC\s0 Alpha Options\fR
577 \&\fB\-mno\-fp\-regs  \-msoft\-float  \-malpha\-as  \-mgas 
578 \&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant 
579 \&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR 
580 \&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants 
581 \&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR 
582 \&\fB\-mbwx  \-mmax  \-mfix  \-mcix 
583 \&\-mfloat\-vax  \-mfloat\-ieee 
584 \&\-mexplicit\-relocs  \-msmall\-data  \-mlarge\-data 
585 \&\-msmall\-text  \-mlarge\-text 
586 \&\-mmemory\-latency=\fR\fItime\fR
587 .Sp
588 \&\fI\s-1DEC\s0 Alpha/VMS Options\fR
589 \&\fB\-mvms\-return\-codes \-mdebug\-main=\fR\fIprefix\fR \fB\-mmalloc64\fR
590 .Sp
591 \&\fI\s-1FR30\s0 Options\fR
592 \&\fB\-msmall\-model \-mno\-lsim\fR
593 .Sp
594 \&\fI\s-1FRV\s0 Options\fR
595 \&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64 
596 \&\-mhard\-float  \-msoft\-float 
597 \&\-malloc\-cc  \-mfixed\-cc  \-mdword  \-mno\-dword 
598 \&\-mdouble  \-mno\-double 
599 \&\-mmedia  \-mno\-media  \-mmuladd  \-mno\-muladd 
600 \&\-mfdpic  \-minline\-plt \-mgprel\-ro  \-multilib\-library\-pic 
601 \&\-mlinked\-fp  \-mlong\-calls  \-malign\-labels 
602 \&\-mlibrary\-pic  \-macc\-4  \-macc\-8 
603 \&\-mpack  \-mno\-pack  \-mno\-eflags  \-mcond\-move  \-mno\-cond\-move 
604 \&\-moptimize\-membar \-mno\-optimize\-membar 
605 \&\-mscc  \-mno\-scc  \-mcond\-exec  \-mno\-cond\-exec 
606 \&\-mvliw\-branch  \-mno\-vliw\-branch 
607 \&\-mmulti\-cond\-exec  \-mno\-multi\-cond\-exec  \-mnested\-cond\-exec 
608 \&\-mno\-nested\-cond\-exec  \-mtomcat\-stats 
609 \&\-mTLS \-mtls 
610 \&\-mcpu=\fR\fIcpu\fR
611 .Sp
612 \&\fIGNU/Linux Options\fR
613 \&\fB\-mglibc \-muclibc \-mbionic \-mandroid 
614 \&\-tno\-android\-cc \-tno\-android\-ld\fR
615 .Sp
616 \&\fIH8/300 Options\fR
617 \&\fB\-mrelax  \-mh  \-ms  \-mn  \-mint32  \-malign\-300\fR
618 .Sp
619 \&\fI\s-1HPPA\s0 Options\fR
620 \&\fB\-march=\fR\fIarchitecture-type\fR 
621 \&\fB\-mbig\-switch  \-mdisable\-fpregs  \-mdisable\-indexing 
622 \&\-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld   \-mhp\-ld 
623 \&\-mfixed\-range=\fR\fIregister-range\fR 
624 \&\fB\-mjump\-in\-delay \-mlinker\-opt \-mlong\-calls 
625 \&\-mlong\-load\-store  \-mno\-big\-switch  \-mno\-disable\-fpregs 
626 \&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas 
627 \&\-mno\-jump\-in\-delay  \-mno\-long\-load\-store 
628 \&\-mno\-portable\-runtime  \-mno\-soft\-float 
629 \&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0 
630 \&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime 
631 \&\-mschedule=\fR\fIcpu-type\fR  \fB\-mspace\-regs  \-msio  \-mwsio 
632 \&\-munix=\fR\fIunix-std\fR  \fB\-nolibdld  \-static  \-threads\fR
633 .Sp
634 \&\fIi386 and x86\-64 Options\fR
635 \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR 
636 \&\fB\-mfpmath=\fR\fIunit\fR 
637 \&\fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387 
638 \&\-mno\-fp\-ret\-in\-387  \-msoft\-float 
639 \&\-mno\-wide\-multiply  \-mrtd  \-malign\-double 
640 \&\-mpreferred\-stack\-boundary=\fR\fInum\fR 
641 \&\fB\-mincoming\-stack\-boundary=\fR\fInum\fR 
642 \&\fB\-mcld \-mcx16 \-msahf \-mmovbe \-mcrc32 
643 \&\-mrecip \-mrecip=\fR\fIopt\fR 
644 \&\fB\-mvzeroupper \-mprefer\-avx128 
645 \&\-mmmx  \-msse  \-msse2 \-msse3 \-mssse3 \-msse4.1 \-msse4.2 \-msse4 \-mavx 
646 \&\-mavx2 \-maes \-mpclmul \-mfsgsbase \-mrdrnd \-mf16c \-mfma 
647 \&\-msse4a \-m3dnow \-mpopcnt \-mabm \-mbmi \-mtbm \-mfma4 \-mxop \-mlzcnt 
648 \&\-mbmi2 \-mlwp \-mthreads  \-mno\-align\-stringops  \-minline\-all\-stringops 
649 \&\-minline\-stringops\-dynamically \-mstringop\-strategy=\fR\fIalg\fR 
650 \&\fB\-mpush\-args  \-maccumulate\-outgoing\-args  \-m128bit\-long\-double 
651 \&\-m96bit\-long\-double  \-mregparm=\fR\fInum\fR  \fB\-msseregparm 
652 \&\-mveclibabi=\fR\fItype\fR \fB\-mvect8\-ret\-in\-mem 
653 \&\-mpc32 \-mpc64 \-mpc80 \-mstackrealign 
654 \&\-momit\-leaf\-frame\-pointer  \-mno\-red\-zone \-mno\-tls\-direct\-seg\-refs 
655 \&\-mcmodel=\fR\fIcode-model\fR \fB\-mabi=\fR\fIname\fR 
656 \&\fB\-m32 \-m64 \-mx32 \-mlarge\-data\-threshold=\fR\fInum\fR 
657 \&\fB\-msse2avx \-mfentry \-m8bit\-idiv 
658 \&\-mavx256\-split\-unaligned\-load \-mavx256\-split\-unaligned\-store\fR
659 .Sp
660 \&\fIi386 and x86\-64 Windows Options\fR
661 \&\fB\-mconsole \-mcygwin \-mno\-cygwin \-mdll 
662 \&\-mnop\-fun\-dllimport \-mthread 
663 \&\-municode \-mwin32 \-mwindows \-fno\-set\-stack\-executable\fR
664 .Sp
665 \&\fI\s-1IA\-64\s0 Options\fR
666 \&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic 
667 \&\-mvolatile\-asm\-stop  \-mregister\-names  \-msdata \-mno\-sdata 
668 \&\-mconstant\-gp  \-mauto\-pic  \-mfused\-madd 
669 \&\-minline\-float\-divide\-min\-latency 
670 \&\-minline\-float\-divide\-max\-throughput 
671 \&\-mno\-inline\-float\-divide 
672 \&\-minline\-int\-divide\-min\-latency 
673 \&\-minline\-int\-divide\-max\-throughput  
674 \&\-mno\-inline\-int\-divide 
675 \&\-minline\-sqrt\-min\-latency \-minline\-sqrt\-max\-throughput 
676 \&\-mno\-inline\-sqrt 
677 \&\-mdwarf2\-asm \-mearly\-stop\-bits 
678 \&\-mfixed\-range=\fR\fIregister-range\fR \fB\-mtls\-size=\fR\fItls-size\fR 
679 \&\fB\-mtune=\fR\fIcpu-type\fR \fB\-milp32 \-mlp64 
680 \&\-msched\-br\-data\-spec \-msched\-ar\-data\-spec \-msched\-control\-spec 
681 \&\-msched\-br\-in\-data\-spec \-msched\-ar\-in\-data\-spec \-msched\-in\-control\-spec 
682 \&\-msched\-spec\-ldc \-msched\-spec\-control\-ldc 
683 \&\-msched\-prefer\-non\-data\-spec\-insns \-msched\-prefer\-non\-control\-spec\-insns 
684 \&\-msched\-stop\-bits\-after\-every\-cycle \-msched\-count\-spec\-in\-critical\-path 
685 \&\-msel\-sched\-dont\-check\-control\-spec \-msched\-fp\-mem\-deps\-zero\-cost 
686 \&\-msched\-max\-memory\-insns\-hard\-limit \-msched\-max\-memory\-insns=\fR\fImax-insns\fR
687 .Sp
688 \&\fI\s-1IA\-64/VMS\s0 Options\fR
689 \&\fB\-mvms\-return\-codes \-mdebug\-main=\fR\fIprefix\fR \fB\-mmalloc64\fR
690 .Sp
691 \&\fI\s-1LM32\s0 Options\fR
692 \&\fB\-mbarrel\-shift\-enabled \-mdivide\-enabled \-mmultiply\-enabled 
693 \&\-msign\-extend\-enabled \-muser\-enabled\fR
694 .Sp
695 \&\fIM32R/D Options\fR
696 \&\fB\-m32r2 \-m32rx \-m32r 
697 \&\-mdebug 
698 \&\-malign\-loops \-mno\-align\-loops 
699 \&\-missue\-rate=\fR\fInumber\fR 
700 \&\fB\-mbranch\-cost=\fR\fInumber\fR 
701 \&\fB\-mmodel=\fR\fIcode-size-model-type\fR 
702 \&\fB\-msdata=\fR\fIsdata-type\fR 
703 \&\fB\-mno\-flush\-func \-mflush\-func=\fR\fIname\fR 
704 \&\fB\-mno\-flush\-trap \-mflush\-trap=\fR\fInumber\fR 
705 \&\fB\-G\fR \fInum\fR
706 .Sp
707 \&\fIM32C Options\fR
708 \&\fB\-mcpu=\fR\fIcpu\fR \fB\-msim \-memregs=\fR\fInumber\fR
709 .Sp
710 \&\fIM680x0 Options\fR
711 \&\fB\-march=\fR\fIarch\fR  \fB\-mcpu=\fR\fIcpu\fR  \fB\-mtune=\fR\fItune\fR
712 \&\fB\-m68000  \-m68020  \-m68020\-40  \-m68020\-60  \-m68030  \-m68040 
713 \&\-m68060  \-mcpu32  \-m5200  \-m5206e  \-m528x  \-m5307  \-m5407 
714 \&\-mcfv4e  \-mbitfield  \-mno\-bitfield  \-mc68000  \-mc68020 
715 \&\-mnobitfield  \-mrtd  \-mno\-rtd  \-mdiv  \-mno\-div  \-mshort 
716 \&\-mno\-short  \-mhard\-float  \-m68881  \-msoft\-float  \-mpcrel 
717 \&\-malign\-int  \-mstrict\-align  \-msep\-data  \-mno\-sep\-data 
718 \&\-mshared\-library\-id=n  \-mid\-shared\-library  \-mno\-id\-shared\-library 
719 \&\-mxgot \-mno\-xgot\fR
720 .Sp
721 \&\fIMCore Options\fR
722 \&\fB\-mhardlit  \-mno\-hardlit  \-mdiv  \-mno\-div  \-mrelax\-immediates 
723 \&\-mno\-relax\-immediates  \-mwide\-bitfields  \-mno\-wide\-bitfields 
724 \&\-m4byte\-functions  \-mno\-4byte\-functions  \-mcallgraph\-data 
725 \&\-mno\-callgraph\-data  \-mslow\-bytes  \-mno\-slow\-bytes  \-mno\-lsim 
726 \&\-mlittle\-endian  \-mbig\-endian  \-m210  \-m340  \-mstack\-increment\fR
727 .Sp
728 \&\fIMeP Options\fR
729 \&\fB\-mabsdiff \-mall\-opts \-maverage \-mbased=\fR\fIn\fR \fB\-mbitops 
730 \&\-mc=\fR\fIn\fR \fB\-mclip \-mconfig=\fR\fIname\fR \fB\-mcop \-mcop32 \-mcop64 \-mivc2 
731 \&\-mdc \-mdiv \-meb \-mel \-mio\-volatile \-ml \-mleadz \-mm \-mminmax 
732 \&\-mmult \-mno\-opts \-mrepeat \-ms \-msatur \-msdram \-msim \-msimnovec \-mtf 
733 \&\-mtiny=\fR\fIn\fR
734 .Sp
735 \&\fIMicroBlaze Options\fR
736 \&\fB\-msoft\-float \-mhard\-float \-msmall\-divides \-mcpu=\fR\fIcpu\fR 
737 \&\fB\-mmemcpy \-mxl\-soft\-mul \-mxl\-soft\-div \-mxl\-barrel\-shift 
738 \&\-mxl\-pattern\-compare \-mxl\-stack\-check \-mxl\-gp\-opt \-mno\-clearbss 
739 \&\-mxl\-multiply\-high \-mxl\-float\-convert \-mxl\-float\-sqrt 
740 \&\-mxl\-mode\-\fR\fIapp-model\fR
741 .Sp
742 \&\fI\s-1MIPS\s0 Options\fR
743 \&\fB\-EL  \-EB  \-march=\fR\fIarch\fR  \fB\-mtune=\fR\fIarch\fR 
744 \&\fB\-mips1  \-mips2  \-mips3  \-mips4  \-mips32  \-mips32r2 
745 \&\-mips64  \-mips64r2 
746 \&\-mips16  \-mno\-mips16  \-mflip\-mips16 
747 \&\-minterlink\-mips16  \-mno\-interlink\-mips16 
748 \&\-mabi=\fR\fIabi\fR  \fB\-mabicalls  \-mno\-abicalls 
749 \&\-mshared  \-mno\-shared  \-mplt  \-mno\-plt  \-mxgot  \-mno\-xgot 
750 \&\-mgp32  \-mgp64  \-mfp32  \-mfp64  \-mhard\-float  \-msoft\-float 
751 \&\-msingle\-float  \-mdouble\-float  \-mdsp  \-mno\-dsp  \-mdspr2  \-mno\-dspr2 
752 \&\-mfpu=\fR\fIfpu-type\fR 
753 \&\fB\-msmartmips  \-mno\-smartmips 
754 \&\-mpaired\-single  \-mno\-paired\-single  \-mdmx  \-mno\-mdmx 
755 \&\-mips3d  \-mno\-mips3d  \-mmt  \-mno\-mt  \-mllsc  \-mno\-llsc 
756 \&\-mlong64  \-mlong32  \-msym32  \-mno\-sym32 
757 \&\-G\fR\fInum\fR  \fB\-mlocal\-sdata  \-mno\-local\-sdata 
758 \&\-mextern\-sdata  \-mno\-extern\-sdata  \-mgpopt  \-mno\-gopt 
759 \&\-membedded\-data  \-mno\-embedded\-data 
760 \&\-muninit\-const\-in\-rodata  \-mno\-uninit\-const\-in\-rodata 
761 \&\-mcode\-readable=\fR\fIsetting\fR 
762 \&\fB\-msplit\-addresses  \-mno\-split\-addresses 
763 \&\-mexplicit\-relocs  \-mno\-explicit\-relocs 
764 \&\-mcheck\-zero\-division  \-mno\-check\-zero\-division 
765 \&\-mdivide\-traps  \-mdivide\-breaks 
766 \&\-mmemcpy  \-mno\-memcpy  \-mlong\-calls  \-mno\-long\-calls 
767 \&\-mmad  \-mno\-mad  \-mfused\-madd  \-mno\-fused\-madd  \-nocpp 
768 \&\-mfix\-24k \-mno\-fix\-24k 
769 \&\-mfix\-r4000  \-mno\-fix\-r4000  \-mfix\-r4400  \-mno\-fix\-r4400 
770 \&\-mfix\-r10000 \-mno\-fix\-r10000  \-mfix\-vr4120  \-mno\-fix\-vr4120 
771 \&\-mfix\-vr4130  \-mno\-fix\-vr4130  \-mfix\-sb1  \-mno\-fix\-sb1 
772 \&\-mflush\-func=\fR\fIfunc\fR  \fB\-mno\-flush\-func 
773 \&\-mbranch\-cost=\fR\fInum\fR  \fB\-mbranch\-likely  \-mno\-branch\-likely 
774 \&\-mfp\-exceptions \-mno\-fp\-exceptions 
775 \&\-mvr4130\-align \-mno\-vr4130\-align \-msynci \-mno\-synci 
776 \&\-mrelax\-pic\-calls \-mno\-relax\-pic\-calls \-mmcount\-ra\-address\fR
777 .Sp
778 \&\fI\s-1MMIX\s0 Options\fR
779 \&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu 
780 \&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols 
781 \&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses 
782 \&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
783 .Sp
784 \&\fI\s-1MN10300\s0 Options\fR
785 \&\fB\-mmult\-bug  \-mno\-mult\-bug 
786 \&\-mno\-am33 \-mam33 \-mam33\-2 \-mam34 
787 \&\-mtune=\fR\fIcpu-type\fR 
788 \&\fB\-mreturn\-pointer\-on\-d0 
789 \&\-mno\-crt0  \-mrelax \-mliw \-msetlb\fR
790 .Sp
791 \&\fI\s-1PDP\-11\s0 Options\fR
792 \&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10 
793 \&\-mbcopy  \-mbcopy\-builtin  \-mint32  \-mno\-int16 
794 \&\-mint16  \-mno\-int32  \-mfloat32  \-mno\-float64 
795 \&\-mfloat64  \-mno\-float32  \-mabshi  \-mno\-abshi 
796 \&\-mbranch\-expensive  \-mbranch\-cheap 
797 \&\-munix\-asm  \-mdec\-asm\fR
798 .Sp
799 \&\fIpicoChip Options\fR
800 \&\fB\-mae=\fR\fIae_type\fR \fB\-mvliw\-lookahead=\fR\fIN\fR 
801 \&\fB\-msymbol\-as\-address \-mno\-inefficient\-warnings\fR
802 .Sp
803 \&\fIPowerPC Options\fR
804 See \s-1RS/6000\s0 and PowerPC Options.
805 .Sp
806 \&\fI\s-1RL78\s0 Options\fR
807 \&\fB\-msim \-mmul=none \-mmul=g13 \-mmul=rl78\fR
808 .Sp
809 \&\fI\s-1RS/6000\s0 and PowerPC Options\fR
810 \&\fB\-mcpu=\fR\fIcpu-type\fR 
811 \&\fB\-mtune=\fR\fIcpu-type\fR 
812 \&\fB\-mcmodel=\fR\fIcode-model\fR 
813 \&\fB\-mpower  \-mno\-power  \-mpower2  \-mno\-power2 
814 \&\-mpowerpc  \-mpowerpc64  \-mno\-powerpc 
815 \&\-maltivec  \-mno\-altivec 
816 \&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt 
817 \&\-mpowerpc\-gfxopt  \-mno\-powerpc\-gfxopt 
818 \&\-mmfcrf  \-mno\-mfcrf  \-mpopcntb  \-mno\-popcntb \-mpopcntd \-mno\-popcntd 
819 \&\-mfprnd  \-mno\-fprnd 
820 \&\-mcmpb \-mno\-cmpb \-mmfpgpr \-mno\-mfpgpr \-mhard\-dfp \-mno\-hard\-dfp 
821 \&\-mnew\-mnemonics  \-mold\-mnemonics 
822 \&\-mfull\-toc   \-mminimal\-toc  \-mno\-fp\-in\-toc  \-mno\-sum\-in\-toc 
823 \&\-m64  \-m32  \-mxl\-compat  \-mno\-xl\-compat  \-mpe 
824 \&\-malign\-power  \-malign\-natural 
825 \&\-msoft\-float  \-mhard\-float  \-mmultiple  \-mno\-multiple 
826 \&\-msingle\-float \-mdouble\-float \-msimple\-fpu 
827 \&\-mstring  \-mno\-string  \-mupdate  \-mno\-update 
828 \&\-mavoid\-indexed\-addresses  \-mno\-avoid\-indexed\-addresses 
829 \&\-mfused\-madd  \-mno\-fused\-madd  \-mbit\-align  \-mno\-bit\-align 
830 \&\-mstrict\-align  \-mno\-strict\-align  \-mrelocatable 
831 \&\-mno\-relocatable  \-mrelocatable\-lib  \-mno\-relocatable\-lib 
832 \&\-mtoc  \-mno\-toc  \-mlittle  \-mlittle\-endian  \-mbig  \-mbig\-endian 
833 \&\-mdynamic\-no\-pic  \-maltivec \-mswdiv  \-msingle\-pic\-base 
834 \&\-mprioritize\-restricted\-insns=\fR\fIpriority\fR 
835 \&\fB\-msched\-costly\-dep=\fR\fIdependence_type\fR 
836 \&\fB\-minsert\-sched\-nops=\fR\fIscheme\fR 
837 \&\fB\-mcall\-sysv  \-mcall\-netbsd 
838 \&\-maix\-struct\-return  \-msvr4\-struct\-return 
839 \&\-mabi=\fR\fIabi-type\fR \fB\-msecure\-plt \-mbss\-plt 
840 \&\-mblock\-move\-inline\-limit=\fR\fInum\fR 
841 \&\fB\-misel \-mno\-isel 
842 \&\-misel=yes  \-misel=no 
843 \&\-mspe \-mno\-spe 
844 \&\-mspe=yes  \-mspe=no 
845 \&\-mpaired 
846 \&\-mgen\-cell\-microcode \-mwarn\-cell\-microcode 
847 \&\-mvrsave \-mno\-vrsave 
848 \&\-mmulhw \-mno\-mulhw 
849 \&\-mdlmzb \-mno\-dlmzb 
850 \&\-mfloat\-gprs=yes  \-mfloat\-gprs=no \-mfloat\-gprs=single \-mfloat\-gprs=double 
851 \&\-mprototype  \-mno\-prototype 
852 \&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata 
853 \&\-msdata=\fR\fIopt\fR  \fB\-mvxworks  \-G\fR \fInum\fR  \fB\-pthread 
854 \&\-mrecip \-mrecip=\fR\fIopt\fR \fB\-mno\-recip \-mrecip\-precision 
855 \&\-mno\-recip\-precision 
856 \&\-mveclibabi=\fR\fItype\fR \fB\-mfriz \-mno\-friz 
857 \&\-mpointers\-to\-nested\-functions \-mno\-pointers\-to\-nested\-functions 
858 \&\-msave\-toc\-indirect \-mno\-save\-toc\-indirect\fR
859 .Sp
860 \&\fI\s-1RX\s0 Options\fR
861 \&\fB\-m64bit\-doubles  \-m32bit\-doubles  \-fpu  \-nofpu
862 \&\-mcpu=
863 \&\-mbig\-endian\-data \-mlittle\-endian\-data 
864 \&\-msmall\-data 
865 \&\-msim  \-mno\-sim
866 \&\-mas100\-syntax \-mno\-as100\-syntax
867 \&\-mrelax
868 \&\-mmax\-constant\-size=
869 \&\-mint\-register=
870 \&\-mpid
871 \&\-msave\-acc\-in\-interrupts\fR
872 .Sp
873 \&\fIS/390 and zSeries Options\fR
874 \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR 
875 \&\fB\-mhard\-float  \-msoft\-float  \-mhard\-dfp \-mno\-hard\-dfp 
876 \&\-mlong\-double\-64 \-mlong\-double\-128 
877 \&\-mbackchain  \-mno\-backchain \-mpacked\-stack  \-mno\-packed\-stack 
878 \&\-msmall\-exec  \-mno\-small\-exec  \-mmvcle \-mno\-mvcle 
879 \&\-m64  \-m31  \-mdebug  \-mno\-debug  \-mesa  \-mzarch 
880 \&\-mtpf\-trace \-mno\-tpf\-trace  \-mfused\-madd  \-mno\-fused\-madd 
881 \&\-mwarn\-framesize  \-mwarn\-dynamicstack  \-mstack\-size \-mstack\-guard\fR
882 .Sp
883 \&\fIScore Options\fR
884 \&\fB\-meb \-mel 
885 \&\-mnhwloop 
886 \&\-muls 
887 \&\-mmac 
888 \&\-mscore5 \-mscore5u \-mscore7 \-mscore7d\fR
889 .Sp
890 \&\fI\s-1SH\s0 Options\fR
891 \&\fB\-m1  \-m2  \-m2e 
892 \&\-m2a\-nofpu \-m2a\-single\-only \-m2a\-single \-m2a 
893 \&\-m3  \-m3e 
894 \&\-m4\-nofpu  \-m4\-single\-only  \-m4\-single  \-m4 
895 \&\-m4a\-nofpu \-m4a\-single\-only \-m4a\-single \-m4a \-m4al 
896 \&\-m5\-64media  \-m5\-64media\-nofpu 
897 \&\-m5\-32media  \-m5\-32media\-nofpu 
898 \&\-m5\-compact  \-m5\-compact\-nofpu 
899 \&\-mb  \-ml  \-mdalign  \-mrelax 
900 \&\-mbigtable \-mfmovd \-mhitachi \-mrenesas \-mno\-renesas \-mnomacsave 
901 \&\-mieee \-mno\-ieee \-mbitops  \-misize  \-minline\-ic_invalidate \-mpadstruct 
902 \&\-mspace \-mprefergot  \-musermode \-multcost=\fR\fInumber\fR \fB\-mdiv=\fR\fIstrategy\fR 
903 \&\fB\-mdivsi3_libfunc=\fR\fIname\fR \fB\-mfixed\-range=\fR\fIregister-range\fR 
904 \&\fB\-madjust\-unroll \-mindexed\-addressing \-mgettrcost=\fR\fInumber\fR \fB\-mpt\-fixed 
905 \&\-maccumulate\-outgoing\-args \-minvalid\-symbols \-msoft\-atomic 
906 \&\-mbranch\-cost=\fR\fInum\fR \fB\-mcbranchdi \-mcmpeqdi \-mfused\-madd \-mpretend\-cmove\fR
907 .Sp
908 \&\fISolaris 2 Options\fR
909 \&\fB\-mimpure\-text  \-mno\-impure\-text 
910 \&\-pthreads \-pthread\fR
911 .Sp
912 \&\fI\s-1SPARC\s0 Options\fR
913 \&\fB\-mcpu=\fR\fIcpu-type\fR 
914 \&\fB\-mtune=\fR\fIcpu-type\fR 
915 \&\fB\-mcmodel=\fR\fIcode-model\fR 
916 \&\fB\-mmemory\-model=\fR\fImem-model\fR 
917 \&\fB\-m32  \-m64  \-mapp\-regs  \-mno\-app\-regs 
918 \&\-mfaster\-structs  \-mno\-faster\-structs  \-mflat  \-mno\-flat 
919 \&\-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float 
920 \&\-mhard\-quad\-float  \-msoft\-quad\-float 
921 \&\-mstack\-bias  \-mno\-stack\-bias 
922 \&\-munaligned\-doubles  \-mno\-unaligned\-doubles 
923 \&\-mv8plus  \-mno\-v8plus  \-mvis  \-mno\-vis 
924 \&\-mvis2  \-mno\-vis2  \-mvis3  \-mno\-vis3 
925 \&\-mfmaf  \-mno\-fmaf  \-mpopc  \-mno\-popc 
926 \&\-mfix\-at697f\fR
927 .Sp
928 \&\fI\s-1SPU\s0 Options\fR
929 \&\fB\-mwarn\-reloc \-merror\-reloc 
930 \&\-msafe\-dma \-munsafe\-dma 
931 \&\-mbranch\-hints 
932 \&\-msmall\-mem \-mlarge\-mem \-mstdmain 
933 \&\-mfixed\-range=\fR\fIregister-range\fR 
934 \&\fB\-mea32 \-mea64 
935 \&\-maddress\-space\-conversion \-mno\-address\-space\-conversion 
936 \&\-mcache\-size=\fR\fIcache-size\fR 
937 \&\fB\-matomic\-updates \-mno\-atomic\-updates\fR
938 .Sp
939 \&\fISystem V Options\fR
940 \&\fB\-Qy  \-Qn  \-YP,\fR\fIpaths\fR  \fB\-Ym,\fR\fIdir\fR
941 .Sp
942 \&\fITILE-Gx Options\fR
943 \&\fB\-mcpu=\fR\fIcpu\fR \fB\-m32 \-m64\fR
944 .Sp
945 \&\fITILEPro Options\fR
946 \&\fB\-mcpu=\fR\fIcpu\fR \fB\-m32\fR
947 .Sp
948 \&\fIV850 Options\fR
949 \&\fB\-mlong\-calls  \-mno\-long\-calls  \-mep  \-mno\-ep 
950 \&\-mprolog\-function  \-mno\-prolog\-function  \-mspace 
951 \&\-mtda=\fR\fIn\fR  \fB\-msda=\fR\fIn\fR  \fB\-mzda=\fR\fIn\fR 
952 \&\fB\-mapp\-regs  \-mno\-app\-regs 
953 \&\-mdisable\-callt  \-mno\-disable\-callt 
954 \&\-mv850e2v3 
955 \&\-mv850e2 
956 \&\-mv850e1 \-mv850es 
957 \&\-mv850e 
958 \&\-mv850  \-mbig\-switch\fR
959 .Sp
960 \&\fI\s-1VAX\s0 Options\fR
961 \&\fB\-mg  \-mgnu  \-munix\fR
962 .Sp
963 \&\fIVxWorks Options\fR
964 \&\fB\-mrtp  \-non\-static  \-Bstatic  \-Bdynamic 
965 \&\-Xbind\-lazy  \-Xbind\-now\fR
966 .Sp
967 \&\fIx86\-64 Options\fR
968 See i386 and x86\-64 Options.
969 .Sp
970 \&\fIXstormy16 Options\fR
971 \&\fB\-msim\fR
972 .Sp
973 \&\fIXtensa Options\fR
974 \&\fB\-mconst16 \-mno\-const16 
975 \&\-mfused\-madd  \-mno\-fused\-madd 
976 \&\-mforce\-no\-pic 
977 \&\-mserialize\-volatile  \-mno\-serialize\-volatile 
978 \&\-mtext\-section\-literals  \-mno\-text\-section\-literals 
979 \&\-mtarget\-align  \-mno\-target\-align 
980 \&\-mlongcalls  \-mno\-longcalls\fR
981 .Sp
982 \&\fIzSeries Options\fR
983 See S/390 and zSeries Options.
984 .IP "\fICode Generation Options\fR" 4
985 .IX Item "Code Generation Options"
986 \&\fB\-fcall\-saved\-\fR\fIreg\fR  \fB\-fcall\-used\-\fR\fIreg\fR 
987 \&\fB\-ffixed\-\fR\fIreg\fR  \fB\-fexceptions 
988 \&\-fnon\-call\-exceptions  \-funwind\-tables 
989 \&\-fasynchronous\-unwind\-tables 
990 \&\-finhibit\-size\-directive  \-finstrument\-functions 
991 \&\-finstrument\-functions\-exclude\-function\-list=\fR\fIsym\fR\fB,\fR\fIsym\fR\fB,... 
992 \&\-finstrument\-functions\-exclude\-file\-list=\fR\fIfile\fR\fB,\fR\fIfile\fR\fB,... 
993 \&\-fno\-common  \-fno\-ident 
994 \&\-fpcc\-struct\-return  \-fpic  \-fPIC \-fpie \-fPIE 
995 \&\-fno\-jump\-tables 
996 \&\-frecord\-gcc\-switches 
997 \&\-freg\-struct\-return  \-fshort\-enums 
998 \&\-fshort\-double  \-fshort\-wchar 
999 \&\-fverbose\-asm  \-fpack\-struct[=\fR\fIn\fR\fB]  \-fstack\-check 
1000 \&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR 
1001 \&\fB\-fno\-stack\-limit \-fsplit\-stack 
1002 \&\-fleading\-underscore  \-ftls\-model=\fR\fImodel\fR 
1003 \&\fB\-ftrapv  \-fwrapv  \-fbounds\-check 
1004 \&\-fvisibility \-fstrict\-volatile\-bitfields\fR
1005 .Sh "Options Controlling the Kind of Output"
1006 .IX Subsection "Options Controlling the Kind of Output"
1007 Compilation can involve up to four stages: preprocessing, compilation
1008 proper, assembly and linking, always in that order.  \s-1GCC\s0 is capable of
1009 preprocessing and compiling several files either into several
1010 assembler input files, or into one assembler input file; then each
1011 assembler input file produces an object file, and linking combines all
1012 the object files (those newly compiled, and those specified as input)
1013 into an executable file.
1014 .PP
1015 For any given input file, the file name suffix determines what kind of
1016 compilation is done:
1017 .IP "\fIfile\fR\fB.c\fR" 4
1018 .IX Item "file.c"
1019 C source code that must be preprocessed.
1020 .IP "\fIfile\fR\fB.i\fR" 4
1021 .IX Item "file.i"
1022 C source code that should not be preprocessed.
1023 .IP "\fIfile\fR\fB.ii\fR" 4
1024 .IX Item "file.ii"
1025 \&\*(C+ source code that should not be preprocessed.
1026 .IP "\fIfile\fR\fB.m\fR" 4
1027 .IX Item "file.m"
1028 Objective-C source code.  Note that you must link with the \fIlibobjc\fR
1029 library to make an Objective-C program work.
1030 .IP "\fIfile\fR\fB.mi\fR" 4
1031 .IX Item "file.mi"
1032 Objective-C source code that should not be preprocessed.
1033 .IP "\fIfile\fR\fB.mm\fR" 4
1034 .IX Item "file.mm"
1035 .PD 0
1036 .IP "\fIfile\fR\fB.M\fR" 4
1037 .IX Item "file.M"
1038 .PD
1039 Objective\-\*(C+ source code.  Note that you must link with the \fIlibobjc\fR
1040 library to make an Objective\-\*(C+ program work.  Note that \fB.M\fR refers
1041 to a literal capital M.
1042 .IP "\fIfile\fR\fB.mii\fR" 4
1043 .IX Item "file.mii"
1044 Objective\-\*(C+ source code that should not be preprocessed.
1045 .IP "\fIfile\fR\fB.h\fR" 4
1046 .IX Item "file.h"
1047 C, \*(C+, Objective-C or Objective\-\*(C+ header file to be turned into a
1048 precompiled header (default), or C, \*(C+ header file to be turned into an
1049 Ada spec (via the \fB\-fdump\-ada\-spec\fR switch).
1050 .IP "\fIfile\fR\fB.cc\fR" 4
1051 .IX Item "file.cc"
1052 .PD 0
1053 .IP "\fIfile\fR\fB.cp\fR" 4
1054 .IX Item "file.cp"
1055 .IP "\fIfile\fR\fB.cxx\fR" 4
1056 .IX Item "file.cxx"
1057 .IP "\fIfile\fR\fB.cpp\fR" 4
1058 .IX Item "file.cpp"
1059 .IP "\fIfile\fR\fB.CPP\fR" 4
1060 .IX Item "file.CPP"
1061 .IP "\fIfile\fR\fB.c++\fR" 4
1062 .IX Item "file.c++"
1063 .IP "\fIfile\fR\fB.C\fR" 4
1064 .IX Item "file.C"
1065 .PD
1066 \&\*(C+ source code that must be preprocessed.  Note that in \fB.cxx\fR,
1067 the last two letters must both be literally \fBx\fR.  Likewise,
1068 \&\fB.C\fR refers to a literal capital C.
1069 .IP "\fIfile\fR\fB.mm\fR" 4
1070 .IX Item "file.mm"
1071 .PD 0
1072 .IP "\fIfile\fR\fB.M\fR" 4
1073 .IX Item "file.M"
1074 .PD
1075 Objective\-\*(C+ source code that must be preprocessed.
1076 .IP "\fIfile\fR\fB.mii\fR" 4
1077 .IX Item "file.mii"
1078 Objective\-\*(C+ source code that should not be preprocessed.
1079 .IP "\fIfile\fR\fB.hh\fR" 4
1080 .IX Item "file.hh"
1081 .PD 0
1082 .IP "\fIfile\fR\fB.H\fR" 4
1083 .IX Item "file.H"
1084 .IP "\fIfile\fR\fB.hp\fR" 4
1085 .IX Item "file.hp"
1086 .IP "\fIfile\fR\fB.hxx\fR" 4
1087 .IX Item "file.hxx"
1088 .IP "\fIfile\fR\fB.hpp\fR" 4
1089 .IX Item "file.hpp"
1090 .IP "\fIfile\fR\fB.HPP\fR" 4
1091 .IX Item "file.HPP"
1092 .IP "\fIfile\fR\fB.h++\fR" 4
1093 .IX Item "file.h++"
1094 .IP "\fIfile\fR\fB.tcc\fR" 4
1095 .IX Item "file.tcc"
1096 .PD
1097 \&\*(C+ header file to be turned into a precompiled header or Ada spec.
1098 .IP "\fIfile\fR\fB.f\fR" 4
1099 .IX Item "file.f"
1100 .PD 0
1101 .IP "\fIfile\fR\fB.for\fR" 4
1102 .IX Item "file.for"
1103 .IP "\fIfile\fR\fB.ftn\fR" 4
1104 .IX Item "file.ftn"
1105 .PD
1106 Fixed form Fortran source code that should not be preprocessed.
1107 .IP "\fIfile\fR\fB.F\fR" 4
1108 .IX Item "file.F"
1109 .PD 0
1110 .IP "\fIfile\fR\fB.FOR\fR" 4
1111 .IX Item "file.FOR"
1112 .IP "\fIfile\fR\fB.fpp\fR" 4
1113 .IX Item "file.fpp"
1114 .IP "\fIfile\fR\fB.FPP\fR" 4
1115 .IX Item "file.FPP"
1116 .IP "\fIfile\fR\fB.FTN\fR" 4
1117 .IX Item "file.FTN"
1118 .PD
1119 Fixed form Fortran source code that must be preprocessed (with the traditional
1120 preprocessor).
1121 .IP "\fIfile\fR\fB.f90\fR" 4
1122 .IX Item "file.f90"
1123 .PD 0
1124 .IP "\fIfile\fR\fB.f95\fR" 4
1125 .IX Item "file.f95"
1126 .IP "\fIfile\fR\fB.f03\fR" 4
1127 .IX Item "file.f03"
1128 .IP "\fIfile\fR\fB.f08\fR" 4
1129 .IX Item "file.f08"
1130 .PD
1131 Free form Fortran source code that should not be preprocessed.
1132 .IP "\fIfile\fR\fB.F90\fR" 4
1133 .IX Item "file.F90"
1134 .PD 0
1135 .IP "\fIfile\fR\fB.F95\fR" 4
1136 .IX Item "file.F95"
1137 .IP "\fIfile\fR\fB.F03\fR" 4
1138 .IX Item "file.F03"
1139 .IP "\fIfile\fR\fB.F08\fR" 4
1140 .IX Item "file.F08"
1141 .PD
1142 Free form Fortran source code that must be preprocessed (with the
1143 traditional preprocessor).
1144 .IP "\fIfile\fR\fB.go\fR" 4
1145 .IX Item "file.go"
1146 Go source code.
1147 .IP "\fIfile\fR\fB.ads\fR" 4
1148 .IX Item "file.ads"
1149 Ada source code file that contains a library unit declaration (a
1150 declaration of a package, subprogram, or generic, or a generic
1151 instantiation), or a library unit renaming declaration (a package,
1152 generic, or subprogram renaming declaration).  Such files are also
1153 called \fIspecs\fR.
1154 .IP "\fIfile\fR\fB.adb\fR" 4
1155 .IX Item "file.adb"
1156 Ada source code file containing a library unit body (a subprogram or
1157 package body).  Such files are also called \fIbodies\fR.
1158 .IP "\fIfile\fR\fB.s\fR" 4
1159 .IX Item "file.s"
1160 Assembler code.
1161 .IP "\fIfile\fR\fB.S\fR" 4
1162 .IX Item "file.S"
1163 .PD 0
1164 .IP "\fIfile\fR\fB.sx\fR" 4
1165 .IX Item "file.sx"
1166 .PD
1167 Assembler code that must be preprocessed.
1168 .IP "\fIother\fR" 4
1169 .IX Item "other"
1170 An object file to be fed straight into linking.
1171 Any file name with no recognized suffix is treated this way.
1172 .PP
1173 You can specify the input language explicitly with the \fB\-x\fR option:
1174 .IP "\fB\-x\fR \fIlanguage\fR" 4
1175 .IX Item "-x language"
1176 Specify explicitly the \fIlanguage\fR for the following input files
1177 (rather than letting the compiler choose a default based on the file
1178 name suffix).  This option applies to all following input files until
1179 the next \fB\-x\fR option.  Possible values for \fIlanguage\fR are:
1180 .Sp
1181 .Vb 9
1182 \&        c  c\-header  cpp\-output
1183 \&        c++  c++\-header  c++\-cpp\-output
1184 \&        objective\-c  objective\-c\-header  objective\-c\-cpp\-output
1185 \&        objective\-c++ objective\-c++\-header objective\-c++\-cpp\-output
1186 \&        assembler  assembler\-with\-cpp
1187 \&        ada
1188 \&        f77  f77\-cpp\-input f95  f95\-cpp\-input
1189 \&        go
1190 \&        java
1191 .Ve
1192 .IP "\fB\-x none\fR" 4
1193 .IX Item "-x none"
1194 Turn off any specification of a language, so that subsequent files are
1195 handled according to their file name suffixes (as they are if \fB\-x\fR
1196 has not been used at all).
1197 .IP "\fB\-pass\-exit\-codes\fR" 4
1198 .IX Item "-pass-exit-codes"
1199 Normally the \fBgcc\fR program will exit with the code of 1 if any
1200 phase of the compiler returns a non-success return code.  If you specify
1201 \&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program will instead return with
1202 numerically highest error produced by any phase that returned an error
1203 indication.  The C, \*(C+, and Fortran frontends return 4, if an internal
1204 compiler error is encountered.
1205 .PP
1206 If you only want some of the stages of compilation, you can use
1207 \&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
1208 one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
1209 \&\fBgcc\fR is to stop.  Note that some combinations (for example,
1210 \&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
1211 .IP "\fB\-c\fR" 4
1212 .IX Item "-c"
1213 Compile or assemble the source files, but do not link.  The linking
1214 stage simply is not done.  The ultimate output is in the form of an
1215 object file for each source file.
1216 .Sp
1217 By default, the object file name for a source file is made by replacing
1218 the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR, etc., with \fB.o\fR.
1219 .Sp
1220 Unrecognized input files, not requiring compilation or assembly, are
1221 ignored.
1222 .IP "\fB\-S\fR" 4
1223 .IX Item "-S"
1224 Stop after the stage of compilation proper; do not assemble.  The output
1225 is in the form of an assembler code file for each non-assembler input
1226 file specified.
1227 .Sp
1228 By default, the assembler file name for a source file is made by
1229 replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
1230 .Sp
1231 Input files that don't require compilation are ignored.
1232 .IP "\fB\-E\fR" 4
1233 .IX Item "-E"
1234 Stop after the preprocessing stage; do not run the compiler proper.  The
1235 output is in the form of preprocessed source code, which is sent to the
1236 standard output.
1237 .Sp
1238 Input files that don't require preprocessing are ignored.
1239 .IP "\fB\-o\fR \fIfile\fR" 4
1240 .IX Item "-o file"
1241 Place output in file \fIfile\fR.  This applies regardless to whatever
1242 sort of output is being produced, whether it be an executable file,
1243 an object file, an assembler file or preprocessed C code.
1244 .Sp
1245 If \fB\-o\fR is not specified, the default is to put an executable
1246 file in \fIa.out\fR, the object file for
1247 \&\fI\fIsource\fI.\fIsuffix\fI\fR in \fI\fIsource\fI.o\fR, its
1248 assembler file in \fI\fIsource\fI.s\fR, a precompiled header file in
1249 \&\fI\fIsource\fI.\fIsuffix\fI.gch\fR, and all preprocessed C source on
1250 standard output.
1251 .IP "\fB\-v\fR" 4
1252 .IX Item "-v"
1253 Print (on standard error output) the commands executed to run the stages
1254 of compilation.  Also print the version number of the compiler driver
1255 program and of the preprocessor and the compiler proper.
1256 .IP "\fB\-###\fR" 4
1257 .IX Item "-###"
1258 Like \fB\-v\fR except the commands are not executed and arguments
1259 are quoted unless they contain only alphanumeric characters or \f(CW\*(C`./\-_\*(C'\fR.
1260 This is useful for shell scripts to capture the driver-generated command lines.
1261 .IP "\fB\-pipe\fR" 4
1262 .IX Item "-pipe"
1263 Use pipes rather than temporary files for communication between the
1264 various stages of compilation.  This fails to work on some systems where
1265 the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has
1266 no trouble.
1267 .IP "\fB\-\-help\fR" 4
1268 .IX Item "--help"
1269 Print (on the standard output) a description of the command-line options
1270 understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
1271 then \fB\-\-help\fR will also be passed on to the various processes
1272 invoked by \fBgcc\fR, so that they can display the command-line options
1273 they accept.  If the \fB\-Wextra\fR option has also been specified
1274 (prior to the \fB\-\-help\fR option), then command-line options that
1275 have no documentation associated with them will also be displayed.
1276 .IP "\fB\-\-target\-help\fR" 4
1277 .IX Item "--target-help"
1278 Print (on the standard output) a description of target-specific command-line
1279 options for each tool.  For some targets extra target-specific
1280 information may also be printed.
1281 .IP "\fB\-\-help={\fR\fIclass\fR|[\fB^\fR]\fIqualifier\fR\fB}\fR[\fB,...\fR]" 4
1282 .IX Item "--help={class|[^]qualifier}[,...]"
1283 Print (on the standard output) a description of the command-line
1284 options understood by the compiler that fit into all specified classes
1285 and qualifiers.  These are the supported classes:
1286 .RS 4
1287 .IP "\fBoptimizers\fR" 4
1288 .IX Item "optimizers"
1289 This will display all of the optimization options supported by the
1290 compiler.
1291 .IP "\fBwarnings\fR" 4
1292 .IX Item "warnings"
1293 This will display all of the options controlling warning messages
1294 produced by the compiler.
1295 .IP "\fBtarget\fR" 4
1296 .IX Item "target"
1297 This will display target-specific options.  Unlike the
1298 \&\fB\-\-target\-help\fR option however, target-specific options of the
1299 linker and assembler will not be displayed.  This is because those
1300 tools do not currently support the extended \fB\-\-help=\fR syntax.
1301 .IP "\fBparams\fR" 4
1302 .IX Item "params"
1303 This will display the values recognized by the \fB\-\-param\fR
1304 option.
1305 .IP "\fIlanguage\fR" 4
1306 .IX Item "language"
1307 This will display the options supported for \fIlanguage\fR, where
1308 \&\fIlanguage\fR is the name of one of the languages supported in this
1309 version of \s-1GCC\s0.
1310 .IP "\fBcommon\fR" 4
1311 .IX Item "common"
1312 This will display the options that are common to all languages.
1313 .RE
1314 .RS 4
1315 .Sp
1316 These are the supported qualifiers:
1317 .IP "\fBundocumented\fR" 4
1318 .IX Item "undocumented"
1319 Display only those options that are undocumented.
1320 .IP "\fBjoined\fR" 4
1321 .IX Item "joined"
1322 Display options taking an argument that appears after an equal
1323 sign in the same continuous piece of text, such as:
1324 \&\fB\-\-help=target\fR.
1325 .IP "\fBseparate\fR" 4
1326 .IX Item "separate"
1327 Display options taking an argument that appears as a separate word
1328 following the original option, such as: \fB\-o output-file\fR.
1329 .RE
1330 .RS 4
1331 .Sp
1332 Thus for example to display all the undocumented target-specific
1333 switches supported by the compiler the following can be used:
1334 .Sp
1335 .Vb 1
1336 \&        \-\-help=target,undocumented
1337 .Ve
1338 .Sp
1339 The sense of a qualifier can be inverted by prefixing it with the
1340 \&\fB^\fR character, so for example to display all binary warning
1341 options (i.e., ones that are either on or off and that do not take an
1342 argument) that have a description, use:
1343 .Sp
1344 .Vb 1
1345 \&        \-\-help=warnings,^joined,^undocumented
1346 .Ve
1347 .Sp
1348 The argument to \fB\-\-help=\fR should not consist solely of inverted
1349 qualifiers.
1350 .Sp
1351 Combining several classes is possible, although this usually
1352 restricts the output by so much that there is nothing to display.  One
1353 case where it does work however is when one of the classes is
1354 \&\fItarget\fR.  So for example to display all the target-specific
1355 optimization options the following can be used:
1356 .Sp
1357 .Vb 1
1358 \&        \-\-help=target,optimizers
1359 .Ve
1360 .Sp
1361 The \fB\-\-help=\fR option can be repeated on the command line.  Each
1362 successive use will display its requested class of options, skipping
1363 those that have already been displayed.
1364 .Sp
1365 If the \fB\-Q\fR option appears on the command line before the
1366 \&\fB\-\-help=\fR option, then the descriptive text displayed by
1367 \&\fB\-\-help=\fR is changed.  Instead of describing the displayed
1368 options, an indication is given as to whether the option is enabled,
1369 disabled or set to a specific value (assuming that the compiler
1370 knows this at the point where the \fB\-\-help=\fR option is used).
1371 .Sp
1372 Here is a truncated example from the \s-1ARM\s0 port of \fBgcc\fR:
1373 .Sp
1374 .Vb 5
1375 \&          % gcc \-Q \-mabi=2 \-\-help=target \-c
1376 \&          The following options are target specific:
1377 \&          \-mabi=                                2
1378 \&          \-mabort\-on\-noreturn                   [disabled]
1379 \&          \-mapcs                                [disabled]
1380 .Ve
1381 .Sp
1382 The output is sensitive to the effects of previous command-line
1383 options, so for example it is possible to find out which optimizations
1384 are enabled at \fB\-O2\fR by using:
1385 .Sp
1386 .Vb 1
1387 \&        \-Q \-O2 \-\-help=optimizers
1388 .Ve
1389 .Sp
1390 Alternatively you can discover which binary optimizations are enabled
1391 by \fB\-O3\fR by using:
1392 .Sp
1393 .Vb 3
1394 \&        gcc \-c \-Q \-O3 \-\-help=optimizers > /tmp/O3\-opts
1395 \&        gcc \-c \-Q \-O2 \-\-help=optimizers > /tmp/O2\-opts
1396 \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
1397 .Ve
1398 .RE
1399 .IP "\fB\-no\-canonical\-prefixes\fR" 4
1400 .IX Item "-no-canonical-prefixes"
1401 Do not expand any symbolic links, resolve references to \fB/../\fR
1402 or \fB/./\fR, or make the path absolute when generating a relative
1403 prefix.
1404 .IP "\fB\-\-version\fR" 4
1405 .IX Item "--version"
1406 Display the version number and copyrights of the invoked \s-1GCC\s0.
1407 .IP "\fB\-wrapper\fR" 4
1408 .IX Item "-wrapper"
1409 Invoke all subcommands under a wrapper program.  The name of the
1410 wrapper program and its parameters are passed as a comma separated
1411 list.
1412 .Sp
1413 .Vb 1
1414 \&        gcc \-c t.c \-wrapper gdb,\-\-args
1415 .Ve
1416 .Sp
1417 This will invoke all subprograms of \fBgcc\fR under
1418 \&\fBgdb \-\-args\fR, thus the invocation of \fBcc1\fR will be
1419 \&\fBgdb \-\-args cc1 ...\fR.
1420 .IP "\fB\-fplugin=\fR\fIname\fR\fB.so\fR" 4
1421 .IX Item "-fplugin=name.so"
1422 Load the plugin code in file \fIname\fR.so, assumed to be a
1423 shared object to be dlopen'd by the compiler.  The base name of
1424 the shared object file is used to identify the plugin for the
1425 purposes of argument parsing (See
1426 \&\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR below).
1427 Each plugin should define the callback functions specified in the
1428 Plugins \s-1API\s0.
1429 .IP "\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR" 4
1430 .IX Item "-fplugin-arg-name-key=value"
1431 Define an argument called \fIkey\fR with a value of \fIvalue\fR
1432 for the plugin called \fIname\fR.
1433 .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4
1434 .IX Item "-fdump-ada-spec[-slim]"
1435 For C and \*(C+ source and include files, generate corresponding Ada
1436 specs.
1437 .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4
1438 .IX Item "-fdump-go-spec=file"
1439 For input files in any language, generate corresponding Go
1440 declarations in \fIfile\fR.  This generates Go \f(CW\*(C`const\*(C'\fR,
1441 \&\f(CW\*(C`type\*(C'\fR, \f(CW\*(C`var\*(C'\fR, and \f(CW\*(C`func\*(C'\fR declarations which may be a
1442 useful way to start writing a Go interface to code written in some
1443 other language.
1444 .IP "\fB@\fR\fIfile\fR" 4
1445 .IX Item "@file"
1446 Read command-line options from \fIfile\fR.  The options read are
1447 inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
1448 does not exist, or cannot be read, then the option will be treated
1449 literally, and not removed.
1450 .Sp
1451 Options in \fIfile\fR are separated by whitespace.  A whitespace
1452 character may be included in an option by surrounding the entire
1453 option in either single or double quotes.  Any character (including a
1454 backslash) may be included by prefixing the character to be included
1455 with a backslash.  The \fIfile\fR may itself contain additional
1456 @\fIfile\fR options; any such options will be processed recursively.
1457 .Sh "Compiling \*(C+ Programs"
1458 .IX Subsection "Compiling  Programs"
1459 \&\*(C+ source files conventionally use one of the suffixes \fB.C\fR,
1460 \&\fB.cc\fR, \fB.cpp\fR, \fB.CPP\fR, \fB.c++\fR, \fB.cp\fR, or
1461 \&\fB.cxx\fR; \*(C+ header files often use \fB.hh\fR, \fB.hpp\fR,
1462 \&\fB.H\fR, or (for shared template code) \fB.tcc\fR; and
1463 preprocessed \*(C+ files use the suffix \fB.ii\fR.  \s-1GCC\s0 recognizes
1464 files with these names and compiles them as \*(C+ programs even if you
1465 call the compiler the same way as for compiling C programs (usually
1466 with the name \fBgcc\fR).
1467 .PP
1468 However, the use of \fBgcc\fR does not add the \*(C+ library.
1469 \&\fBg++\fR is a program that calls \s-1GCC\s0 and treats \fB.c\fR,
1470 \&\fB.h\fR and \fB.i\fR files as \*(C+ source files instead of C source
1471 files unless \fB\-x\fR is used, and automatically specifies linking
1472 against the \*(C+ library.  This program is also useful when
1473 precompiling a C header file with a \fB.h\fR extension for use in \*(C+
1474 compilations.  On many systems, \fBg++\fR is also installed with
1475 the name \fBc++\fR.
1476 .PP
1477 When you compile \*(C+ programs, you may specify many of the same
1478 command-line options that you use for compiling programs in any
1479 language; or command-line options meaningful for C and related
1480 languages; or options that are meaningful only for \*(C+ programs.
1481 .Sh "Options Controlling C Dialect"
1482 .IX Subsection "Options Controlling C Dialect"
1483 The following options control the dialect of C (or languages derived
1484 from C, such as \*(C+, Objective-C and Objective\-\*(C+) that the compiler
1485 accepts:
1486 .IP "\fB\-ansi\fR" 4
1487 .IX Item "-ansi"
1488 In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
1489 equivalent to \fB\-std=c++98\fR.
1490 .Sp
1491 This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0
1492 C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
1493 such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
1494 predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
1495 type of system you are using.  It also enables the undesirable and
1496 rarely used \s-1ISO\s0 trigraph feature.  For the C compiler,
1497 it disables recognition of \*(C+ style \fB//\fR comments as well as
1498 the \f(CW\*(C`inline\*(C'\fR keyword.
1499 .Sp
1500 The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
1501 \&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
1502 \&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO\s0 C program, of
1503 course, but it is useful to put them in header files that might be included
1504 in compilations done with \fB\-ansi\fR.  Alternate predefined macros
1505 such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
1506 without \fB\-ansi\fR.
1507 .Sp
1508 The \fB\-ansi\fR option does not cause non-ISO programs to be
1509 rejected gratuitously.  For that, \fB\-pedantic\fR is required in
1510 addition to \fB\-ansi\fR.
1511 .Sp
1512 The macro \f(CW\*(C`_\|_STRICT_ANSI_\|_\*(C'\fR is predefined when the \fB\-ansi\fR
1513 option is used.  Some header files may notice this macro and refrain
1514 from declaring certain functions or defining certain macros that the
1515 \&\s-1ISO\s0 standard doesn't call for; this is to avoid interfering with any
1516 programs that might use these names for other things.
1517 .Sp
1518 Functions that would normally be built in but do not have semantics
1519 defined by \s-1ISO\s0 C (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in
1520 functions when \fB\-ansi\fR is used.
1521 .IP "\fB\-std=\fR" 4
1522 .IX Item "-std="
1523 Determine the language standard.   This option
1524 is currently only supported when compiling C or \*(C+.
1525 .Sp
1526 The compiler can accept several base standards, such as \fBc90\fR or
1527 \&\fBc++98\fR, and \s-1GNU\s0 dialects of those standards, such as
1528 \&\fBgnu90\fR or \fBgnu++98\fR.  By specifying a base standard, the
1529 compiler will accept all programs following that standard and those
1530 using \s-1GNU\s0 extensions that do not contradict it.  For example,
1531 \&\fB\-std=c90\fR turns off certain features of \s-1GCC\s0 that are
1532 incompatible with \s-1ISO\s0 C90, such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR
1533 keywords, but not other \s-1GNU\s0 extensions that do not have a meaning in
1534 \&\s-1ISO\s0 C90, such as omitting the middle term of a \f(CW\*(C`?:\*(C'\fR
1535 expression. On the other hand, by specifying a \s-1GNU\s0 dialect of a
1536 standard, all features the compiler support are enabled, even when
1537 those features change the meaning of the base standard and some
1538 strict-conforming programs may be rejected.  The particular standard
1539 is used by \fB\-pedantic\fR to identify which features are \s-1GNU\s0
1540 extensions given that version of the standard. For example
1541 \&\fB\-std=gnu90 \-pedantic\fR would warn about \*(C+ style \fB//\fR
1542 comments, while \fB\-std=gnu99 \-pedantic\fR would not.
1543 .Sp
1544 A value for this option must be provided; possible values are
1545 .RS 4
1546 .IP "\fBc90\fR" 4
1547 .IX Item "c90"
1548 .PD 0
1549 .IP "\fBc89\fR" 4
1550 .IX Item "c89"
1551 .IP "\fBiso9899:1990\fR" 4
1552 .IX Item "iso9899:1990"
1553 .PD
1554 Support all \s-1ISO\s0 C90 programs (certain \s-1GNU\s0 extensions that conflict
1555 with \s-1ISO\s0 C90 are disabled). Same as \fB\-ansi\fR for C code.
1556 .IP "\fBiso9899:199409\fR" 4
1557 .IX Item "iso9899:199409"
1558 \&\s-1ISO\s0 C90 as modified in amendment 1.
1559 .IP "\fBc99\fR" 4
1560 .IX Item "c99"
1561 .PD 0
1562 .IP "\fBc9x\fR" 4
1563 .IX Item "c9x"
1564 .IP "\fBiso9899:1999\fR" 4
1565 .IX Item "iso9899:1999"
1566 .IP "\fBiso9899:199x\fR" 4
1567 .IX Item "iso9899:199x"
1568 .PD
1569 \&\s-1ISO\s0 C99.  Note that this standard is not yet fully supported; see
1570 <\fBhttp://gcc.gnu.org/gcc\-4.7/c99status.html\fR> for more information.  The
1571 names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
1572 .IP "\fBc11\fR" 4
1573 .IX Item "c11"
1574 .PD 0
1575 .IP "\fBc1x\fR" 4
1576 .IX Item "c1x"
1577 .IP "\fBiso9899:2011\fR" 4
1578 .IX Item "iso9899:2011"
1579 .PD
1580 \&\s-1ISO\s0 C11, the 2011 revision of the \s-1ISO\s0 C standard.
1581 Support is incomplete and experimental.  The name \fBc1x\fR is
1582 deprecated.
1583 .IP "\fBgnu90\fR" 4
1584 .IX Item "gnu90"
1585 .PD 0
1586 .IP "\fBgnu89\fR" 4
1587 .IX Item "gnu89"
1588 .PD
1589 \&\s-1GNU\s0 dialect of \s-1ISO\s0 C90 (including some C99 features). This
1590 is the default for C code.
1591 .IP "\fBgnu99\fR" 4
1592 .IX Item "gnu99"
1593 .PD 0
1594 .IP "\fBgnu9x\fR" 4
1595 .IX Item "gnu9x"
1596 .PD
1597 \&\s-1GNU\s0 dialect of \s-1ISO\s0 C99.  When \s-1ISO\s0 C99 is fully implemented in \s-1GCC\s0,
1598 this will become the default.  The name \fBgnu9x\fR is deprecated.
1599 .IP "\fBgnu11\fR" 4
1600 .IX Item "gnu11"
1601 .PD 0
1602 .IP "\fBgnu1x\fR" 4
1603 .IX Item "gnu1x"
1604 .PD
1605 \&\s-1GNU\s0 dialect of \s-1ISO\s0 C11.  Support is incomplete and experimental.  The
1606 name \fBgnu1x\fR is deprecated.
1607 .IP "\fBc++98\fR" 4
1608 .IX Item "c++98"
1609 The 1998 \s-1ISO\s0 \*(C+ standard plus amendments. Same as \fB\-ansi\fR for
1610 \&\*(C+ code.
1611 .IP "\fBgnu++98\fR" 4
1612 .IX Item "gnu++98"
1613 \&\s-1GNU\s0 dialect of \fB\-std=c++98\fR.  This is the default for
1614 \&\*(C+ code.
1615 .IP "\fBc++11\fR" 4
1616 .IX Item "c++11"
1617 The 2011 \s-1ISO\s0 \*(C+ standard plus amendments.  Support for \*(C+11 is still
1618 experimental, and may change in incompatible ways in future releases.
1619 .IP "\fBgnu++11\fR" 4
1620 .IX Item "gnu++11"
1621 \&\s-1GNU\s0 dialect of \fB\-std=c++11\fR. Support for \*(C+11 is still
1622 experimental, and may change in incompatible ways in future releases.
1623 .RE
1624 .RS 4
1625 .RE
1626 .IP "\fB\-fgnu89\-inline\fR" 4
1627 .IX Item "-fgnu89-inline"
1628 The option \fB\-fgnu89\-inline\fR tells \s-1GCC\s0 to use the traditional
1629 \&\s-1GNU\s0 semantics for \f(CW\*(C`inline\*(C'\fR functions when in C99 mode.
1630   This option
1631 is accepted and ignored by \s-1GCC\s0 versions 4.1.3 up to but not including
1632 4.3.  In \s-1GCC\s0 versions 4.3 and later it changes the behavior of \s-1GCC\s0 in
1633 C99 mode.  Using this option is roughly equivalent to adding the
1634 \&\f(CW\*(C`gnu_inline\*(C'\fR function attribute to all inline functions.
1635 .Sp
1636 The option \fB\-fno\-gnu89\-inline\fR explicitly tells \s-1GCC\s0 to use the
1637 C99 semantics for \f(CW\*(C`inline\*(C'\fR when in C99 or gnu99 mode (i.e., it
1638 specifies the default behavior).  This option was first supported in
1639 \&\s-1GCC\s0 4.3.  This option is not supported in \fB\-std=c90\fR or
1640 \&\fB\-std=gnu90\fR mode.
1641 .Sp
1642 The preprocessor macros \f(CW\*(C`_\|_GNUC_GNU_INLINE_\|_\*(C'\fR and
1643 \&\f(CW\*(C`_\|_GNUC_STDC_INLINE_\|_\*(C'\fR may be used to check which semantics are
1644 in effect for \f(CW\*(C`inline\*(C'\fR functions.
1645 .IP "\fB\-aux\-info\fR \fIfilename\fR" 4
1646 .IX Item "-aux-info filename"
1647 Output to the given filename prototyped declarations for all functions
1648 declared and/or defined in a translation unit, including those in header
1649 files.  This option is silently ignored in any language other than C.
1650 .Sp
1651 Besides declarations, the file indicates, in comments, the origin of
1652 each declaration (source file and line), whether the declaration was
1653 implicit, prototyped or unprototyped (\fBI\fR, \fBN\fR for new or
1654 \&\fBO\fR for old, respectively, in the first character after the line
1655 number and the colon), and whether it came from a declaration or a
1656 definition (\fBC\fR or \fBF\fR, respectively, in the following
1657 character).  In the case of function definitions, a K&R\-style list of
1658 arguments followed by their declarations is also provided, inside
1659 comments, after the declaration.
1660 .IP "\fB\-fallow\-parameterless\-variadic\-functions\fR" 4
1661 .IX Item "-fallow-parameterless-variadic-functions"
1662 Accept variadic functions without named parameters.
1663 .Sp
1664 Although it is possible to define such a function, this is not very
1665 useful as it is not possible to read the arguments.  This is only
1666 supported for C as this construct is allowed by \*(C+.
1667 .IP "\fB\-fno\-asm\fR" 4
1668 .IX Item "-fno-asm"
1669 Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
1670 keyword, so that code can use these words as identifiers.  You can use
1671 the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
1672 instead.  \fB\-ansi\fR implies \fB\-fno\-asm\fR.
1673 .Sp
1674 In \*(C+, this switch only affects the \f(CW\*(C`typeof\*(C'\fR keyword, since
1675 \&\f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`inline\*(C'\fR are standard keywords.  You may want to
1676 use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
1677 effect.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR), this
1678 switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, since
1679 \&\f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO\s0 C99.
1680 .IP "\fB\-fno\-builtin\fR" 4
1681 .IX Item "-fno-builtin"
1682 .PD 0
1683 .IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4
1684 .IX Item "-fno-builtin-function"
1685 .PD
1686 Don't recognize built-in functions that do not begin with
1687 \&\fB_\|_builtin_\fR as prefix.
1688 .Sp
1689 \&\s-1GCC\s0 normally generates special code to handle certain built-in functions
1690 more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
1691 instructions which adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
1692 may become inline copy loops.  The resulting code is often both smaller
1693 and faster, but since the function calls no longer appear as such, you
1694 cannot set a breakpoint on those calls, nor can you change the behavior
1695 of the functions by linking with a different library.  In addition,
1696 when a function is recognized as a built-in function, \s-1GCC\s0 may use
1697 information about that function to warn about problems with calls to
1698 that function, or to generate more efficient code, even if the
1699 resulting code still contains calls to that function.  For example,
1700 warnings are given with \fB\-Wformat\fR for bad calls to
1701 \&\f(CW\*(C`printf\*(C'\fR, when \f(CW\*(C`printf\*(C'\fR is built in, and \f(CW\*(C`strlen\*(C'\fR is
1702 known not to modify global memory.
1703 .Sp
1704 With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
1705 only the built-in function \fIfunction\fR is
1706 disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
1707 function is named that is not built-in in this version of \s-1GCC\s0, this
1708 option is ignored.  There is no corresponding
1709 \&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
1710 built-in functions selectively when using \fB\-fno\-builtin\fR or
1711 \&\fB\-ffreestanding\fR, you may define macros such as:
1712 .Sp
1713 .Vb 2
1714 \&        #define abs(n)          _\|_builtin_abs ((n))
1715 \&        #define strcpy(d, s)    _\|_builtin_strcpy ((d), (s))
1716 .Ve
1717 .IP "\fB\-fhosted\fR" 4
1718 .IX Item "-fhosted"
1719 Assert that compilation takes place in a hosted environment.  This implies
1720 \&\fB\-fbuiltin\fR.  A hosted environment is one in which the
1721 entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
1722 type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
1723 This is equivalent to \fB\-fno\-freestanding\fR.
1724 .IP "\fB\-ffreestanding\fR" 4
1725 .IX Item "-ffreestanding"
1726 Assert that compilation takes place in a freestanding environment.  This
1727 implies \fB\-fno\-builtin\fR.  A freestanding environment
1728 is one in which the standard library may not exist, and program startup may
1729 not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an \s-1OS\s0 kernel.
1730 This is equivalent to \fB\-fno\-hosted\fR.
1731 .IP "\fB\-fopenmp\fR" 4
1732 .IX Item "-fopenmp"
1733 Enable handling of OpenMP directives \f(CW\*(C`#pragma omp\*(C'\fR in C/\*(C+ and
1734 \&\f(CW\*(C`!$omp\*(C'\fR in Fortran.  When \fB\-fopenmp\fR is specified, the
1735 compiler generates parallel code according to the OpenMP Application
1736 Program Interface v3.0 <\fBhttp://www.openmp.org/\fR>.  This option
1737 implies \fB\-pthread\fR, and thus is only supported on targets that
1738 have support for \fB\-pthread\fR.
1739 .IP "\fB\-fgnu\-tm\fR" 4
1740 .IX Item "-fgnu-tm"
1741 When the option \fB\-fgnu\-tm\fR is specified, the compiler will
1742 generate code for the Linux variant of Intel's current Transactional
1743 Memory \s-1ABI\s0 specification document (Revision 1.1, May 6 2009).  This is
1744 an experimental feature whose interface may change in future versions
1745 of \s-1GCC\s0, as the official specification changes.  Please note that not
1746 all architectures are supported for this feature.
1747 .Sp
1748 For more information on \s-1GCC\s0's support for transactional memory,
1749 .Sp
1750 Note that the transactional memory feature is not supported with
1751 non-call exceptions (\fB\-fnon\-call\-exceptions\fR).
1752 .IP "\fB\-fms\-extensions\fR" 4
1753 .IX Item "-fms-extensions"
1754 Accept some non-standard constructs used in Microsoft header files.
1755 .Sp
1756 In \*(C+ code, this allows member names in structures to be similar
1757 to previous types declarations.
1758 .Sp
1759 .Vb 4
1760 \&        typedef int UOW;
1761 \&        struct ABC {
1762 \&          UOW UOW;
1763 \&        };
1764 .Ve
1765 .Sp
1766 Some cases of unnamed fields in structures and unions are only
1767 accepted with this option.
1768 .IP "\fB\-fplan9\-extensions\fR" 4
1769 .IX Item "-fplan9-extensions"
1770 Accept some non-standard constructs used in Plan 9 code.
1771 .Sp
1772 This enables \fB\-fms\-extensions\fR, permits passing pointers to
1773 structures with anonymous fields to functions that expect pointers to
1774 elements of the type of the field, and permits referring to anonymous
1775 fields declared using a typedef.    This is only
1776 supported for C, not \*(C+.
1777 .IP "\fB\-trigraphs\fR" 4
1778 .IX Item "-trigraphs"
1779 Support \s-1ISO\s0 C trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
1780 options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR.
1781 .IP "\fB\-no\-integrated\-cpp\fR" 4
1782 .IX Item "-no-integrated-cpp"
1783 Performs a compilation in two passes: preprocessing and compiling.  This
1784 option allows a user supplied \*(L"cc1\*(R", \*(L"cc1plus\*(R", or \*(L"cc1obj\*(R" via the
1785 \&\fB\-B\fR option.  The user supplied compilation step can then add in
1786 an additional preprocessing step after normal preprocessing but before
1787 compiling.  The default is to use the integrated cpp (internal cpp)
1788 .Sp
1789 The semantics of this option will change if \*(L"cc1\*(R", \*(L"cc1plus\*(R", and
1790 \&\*(L"cc1obj\*(R" are merged.
1791 .IP "\fB\-traditional\fR" 4
1792 .IX Item "-traditional"
1793 .PD 0
1794 .IP "\fB\-traditional\-cpp\fR" 4
1795 .IX Item "-traditional-cpp"
1796 .PD
1797 Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
1798 C compiler.  They are now only supported with the \fB\-E\fR switch.
1799 The preprocessor continues to support a pre-standard mode.  See the \s-1GNU\s0
1800 \&\s-1CPP\s0 manual for details.
1801 .IP "\fB\-fcond\-mismatch\fR" 4
1802 .IX Item "-fcond-mismatch"
1803 Allow conditional expressions with mismatched types in the second and
1804 third arguments.  The value of such an expression is void.  This option
1805 is not supported for \*(C+.
1806 .IP "\fB\-flax\-vector\-conversions\fR" 4
1807 .IX Item "-flax-vector-conversions"
1808 Allow implicit conversions between vectors with differing numbers of
1809 elements and/or incompatible element types.  This option should not be
1810 used for new code.
1811 .IP "\fB\-funsigned\-char\fR" 4
1812 .IX Item "-funsigned-char"
1813 Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
1814 .Sp
1815 Each kind of machine has a default for what \f(CW\*(C`char\*(C'\fR should
1816 be.  It is either like \f(CW\*(C`unsigned char\*(C'\fR by default or like
1817 \&\f(CW\*(C`signed char\*(C'\fR by default.
1818 .Sp
1819 Ideally, a portable program should always use \f(CW\*(C`signed char\*(C'\fR or
1820 \&\f(CW\*(C`unsigned char\*(C'\fR when it depends on the signedness of an object.
1821 But many programs have been written to use plain \f(CW\*(C`char\*(C'\fR and
1822 expect it to be signed, or expect it to be unsigned, depending on the
1823 machines they were written for.  This option, and its inverse, let you
1824 make such a program work with the opposite default.
1825 .Sp
1826 The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
1827 \&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
1828 is always just like one of those two.
1829 .IP "\fB\-fsigned\-char\fR" 4
1830 .IX Item "-fsigned-char"
1831 Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
1832 .Sp
1833 Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
1834 the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
1835 \&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
1836 .IP "\fB\-fsigned\-bitfields\fR" 4
1837 .IX Item "-fsigned-bitfields"
1838 .PD 0
1839 .IP "\fB\-funsigned\-bitfields\fR" 4
1840 .IX Item "-funsigned-bitfields"
1841 .IP "\fB\-fno\-signed\-bitfields\fR" 4
1842 .IX Item "-fno-signed-bitfields"
1843 .IP "\fB\-fno\-unsigned\-bitfields\fR" 4
1844 .IX Item "-fno-unsigned-bitfields"
1845 .PD
1846 These options control whether a bit-field is signed or unsigned, when the
1847 declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
1848 default, such a bit-field is signed, because this is consistent: the
1849 basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
1850 .Sh "Options Controlling \*(C+ Dialect"
1851 .IX Subsection "Options Controlling  Dialect"
1852 This section describes the command-line options that are only meaningful
1853 for \*(C+ programs; but you can also use most of the \s-1GNU\s0 compiler options
1854 regardless of what language your program is in.  For example, you
1855 might compile a file \f(CW\*(C`firstClass.C\*(C'\fR like this:
1856 .PP
1857 .Vb 1
1858 \&        g++ \-g \-frepo \-O \-c firstClass.C
1859 .Ve
1860 .PP
1861 In this example, only \fB\-frepo\fR is an option meant
1862 only for \*(C+ programs; you can use the other options with any
1863 language supported by \s-1GCC\s0.
1864 .PP
1865 Here is a list of options that are \fIonly\fR for compiling \*(C+ programs:
1866 .IP "\fB\-fabi\-version=\fR\fIn\fR" 4
1867 .IX Item "-fabi-version=n"
1868 Use version \fIn\fR of the \*(C+ \s-1ABI\s0.  Version 2 is the version of the
1869 \&\*(C+ \s-1ABI\s0 that first appeared in G++ 3.4.  Version 1 is the version of
1870 the \*(C+ \s-1ABI\s0 that first appeared in G++ 3.2.  Version 0 will always be
1871 the version that conforms most closely to the \*(C+ \s-1ABI\s0 specification.
1872 Therefore, the \s-1ABI\s0 obtained using version 0 will change as \s-1ABI\s0 bugs
1873 are fixed.
1874 .Sp
1875 The default is version 2.
1876 .Sp
1877 Version 3 corrects an error in mangling a constant address as a
1878 template argument.
1879 .Sp
1880 Version 4, which first appeared in G++ 4.5, implements a standard
1881 mangling for vector types.
1882 .Sp
1883 Version 5, which first appeared in G++ 4.6, corrects the mangling of
1884 attribute const/volatile on function pointer types, decltype of a
1885 plain decl, and use of a function parameter in the declaration of
1886 another parameter.
1887 .Sp
1888 Version 6, which first appeared in G++ 4.7, corrects the promotion
1889 behavior of \*(C+11 scoped enums and the mangling of template argument
1890 packs, const/static_cast, prefix ++ and \-\-, and a class scope function
1891 used as a template argument.
1892 .Sp
1893 See also \fB\-Wabi\fR.
1894 .IP "\fB\-fno\-access\-control\fR" 4
1895 .IX Item "-fno-access-control"
1896 Turn off all access checking.  This switch is mainly useful for working
1897 around bugs in the access control code.
1898 .IP "\fB\-fcheck\-new\fR" 4
1899 .IX Item "-fcheck-new"
1900 Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null
1901 before attempting to modify the storage allocated.  This check is
1902 normally unnecessary because the \*(C+ standard specifies that
1903 \&\f(CW\*(C`operator new\*(C'\fR will only return \f(CW0\fR if it is declared
1904 \&\fB\f(BIthrow()\fB\fR, in which case the compiler will always check the
1905 return value even without this option.  In all other cases, when
1906 \&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory
1907 exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
1908 \&\fBnew (nothrow)\fR.
1909 .IP "\fB\-fconserve\-space\fR" 4
1910 .IX Item "-fconserve-space"
1911 Put uninitialized or run-time-initialized global variables into the
1912 common segment, as C does.  This saves space in the executable at the
1913 cost of not diagnosing duplicate definitions.  If you compile with this
1914 flag and your program mysteriously crashes after \f(CW\*(C`main()\*(C'\fR has
1915 completed, you may have an object that is being destroyed twice because
1916 two definitions were merged.
1917 .Sp
1918 This option is no longer useful on most targets, now that support has
1919 been added for putting variables into \s-1BSS\s0 without making them common.
1920 .IP "\fB\-fconstexpr\-depth=\fR\fIn\fR" 4
1921 .IX Item "-fconstexpr-depth=n"
1922 Set the maximum nested evaluation depth for \*(C+11 constexpr functions
1923 to \fIn\fR.  A limit is needed to detect endless recursion during
1924 constant expression evaluation.  The minimum specified by the standard
1925 is 512.
1926 .IP "\fB\-fdeduce\-init\-list\fR" 4
1927 .IX Item "-fdeduce-init-list"
1928 Enable deduction of a template type parameter as
1929 std::initializer_list from a brace-enclosed initializer list, i.e.
1930 .Sp
1931 .Vb 4
1932 \&        template <class T> auto forward(T t) \-> decltype (realfn (t))
1933 \&        {
1934 \&          return realfn (t);
1935 \&        }
1936 \&        
1937 \&        void f()
1938 \&        {
1939 \&          forward({1,2}); // call forward<std::initializer_list<int>>
1940 \&        }
1941 .Ve
1942 .Sp
1943 This deduction was implemented as a possible extension to the
1944 originally proposed semantics for the \*(C+11 standard, but was not part
1945 of the final standard, so it is disabled by default.  This option is
1946 deprecated, and may be removed in a future version of G++.
1947 .IP "\fB\-ffriend\-injection\fR" 4
1948 .IX Item "-ffriend-injection"
1949 Inject friend functions into the enclosing namespace, so that they are
1950 visible outside the scope of the class in which they are declared.
1951 Friend functions were documented to work this way in the old Annotated
1952 \&\*(C+ Reference Manual, and versions of G++ before 4.1 always worked
1953 that way.  However, in \s-1ISO\s0 \*(C+ a friend function that is not declared
1954 in an enclosing scope can only be found using argument dependent
1955 lookup.  This option causes friends to be injected as they were in
1956 earlier releases.
1957 .Sp
1958 This option is for compatibility, and may be removed in a future
1959 release of G++.
1960 .IP "\fB\-fno\-elide\-constructors\fR" 4
1961 .IX Item "-fno-elide-constructors"
1962 The \*(C+ standard allows an implementation to omit creating a temporary
1963 that is only used to initialize another object of the same type.
1964 Specifying this option disables that optimization, and forces G++ to
1965 call the copy constructor in all cases.
1966 .IP "\fB\-fno\-enforce\-eh\-specs\fR" 4
1967 .IX Item "-fno-enforce-eh-specs"
1968 Don't generate code to check for violation of exception specifications
1969 at run time.  This option violates the \*(C+ standard, but may be useful
1970 for reducing code size in production builds, much like defining
1971 \&\fB\s-1NDEBUG\s0\fR.  This does not give user code permission to throw
1972 exceptions in violation of the exception specifications; the compiler
1973 will still optimize based on the specifications, so throwing an
1974 unexpected exception will result in undefined behavior.
1975 .IP "\fB\-ffor\-scope\fR" 4
1976 .IX Item "-ffor-scope"
1977 .PD 0
1978 .IP "\fB\-fno\-for\-scope\fR" 4
1979 .IX Item "-fno-for-scope"
1980 .PD
1981 If \fB\-ffor\-scope\fR is specified, the scope of variables declared in
1982 a \fIfor-init-statement\fR is limited to the \fBfor\fR loop itself,
1983 as specified by the \*(C+ standard.
1984 If \fB\-fno\-for\-scope\fR is specified, the scope of variables declared in
1985 a \fIfor-init-statement\fR extends to the end of the enclosing scope,
1986 as was the case in old versions of G++, and other (traditional)
1987 implementations of \*(C+.
1988 .Sp
1989 The default if neither flag is given to follow the standard,
1990 but to allow and give a warning for old-style code that would
1991 otherwise be invalid, or have different behavior.
1992 .IP "\fB\-fno\-gnu\-keywords\fR" 4
1993 .IX Item "-fno-gnu-keywords"
1994 Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
1995 word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
1996 \&\fB\-ansi\fR implies \fB\-fno\-gnu\-keywords\fR.
1997 .IP "\fB\-fno\-implicit\-templates\fR" 4
1998 .IX Item "-fno-implicit-templates"
1999 Never emit code for non-inline templates that are instantiated
2000 implicitly (i.e. by use); only emit code for explicit instantiations.
2001 .IP "\fB\-fno\-implicit\-inline\-templates\fR" 4
2002 .IX Item "-fno-implicit-inline-templates"
2003 Don't emit code for implicit instantiations of inline templates, either.
2004 The default is to handle inlines differently so that compiles with and
2005 without optimization will need the same set of explicit instantiations.
2006 .IP "\fB\-fno\-implement\-inlines\fR" 4
2007 .IX Item "-fno-implement-inlines"
2008 To save space, do not emit out-of-line copies of inline functions
2009 controlled by \fB#pragma implementation\fR.  This will cause linker
2010 errors if these functions are not inlined everywhere they are called.
2011 .IP "\fB\-fms\-extensions\fR" 4
2012 .IX Item "-fms-extensions"
2013 Disable pedantic warnings about constructs used in \s-1MFC\s0, such as implicit
2014 int and getting a pointer to member function via non-standard syntax.
2015 .IP "\fB\-fno\-nonansi\-builtins\fR" 4
2016 .IX Item "-fno-nonansi-builtins"
2017 Disable built-in declarations of functions that are not mandated by
2018 \&\s-1ANSI/ISO\s0 C.  These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR,
2019 \&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
2020 .IP "\fB\-fnothrow\-opt\fR" 4
2021 .IX Item "-fnothrow-opt"
2022 Treat a \f(CW\*(C`throw()\*(C'\fR exception specification as though it were a
2023 \&\f(CW\*(C`noexcept\*(C'\fR specification to reduce or eliminate the text size
2024 overhead relative to a function with no exception specification.  If
2025 the function has local variables of types with non-trivial
2026 destructors, the exception specification will actually make the
2027 function smaller because the \s-1EH\s0 cleanups for those variables can be
2028 optimized away.  The semantic effect is that an exception thrown out of
2029 a function with such an exception specification will result in a call
2030 to \f(CW\*(C`terminate\*(C'\fR rather than \f(CW\*(C`unexpected\*(C'\fR.
2031 .IP "\fB\-fno\-operator\-names\fR" 4
2032 .IX Item "-fno-operator-names"
2033 Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
2034 \&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as
2035 synonyms as keywords.
2036 .IP "\fB\-fno\-optional\-diags\fR" 4
2037 .IX Item "-fno-optional-diags"
2038 Disable diagnostics that the standard says a compiler does not need to
2039 issue.  Currently, the only such diagnostic issued by G++ is the one for
2040 a name having multiple meanings within a class.
2041 .IP "\fB\-fpermissive\fR" 4
2042 .IX Item "-fpermissive"
2043 Downgrade some diagnostics about nonconformant code from errors to
2044 warnings.  Thus, using \fB\-fpermissive\fR will allow some
2045 nonconforming code to compile.
2046 .IP "\fB\-fno\-pretty\-templates\fR" 4
2047 .IX Item "-fno-pretty-templates"
2048 When an error message refers to a specialization of a function
2049 template, the compiler will normally print the signature of the
2050 template followed by the template arguments and any typedefs or
2051 typenames in the signature (e.g. \f(CW\*(C`void f(T) [with T = int]\*(C'\fR
2052 rather than \f(CW\*(C`void f(int)\*(C'\fR) so that it's clear which template is
2053 involved.  When an error message refers to a specialization of a class
2054 template, the compiler will omit any template arguments that match
2055 the default template arguments for that template.  If either of these
2056 behaviors make it harder to understand the error message rather than
2057 easier, using \fB\-fno\-pretty\-templates\fR will disable them.
2058 .IP "\fB\-frepo\fR" 4
2059 .IX Item "-frepo"
2060 Enable automatic template instantiation at link time.  This option also
2061 implies \fB\-fno\-implicit\-templates\fR.
2062 .IP "\fB\-fno\-rtti\fR" 4
2063 .IX Item "-fno-rtti"
2064 Disable generation of information about every class with virtual
2065 functions for use by the \*(C+ run-time type identification features
2066 (\fBdynamic_cast\fR and \fBtypeid\fR).  If you don't use those parts
2067 of the language, you can save some space by using this flag.  Note that
2068 exception handling uses the same information, but it will generate it as
2069 needed. The \fBdynamic_cast\fR operator can still be used for casts that
2070 do not require run-time type information, i.e. casts to \f(CW\*(C`void *\*(C'\fR or to
2071 unambiguous base classes.
2072 .IP "\fB\-fstats\fR" 4
2073 .IX Item "-fstats"
2074 Emit statistics about front-end processing at the end of the compilation.
2075 This information is generally only useful to the G++ development team.
2076 .IP "\fB\-fstrict\-enums\fR" 4
2077 .IX Item "-fstrict-enums"
2078 Allow the compiler to optimize using the assumption that a value of
2079 enumerated type can only be one of the values of the enumeration (as
2080 defined in the \*(C+ standard; basically, a value that can be
2081 represented in the minimum number of bits needed to represent all the
2082 enumerators).  This assumption may not be valid if the program uses a
2083 cast to convert an arbitrary integer value to the enumerated type.
2084 .IP "\fB\-ftemplate\-depth=\fR\fIn\fR" 4
2085 .IX Item "-ftemplate-depth=n"
2086 Set the maximum instantiation depth for template classes to \fIn\fR.
2087 A limit on the template instantiation depth is needed to detect
2088 endless recursions during template class instantiation.  \s-1ANSI/ISO\s0 \*(C+
2089 conforming programs must not rely on a maximum depth greater than 17
2090 (changed to 1024 in \*(C+11).  The default value is 900, as the compiler
2091 can run out of stack space before hitting 1024 in some situations.
2092 .IP "\fB\-fno\-threadsafe\-statics\fR" 4
2093 .IX Item "-fno-threadsafe-statics"
2094 Do not emit the extra code to use the routines specified in the \*(C+
2095 \&\s-1ABI\s0 for thread-safe initialization of local statics.  You can use this
2096 option to reduce code size slightly in code that doesn't need to be
2097 thread-safe.
2098 .IP "\fB\-fuse\-cxa\-atexit\fR" 4
2099 .IX Item "-fuse-cxa-atexit"
2100 Register destructors for objects with static storage duration with the
2101 \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
2102 This option is required for fully standards-compliant handling of static
2103 destructors, but will only work if your C library supports
2104 \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
2105 .IP "\fB\-fno\-use\-cxa\-get\-exception\-ptr\fR" 4
2106 .IX Item "-fno-use-cxa-get-exception-ptr"
2107 Don't use the \f(CW\*(C`_\|_cxa_get_exception_ptr\*(C'\fR runtime routine.  This
2108 will cause \f(CW\*(C`std::uncaught_exception\*(C'\fR to be incorrect, but is necessary
2109 if the runtime routine is not available.
2110 .IP "\fB\-fvisibility\-inlines\-hidden\fR" 4
2111 .IX Item "-fvisibility-inlines-hidden"
2112 This switch declares that the user does not attempt to compare
2113 pointers to inline functions or methods where the addresses of the two functions
2114 were taken in different shared objects.
2115 .Sp
2116 The effect of this is that \s-1GCC\s0 may, effectively, mark inline methods with
2117 \&\f(CW\*(C`_\|_attribute_\|_ ((visibility ("hidden")))\*(C'\fR so that they do not
2118 appear in the export table of a \s-1DSO\s0 and do not require a \s-1PLT\s0 indirection
2119 when used within the \s-1DSO\s0.  Enabling this option can have a dramatic effect
2120 on load and link times of a \s-1DSO\s0 as it massively reduces the size of the
2121 dynamic export table when the library makes heavy use of templates.
2122 .Sp
2123 The behavior of this switch is not quite the same as marking the
2124 methods as hidden directly, because it does not affect static variables
2125 local to the function or cause the compiler to deduce that
2126 the function is defined in only one shared object.
2127 .Sp
2128 You may mark a method as having a visibility explicitly to negate the
2129 effect of the switch for that method.  For example, if you do want to
2130 compare pointers to a particular inline method, you might mark it as
2131 having default visibility.  Marking the enclosing class with explicit
2132 visibility will have no effect.
2133 .Sp
2134 Explicitly instantiated inline methods are unaffected by this option
2135 as their linkage might otherwise cross a shared library boundary.
2136 .IP "\fB\-fvisibility\-ms\-compat\fR" 4
2137 .IX Item "-fvisibility-ms-compat"
2138 This flag attempts to use visibility settings to make \s-1GCC\s0's \*(C+
2139 linkage model compatible with that of Microsoft Visual Studio.
2140 .Sp
2141 The flag makes these changes to \s-1GCC\s0's linkage model:
2142 .RS 4
2143 .IP "1." 4
2144 It sets the default visibility to \f(CW\*(C`hidden\*(C'\fR, like
2145 \&\fB\-fvisibility=hidden\fR.
2146 .IP "2." 4
2147 Types, but not their members, are not hidden by default.
2148 .IP "3." 4
2149 The One Definition Rule is relaxed for types without explicit
2150 visibility specifications that are defined in more than one different
2151 shared object: those declarations are permitted if they would have
2152 been permitted when this option was not used.
2153 .RE
2154 .RS 4
2155 .Sp
2156 In new code it is better to use \fB\-fvisibility=hidden\fR and
2157 export those classes that are intended to be externally visible.
2158 Unfortunately it is possible for code to rely, perhaps accidentally,
2159 on the Visual Studio behavior.
2160 .Sp
2161 Among the consequences of these changes are that static data members
2162 of the same type with the same name but defined in different shared
2163 objects will be different, so changing one will not change the other;
2164 and that pointers to function members defined in different shared
2165 objects may not compare equal.  When this flag is given, it is a
2166 violation of the \s-1ODR\s0 to define types with the same name differently.
2167 .RE
2168 .IP "\fB\-fno\-weak\fR" 4
2169 .IX Item "-fno-weak"
2170 Do not use weak symbol support, even if it is provided by the linker.
2171 By default, G++ will use weak symbols if they are available.  This
2172 option exists only for testing, and should not be used by end-users;
2173 it will result in inferior code and has no benefits.  This option may
2174 be removed in a future release of G++.
2175 .IP "\fB\-nostdinc++\fR" 4
2176 .IX Item "-nostdinc++"
2177 Do not search for header files in the standard directories specific to
2178 \&\*(C+, but do still search the other standard directories.  (This option
2179 is used when building the \*(C+ library.)
2180 .PP
2181 In addition, these optimization, warning, and code generation options
2182 have meanings only for \*(C+ programs:
2183 .IP "\fB\-fno\-default\-inline\fR" 4
2184 .IX Item "-fno-default-inline"
2185 Do not assume \fBinline\fR for functions defined inside a class scope.
2186   Note that these
2187 functions will have linkage like inline functions; they just won't be
2188 inlined by default.
2189 .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
2190 .IX Item "-Wabi (C, Objective-C,  and Objective- only)"
2191 Warn when G++ generates code that is probably not compatible with the
2192 vendor-neutral \*(C+ \s-1ABI\s0.  Although an effort has been made to warn about
2193 all such cases, there are probably some cases that are not warned about,
2194 even though G++ is generating incompatible code.  There may also be
2195 cases where warnings are emitted even though the code that is generated
2196 will be compatible.
2197 .Sp
2198 You should rewrite your code to avoid these warnings if you are
2199 concerned about the fact that code generated by G++ may not be binary
2200 compatible with code generated by other compilers.
2201 .Sp
2202 The known incompatibilities in \fB\-fabi\-version=2\fR (the default) include:
2203 .RS 4
2204 .IP "\(bu" 4
2205 A template with a non-type template parameter of reference type is
2206 mangled incorrectly:
2207 .Sp
2208 .Vb 3
2209 \&        extern int N;
2210 \&        template <int &> struct S {};
2211 \&        void n (S<N>) {2}
2212 .Ve
2213 .Sp
2214 This is fixed in \fB\-fabi\-version=3\fR.
2215 .IP "\(bu" 4
2216 \&\s-1SIMD\s0 vector types declared using \f(CW\*(C`_\|_attribute ((vector_size))\*(C'\fR are
2217 mangled in a non-standard way that does not allow for overloading of
2218 functions taking vectors of different sizes.
2219 .Sp
2220 The mangling is changed in \fB\-fabi\-version=4\fR.
2221 .RE
2222 .RS 4
2223 .Sp
2224 The known incompatibilities in \fB\-fabi\-version=1\fR include:
2225 .IP "\(bu" 4
2226 Incorrect handling of tail-padding for bit-fields.  G++ may attempt to
2227 pack data into the same byte as a base class.  For example:
2228 .Sp
2229 .Vb 2
2230 \&        struct A { virtual void f(); int f1 : 1; };
2231 \&        struct B : public A { int f2 : 1; };
2232 .Ve
2233 .Sp
2234 In this case, G++ will place \f(CW\*(C`B::f2\*(C'\fR into the same byte
2235 as\f(CW\*(C`A::f1\*(C'\fR; other compilers will not.  You can avoid this problem
2236 by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
2237 byte size on your platform; that will cause G++ and other compilers to
2238 layout \f(CW\*(C`B\*(C'\fR identically.
2239 .IP "\(bu" 4
2240 Incorrect handling of tail-padding for virtual bases.  G++ does not use
2241 tail padding when laying out virtual bases.  For example:
2242 .Sp
2243 .Vb 3
2244 \&        struct A { virtual void f(); char c1; };
2245 \&        struct B { B(); char c2; };
2246 \&        struct C : public A, public virtual B {};
2247 .Ve
2248 .Sp
2249 In this case, G++ will not place \f(CW\*(C`B\*(C'\fR into the tail-padding for
2250 \&\f(CW\*(C`A\*(C'\fR; other compilers will.  You can avoid this problem by
2251 explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
2252 alignment (ignoring virtual base classes); that will cause G++ and other
2253 compilers to layout \f(CW\*(C`C\*(C'\fR identically.
2254 .IP "\(bu" 4
2255 Incorrect handling of bit-fields with declared widths greater than that
2256 of their underlying types, when the bit-fields appear in a union.  For
2257 example:
2258 .Sp
2259 .Vb 1
2260 \&        union U { int i : 4096; };
2261 .Ve
2262 .Sp
2263 Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
2264 union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
2265 .IP "\(bu" 4
2266 Empty classes can be placed at incorrect offsets.  For example:
2267 .Sp
2268 .Vb 1
2269 \&        struct A {};
2270 \&        
2271 \&        struct B {
2272 \&          A a;
2273 \&          virtual void f ();
2274 \&        };
2275 \&        
2276 \&        struct C : public B, public A {};
2277 .Ve
2278 .Sp
2279 G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
2280 it should be placed at offset zero.  G++ mistakenly believes that the
2281 \&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
2282 .IP "\(bu" 4
2283 Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
2284 template template parameters can be mangled incorrectly.
2285 .Sp
2286 .Vb 2
2287 \&        template <typename Q>
2288 \&        void f(typename Q::X) {}
2289 \&        
2290 \&        template <template <typename> class Q>
2291 \&        void f(typename Q<int>::X) {}
2292 .Ve
2293 .Sp
2294 Instantiations of these templates may be mangled incorrectly.
2295 .RE
2296 .RS 4
2297 .Sp
2298 It also warns psABI related changes.  The known psABI changes at this
2299 point include:
2300 .IP "\(bu" 4
2301 For SYSV/x86\-64, when passing union with long double, it is changed to
2302 pass in memory as specified in psABI.  For example:
2303 .Sp
2304 .Vb 4
2305 \&        union U {
2306 \&          long double ld;
2307 \&          int i;
2308 \&        };
2309 .Ve
2310 .Sp
2311 \&\f(CW\*(C`union U\*(C'\fR will always be passed in memory.
2312 .RE
2313 .RS 4
2314 .RE
2315 .IP "\fB\-Wctor\-dtor\-privacy\fR (\*(C+ and Objective\-\*(C+ only)" 4
2316 .IX Item "-Wctor-dtor-privacy ( and Objective- only)"
2317 Warn when a class seems unusable because all the constructors or
2318 destructors in that class are private, and it has neither friends nor
2319 public static member functions.
2320 .IP "\fB\-Wdelete\-non\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
2321 .IX Item "-Wdelete-non-virtual-dtor ( and Objective- only)"
2322 Warn when \fBdelete\fR is used to destroy an instance of a class that
2323 has virtual functions and non-virtual destructor. It is unsafe to delete
2324 an instance of a derived class through a pointer to a base class if the
2325 base class does not have a virtual destructor.  This warning is enabled
2326 by \fB\-Wall\fR.
2327 .IP "\fB\-Wnarrowing\fR (\*(C+ and Objective\-\*(C+ only)" 4
2328 .IX Item "-Wnarrowing ( and Objective- only)"
2329 Warn when a narrowing conversion prohibited by \*(C+11 occurs within
2330 \&\fB{ }\fR, e.g.
2331 .Sp
2332 .Vb 1
2333 \&        int i = { 2.2 }; // error: narrowing from double to int
2334 .Ve
2335 .Sp
2336 This flag is included in \fB\-Wall\fR and \fB\-Wc++11\-compat\fR.
2337 .Sp
2338 With \-std=c++11, \fB\-Wno\-narrowing\fR suppresses the diagnostic
2339 required by the standard.  Note that this does not affect the meaning
2340 of well-formed code; narrowing conversions are still considered
2341 ill-formed in \s-1SFINAE\s0 context.
2342 .IP "\fB\-Wnoexcept\fR (\*(C+ and Objective\-\*(C+ only)" 4
2343 .IX Item "-Wnoexcept ( and Objective- only)"
2344 Warn when a noexcept-expression evaluates to false because of a call
2345 to a function that does not have a non-throwing exception
2346 specification (i.e. \fB\f(BIthrow()\fB\fR or \fBnoexcept\fR) but is known by
2347 the compiler to never throw an exception.
2348 .IP "\fB\-Wnon\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
2349 .IX Item "-Wnon-virtual-dtor ( and Objective- only)"
2350 Warn when a class has virtual functions and accessible non-virtual
2351 destructor, in which case it would be possible but unsafe to delete
2352 an instance of a derived class through a pointer to the base class.
2353 This warning is also enabled if \fB\-Weffc++\fR is specified.
2354 .IP "\fB\-Wreorder\fR (\*(C+ and Objective\-\*(C+ only)" 4
2355 .IX Item "-Wreorder ( and Objective- only)"
2356 Warn when the order of member initializers given in the code does not
2357 match the order in which they must be executed.  For instance:
2358 .Sp
2359 .Vb 5
2360 \&        struct A {
2361 \&          int i;
2362 \&          int j;
2363 \&          A(): j (0), i (1) { }
2364 \&        };
2365 .Ve
2366 .Sp
2367 The compiler will rearrange the member initializers for \fBi\fR
2368 and \fBj\fR to match the declaration order of the members, emitting
2369 a warning to that effect.  This warning is enabled by \fB\-Wall\fR.
2370 .PP
2371 The following \fB\-W...\fR options are not affected by \fB\-Wall\fR.
2372 .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
2373 .IX Item "-Weffc++ ( and Objective- only)"
2374 Warn about violations of the following style guidelines from Scott Meyers'
2375 \&\fIEffective \*(C+, Second Edition\fR book:
2376 .RS 4
2377 .IP "\(bu" 4
2378 Item 11:  Define a copy constructor and an assignment operator for classes
2379 with dynamically allocated memory.
2380 .IP "\(bu" 4
2381 Item 12:  Prefer initialization to assignment in constructors.
2382 .IP "\(bu" 4
2383 Item 14:  Make destructors virtual in base classes.
2384 .IP "\(bu" 4
2385 Item 15:  Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
2386 .IP "\(bu" 4
2387 Item 23:  Don't try to return a reference when you must return an object.
2388 .RE
2389 .RS 4
2390 .Sp
2391 Also warn about violations of the following style guidelines from
2392 Scott Meyers' \fIMore Effective \*(C+\fR book:
2393 .IP "\(bu" 4
2394 Item 6:  Distinguish between prefix and postfix forms of increment and
2395 decrement operators.
2396 .IP "\(bu" 4
2397 Item 7:  Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
2398 .RE
2399 .RS 4
2400 .Sp
2401 When selecting this option, be aware that the standard library
2402 headers do not obey all of these guidelines; use \fBgrep \-v\fR
2403 to filter out those warnings.
2404 .RE
2405 .IP "\fB\-Wstrict\-null\-sentinel\fR (\*(C+ and Objective\-\*(C+ only)" 4
2406 .IX Item "-Wstrict-null-sentinel ( and Objective- only)"
2407 Warn also about the use of an uncasted \f(CW\*(C`NULL\*(C'\fR as sentinel.  When
2408 compiling only with \s-1GCC\s0 this is a valid sentinel, as \f(CW\*(C`NULL\*(C'\fR is defined
2409 to \f(CW\*(C`_\|_null\*(C'\fR.  Although it is a null pointer constant not a null pointer,
2410 it is guaranteed to be of the same size as a pointer.  But this use is
2411 not portable across different compilers.
2412 .IP "\fB\-Wno\-non\-template\-friend\fR (\*(C+ and Objective\-\*(C+ only)" 4
2413 .IX Item "-Wno-non-template-friend ( and Objective- only)"
2414 Disable warnings when non-templatized friend functions are declared
2415 within a template.  Since the advent of explicit template specification
2416 support in G++, if the name of the friend is an unqualified-id (i.e.,
2417 \&\fBfriend foo(int)\fR), the \*(C+ language specification demands that the
2418 friend declare or define an ordinary, nontemplate function.  (Section
2419 14.5.3).  Before G++ implemented explicit specification, unqualified-ids
2420 could be interpreted as a particular specialization of a templatized
2421 function.  Because this non-conforming behavior is no longer the default
2422 behavior for G++, \fB\-Wnon\-template\-friend\fR allows the compiler to
2423 check existing code for potential trouble spots and is on by default.
2424 This new compiler behavior can be turned off with
2425 \&\fB\-Wno\-non\-template\-friend\fR, which keeps the conformant compiler code
2426 but disables the helpful warning.
2427 .IP "\fB\-Wold\-style\-cast\fR (\*(C+ and Objective\-\*(C+ only)" 4
2428 .IX Item "-Wold-style-cast ( and Objective- only)"
2429 Warn if an old-style (C\-style) cast to a non-void type is used within
2430 a \*(C+ program.  The new-style casts (\fBdynamic_cast\fR,
2431 \&\fBstatic_cast\fR, \fBreinterpret_cast\fR, and \fBconst_cast\fR) are
2432 less vulnerable to unintended effects and much easier to search for.
2433 .IP "\fB\-Woverloaded\-virtual\fR (\*(C+ and Objective\-\*(C+ only)" 4
2434 .IX Item "-Woverloaded-virtual ( and Objective- only)"
2435 Warn when a function declaration hides virtual functions from a
2436 base class.  For example, in:
2437 .Sp
2438 .Vb 3
2439 \&        struct A {
2440 \&          virtual void f();
2441 \&        };
2442 \&        
2443 \&        struct B: public A {
2444 \&          void f(int);
2445 \&        };
2446 .Ve
2447 .Sp
2448 the \f(CW\*(C`A\*(C'\fR class version of \f(CW\*(C`f\*(C'\fR is hidden in \f(CW\*(C`B\*(C'\fR, and code
2449 like:
2450 .Sp
2451 .Vb 2
2452 \&        B* b;
2453 \&        b\->f();
2454 .Ve
2455 .Sp
2456 will fail to compile.
2457 .IP "\fB\-Wno\-pmf\-conversions\fR (\*(C+ and Objective\-\*(C+ only)" 4
2458 .IX Item "-Wno-pmf-conversions ( and Objective- only)"
2459 Disable the diagnostic for converting a bound pointer to member function
2460 to a plain pointer.
2461 .IP "\fB\-Wsign\-promo\fR (\*(C+ and Objective\-\*(C+ only)" 4
2462 .IX Item "-Wsign-promo ( and Objective- only)"
2463 Warn when overload resolution chooses a promotion from unsigned or
2464 enumerated type to a signed type, over a conversion to an unsigned type of
2465 the same size.  Previous versions of G++ would try to preserve
2466 unsignedness, but the standard mandates the current behavior.
2467 .Sp
2468 .Vb 4
2469 \&        struct A {
2470 \&          operator int ();
2471 \&          A& operator = (int);
2472 \&        };
2473 \&        
2474 \&        main ()
2475 \&        {
2476 \&          A a,b;
2477 \&          a = b;
2478 \&        }
2479 .Ve
2480 .Sp
2481 In this example, G++ will synthesize a default \fBA& operator =
2482 (const A&);\fR, while cfront will use the user-defined \fBoperator =\fR.
2483 .Sh "Options Controlling Objective-C and Objective\-\*(C+ Dialects"
2484 .IX Subsection "Options Controlling Objective-C and Objective- Dialects"
2485 (\s-1NOTE:\s0 This manual does not describe the Objective-C and Objective\-\*(C+
2486 languages themselves.
2487 .PP
2488 This section describes the command-line options that are only meaningful
2489 for Objective-C and Objective\-\*(C+ programs, but you can also use most of
2490 the language-independent \s-1GNU\s0 compiler options.
2491 For example, you might compile a file \f(CW\*(C`some_class.m\*(C'\fR like this:
2492 .PP
2493 .Vb 1
2494 \&        gcc \-g \-fgnu\-runtime \-O \-c some_class.m
2495 .Ve
2496 .PP
2497 In this example, \fB\-fgnu\-runtime\fR is an option meant only for
2498 Objective-C and Objective\-\*(C+ programs; you can use the other options with
2499 any language supported by \s-1GCC\s0.
2500 .PP
2501 Note that since Objective-C is an extension of the C language, Objective-C
2502 compilations may also use options specific to the C front-end (e.g.,
2503 \&\fB\-Wtraditional\fR).  Similarly, Objective\-\*(C+ compilations may use
2504 \&\*(C+\-specific options (e.g., \fB\-Wabi\fR).
2505 .PP
2506 Here is a list of options that are \fIonly\fR for compiling Objective-C
2507 and Objective\-\*(C+ programs:
2508 .IP "\fB\-fconstant\-string\-class=\fR\fIclass-name\fR" 4
2509 .IX Item "-fconstant-string-class=class-name"
2510 Use \fIclass-name\fR as the name of the class to instantiate for each
2511 literal string specified with the syntax \f(CW\*(C`@"..."\*(C'\fR.  The default
2512 class name is \f(CW\*(C`NXConstantString\*(C'\fR if the \s-1GNU\s0 runtime is being used, and
2513 \&\f(CW\*(C`NSConstantString\*(C'\fR if the NeXT runtime is being used (see below).  The
2514 \&\fB\-fconstant\-cfstrings\fR option, if also present, will override the
2515 \&\fB\-fconstant\-string\-class\fR setting and cause \f(CW\*(C`@"..."\*(C'\fR literals
2516 to be laid out as constant CoreFoundation strings.
2517 .IP "\fB\-fgnu\-runtime\fR" 4
2518 .IX Item "-fgnu-runtime"
2519 Generate object code compatible with the standard \s-1GNU\s0 Objective-C
2520 runtime.  This is the default for most types of systems.
2521 .IP "\fB\-fnext\-runtime\fR" 4
2522 .IX Item "-fnext-runtime"
2523 Generate output compatible with the NeXT runtime.  This is the default
2524 for NeXT-based systems, including Darwin and Mac \s-1OS\s0 X.  The macro
2525 \&\f(CW\*(C`_\|_NEXT_RUNTIME_\|_\*(C'\fR is predefined if (and only if) this option is
2526 used.
2527 .IP "\fB\-fno\-nil\-receivers\fR" 4
2528 .IX Item "-fno-nil-receivers"
2529 Assume that all Objective-C message dispatches (\f(CW\*(C`[receiver
2530 message:arg]\*(C'\fR) in this translation unit ensure that the receiver is
2531 not \f(CW\*(C`nil\*(C'\fR.  This allows for more efficient entry points in the
2532 runtime to be used.  This option is only available in conjunction with
2533 the NeXT runtime and \s-1ABI\s0 version 0 or 1.
2534 .IP "\fB\-fobjc\-abi\-version=\fR\fIn\fR" 4
2535 .IX Item "-fobjc-abi-version=n"
2536 Use version \fIn\fR of the Objective-C \s-1ABI\s0 for the selected runtime.
2537 This option is currently supported only for the NeXT runtime.  In that
2538 case, Version 0 is the traditional (32\-bit) \s-1ABI\s0 without support for
2539 properties and other Objective-C 2.0 additions.  Version 1 is the
2540 traditional (32\-bit) \s-1ABI\s0 with support for properties and other
2541 Objective-C 2.0 additions.  Version 2 is the modern (64\-bit) \s-1ABI\s0.  If
2542 nothing is specified, the default is Version 0 on 32\-bit target
2543 machines, and Version 2 on 64\-bit target machines.
2544 .IP "\fB\-fobjc\-call\-cxx\-cdtors\fR" 4
2545 .IX Item "-fobjc-call-cxx-cdtors"
2546 For each Objective-C class, check if any of its instance variables is a
2547 \&\*(C+ object with a non-trivial default constructor.  If so, synthesize a
2548 special \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR instance method which will run
2549 non-trivial default constructors on any such instance variables, in order,
2550 and then return \f(CW\*(C`self\*(C'\fR.  Similarly, check if any instance variable
2551 is a \*(C+ object with a non-trivial destructor, and if so, synthesize a
2552 special \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR method which will run
2553 all such default destructors, in reverse order.
2554 .Sp
2555 The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR
2556 methods thusly generated will only operate on instance variables
2557 declared in the current Objective-C class, and not those inherited
2558 from superclasses.  It is the responsibility of the Objective-C
2559 runtime to invoke all such methods in an object's inheritance
2560 hierarchy.  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR methods will be invoked
2561 by the runtime immediately after a new object instance is allocated;
2562 the \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods will be invoked immediately
2563 before the runtime deallocates an object instance.
2564 .Sp
2565 As of this writing, only the NeXT runtime on Mac \s-1OS\s0 X 10.4 and later has
2566 support for invoking the \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and
2567 \&\f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods.
2568 .IP "\fB\-fobjc\-direct\-dispatch\fR" 4
2569 .IX Item "-fobjc-direct-dispatch"
2570 Allow fast jumps to the message dispatcher.  On Darwin this is
2571 accomplished via the comm page.
2572 .IP "\fB\-fobjc\-exceptions\fR" 4
2573 .IX Item "-fobjc-exceptions"
2574 Enable syntactic support for structured exception handling in
2575 Objective-C, similar to what is offered by \*(C+ and Java.  This option
2576 is required to use the Objective-C keywords \f(CW@try\fR,
2577 \&\f(CW@throw\fR, \f(CW@catch\fR, \f(CW@finally\fR and
2578 \&\f(CW@synchronized\fR.  This option is available with both the \s-1GNU\s0
2579 runtime and the NeXT runtime (but not available in conjunction with
2580 the NeXT runtime on Mac \s-1OS\s0 X 10.2 and earlier).
2581 .IP "\fB\-fobjc\-gc\fR" 4
2582 .IX Item "-fobjc-gc"
2583 Enable garbage collection (\s-1GC\s0) in Objective-C and Objective\-\*(C+
2584 programs.  This option is only available with the NeXT runtime; the
2585 \&\s-1GNU\s0 runtime has a different garbage collection implementation that
2586 does not require special compiler flags.
2587 .IP "\fB\-fobjc\-nilcheck\fR" 4
2588 .IX Item "-fobjc-nilcheck"
2589 For the NeXT runtime with version 2 of the \s-1ABI\s0, check for a nil
2590 receiver in method invocations before doing the actual method call.
2591 This is the default and can be disabled using
2592 \&\fB\-fno\-objc\-nilcheck\fR.  Class methods and super calls are never
2593 checked for nil in this way no matter what this flag is set to.
2594 Currently this flag does nothing when the \s-1GNU\s0 runtime, or an older
2595 version of the NeXT runtime \s-1ABI\s0, is used.
2596 .IP "\fB\-fobjc\-std=objc1\fR" 4
2597 .IX Item "-fobjc-std=objc1"
2598 Conform to the language syntax of Objective-C 1.0, the language
2599 recognized by \s-1GCC\s0 4.0.  This only affects the Objective-C additions to
2600 the C/\*(C+ language; it does not affect conformance to C/\*(C+ standards,
2601 which is controlled by the separate C/\*(C+ dialect option flags.  When
2602 this option is used with the Objective-C or Objective\-\*(C+ compiler,
2603 any Objective-C syntax that is not recognized by \s-1GCC\s0 4.0 is rejected.
2604 This is useful if you need to make sure that your Objective-C code can
2605 be compiled with older versions of \s-1GCC\s0.
2606 .IP "\fB\-freplace\-objc\-classes\fR" 4
2607 .IX Item "-freplace-objc-classes"
2608 Emit a special marker instructing \fB\f(BIld\fB\|(1)\fR not to statically link in
2609 the resulting object file, and allow \fB\f(BIdyld\fB\|(1)\fR to load it in at
2610 run time instead.  This is used in conjunction with the Fix-and-Continue
2611 debugging mode, where the object file in question may be recompiled and
2612 dynamically reloaded in the course of program execution, without the need
2613 to restart the program itself.  Currently, Fix-and-Continue functionality
2614 is only available in conjunction with the NeXT runtime on Mac \s-1OS\s0 X 10.3
2615 and later.
2616 .IP "\fB\-fzero\-link\fR" 4
2617 .IX Item "-fzero-link"
2618 When compiling for the NeXT runtime, the compiler ordinarily replaces calls
2619 to \f(CW\*(C`objc_getClass("...")\*(C'\fR (when the name of the class is known at
2620 compile time) with static class references that get initialized at load time,
2621 which improves run-time performance.  Specifying the \fB\-fzero\-link\fR flag
2622 suppresses this behavior and causes calls to \f(CW\*(C`objc_getClass("...")\*(C'\fR
2623 to be retained.  This is useful in Zero-Link debugging mode, since it allows
2624 for individual class implementations to be modified during program execution.
2625 The \s-1GNU\s0 runtime currently always retains calls to \f(CW\*(C`objc_get_class("...")\*(C'\fR
2626 regardless of command-line options.
2627 .IP "\fB\-gen\-decls\fR" 4
2628 .IX Item "-gen-decls"
2629 Dump interface declarations for all classes seen in the source file to a
2630 file named \fI\fIsourcename\fI.decl\fR.
2631 .IP "\fB\-Wassign\-intercept\fR (Objective-C and Objective\-\*(C+ only)" 4
2632 .IX Item "-Wassign-intercept (Objective-C and Objective- only)"
2633 Warn whenever an Objective-C assignment is being intercepted by the
2634 garbage collector.
2635 .IP "\fB\-Wno\-protocol\fR (Objective-C and Objective\-\*(C+ only)" 4
2636 .IX Item "-Wno-protocol (Objective-C and Objective- only)"
2637 If a class is declared to implement a protocol, a warning is issued for
2638 every method in the protocol that is not implemented by the class.  The
2639 default behavior is to issue a warning for every method not explicitly
2640 implemented in the class, even if a method implementation is inherited
2641 from the superclass.  If you use the \fB\-Wno\-protocol\fR option, then
2642 methods inherited from the superclass are considered to be implemented,
2643 and no warning is issued for them.
2644 .IP "\fB\-Wselector\fR (Objective-C and Objective\-\*(C+ only)" 4
2645 .IX Item "-Wselector (Objective-C and Objective- only)"
2646 Warn if multiple methods of different types for the same selector are
2647 found during compilation.  The check is performed on the list of methods
2648 in the final stage of compilation.  Additionally, a check is performed
2649 for each selector appearing in a \f(CW\*(C`@selector(...)\*(C'\fR
2650 expression, and a corresponding method for that selector has been found
2651 during compilation.  Because these checks scan the method table only at
2652 the end of compilation, these warnings are not produced if the final
2653 stage of compilation is not reached, for example because an error is
2654 found during compilation, or because the \fB\-fsyntax\-only\fR option is
2655 being used.
2656 .IP "\fB\-Wstrict\-selector\-match\fR (Objective-C and Objective\-\*(C+ only)" 4
2657 .IX Item "-Wstrict-selector-match (Objective-C and Objective- only)"
2658 Warn if multiple methods with differing argument and/or return types are
2659 found for a given selector when attempting to send a message using this
2660 selector to a receiver of type \f(CW\*(C`id\*(C'\fR or \f(CW\*(C`Class\*(C'\fR.  When this flag
2661 is off (which is the default behavior), the compiler will omit such warnings
2662 if any differences found are confined to types that share the same size
2663 and alignment.
2664 .IP "\fB\-Wundeclared\-selector\fR (Objective-C and Objective\-\*(C+ only)" 4
2665 .IX Item "-Wundeclared-selector (Objective-C and Objective- only)"
2666 Warn if a \f(CW\*(C`@selector(...)\*(C'\fR expression referring to an
2667 undeclared selector is found.  A selector is considered undeclared if no
2668 method with that name has been declared before the
2669 \&\f(CW\*(C`@selector(...)\*(C'\fR expression, either explicitly in an
2670 \&\f(CW@interface\fR or \f(CW@protocol\fR declaration, or implicitly in
2671 an \f(CW@implementation\fR section.  This option always performs its
2672 checks as soon as a \f(CW\*(C`@selector(...)\*(C'\fR expression is found,
2673 while \fB\-Wselector\fR only performs its checks in the final stage of
2674 compilation.  This also enforces the coding style convention
2675 that methods and selectors must be declared before being used.
2676 .IP "\fB\-print\-objc\-runtime\-info\fR" 4
2677 .IX Item "-print-objc-runtime-info"
2678 Generate C header describing the largest structure that is passed by
2679 value, if any.
2680 .Sh "Options to Control Diagnostic Messages Formatting"
2681 .IX Subsection "Options to Control Diagnostic Messages Formatting"
2682 Traditionally, diagnostic messages have been formatted irrespective of
2683 the output device's aspect (e.g. its width, ...).  The options described
2684 below can be used to control the diagnostic messages formatting
2685 algorithm, e.g. how many characters per line, how often source location
2686 information should be reported.  Right now, only the \*(C+ front end can
2687 honor these options.  However it is expected, in the near future, that
2688 the remaining front ends would be able to digest them correctly.
2689 .IP "\fB\-fmessage\-length=\fR\fIn\fR" 4
2690 .IX Item "-fmessage-length=n"
2691 Try to format error messages so that they fit on lines of about \fIn\fR
2692 characters.  The default is 72 characters for \fBg++\fR and 0 for the rest of
2693 the front ends supported by \s-1GCC\s0.  If \fIn\fR is zero, then no
2694 line-wrapping will be done; each error message will appear on a single
2695 line.
2696 .IP "\fB\-fdiagnostics\-show\-location=once\fR" 4
2697 .IX Item "-fdiagnostics-show-location=once"
2698 Only meaningful in line-wrapping mode.  Instructs the diagnostic messages
2699 reporter to emit \fIonce\fR source location information; that is, in
2700 case the message is too long to fit on a single physical line and has to
2701 be wrapped, the source location won't be emitted (as prefix) again,
2702 over and over, in subsequent continuation lines.  This is the default
2703 behavior.
2704 .IP "\fB\-fdiagnostics\-show\-location=every\-line\fR" 4
2705 .IX Item "-fdiagnostics-show-location=every-line"
2706 Only meaningful in line-wrapping mode.  Instructs the diagnostic
2707 messages reporter to emit the same source location information (as
2708 prefix) for physical lines that result from the process of breaking
2709 a message which is too long to fit on a single line.
2710 .IP "\fB\-fno\-diagnostics\-show\-option\fR" 4
2711 .IX Item "-fno-diagnostics-show-option"
2712 By default, each diagnostic emitted includes text indicating the
2713 command-line option that directly controls the diagnostic (if such an
2714 option is known to the diagnostic machinery).  Specifying the
2715 \&\fB\-fno\-diagnostics\-show\-option\fR flag suppresses that behavior.
2716 .Sh "Options to Request or Suppress Warnings"
2717 .IX Subsection "Options to Request or Suppress Warnings"
2718 Warnings are diagnostic messages that report constructions that
2719 are not inherently erroneous but that are risky or suggest there
2720 may have been an error.
2721 .PP
2722 The following language-independent options do not enable specific
2723 warnings but control the kinds of diagnostics produced by \s-1GCC\s0.
2724 .IP "\fB\-fsyntax\-only\fR" 4
2725 .IX Item "-fsyntax-only"
2726 Check the code for syntax errors, but don't do anything beyond that.
2727 .IP "\fB\-fmax\-errors=\fR\fIn\fR" 4
2728 .IX Item "-fmax-errors=n"
2729 Limits the maximum number of error messages to \fIn\fR, at which point
2730 \&\s-1GCC\s0 bails out rather than attempting to continue processing the source
2731 code.  If \fIn\fR is 0 (the default), there is no limit on the number
2732 of error messages produced.  If \fB\-Wfatal\-errors\fR is also
2733 specified, then \fB\-Wfatal\-errors\fR takes precedence over this
2734 option.
2735 .IP "\fB\-w\fR" 4
2736 .IX Item "-w"
2737 Inhibit all warning messages.
2738 .IP "\fB\-Werror\fR" 4
2739 .IX Item "-Werror"
2740 Make all warnings into errors.
2741 .IP "\fB\-Werror=\fR" 4
2742 .IX Item "-Werror="
2743 Make the specified warning into an error.  The specifier for a warning
2744 is appended, for example \fB\-Werror=switch\fR turns the warnings
2745 controlled by \fB\-Wswitch\fR into errors.  This switch takes a
2746 negative form, to be used to negate \fB\-Werror\fR for specific
2747 warnings, for example \fB\-Wno\-error=switch\fR makes
2748 \&\fB\-Wswitch\fR warnings not be errors, even when \fB\-Werror\fR
2749 is in effect.
2750 .Sp
2751 The warning message for each controllable warning includes the
2752 option that controls the warning.  That option can then be used with
2753 \&\fB\-Werror=\fR and \fB\-Wno\-error=\fR as described above.
2754 (Printing of the option in the warning message can be disabled using the
2755 \&\fB\-fno\-diagnostics\-show\-option\fR flag.)
2756 .Sp
2757 Note that specifying \fB\-Werror=\fR\fIfoo\fR automatically implies
2758 \&\fB\-W\fR\fIfoo\fR.  However, \fB\-Wno\-error=\fR\fIfoo\fR does not
2759 imply anything.
2760 .IP "\fB\-Wfatal\-errors\fR" 4
2761 .IX Item "-Wfatal-errors"
2762 This option causes the compiler to abort compilation on the first error
2763 occurred rather than trying to keep going and printing further error
2764 messages.
2765 .PP
2766 You can request many specific warnings with options beginning
2767 \&\fB\-W\fR, for example \fB\-Wimplicit\fR to request warnings on
2768 implicit declarations.  Each of these specific warning options also
2769 has a negative form beginning \fB\-Wno\-\fR to turn off warnings; for
2770 example, \fB\-Wno\-implicit\fR.  This manual lists only one of the
2771 two forms, whichever is not the default.  For further,
2772 language-specific options also refer to \fB\*(C+ Dialect Options\fR and
2773 \&\fBObjective-C and Objective\-\*(C+ Dialect Options\fR.
2774 .PP
2775 When an unrecognized warning option is requested (e.g.,
2776 \&\fB\-Wunknown\-warning\fR), \s-1GCC\s0 will emit a diagnostic stating
2777 that the option is not recognized.  However, if the \fB\-Wno\-\fR form
2778 is used, the behavior is slightly different: No diagnostic will be
2779 produced for \fB\-Wno\-unknown\-warning\fR unless other diagnostics
2780 are being produced.  This allows the use of new \fB\-Wno\-\fR options
2781 with old compilers, but if something goes wrong, the compiler will
2782 warn that an unrecognized option was used.
2783 .IP "\fB\-pedantic\fR" 4
2784 .IX Item "-pedantic"
2785 Issue all the warnings demanded by strict \s-1ISO\s0 C and \s-1ISO\s0 \*(C+;
2786 reject all programs that use forbidden extensions, and some other
2787 programs that do not follow \s-1ISO\s0 C and \s-1ISO\s0 \*(C+.  For \s-1ISO\s0 C, follows the
2788 version of the \s-1ISO\s0 C standard specified by any \fB\-std\fR option used.
2789 .Sp
2790 Valid \s-1ISO\s0 C and \s-1ISO\s0 \*(C+ programs should compile properly with or without
2791 this option (though a rare few will require \fB\-ansi\fR or a
2792 \&\fB\-std\fR option specifying the required version of \s-1ISO\s0 C).  However,
2793 without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
2794 features are supported as well.  With this option, they are rejected.
2795 .Sp
2796 \&\fB\-pedantic\fR does not cause warning messages for use of the
2797 alternate keywords whose names begin and end with \fB_\|_\fR.  Pedantic
2798 warnings are also disabled in the expression that follows
2799 \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
2800 these escape routes; application programs should avoid them.
2801 .Sp
2802 Some users try to use \fB\-pedantic\fR to check programs for strict \s-1ISO\s0
2803 C conformance.  They soon find that it does not do quite what they want:
2804 it finds some non-ISO practices, but not all\-\-\-only those for which
2805 \&\s-1ISO\s0 C \fIrequires\fR a diagnostic, and some others for which
2806 diagnostics have been added.
2807 .Sp
2808 A feature to report any failure to conform to \s-1ISO\s0 C might be useful in
2809 some instances, but would require considerable additional work and would
2810 be quite different from \fB\-pedantic\fR.  We don't have plans to
2811 support such a feature in the near future.
2812 .Sp
2813 Where the standard specified with \fB\-std\fR represents a \s-1GNU\s0
2814 extended dialect of C, such as \fBgnu90\fR or \fBgnu99\fR, there is a
2815 corresponding \fIbase standard\fR, the version of \s-1ISO\s0 C on which the \s-1GNU\s0
2816 extended dialect is based.  Warnings from \fB\-pedantic\fR are given
2817 where they are required by the base standard.  (It would not make sense
2818 for such warnings to be given only for features not in the specified \s-1GNU\s0
2819 C dialect, since by definition the \s-1GNU\s0 dialects of C include all
2820 features the compiler supports with the given option, and there would be
2821 nothing to warn about.)
2822 .IP "\fB\-pedantic\-errors\fR" 4
2823 .IX Item "-pedantic-errors"
2824 Like \fB\-pedantic\fR, except that errors are produced rather than
2825 warnings.
2826 .IP "\fB\-Wall\fR" 4
2827 .IX Item "-Wall"
2828 This enables all the warnings about constructions that some users
2829 consider questionable, and that are easy to avoid (or modify to
2830 prevent the warning), even in conjunction with macros.  This also
2831 enables some language-specific warnings described in \fB\*(C+ Dialect
2832 Options\fR and \fBObjective-C and Objective\-\*(C+ Dialect Options\fR.
2833 .Sp
2834 \&\fB\-Wall\fR turns on the following warning flags:
2835 .Sp
2836 \&\fB\-Waddress   
2837 \&\-Warray\-bounds\fR (only with\fB \fR\fB\-O2\fR)  
2838 \&\fB\-Wc++11\-compat  
2839 \&\-Wchar\-subscripts  
2840 \&\-Wenum\-compare\fR (in C/Objc; this is on by default in \*(C+) 
2841 \&\fB\-Wimplicit\-int\fR (C and Objective-C only) 
2842 \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective-C only) 
2843 \&\fB\-Wcomment  
2844 \&\-Wformat   
2845 \&\-Wmain\fR (only for C/ObjC and unless\fB \fR\fB\-ffreestanding\fR)  
2846 \&\fB\-Wmaybe\-uninitialized 
2847 \&\-Wmissing\-braces  
2848 \&\-Wnonnull  
2849 \&\-Wparentheses  
2850 \&\-Wpointer\-sign  
2851 \&\-Wreorder   
2852 \&\-Wreturn\-type  
2853 \&\-Wsequence\-point  
2854 \&\-Wsign\-compare\fR (only in \*(C+)  
2855 \&\fB\-Wstrict\-aliasing  
2856 \&\-Wstrict\-overflow=1  
2857 \&\-Wswitch  
2858 \&\-Wtrigraphs  
2859 \&\-Wuninitialized  
2860 \&\-Wunknown\-pragmas  
2861 \&\-Wunused\-function  
2862 \&\-Wunused\-label     
2863 \&\-Wunused\-value     
2864 \&\-Wunused\-variable  
2865 \&\-Wvolatile\-register\-var\fR
2866 .Sp
2867 Note that some warning flags are not implied by \fB\-Wall\fR.  Some of
2868 them warn about constructions that users generally do not consider
2869 questionable, but which occasionally you might wish to check for;
2870 others warn about constructions that are necessary or hard to avoid in
2871 some cases, and there is no simple way to modify the code to suppress
2872 the warning. Some of them are enabled by \fB\-Wextra\fR but many of
2873 them must be enabled individually.
2874 .IP "\fB\-Wextra\fR" 4
2875 .IX Item "-Wextra"
2876 This enables some extra warning flags that are not enabled by
2877 \&\fB\-Wall\fR. (This option used to be called \fB\-W\fR.  The older
2878 name is still supported, but the newer name is more descriptive.)
2879 .Sp
2880 \&\fB\-Wclobbered  
2881 \&\-Wempty\-body  
2882 \&\-Wignored\-qualifiers 
2883 \&\-Wmissing\-field\-initializers  
2884 \&\-Wmissing\-parameter\-type\fR (C only)  
2885 \&\fB\-Wold\-style\-declaration\fR (C only)  
2886 \&\fB\-Woverride\-init  
2887 \&\-Wsign\-compare  
2888 \&\-Wtype\-limits  
2889 \&\-Wuninitialized  
2890 \&\-Wunused\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR) 
2891 \&\fB\-Wunused\-but\-set\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR)  \fB \fR
2892 .Sp
2893 The option \fB\-Wextra\fR also prints warning messages for the
2894 following cases:
2895 .RS 4
2896 .IP "\(bu" 4
2897 A pointer is compared against integer zero with \fB<\fR, \fB<=\fR,
2898 \&\fB>\fR, or \fB>=\fR.
2899 .IP "\(bu" 4
2900 (\*(C+ only) An enumerator and a non-enumerator both appear in a
2901 conditional expression.
2902 .IP "\(bu" 4
2903 (\*(C+ only) Ambiguous virtual bases.
2904 .IP "\(bu" 4
2905 (\*(C+ only) Subscripting an array that has been declared \fBregister\fR.
2906 .IP "\(bu" 4
2907 (\*(C+ only) Taking the address of a variable that has been declared
2908 \&\fBregister\fR.
2909 .IP "\(bu" 4
2910 (\*(C+ only) A base class is not initialized in a derived class' copy
2911 constructor.
2912 .RE
2913 .RS 4
2914 .RE
2915 .IP "\fB\-Wchar\-subscripts\fR" 4
2916 .IX Item "-Wchar-subscripts"
2917 Warn if an array subscript has type \f(CW\*(C`char\*(C'\fR.  This is a common cause
2918 of error, as programmers often forget that this type is signed on some
2919 machines.
2920 This warning is enabled by \fB\-Wall\fR.
2921 .IP "\fB\-Wcomment\fR" 4
2922 .IX Item "-Wcomment"
2923 Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
2924 comment, or whenever a Backslash-Newline appears in a \fB//\fR comment.
2925 This warning is enabled by \fB\-Wall\fR.
2926 .IP "\fB\-Wno\-coverage\-mismatch\fR" 4
2927 .IX Item "-Wno-coverage-mismatch"
2928 Warn if feedback profiles do not match when using the
2929 \&\fB\-fprofile\-use\fR option.
2930 If a source file was changed between \fB\-fprofile\-gen\fR and
2931 \&\fB\-fprofile\-use\fR, the files with the profile feedback can fail
2932 to match the source file and \s-1GCC\s0 cannot use the profile feedback
2933 information.  By default, this warning is enabled and is treated as an
2934 error.  \fB\-Wno\-coverage\-mismatch\fR can be used to disable the
2935 warning or \fB\-Wno\-error=coverage\-mismatch\fR can be used to
2936 disable the error.  Disabling the error for this warning can result in
2937 poorly optimized code and is useful only in the
2938 case of very minor changes such as bug fixes to an existing code-base.
2939 Completely disabling the warning is not recommended.
2940 .IP "\fB\-Wno\-cpp\fR" 4
2941 .IX Item "-Wno-cpp"
2942 (C, Objective-C, \*(C+, Objective\-\*(C+ and Fortran only)
2943 .Sp
2944 Suppress warning messages emitted by \f(CW\*(C`#warning\*(C'\fR directives.
2945 .IP "\fB\-Wdouble\-promotion\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
2946 .IX Item "-Wdouble-promotion (C, , Objective-C and Objective- only)"
2947 Give a warning when a value of type \f(CW\*(C`float\*(C'\fR is implicitly
2948 promoted to \f(CW\*(C`double\*(C'\fR.  CPUs with a 32\-bit \*(L"single-precision\*(R"
2949 floating-point unit implement \f(CW\*(C`float\*(C'\fR in hardware, but emulate
2950 \&\f(CW\*(C`double\*(C'\fR in software.  On such a machine, doing computations
2951 using \f(CW\*(C`double\*(C'\fR values is much more expensive because of the
2952 overhead required for software emulation.
2953 .Sp
2954 It is easy to accidentally do computations with \f(CW\*(C`double\*(C'\fR because
2955 floating-point literals are implicitly of type \f(CW\*(C`double\*(C'\fR.  For
2956 example, in:
2957 .Sp
2958 .Vb 4
2959 \&        float area(float radius)
2960 \&        {
2961 \&           return 3.14159 * radius * radius;
2962 \&        }
2963 .Ve
2964 .Sp
2965 the compiler will perform the entire computation with \f(CW\*(C`double\*(C'\fR
2966 because the floating-point literal is a \f(CW\*(C`double\*(C'\fR.
2967 .IP "\fB\-Wformat\fR" 4
2968 .IX Item "-Wformat"
2969 Check calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR, etc., to make sure that
2970 the arguments supplied have types appropriate to the format string
2971 specified, and that the conversions specified in the format string make
2972 sense.  This includes standard functions, and others specified by format
2973 attributes, in the \f(CW\*(C`printf\*(C'\fR,
2974 \&\f(CW\*(C`scanf\*(C'\fR, \f(CW\*(C`strftime\*(C'\fR and \f(CW\*(C`strfmon\*(C'\fR (an X/Open extension,
2975 not in the C standard) families (or other target-specific families).
2976 Which functions are checked without format attributes having been
2977 specified depends on the standard version selected, and such checks of
2978 functions without the attribute specified are disabled by
2979 \&\fB\-ffreestanding\fR or \fB\-fno\-builtin\fR.
2980 .Sp