OpenCores
URL https://opencores.org/ocsvn/altor32/altor32/trunk

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [share/] [man/] [man1/] [or1knd-elf-gcc.1] - Blame information for rev 35

Details | Compare with Previous | View Log

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