OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [doc/] [gcc.1] - Blame information for rev 473

Go to most recent revision | Details | Compare with Previous | View Log

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