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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [doc/] [g++.1] - Blame information for rev 154

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
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.  | will give a
29
.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
30
.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
31
.\" expand to `' in nroff, nothing in troff, for use with C<>.
32
.tr \(*W-|\(bv\*(Tr
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
.\" If the F register is turned on, we'll generate index entries on stderr for
52
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53
.\" entries marked with X<> in POD.  Of course, you'll have to process the
54
.\" output yourself in some meaningful fashion.
55
.if \nF \{\
56
.    de IX
57
.    tm Index:\\$1\t\\n%\t"\\$2"
58
..
59
.    nr % 0
60
.    rr F
61
.\}
62
.\"
63
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
64
.\" way too many mistakes in technical documents.
65
.hy 0
66
.if n .na
67
.\"
68
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70
.    \" fudge factors for nroff and troff
71
.if n \{\
72
.    ds #H 0
73
.    ds #V .8m
74
.    ds #F .3m
75
.    ds #[ \f1
76
.    ds #] \fP
77
.\}
78
.if t \{\
79
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80
.    ds #V .6m
81
.    ds #F 0
82
.    ds #[ \&
83
.    ds #] \&
84
.\}
85
.    \" simple accents for nroff and troff
86
.if n \{\
87
.    ds ' \&
88
.    ds ` \&
89
.    ds ^ \&
90
.    ds , \&
91
.    ds ~ ~
92
.    ds /
93
.\}
94
.if t \{\
95
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101
.\}
102
.    \" troff and (daisy-wheel) nroff accents
103
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110
.ds ae a\h'-(\w'a'u*4/10)'e
111
.ds Ae A\h'-(\w'A'u*4/10)'E
112
.    \" corrections for vroff
113
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115
.    \" for low resolution devices (crt and lpr)
116
.if \n(.H>23 .if \n(.V>19 \
117
\{\
118
.    ds : e
119
.    ds 8 ss
120
.    ds o a
121
.    ds d- d\h'-1'\(ga
122
.    ds D- D\h'-1'\(hy
123
.    ds th \o'bp'
124
.    ds Th \o'LP'
125
.    ds ae ae
126
.    ds Ae AE
127
.\}
128
.rm #[ #] #H #V #F C
129
.\" ========================================================================
130
.\"
131
.IX Title "GCC 1"
132
.TH GCC 1 "2007-10-07" "gcc-4.2.2" "GNU"
133
.SH "NAME"
134
gcc \- GNU project C and C++ compiler
135
.SH "SYNOPSIS"
136
.IX Header "SYNOPSIS"
137
gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
138
    [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
139
    [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR]
140
    [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
141
    [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
142
    [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...]
143
    [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
144
.PP
145
Only the most useful options are listed here; see below for the
146
remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
147
.SH "DESCRIPTION"
148
.IX Header "DESCRIPTION"
149
When you invoke \s-1GCC\s0, it normally does preprocessing, compilation,
150
assembly and linking.  The \*(L"overall options\*(R" allow you to stop this
151
process at an intermediate stage.  For example, the \fB\-c\fR option
152
says not to run the linker.  Then the output consists of object files
153
output by the assembler.
154
.PP
155
Other options are passed on to one stage of processing.  Some options
156
control the preprocessor and others the compiler itself.  Yet other
157
options control the assembler and linker; most of these are not
158
documented here, since you rarely need to use any of them.
159
.PP
160
Most of the command line options that you can use with \s-1GCC\s0 are useful
161
for C programs; when an option is only useful with another language
162
(usually \*(C+), the explanation says so explicitly.  If the description
163
for a particular option does not mention a source language, you can use
164
that option with all supported languages.
165
.PP
166
The \fBgcc\fR program accepts options and file names as operands.  Many
167
options have multi-letter names; therefore multiple single-letter options
168
may \fInot\fR be grouped: \fB\-dr\fR is very different from \fB\-d\ \-r\fR.
169
.PP
170
You can mix options and other arguments.  For the most part, the order
171
you use doesn't matter.  Order does matter when you use several options
172
of the same kind; for example, if you specify \fB\-L\fR more than once,
173
the directories are searched in the order specified.
174
.PP
175
Many options have long names starting with \fB\-f\fR or with
176
\&\fB\-W\fR\-\-\-for example,
177
\&\fB\-fmove\-loop\-invariants\fR, \fB\-Wformat\fR and so on.  Most of
178
these have both positive and negative forms; the negative form of
179
\&\fB\-ffoo\fR would be \fB\-fno\-foo\fR.  This manual documents
180
only one of these two forms, whichever one is not the default.
181
.SH "OPTIONS"
182
.IX Header "OPTIONS"
183
.Sh "Option Summary"
184
.IX Subsection "Option Summary"
185
Here is a summary of all the options, grouped by type.  Explanations are
186
in the following sections.
187
.IP "\fIOverall Options\fR" 4
188
.IX Item "Overall Options"
189
\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine \-pipe  \-pass\-exit\-codes
190
\&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help  \-\-target\-help  \-\-version @\fR\fIfile\fR
191
.IP "\fIC Language Options\fR" 4
192
.IX Item "C Language Options"
193
\&\fB\-ansi  \-std=\fR\fIstandard\fR  \fB\-fgnu89\-inline
194
\&\-aux\-info\fR \fIfilename\fR
195
\&\fB\-fno\-asm  \-fno\-builtin  \-fno\-builtin\-\fR\fIfunction\fR
196
\&\fB\-fhosted  \-ffreestanding \-fopenmp \-fms\-extensions
197
\&\-trigraphs  \-no\-integrated\-cpp  \-traditional  \-traditional\-cpp
198
\&\-fallow\-single\-precision  \-fcond\-mismatch
199
\&\-fsigned\-bitfields  \-fsigned\-char
200
\&\-funsigned\-bitfields  \-funsigned\-char\fR
201
.IP "\fI\*(C+ Language Options\fR" 4
202
.IX Item " Language Options"
203
\&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control  \-fcheck\-new
204
\&\-fconserve\-space  \-ffriend\-injection
205
\&\-fno\-elide\-constructors
206
\&\-fno\-enforce\-eh\-specs
207
\&\-ffor\-scope  \-fno\-for\-scope  \-fno\-gnu\-keywords
208
\&\-fno\-implicit\-templates
209
\&\-fno\-implicit\-inline\-templates
210
\&\-fno\-implement\-inlines  \-fms\-extensions
211
\&\-fno\-nonansi\-builtins  \-fno\-operator\-names
212
\&\-fno\-optional\-diags  \-fpermissive
213
\&\-frepo  \-fno\-rtti  \-fstats  \-ftemplate\-depth\-\fR\fIn\fR
214
\&\fB\-fno\-threadsafe\-statics \-fuse\-cxa\-atexit  \-fno\-weak  \-nostdinc++
215
\&\-fno\-default\-inline  \-fvisibility\-inlines\-hidden
216
\&\-Wabi  \-Wctor\-dtor\-privacy
217
\&\-Wnon\-virtual\-dtor  \-Wreorder
218
\&\-Weffc++  \-Wno\-deprecated  \-Wstrict\-null\-sentinel
219
\&\-Wno\-non\-template\-friend  \-Wold\-style\-cast
220
\&\-Woverloaded\-virtual  \-Wno\-pmf\-conversions
221
\&\-Wsign\-promo\fR
222
.IP "\fIObjective-C and Objective\-\*(C+ Language Options\fR" 4
223
.IX Item "Objective-C and Objective- Language Options"
224
\&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR
225
\&\fB\-fgnu\-runtime  \-fnext\-runtime
226
\&\-fno\-nil\-receivers
227
\&\-fobjc\-call\-cxx\-cdtors
228
\&\-fobjc\-direct\-dispatch
229
\&\-fobjc\-exceptions
230
\&\-fobjc\-gc
231
\&\-freplace\-objc\-classes
232
\&\-fzero\-link
233
\&\-gen\-decls
234
\&\-Wassign\-intercept
235
\&\-Wno\-protocol  \-Wselector
236
\&\-Wstrict\-selector\-match
237
\&\-Wundeclared\-selector\fR
238
.IP "\fILanguage Independent Options\fR" 4
239
.IX Item "Language Independent Options"
240
\&\fB\-fmessage\-length=\fR\fIn\fR
241
\&\fB\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR]
242
\&\fB\-fdiagnostics\-show\-option\fR
243
.IP "\fIWarning Options\fR" 4
244
.IX Item "Warning Options"
245
\&\fB\-fsyntax\-only  \-pedantic  \-pedantic\-errors
246
\&\-w  \-Wextra  \-Wall  \-Waddress  \-Waggregate\-return \-Wno\-attributes
247
\&\-Wc++\-compat \-Wcast\-align  \-Wcast\-qual  \-Wchar\-subscripts  \-Wcomment
248
\&\-Wconversion  \-Wno\-deprecated\-declarations
249
\&\-Wdisabled\-optimization  \-Wno\-div\-by\-zero  \-Wno\-endif\-labels
250
\&\-Werror  \-Werror=* \-Werror\-implicit\-function\-declaration
251
\&\-Wfatal\-errors  \-Wfloat\-equal  \-Wformat  \-Wformat=2
252
\&\-Wno\-format\-extra\-args \-Wformat\-nonliteral
253
\&\-Wformat\-security  \-Wformat\-y2k
254
\&\-Wimplicit  \-Wimplicit\-function\-declaration  \-Wimplicit\-int
255
\&\-Wimport  \-Wno\-import  \-Winit\-self  \-Winline
256
\&\-Wno\-int\-to\-pointer\-cast
257
\&\-Wno\-invalid\-offsetof  \-Winvalid\-pch
258
\&\-Wlarger\-than\-\fR\fIlen\fR  \fB\-Wunsafe\-loop\-optimizations  \-Wlong\-long
259
\&\-Wmain  \-Wmissing\-braces  \-Wmissing\-field\-initializers
260
\&\-Wmissing\-format\-attribute  \-Wmissing\-include\-dirs
261
\&\-Wmissing\-noreturn
262
\&\-Wno\-multichar  \-Wnonnull  \-Wno\-overflow
263
\&\-Woverlength\-strings  \-Wpacked  \-Wpadded
264
\&\-Wparentheses  \-Wpointer\-arith  \-Wno\-pointer\-to\-int\-cast
265
\&\-Wredundant\-decls
266
\&\-Wreturn\-type  \-Wsequence\-point  \-Wshadow
267
\&\-Wsign\-compare  \-Wstack\-protector
268
\&\-Wstrict\-aliasing \-Wstrict\-aliasing=2
269
\&\-Wstrict\-overflow \-Wstrict\-overflow=\fR\fIn\fR
270
\&\fB\-Wswitch  \-Wswitch\-default  \-Wswitch\-enum
271
\&\-Wsystem\-headers  \-Wtrigraphs  \-Wundef  \-Wuninitialized
272
\&\-Wunknown\-pragmas  \-Wno\-pragmas \-Wunreachable\-code
273
\&\-Wunused  \-Wunused\-function  \-Wunused\-label  \-Wunused\-parameter
274
\&\-Wunused\-value  \-Wunused\-variable  \-Wvariadic\-macros
275
\&\-Wvolatile\-register\-var  \-Wwrite\-strings\fR
276
.IP "\fIC\-only Warning Options\fR" 4
277
.IX Item "C-only Warning Options"
278
\&\fB\-Wbad\-function\-cast  \-Wmissing\-declarations
279
\&\-Wmissing\-prototypes  \-Wnested\-externs  \-Wold\-style\-definition
280
\&\-Wstrict\-prototypes  \-Wtraditional
281
\&\-Wdeclaration\-after\-statement \-Wpointer\-sign\fR
282
.IP "\fIDebugging Options\fR" 4
283
.IX Item "Debugging Options"
284
\&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion
285
\&\-fdump\-noaddr \-fdump\-unnumbered  \-fdump\-translation\-unit\fR[\fB\-\fR\fIn\fR]
286
\&\fB\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR]
287
\&\fB\-fdump\-ipa\-all \-fdump\-ipa\-cgraph
288
\&\-fdump\-tree\-all
289
\&\-fdump\-tree\-original\fR[\fB\-\fR\fIn\fR]
290
\&\fB\-fdump\-tree\-optimized\fR[\fB\-\fR\fIn\fR]
291
\&\fB\-fdump\-tree\-inlined\fR[\fB\-\fR\fIn\fR]
292
\&\fB\-fdump\-tree\-cfg \-fdump\-tree\-vcg \-fdump\-tree\-alias
293
\&\-fdump\-tree\-ch
294
\&\-fdump\-tree\-ssa\fR[\fB\-\fR\fIn\fR] \fB\-fdump\-tree\-pre\fR[\fB\-\fR\fIn\fR]
295
\&\fB\-fdump\-tree\-ccp\fR[\fB\-\fR\fIn\fR] \fB\-fdump\-tree\-dce\fR[\fB\-\fR\fIn\fR]
296
\&\fB\-fdump\-tree\-gimple\fR[\fB\-raw\fR] \fB\-fdump\-tree\-mudflap\fR[\fB\-\fR\fIn\fR]
297
\&\fB\-fdump\-tree\-dom\fR[\fB\-\fR\fIn\fR]
298
\&\fB\-fdump\-tree\-dse\fR[\fB\-\fR\fIn\fR]
299
\&\fB\-fdump\-tree\-phiopt\fR[\fB\-\fR\fIn\fR]
300
\&\fB\-fdump\-tree\-forwprop\fR[\fB\-\fR\fIn\fR]
301
\&\fB\-fdump\-tree\-copyrename\fR[\fB\-\fR\fIn\fR]
302
\&\fB\-fdump\-tree\-nrv \-fdump\-tree\-vect
303
\&\-fdump\-tree\-sink
304
\&\-fdump\-tree\-sra\fR[\fB\-\fR\fIn\fR]
305
\&\fB\-fdump\-tree\-salias
306
\&\-fdump\-tree\-fre\fR[\fB\-\fR\fIn\fR]
307
\&\fB\-fdump\-tree\-vrp\fR[\fB\-\fR\fIn\fR]
308
\&\fB\-ftree\-vectorizer\-verbose=\fR\fIn\fR
309
\&\fB\-fdump\-tree\-storeccp\fR[\fB\-\fR\fIn\fR]
310
\&\fB\-feliminate\-dwarf2\-dups \-feliminate\-unused\-debug\-types
311
\&\-feliminate\-unused\-debug\-symbols \-femit\-class\-debug\-always
312
\&\-fmem\-report \-fprofile\-arcs
313
\&\-frandom\-seed=\fR\fIstring\fR \fB\-fsched\-verbose=\fR\fIn\fR
314
\&\fB\-ftest\-coverage  \-ftime\-report \-fvar\-tracking
315
\&\-g  \-g\fR\fIlevel\fR  \fB\-gcoff \-gdwarf\-2
316
\&\-ggdb  \-gstabs  \-gstabs+  \-gvms  \-gxcoff  \-gxcoff+
317
\&\-p  \-pg  \-print\-file\-name=\fR\fIlibrary\fR  \fB\-print\-libgcc\-file\-name
318
\&\-print\-multi\-directory  \-print\-multi\-lib
319
\&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q
320
\&\-save\-temps  \-time\fR
321
.IP "\fIOptimization Options\fR" 4
322
.IX Item "Optimization Options"
323
\&\fB\-falign\-functions=\fR\fIn\fR  \fB\-falign\-jumps=\fR\fIn\fR
324
\&\fB\-falign\-labels=\fR\fIn\fR  \fB\-falign\-loops=\fR\fIn\fR
325
\&\fB\-fbounds\-check \-fmudflap \-fmudflapth \-fmudflapir
326
\&\-fbranch\-probabilities \-fprofile\-values \-fvpt \-fbranch\-target\-load\-optimize
327
\&\-fbranch\-target\-load\-optimize2 \-fbtr\-bb\-exclusive
328
\&\-fcaller\-saves  \-fcprop\-registers  \-fcse\-follow\-jumps
329
\&\-fcse\-skip\-blocks  \-fcx\-limited\-range  \-fdata\-sections
330
\&\-fdelayed\-branch  \-fdelete\-null\-pointer\-checks \-fearly\-inlining
331
\&\-fexpensive\-optimizations  \-ffast\-math  \-ffloat\-store
332
\&\-fforce\-addr  \-ffunction\-sections
333
\&\-fgcse  \-fgcse\-lm  \-fgcse\-sm  \-fgcse\-las  \-fgcse\-after\-reload
334
\&\-fcrossjumping  \-fif\-conversion  \-fif\-conversion2
335
\&\-finline\-functions  \-finline\-functions\-called\-once
336
\&\-finline\-limit=\fR\fIn\fR  \fB\-fkeep\-inline\-functions
337
\&\-fkeep\-static\-consts  \-fmerge\-constants  \-fmerge\-all\-constants
338
\&\-fmodulo\-sched \-fno\-branch\-count\-reg
339
\&\-fno\-default\-inline  \-fno\-defer\-pop \-fmove\-loop\-invariants
340
\&\-fno\-function\-cse  \-fno\-guess\-branch\-probability
341
\&\-fno\-inline  \-fno\-math\-errno  \-fno\-peephole  \-fno\-peephole2
342
\&\-funsafe\-math\-optimizations  \-funsafe\-loop\-optimizations  \-ffinite\-math\-only
343
\&\-fno\-toplevel\-reorder \-fno\-trapping\-math  \-fno\-zero\-initialized\-in\-bss
344
\&\-fomit\-frame\-pointer  \-foptimize\-register\-move
345
\&\-foptimize\-sibling\-calls  \-fprefetch\-loop\-arrays
346
\&\-fprofile\-generate \-fprofile\-use
347
\&\-fregmove  \-frename\-registers
348
\&\-freorder\-blocks  \-freorder\-blocks\-and\-partition \-freorder\-functions
349
\&\-frerun\-cse\-after\-loop
350
\&\-frounding\-math \-frtl\-abstract\-sequences
351
\&\-fschedule\-insns  \-fschedule\-insns2
352
\&\-fno\-sched\-interblock  \-fno\-sched\-spec  \-fsched\-spec\-load
353
\&\-fsched\-spec\-load\-dangerous
354
\&\-fsched\-stalled\-insns=\fR\fIn\fR \fB\-fsched\-stalled\-insns\-dep=\fR\fIn\fR
355
\&\fB\-fsched2\-use\-superblocks
356
\&\-fsched2\-use\-traces \-fsee \-freschedule\-modulo\-scheduled\-loops
357
\&\-fsection\-anchors  \-fsignaling\-nans  \-fsingle\-precision\-constant
358
\&\-fstack\-protector  \-fstack\-protector\-all
359
\&\-fstrict\-aliasing  \-fstrict\-overflow  \-ftracer  \-fthread\-jumps
360
\&\-funroll\-all\-loops  \-funroll\-loops  \-fpeel\-loops
361
\&\-fsplit\-ivs\-in\-unroller \-funswitch\-loops
362
\&\-fvariable\-expansion\-in\-unroller
363
\&\-ftree\-pre  \-ftree\-ccp  \-ftree\-dce \-ftree\-loop\-optimize
364
\&\-ftree\-loop\-linear \-ftree\-loop\-im \-ftree\-loop\-ivcanon \-fivopts
365
\&\-ftree\-dominator\-opts \-ftree\-dse \-ftree\-copyrename \-ftree\-sink
366
\&\-ftree\-ch \-ftree\-sra \-ftree\-ter \-ftree\-lrs \-ftree\-fre \-ftree\-vectorize
367
\&\-ftree\-vect\-loop\-version \-ftree\-salias \-fipa\-pta \-fweb
368
\&\-ftree\-copy\-prop \-ftree\-store\-ccp \-ftree\-store\-copy\-prop \-fwhole\-program
369
\&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR
370
\&\fB\-O  \-O0  \-O1  \-O2  \-O3  \-Os\fR
371
.IP "\fIPreprocessor Options\fR" 4
372
.IX Item "Preprocessor Options"
373
\&\fB\-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR
374
\&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR]
375
\&\fB\-C  \-dD  \-dI  \-dM  \-dN
376
\&\-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR]  \fB\-E  \-H
377
\&\-idirafter\fR \fIdir\fR
378
\&\fB\-include\fR \fIfile\fR  \fB\-imacros\fR \fIfile\fR
379
\&\fB\-iprefix\fR \fIfile\fR  \fB\-iwithprefix\fR \fIdir\fR
380
\&\fB\-iwithprefixbefore\fR \fIdir\fR  \fB\-isystem\fR \fIdir\fR
381
\&\fB\-imultilib\fR \fIdir\fR \fB\-isysroot\fR \fIdir\fR
382
\&\fB\-M  \-MM  \-MF  \-MG  \-MP  \-MQ  \-MT  \-nostdinc
383
\&\-P  \-fworking\-directory  \-remap
384
\&\-trigraphs  \-undef  \-U\fR\fImacro\fR  \fB\-Wp,\fR\fIoption\fR
385
\&\fB\-Xpreprocessor\fR \fIoption\fR
386
.IP "\fIAssembler Option\fR" 4
387
.IX Item "Assembler Option"
388
\&\fB\-Wa,\fR\fIoption\fR  \fB\-Xassembler\fR \fIoption\fR
389
.IP "\fILinker Options\fR" 4
390
.IX Item "Linker Options"
391
\&\fIobject-file-name\fR  \fB\-l\fR\fIlibrary\fR
392
\&\fB\-nostartfiles  \-nodefaultlibs  \-nostdlib \-pie \-rdynamic
393
\&\-s  \-static  \-static\-libgcc  \-shared  \-shared\-libgcc  \-symbolic
394
\&\-Wl,\fR\fIoption\fR  \fB\-Xlinker\fR \fIoption\fR
395
\&\fB\-u\fR \fIsymbol\fR
396
.IP "\fIDirectory Options\fR" 4
397
.IX Item "Directory Options"
398
\&\fB\-B\fR\fIprefix\fR  \fB\-I\fR\fIdir\fR  \fB\-iquote\fR\fIdir\fR  \fB\-L\fR\fIdir\fR
399
\&\fB\-specs=\fR\fIfile\fR  \fB\-I\- \-\-sysroot=\fR\fIdir\fR
400
.IP "\fITarget Options\fR" 4
401
.IX Item "Target Options"
402
\&\fB\-V\fR \fIversion\fR  \fB\-b\fR \fImachine\fR
403
.IP "\fIMachine Dependent Options\fR" 4
404
.IX Item "Machine Dependent Options"
405
\&\fI\s-1ARC\s0 Options\fR
406
\&\fB\-EB  \-EL
407
\&\-mmangle\-cpu  \-mcpu=\fR\fIcpu\fR  \fB\-mtext=\fR\fItext-section\fR
408
\&\fB\-mdata=\fR\fIdata-section\fR  \fB\-mrodata=\fR\fIreadonly-data-section\fR
409
.Sp
410
\&\fI\s-1ARM\s0 Options\fR
411
\&\fB\-mapcs\-frame  \-mno\-apcs\-frame
412
\&\-mabi=\fR\fIname\fR
413
\&\fB\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check
414
\&\-mapcs\-float  \-mno\-apcs\-float
415
\&\-mapcs\-reentrant  \-mno\-apcs\-reentrant
416
\&\-msched\-prolog  \-mno\-sched\-prolog
417
\&\-mlittle\-endian  \-mbig\-endian  \-mwords\-little\-endian
418
\&\-mfloat\-abi=\fR\fIname\fR  \fB\-msoft\-float  \-mhard\-float  \-mfpe
419
\&\-mthumb\-interwork  \-mno\-thumb\-interwork
420
\&\-mcpu=\fR\fIname\fR  \fB\-march=\fR\fIname\fR  \fB\-mfpu=\fR\fIname\fR
421
\&\fB\-mstructure\-size\-boundary=\fR\fIn\fR
422
\&\fB\-mabort\-on\-noreturn
423
\&\-mlong\-calls  \-mno\-long\-calls
424
\&\-msingle\-pic\-base  \-mno\-single\-pic\-base
425
\&\-mpic\-register=\fR\fIreg\fR
426
\&\fB\-mnop\-fun\-dllimport
427
\&\-mcirrus\-fix\-invalid\-insns \-mno\-cirrus\-fix\-invalid\-insns
428
\&\-mpoke\-function\-name
429
\&\-mthumb  \-marm
430
\&\-mtpcs\-frame  \-mtpcs\-leaf\-frame
431
\&\-mcaller\-super\-interworking  \-mcallee\-super\-interworking
432
\&\-mtp=\fR\fIname\fR
433
.Sp
434
\&\fI\s-1AVR\s0 Options\fR
435
\&\fB\-mmcu=\fR\fImcu\fR  \fB\-msize  \-minit\-stack=\fR\fIn\fR  \fB\-mno\-interrupts
436
\&\-mcall\-prologues  \-mno\-tablejump  \-mtiny\-stack  \-mint8\fR
437
.Sp
438
\&\fIBlackfin Options\fR
439
\&\fB\-momit\-leaf\-frame\-pointer \-mno\-omit\-leaf\-frame\-pointer
440
\&\-mspecld\-anomaly \-mno\-specld\-anomaly \-mcsync\-anomaly \-mno\-csync\-anomaly
441
\&\-mlow\-64k \-mno\-low64k \-mid\-shared\-library
442
\&\-mno\-id\-shared\-library \-mshared\-library\-id=\fR\fIn\fR
443
\&\fB\-mlong\-calls  \-mno\-long\-calls\fR
444
.Sp
445
\&\fI\s-1CRIS\s0 Options\fR
446
\&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR  \fB\-mtune=\fR\fIcpu\fR
447
\&\fB\-mmax\-stack\-frame=\fR\fIn\fR  \fB\-melinux\-stacksize=\fR\fIn\fR
448
\&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects
449
\&\-mstack\-align  \-mdata\-align  \-mconst\-align
450
\&\-m32\-bit  \-m16\-bit  \-m8\-bit  \-mno\-prologue\-epilogue  \-mno\-gotplt
451
\&\-melf  \-maout  \-melinux  \-mlinux  \-sim  \-sim2
452
\&\-mmul\-bug\-workaround  \-mno\-mul\-bug\-workaround\fR
453
.Sp
454
\&\fI\s-1CRX\s0 Options\fR
455
\&\fB\-mmac \-mpush\-args\fR
456
.Sp
457
\&\fIDarwin Options\fR
458
\&\fB\-all_load  \-allowable_client  \-arch  \-arch_errors_fatal
459
\&\-arch_only  \-bind_at_load  \-bundle  \-bundle_loader
460
\&\-client_name  \-compatibility_version  \-current_version
461
\&\-dead_strip
462
\&\-dependency\-file  \-dylib_file  \-dylinker_install_name
463
\&\-dynamic  \-dynamiclib  \-exported_symbols_list
464
\&\-filelist  \-flat_namespace  \-force_cpusubtype_ALL
465
\&\-force_flat_namespace  \-headerpad_max_install_names
466
\&\-image_base  \-init  \-install_name  \-keep_private_externs
467
\&\-multi_module  \-multiply_defined  \-multiply_defined_unused
468
\&\-noall_load   \-no_dead_strip_inits_and_terms
469
\&\-nofixprebinding \-nomultidefs  \-noprebind  \-noseglinkedit
470
\&\-pagezero_size  \-prebind  \-prebind_all_twolevel_modules
471
\&\-private_bundle  \-read_only_relocs  \-sectalign
472
\&\-sectobjectsymbols  \-whyload  \-seg1addr
473
\&\-sectcreate  \-sectobjectsymbols  \-sectorder
474
\&\-segaddr \-segs_read_only_addr \-segs_read_write_addr
475
\&\-seg_addr_table  \-seg_addr_table_filename  \-seglinkedit
476
\&\-segprot  \-segs_read_only_addr  \-segs_read_write_addr
477
\&\-single_module  \-static  \-sub_library  \-sub_umbrella
478
\&\-twolevel_namespace  \-umbrella  \-undefined
479
\&\-unexported_symbols_list  \-weak_reference_mismatches
480
\&\-whatsloaded \-F \-gused \-gfull \-mmacosx\-version\-min=\fR\fIversion\fR
481
\&\fB\-mkernel \-mone\-byte\-bool\fR
482
.Sp
483
\&\fI\s-1DEC\s0 Alpha Options\fR
484
\&\fB\-mno\-fp\-regs  \-msoft\-float  \-malpha\-as  \-mgas
485
\&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant
486
\&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR
487
\&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants
488
\&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR
489
\&\fB\-mbwx  \-mmax  \-mfix  \-mcix
490
\&\-mfloat\-vax  \-mfloat\-ieee
491
\&\-mexplicit\-relocs  \-msmall\-data  \-mlarge\-data
492
\&\-msmall\-text  \-mlarge\-text
493
\&\-mmemory\-latency=\fR\fItime\fR
494
.Sp
495
\&\fI\s-1DEC\s0 Alpha/VMS Options\fR
496
\&\fB\-mvms\-return\-codes\fR
497
.Sp
498
\&\fI\s-1FRV\s0 Options\fR
499
\&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64
500
\&\-mhard\-float  \-msoft\-float
501
\&\-malloc\-cc  \-mfixed\-cc  \-mdword  \-mno\-dword
502
\&\-mdouble  \-mno\-double
503
\&\-mmedia  \-mno\-media  \-mmuladd  \-mno\-muladd
504
\&\-mfdpic  \-minline\-plt \-mgprel\-ro  \-multilib\-library\-pic
505
\&\-mlinked\-fp  \-mlong\-calls  \-malign\-labels
506
\&\-mlibrary\-pic  \-macc\-4  \-macc\-8
507
\&\-mpack  \-mno\-pack  \-mno\-eflags  \-mcond\-move  \-mno\-cond\-move
508
\&\-moptimize\-membar \-mno\-optimize\-membar
509
\&\-mscc  \-mno\-scc  \-mcond\-exec  \-mno\-cond\-exec
510
\&\-mvliw\-branch  \-mno\-vliw\-branch
511
\&\-mmulti\-cond\-exec  \-mno\-multi\-cond\-exec  \-mnested\-cond\-exec
512
\&\-mno\-nested\-cond\-exec  \-mtomcat\-stats
513
\&\-mTLS \-mtls
514
\&\-mcpu=\fR\fIcpu\fR
515
.Sp
516
\&\fIGNU/Linux Options\fR
517
\&\fB\-muclibc\fR
518
.Sp
519
\&\fIH8/300 Options\fR
520
\&\fB\-mrelax  \-mh  \-ms  \-mn  \-mint32  \-malign\-300\fR
521
.Sp
522
\&\fI\s-1HPPA\s0 Options\fR
523
\&\fB\-march=\fR\fIarchitecture-type\fR
524
\&\fB\-mbig\-switch  \-mdisable\-fpregs  \-mdisable\-indexing
525
\&\-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld   \-mhp\-ld
526
\&\-mfixed\-range=\fR\fIregister-range\fR
527
\&\fB\-mjump\-in\-delay \-mlinker\-opt \-mlong\-calls
528
\&\-mlong\-load\-store  \-mno\-big\-switch  \-mno\-disable\-fpregs
529
\&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas
530
\&\-mno\-jump\-in\-delay  \-mno\-long\-load\-store
531
\&\-mno\-portable\-runtime  \-mno\-soft\-float
532
\&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0
533
\&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime
534
\&\-mschedule=\fR\fIcpu-type\fR  \fB\-mspace\-regs  \-msio  \-mwsio
535
\&\-munix=\fR\fIunix-std\fR  \fB\-nolibdld  \-static  \-threads\fR
536
.Sp
537
\&\fIi386 and x86\-64 Options\fR
538
\&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR
539
\&\fB\-mfpmath=\fR\fIunit\fR
540
\&\fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387
541
\&\-mno\-fp\-ret\-in\-387  \-msoft\-float  \-msvr3\-shlib
542
\&\-mno\-wide\-multiply  \-mrtd  \-malign\-double
543
\&\-mpreferred\-stack\-boundary=\fR\fInum\fR
544
\&\fB\-mmmx  \-msse  \-msse2 \-msse3 \-m3dnow
545
\&\-mthreads  \-mno\-align\-stringops  \-minline\-all\-stringops
546
\&\-mpush\-args  \-maccumulate\-outgoing\-args  \-m128bit\-long\-double
547
\&\-m96bit\-long\-double  \-mregparm=\fR\fInum\fR  \fB\-msseregparm
548
\&\-mstackrealign
549
\&\-momit\-leaf\-frame\-pointer  \-mno\-red\-zone \-mno\-tls\-direct\-seg\-refs
550
\&\-mcmodel=\fR\fIcode-model\fR
551
\&\fB\-m32  \-m64 \-mlarge\-data\-threshold=\fR\fInum\fR
552
.Sp
553
\&\fI\s-1IA\-64\s0 Options\fR
554
\&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic
555
\&\-mvolatile\-asm\-stop  \-mregister\-names  \-mno\-sdata
556
\&\-mconstant\-gp  \-mauto\-pic  \-minline\-float\-divide\-min\-latency
557
\&\-minline\-float\-divide\-max\-throughput
558
\&\-minline\-int\-divide\-min\-latency
559
\&\-minline\-int\-divide\-max\-throughput
560
\&\-minline\-sqrt\-min\-latency \-minline\-sqrt\-max\-throughput
561
\&\-mno\-dwarf2\-asm \-mearly\-stop\-bits
562
\&\-mfixed\-range=\fR\fIregister-range\fR \fB\-mtls\-size=\fR\fItls-size\fR
563
\&\fB\-mtune=\fR\fIcpu-type\fR \fB\-mt \-pthread \-milp32 \-mlp64
564
\&\-mno\-sched\-br\-data\-spec \-msched\-ar\-data\-spec \-mno\-sched\-control\-spec
565
\&\-msched\-br\-in\-data\-spec \-msched\-ar\-in\-data\-spec \-msched\-in\-control\-spec
566
\&\-msched\-ldc \-mno\-sched\-control\-ldc \-mno\-sched\-spec\-verbose
567
\&\-mno\-sched\-prefer\-non\-data\-spec\-insns
568
\&\-mno\-sched\-prefer\-non\-control\-spec\-insns
569
\&\-mno\-sched\-count\-spec\-in\-critical\-path\fR
570
.Sp
571
\&\fIM32R/D Options\fR
572
\&\fB\-m32r2 \-m32rx \-m32r
573
\&\-mdebug
574
\&\-malign\-loops \-mno\-align\-loops
575
\&\-missue\-rate=\fR\fInumber\fR
576
\&\fB\-mbranch\-cost=\fR\fInumber\fR
577
\&\fB\-mmodel=\fR\fIcode-size-model-type\fR
578
\&\fB\-msdata=\fR\fIsdata-type\fR
579
\&\fB\-mno\-flush\-func \-mflush\-func=\fR\fIname\fR
580
\&\fB\-mno\-flush\-trap \-mflush\-trap=\fR\fInumber\fR
581
\&\fB\-G\fR \fInum\fR
582
.Sp
583
\&\fIM32C Options\fR
584
\&\fB\-mcpu=\fR\fIcpu\fR \fB\-msim \-memregs=\fR\fInumber\fR
585
.Sp
586
\&\fIM680x0 Options\fR
587
\&\fB\-m68000  \-m68020  \-m68020\-40  \-m68020\-60  \-m68030  \-m68040
588
\&\-m68060  \-mcpu32  \-m5200  \-mcfv4e \-m68881  \-mbitfield
589
\&\-mc68000  \-mc68020
590
\&\-mnobitfield  \-mrtd  \-mshort  \-msoft\-float  \-mpcrel
591
\&\-malign\-int  \-mstrict\-align  \-msep\-data  \-mno\-sep\-data
592
\&\-mshared\-library\-id=n  \-mid\-shared\-library  \-mno\-id\-shared\-library\fR
593
.Sp
594
\&\fIM68hc1x Options\fR
595
\&\fB\-m6811  \-m6812  \-m68hc11  \-m68hc12   \-m68hcs12
596
\&\-mauto\-incdec  \-minmax  \-mlong\-calls  \-mshort
597
\&\-msoft\-reg\-count=\fR\fIcount\fR
598
.Sp
599
\&\fIMCore Options\fR
600
\&\fB\-mhardlit  \-mno\-hardlit  \-mdiv  \-mno\-div  \-mrelax\-immediates
601
\&\-mno\-relax\-immediates  \-mwide\-bitfields  \-mno\-wide\-bitfields
602
\&\-m4byte\-functions  \-mno\-4byte\-functions  \-mcallgraph\-data
603
\&\-mno\-callgraph\-data  \-mslow\-bytes  \-mno\-slow\-bytes  \-mno\-lsim
604
\&\-mlittle\-endian  \-mbig\-endian  \-m210  \-m340  \-mstack\-increment\fR
605
.Sp
606
\&\fI\s-1MIPS\s0 Options\fR
607
\&\fB\-EL  \-EB  \-march=\fR\fIarch\fR  \fB\-mtune=\fR\fIarch\fR
608
\&\fB\-mips1  \-mips2  \-mips3  \-mips4  \-mips32  \-mips32r2  \-mips64
609
\&\-mips16  \-mno\-mips16  \-mabi=\fR\fIabi\fR  \fB\-mabicalls  \-mno\-abicalls
610
\&\-mshared  \-mno\-shared  \-mxgot  \-mno\-xgot  \-mgp32  \-mgp64
611
\&\-mfp32  \-mfp64  \-mhard\-float  \-msoft\-float
612
\&\-msingle\-float  \-mdouble\-float  \-mdsp  \-mpaired\-single  \-mips3d
613
\&\-mlong64  \-mlong32  \-msym32  \-mno\-sym32
614
\&\-G\fR\fInum\fR  \fB\-membedded\-data  \-mno\-embedded\-data
615
\&\-muninit\-const\-in\-rodata  \-mno\-uninit\-const\-in\-rodata
616
\&\-msplit\-addresses  \-mno\-split\-addresses
617
\&\-mexplicit\-relocs  \-mno\-explicit\-relocs
618
\&\-mcheck\-zero\-division  \-mno\-check\-zero\-division
619
\&\-mdivide\-traps  \-mdivide\-breaks
620
\&\-mmemcpy  \-mno\-memcpy  \-mlong\-calls  \-mno\-long\-calls
621
\&\-mmad  \-mno\-mad  \-mfused\-madd  \-mno\-fused\-madd  \-nocpp
622
\&\-mfix\-r4000  \-mno\-fix\-r4000  \-mfix\-r4400  \-mno\-fix\-r4400
623
\&\-mfix\-vr4120  \-mno\-fix\-vr4120  \-mfix\-vr4130
624
\&\-mfix\-sb1  \-mno\-fix\-sb1
625
\&\-mflush\-func=\fR\fIfunc\fR  \fB\-mno\-flush\-func
626
\&\-mbranch\-likely  \-mno\-branch\-likely
627
\&\-mfp\-exceptions \-mno\-fp\-exceptions
628
\&\-mvr4130\-align \-mno\-vr4130\-align\fR
629
.Sp
630
\&\fI\s-1MMIX\s0 Options\fR
631
\&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu
632
\&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols
633
\&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses
634
\&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
635
.Sp
636
\&\fI\s-1MN10300\s0 Options\fR
637
\&\fB\-mmult\-bug  \-mno\-mult\-bug
638
\&\-mam33  \-mno\-am33
639
\&\-mam33\-2  \-mno\-am33\-2
640
\&\-mreturn\-pointer\-on\-d0
641
\&\-mno\-crt0  \-mrelax\fR
642
.Sp
643
\&\fI\s-1MT\s0 Options\fR
644
\&\fB\-mno\-crt0 \-mbacc \-msim
645
\&\-march=\fR\fIcpu-type\fR\fB \fR
646
.Sp
647
\&\fI\s-1PDP\-11\s0 Options\fR
648
\&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10
649
\&\-mbcopy  \-mbcopy\-builtin  \-mint32  \-mno\-int16
650
\&\-mint16  \-mno\-int32  \-mfloat32  \-mno\-float64
651
\&\-mfloat64  \-mno\-float32  \-mabshi  \-mno\-abshi
652
\&\-mbranch\-expensive  \-mbranch\-cheap
653
\&\-msplit  \-mno\-split  \-munix\-asm  \-mdec\-asm\fR
654
.Sp
655
\&\fIPowerPC Options\fR
656
See \s-1RS/6000\s0 and PowerPC Options.
657
.Sp
658
\&\fI\s-1RS/6000\s0 and PowerPC Options\fR
659
\&\fB\-mcpu=\fR\fIcpu-type\fR
660
\&\fB\-mtune=\fR\fIcpu-type\fR
661
\&\fB\-mpower  \-mno\-power  \-mpower2  \-mno\-power2
662
\&\-mpowerpc  \-mpowerpc64  \-mno\-powerpc
663
\&\-maltivec  \-mno\-altivec
664
\&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt
665
\&\-mpowerpc\-gfxopt  \-mno\-powerpc\-gfxopt
666
\&\-mmfcrf  \-mno\-mfcrf  \-mpopcntb  \-mno\-popcntb  \-mfprnd  \-mno\-fprnd
667
\&\-mnew\-mnemonics  \-mold\-mnemonics
668
\&\-mfull\-toc   \-mminimal\-toc  \-mno\-fp\-in\-toc  \-mno\-sum\-in\-toc
669
\&\-m64  \-m32  \-mxl\-compat  \-mno\-xl\-compat  \-mpe
670
\&\-malign\-power  \-malign\-natural
671
\&\-msoft\-float  \-mhard\-float  \-mmultiple  \-mno\-multiple
672
\&\-mstring  \-mno\-string  \-mupdate  \-mno\-update
673
\&\-mfused\-madd  \-mno\-fused\-madd  \-mbit\-align  \-mno\-bit\-align
674
\&\-mstrict\-align  \-mno\-strict\-align  \-mrelocatable
675
\&\-mno\-relocatable  \-mrelocatable\-lib  \-mno\-relocatable\-lib
676
\&\-mtoc  \-mno\-toc  \-mlittle  \-mlittle\-endian  \-mbig  \-mbig\-endian
677
\&\-mdynamic\-no\-pic  \-maltivec  \-mswdiv
678
\&\-mprioritize\-restricted\-insns=\fR\fIpriority\fR
679
\&\fB\-msched\-costly\-dep=\fR\fIdependence_type\fR
680
\&\fB\-minsert\-sched\-nops=\fR\fIscheme\fR
681
\&\fB\-mcall\-sysv  \-mcall\-netbsd
682
\&\-maix\-struct\-return  \-msvr4\-struct\-return
683
\&\-mabi=\fR\fIabi-type\fR \fB\-msecure\-plt \-mbss\-plt
684
\&\-misel \-mno\-isel
685
\&\-misel=yes  \-misel=no
686
\&\-mspe \-mno\-spe
687
\&\-mspe=yes  \-mspe=no
688
\&\-mvrsave \-mno\-vrsave
689
\&\-mmulhw \-mno\-mulhw
690
\&\-mdlmzb \-mno\-dlmzb
691
\&\-mfloat\-gprs=yes  \-mfloat\-gprs=no \-mfloat\-gprs=single \-mfloat\-gprs=double
692
\&\-mprototype  \-mno\-prototype
693
\&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata
694
\&\-msdata=\fR\fIopt\fR  \fB\-mvxworks  \-mwindiss  \-G\fR \fInum\fR  \fB\-pthread\fR
695
.Sp
696
\&\fIS/390 and zSeries Options\fR
697
\&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR
698
\&\fB\-mhard\-float  \-msoft\-float \-mlong\-double\-64 \-mlong\-double\-128
699
\&\-mbackchain  \-mno\-backchain \-mpacked\-stack  \-mno\-packed\-stack
700
\&\-msmall\-exec  \-mno\-small\-exec  \-mmvcle \-mno\-mvcle
701
\&\-m64  \-m31  \-mdebug  \-mno\-debug  \-mesa  \-mzarch
702
\&\-mtpf\-trace \-mno\-tpf\-trace  \-mfused\-madd  \-mno\-fused\-madd
703
\&\-mwarn\-framesize  \-mwarn\-dynamicstack  \-mstack\-size \-mstack\-guard\fR
704
.Sp
705
\&\fIScore Options\fR
706
\&\fB\-meb \-mel
707
\&\-mnhwloop
708
\&\-muls
709
\&\-mmac
710
\&\-mscore5 \-mscore5u \-mscore7 \-mscore7d\fR
711
.Sp
712
\&\fI\s-1SH\s0 Options\fR
713
\&\fB\-m1  \-m2  \-m2e  \-m3  \-m3e
714
\&\-m4\-nofpu  \-m4\-single\-only  \-m4\-single  \-m4
715
\&\-m4a\-nofpu \-m4a\-single\-only \-m4a\-single \-m4a \-m4al
716
\&\-m5\-64media  \-m5\-64media\-nofpu
717
\&\-m5\-32media  \-m5\-32media\-nofpu
718
\&\-m5\-compact  \-m5\-compact\-nofpu
719
\&\-mb  \-ml  \-mdalign  \-mrelax
720
\&\-mbigtable  \-mfmovd  \-mhitachi \-mrenesas \-mno\-renesas \-mnomacsave
721
\&\-mieee  \-misize  \-mpadstruct  \-mspace
722
\&\-mprefergot  \-musermode \-multcost=\fR\fInumber\fR \fB\-mdiv=\fR\fIstrategy\fR
723
\&\fB\-mdivsi3_libfunc=\fR\fIname\fR
724
\&\fB\-madjust\-unroll \-mindexed\-addressing \-mgettrcost=\fR\fInumber\fR \fB\-mpt\-fixed
725
 \-minvalid\-symbols\fR
726
.Sp
727
\&\fI\s-1SPARC\s0 Options\fR
728
\&\fB\-mcpu=\fR\fIcpu-type\fR
729
\&\fB\-mtune=\fR\fIcpu-type\fR
730
\&\fB\-mcmodel=\fR\fIcode-model\fR
731
\&\fB\-m32  \-m64  \-mapp\-regs  \-mno\-app\-regs
732
\&\-mfaster\-structs  \-mno\-faster\-structs
733
\&\-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
734
\&\-mhard\-quad\-float  \-msoft\-quad\-float
735
\&\-mimpure\-text  \-mno\-impure\-text  \-mlittle\-endian
736
\&\-mstack\-bias  \-mno\-stack\-bias
737
\&\-munaligned\-doubles  \-mno\-unaligned\-doubles
738
\&\-mv8plus  \-mno\-v8plus  \-mvis  \-mno\-vis
739
\&\-threads \-pthreads \-pthread\fR
740
.Sp
741
\&\fISystem V Options\fR
742
\&\fB\-Qy  \-Qn  \-YP,\fR\fIpaths\fR  \fB\-Ym,\fR\fIdir\fR
743
.Sp
744
\&\fITMS320C3x/C4x Options\fR
745
\&\fB\-mcpu=\fR\fIcpu\fR  \fB\-mbig  \-msmall  \-mregparm  \-mmemparm
746
\&\-mfast\-fix  \-mmpyi  \-mbk  \-mti  \-mdp\-isr\-reload
747
\&\-mrpts=\fR\fIcount\fR  \fB\-mrptb  \-mdb  \-mloop\-unsigned
748
\&\-mparallel\-insns  \-mparallel\-mpy  \-mpreserve\-float\fR
749
.Sp
750
\&\fIV850 Options\fR
751
\&\fB\-mlong\-calls  \-mno\-long\-calls  \-mep  \-mno\-ep
752
\&\-mprolog\-function  \-mno\-prolog\-function  \-mspace
753
\&\-mtda=\fR\fIn\fR  \fB\-msda=\fR\fIn\fR  \fB\-mzda=\fR\fIn\fR
754
\&\fB\-mapp\-regs  \-mno\-app\-regs
755
\&\-mdisable\-callt  \-mno\-disable\-callt
756
\&\-mv850e1
757
\&\-mv850e
758
\&\-mv850  \-mbig\-switch\fR
759
.Sp
760
\&\fI\s-1VAX\s0 Options\fR
761
\&\fB\-mg  \-mgnu  \-munix\fR
762
.Sp
763
\&\fIx86\-64 Options\fR
764
See i386 and x86\-64 Options.
765
.Sp
766
\&\fIXstormy16 Options\fR
767
\&\fB\-msim\fR
768
.Sp
769
\&\fIXtensa Options\fR
770
\&\fB\-mconst16 \-mno\-const16
771
\&\-mfused\-madd  \-mno\-fused\-madd
772
\&\-mtext\-section\-literals  \-mno\-text\-section\-literals
773
\&\-mtarget\-align  \-mno\-target\-align
774
\&\-mlongcalls  \-mno\-longcalls\fR
775
.Sp
776
\&\fIzSeries Options\fR
777
See S/390 and zSeries Options.
778
.IP "\fICode Generation Options\fR" 4
779
.IX Item "Code Generation Options"
780
\&\fB\-fcall\-saved\-\fR\fIreg\fR  \fB\-fcall\-used\-\fR\fIreg\fR
781
\&\fB\-ffixed\-\fR\fIreg\fR  \fB\-fexceptions
782
\&\-fnon\-call\-exceptions  \-funwind\-tables
783
\&\-fasynchronous\-unwind\-tables
784
\&\-finhibit\-size\-directive  \-finstrument\-functions
785
\&\-fno\-common  \-fno\-ident
786
\&\-fpcc\-struct\-return  \-fpic  \-fPIC \-fpie \-fPIE
787
\&\-fno\-jump\-tables
788
\&\-freg\-struct\-return  \-fshort\-enums
789
\&\-fshort\-double  \-fshort\-wchar
790
\&\-fverbose\-asm  \-fpack\-struct[=\fR\fIn\fR\fB]  \-fstack\-check
791
\&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR
792
\&\fB\-fargument\-alias  \-fargument\-noalias
793
\&\-fargument\-noalias\-global  \-fargument\-noalias\-anything
794
\&\-fleading\-underscore  \-ftls\-model=\fR\fImodel\fR
795
\&\fB\-ftrapv  \-fwrapv  \-fbounds\-check
796
\&\-fvisibility\fR
797
.Sh "Options Controlling the Kind of Output"
798
.IX Subsection "Options Controlling the Kind of Output"
799
Compilation can involve up to four stages: preprocessing, compilation
800
proper, assembly and linking, always in that order.  \s-1GCC\s0 is capable of
801
preprocessing and compiling several files either into several
802
assembler input files, or into one assembler input file; then each
803
assembler input file produces an object file, and linking combines all
804
the object files (those newly compiled, and those specified as input)
805
into an executable file.
806
.PP
807
For any given input file, the file name suffix determines what kind of
808
compilation is done:
809
.IP "\fIfile\fR\fB.c\fR" 4
810
.IX Item "file.c"
811
C source code which must be preprocessed.
812
.IP "\fIfile\fR\fB.i\fR" 4
813
.IX Item "file.i"
814
C source code which should not be preprocessed.
815
.IP "\fIfile\fR\fB.ii\fR" 4
816
.IX Item "file.ii"
817
\&\*(C+ source code which should not be preprocessed.
818
.IP "\fIfile\fR\fB.m\fR" 4
819
.IX Item "file.m"
820
Objective-C source code.  Note that you must link with the \fIlibobjc\fR
821
library to make an Objective-C program work.
822
.IP "\fIfile\fR\fB.mi\fR" 4
823
.IX Item "file.mi"
824
Objective-C source code which should not be preprocessed.
825
.IP "\fIfile\fR\fB.mm\fR" 4
826
.IX Item "file.mm"
827
.PD 0
828
.IP "\fIfile\fR\fB.M\fR" 4
829
.IX Item "file.M"
830
.PD
831
Objective\-\*(C+ source code.  Note that you must link with the \fIlibobjc\fR
832
library to make an Objective\-\*(C+ program work.  Note that \fB.M\fR refers
833
to a literal capital M.
834
.IP "\fIfile\fR\fB.mii\fR" 4
835
.IX Item "file.mii"
836
Objective\-\*(C+ source code which should not be preprocessed.
837
.IP "\fIfile\fR\fB.h\fR" 4
838
.IX Item "file.h"
839
C, \*(C+, Objective-C or Objective\-\*(C+ header file to be turned into a
840
precompiled header.
841
.IP "\fIfile\fR\fB.cc\fR" 4
842
.IX Item "file.cc"
843
.PD 0
844
.IP "\fIfile\fR\fB.cp\fR" 4
845
.IX Item "file.cp"
846
.IP "\fIfile\fR\fB.cxx\fR" 4
847
.IX Item "file.cxx"
848
.IP "\fIfile\fR\fB.cpp\fR" 4
849
.IX Item "file.cpp"
850
.IP "\fIfile\fR\fB.CPP\fR" 4
851
.IX Item "file.CPP"
852
.IP "\fIfile\fR\fB.c++\fR" 4
853
.IX Item "file.c++"
854
.IP "\fIfile\fR\fB.C\fR" 4
855
.IX Item "file.C"
856
.PD
857
\&\*(C+ source code which must be preprocessed.  Note that in \fB.cxx\fR,
858
the last two letters must both be literally \fBx\fR.  Likewise,
859
\&\fB.C\fR refers to a literal capital C.
860
.IP "\fIfile\fR\fB.mm\fR" 4
861
.IX Item "file.mm"
862
.PD 0
863
.IP "\fIfile\fR\fB.M\fR" 4
864
.IX Item "file.M"
865
.PD
866
Objective\-\*(C+ source code which must be preprocessed.
867
.IP "\fIfile\fR\fB.mii\fR" 4
868
.IX Item "file.mii"
869
Objective\-\*(C+ source code which should not be preprocessed.
870
.IP "\fIfile\fR\fB.hh\fR" 4
871
.IX Item "file.hh"
872
.PD 0
873
.IP "\fIfile\fR\fB.H\fR" 4
874
.IX Item "file.H"
875
.PD
876
\&\*(C+ header file to be turned into a precompiled header.
877
.IP "\fIfile\fR\fB.f\fR" 4
878
.IX Item "file.f"
879
.PD 0
880
.IP "\fIfile\fR\fB.for\fR" 4
881
.IX Item "file.for"
882
.IP "\fIfile\fR\fB.FOR\fR" 4
883
.IX Item "file.FOR"
884
.PD
885
Fixed form Fortran source code which should not be preprocessed.
886
.IP "\fIfile\fR\fB.F\fR" 4
887
.IX Item "file.F"
888
.PD 0
889
.IP "\fIfile\fR\fB.fpp\fR" 4
890
.IX Item "file.fpp"
891
.IP "\fIfile\fR\fB.FPP\fR" 4
892
.IX Item "file.FPP"
893
.PD
894
Fixed form Fortran source code which must be preprocessed (with the traditional
895
preprocessor).
896
.IP "\fIfile\fR\fB.f90\fR" 4
897
.IX Item "file.f90"
898
.PD 0
899
.IP "\fIfile\fR\fB.f95\fR" 4
900
.IX Item "file.f95"
901
.PD
902
Free form Fortran source code which should not be preprocessed.
903
.IP "\fIfile\fR\fB.F90\fR" 4
904
.IX Item "file.F90"
905
.PD 0
906
.IP "\fIfile\fR\fB.F95\fR" 4
907
.IX Item "file.F95"
908
.PD
909
Free form Fortran source code which must be preprocessed (with the
910
traditional preprocessor).
911
.IP "\fIfile\fR\fB.ads\fR" 4
912
.IX Item "file.ads"
913
Ada source code file which contains a library unit declaration (a
914
declaration of a package, subprogram, or generic, or a generic
915
instantiation), or a library unit renaming declaration (a package,
916
generic, or subprogram renaming declaration).  Such files are also
917
called \fIspecs\fR.
918
.IP "\fIfile\fR\fB.adb\fR" 4
919
.IX Item "file.adb"
920
Ada source code file containing a library unit body (a subprogram or
921
package body).  Such files are also called \fIbodies\fR.
922
.IP "\fIfile\fR\fB.s\fR" 4
923
.IX Item "file.s"
924
Assembler code.
925
.IP "\fIfile\fR\fB.S\fR" 4
926
.IX Item "file.S"
927
Assembler code which must be preprocessed.
928
.IP "\fIother\fR" 4
929
.IX Item "other"
930
An object file to be fed straight into linking.
931
Any file name with no recognized suffix is treated this way.
932
.PP
933
You can specify the input language explicitly with the \fB\-x\fR option:
934
.IP "\fB\-x\fR \fIlanguage\fR" 4
935
.IX Item "-x language"
936
Specify explicitly the \fIlanguage\fR for the following input files
937
(rather than letting the compiler choose a default based on the file
938
name suffix).  This option applies to all following input files until
939
the next \fB\-x\fR option.  Possible values for \fIlanguage\fR are:
940
.Sp
941
.Vb 9
942
\&        c  c-header  c-cpp-output
943
\&        c++  c++-header  c++-cpp-output
944
\&        objective-c  objective-c-header  objective-c-cpp-output
945
\&        objective-c++ objective-c++-header objective-c++-cpp-output
946
\&        assembler  assembler-with-cpp
947
\&        ada
948
\&        f95  f95-cpp-input
949
\&        java
950
\&        treelang
951
.Ve
952
.IP "\fB\-x none\fR" 4
953
.IX Item "-x none"
954
Turn off any specification of a language, so that subsequent files are
955
handled according to their file name suffixes (as they are if \fB\-x\fR
956
has not been used at all).
957
.IP "\fB\-pass\-exit\-codes\fR" 4
958
.IX Item "-pass-exit-codes"
959
Normally the \fBgcc\fR program will exit with the code of 1 if any
960
phase of the compiler returns a non-success return code.  If you specify
961
\&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program will instead return with
962
numerically highest error produced by any phase that returned an error
963
indication.  The C, \*(C+, and Fortran frontends return 4, if an internal
964
compiler error is encountered.
965
.PP
966
If you only want some of the stages of compilation, you can use
967
\&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
968
one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
969
\&\fBgcc\fR is to stop.  Note that some combinations (for example,
970
\&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
971
.IP "\fB\-c\fR" 4
972
.IX Item "-c"
973
Compile or assemble the source files, but do not link.  The linking
974
stage simply is not done.  The ultimate output is in the form of an
975
object file for each source file.
976
.Sp
977
By default, the object file name for a source file is made by replacing
978
the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR, etc., with \fB.o\fR.
979
.Sp
980
Unrecognized input files, not requiring compilation or assembly, are
981
ignored.
982
.IP "\fB\-S\fR" 4
983
.IX Item "-S"
984
Stop after the stage of compilation proper; do not assemble.  The output
985
is in the form of an assembler code file for each non-assembler input
986
file specified.
987
.Sp
988
By default, the assembler file name for a source file is made by
989
replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
990
.Sp
991
Input files that don't require compilation are ignored.
992
.IP "\fB\-E\fR" 4
993
.IX Item "-E"
994
Stop after the preprocessing stage; do not run the compiler proper.  The
995
output is in the form of preprocessed source code, which is sent to the
996
standard output.
997
.Sp
998
Input files which don't require preprocessing are ignored.
999
.IP "\fB\-o\fR \fIfile\fR" 4
1000
.IX Item "-o file"
1001
Place output in file \fIfile\fR.  This applies regardless to whatever
1002
sort of output is being produced, whether it be an executable file,
1003
an object file, an assembler file or preprocessed C code.
1004
.Sp
1005
If \fB\-o\fR is not specified, the default is to put an executable
1006
file in \fIa.out\fR, the object file for
1007
\&\fI\fIsource\fI.\fIsuffix\fI\fR in \fI\fIsource\fI.o\fR, its
1008
assembler file in \fI\fIsource\fI.s\fR, a precompiled header file in
1009
\&\fI\fIsource\fI.\fIsuffix\fI.gch\fR, and all preprocessed C source on
1010
standard output.
1011
.IP "\fB\-v\fR" 4
1012
.IX Item "-v"
1013
Print (on standard error output) the commands executed to run the stages
1014
of compilation.  Also print the version number of the compiler driver
1015
program and of the preprocessor and the compiler proper.
1016
.IP "\fB\-###\fR" 4
1017
.IX Item "-###"
1018
Like \fB\-v\fR except the commands are not executed and all command
1019
arguments are quoted.  This is useful for shell scripts to capture the
1020
driver-generated command lines.
1021
.IP "\fB\-pipe\fR" 4
1022
.IX Item "-pipe"
1023
Use pipes rather than temporary files for communication between the
1024
various stages of compilation.  This fails to work on some systems where
1025
the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has
1026
no trouble.
1027
.IP "\fB\-combine\fR" 4
1028
.IX Item "-combine"
1029
If you are compiling multiple source files, this option tells the driver
1030
to pass all the source files to the compiler at once (for those
1031
languages for which the compiler can handle this).  This will allow
1032
intermodule analysis (\s-1IMA\s0) to be performed by the compiler.  Currently the only
1033
language for which this is supported is C.  If you pass source files for
1034
multiple languages to the driver, using this option, the driver will invoke
1035
the compiler(s) that support \s-1IMA\s0 once each, passing each compiler all the
1036
source files appropriate for it.  For those languages that do not support
1037
\&\s-1IMA\s0 this option will be ignored, and the compiler will be invoked once for
1038
each source file in that language.  If you use this option in conjunction
1039
with \fB\-save\-temps\fR, the compiler will generate multiple
1040
pre-processed files
1041
(one for each source file), but only one (combined) \fI.o\fR or
1042
\&\fI.s\fR file.
1043
.IP "\fB\-\-help\fR" 4
1044
.IX Item "--help"
1045
Print (on the standard output) a description of the command line options
1046
understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
1047
then \fB\-\-help\fR will also be passed on to the various processes
1048
invoked by \fBgcc\fR, so that they can display the command line options
1049
they accept.  If the \fB\-Wextra\fR option is also specified then command
1050
line options which have no documentation associated with them will also
1051
be displayed.
1052
.IP "\fB\-\-target\-help\fR" 4
1053
.IX Item "--target-help"
1054
Print (on the standard output) a description of target specific command
1055
line options for each tool.
1056
.IP "\fB\-\-version\fR" 4
1057
.IX Item "--version"
1058
Display the version number and copyrights of the invoked \s-1GCC\s0.
1059
.IP "\fB@\fR\fIfile\fR" 4
1060
.IX Item "@file"
1061
Read command-line options from \fIfile\fR.  The options read are
1062
inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
1063
does not exist, or cannot be read, then the option will be treated
1064
literally, and not removed.
1065
.Sp
1066
Options in \fIfile\fR are separated by whitespace.  A whitespace
1067
character may be included in an option by surrounding the entire
1068
option in either single or double quotes.  Any character (including a
1069
backslash) may be included by prefixing the character to be included
1070
with a backslash.  The \fIfile\fR may itself contain additional
1071
@\fIfile\fR options; any such options will be processed recursively.
1072
.Sh "Compiling \*(C+ Programs"
1073
.IX Subsection "Compiling  Programs"
1074
\&\*(C+ source files conventionally use one of the suffixes \fB.C\fR,
1075
\&\fB.cc\fR, \fB.cpp\fR, \fB.CPP\fR, \fB.c++\fR, \fB.cp\fR, or
1076
\&\fB.cxx\fR; \*(C+ header files often use \fB.hh\fR or \fB.H\fR; and
1077
preprocessed \*(C+ files use the suffix \fB.ii\fR.  \s-1GCC\s0 recognizes
1078
files with these names and compiles them as \*(C+ programs even if you
1079
call the compiler the same way as for compiling C programs (usually
1080
with the name \fBgcc\fR).
1081
.PP
1082
However, the use of \fBgcc\fR does not add the \*(C+ library.
1083
\&\fBg++\fR is a program that calls \s-1GCC\s0 and treats \fB.c\fR,
1084
\&\fB.h\fR and \fB.i\fR files as \*(C+ source files instead of C source
1085
files unless \fB\-x\fR is used, and automatically specifies linking
1086
against the \*(C+ library.  This program is also useful when
1087
precompiling a C header file with a \fB.h\fR extension for use in \*(C+
1088
compilations.  On many systems, \fBg++\fR is also installed with
1089
the name \fBc++\fR.
1090
.PP
1091
When you compile \*(C+ programs, you may specify many of the same
1092
command-line options that you use for compiling programs in any
1093
language; or command-line options meaningful for C and related
1094
languages; or options that are meaningful only for \*(C+ programs.
1095
.Sh "Options Controlling C Dialect"
1096
.IX Subsection "Options Controlling C Dialect"
1097
The following options control the dialect of C (or languages derived
1098
from C, such as \*(C+, Objective-C and Objective\-\*(C+) that the compiler
1099
accepts:
1100
.IP "\fB\-ansi\fR" 4
1101
.IX Item "-ansi"
1102
In C mode, support all \s-1ISO\s0 C90 programs.  In \*(C+ mode,
1103
remove \s-1GNU\s0 extensions that conflict with \s-1ISO\s0 \*(C+.
1104
.Sp
1105
This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0
1106
C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
1107
such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
1108
predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
1109
type of system you are using.  It also enables the undesirable and
1110
rarely used \s-1ISO\s0 trigraph feature.  For the C compiler,
1111
it disables recognition of \*(C+ style \fB//\fR comments as well as
1112
the \f(CW\*(C`inline\*(C'\fR keyword.
1113
.Sp
1114
The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
1115
\&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
1116
\&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO\s0 C program, of
1117
course, but it is useful to put them in header files that might be included
1118
in compilations done with \fB\-ansi\fR.  Alternate predefined macros
1119
such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
1120
without \fB\-ansi\fR.
1121
.Sp
1122
The \fB\-ansi\fR option does not cause non-ISO programs to be
1123
rejected gratuitously.  For that, \fB\-pedantic\fR is required in
1124
addition to \fB\-ansi\fR.
1125
.Sp
1126
The macro \f(CW\*(C`_\|_STRICT_ANSI_\|_\*(C'\fR is predefined when the \fB\-ansi\fR
1127
option is used.  Some header files may notice this macro and refrain
1128
from declaring certain functions or defining certain macros that the
1129
\&\s-1ISO\s0 standard doesn't call for; this is to avoid interfering with any
1130
programs that might use these names for other things.
1131
.Sp
1132
Functions which would normally be built in but do not have semantics
1133
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
1134
functions with \fB\-ansi\fR is used.
1135
.IP "\fB\-std=\fR" 4
1136
.IX Item "-std="
1137
Determine the language standard.  This option is currently only
1138
supported when compiling C or \*(C+.  A value for this option must be
1139
provided; possible values are
1140
.RS 4
1141
.IP "\fBc89\fR" 4
1142
.IX Item "c89"
1143
.PD 0
1144
.IP "\fBiso9899:1990\fR" 4
1145
.IX Item "iso9899:1990"
1146
.PD
1147
\&\s-1ISO\s0 C90 (same as \fB\-ansi\fR).
1148
.IP "\fBiso9899:199409\fR" 4
1149
.IX Item "iso9899:199409"
1150
\&\s-1ISO\s0 C90 as modified in amendment 1.
1151
.IP "\fBc99\fR" 4
1152
.IX Item "c99"
1153
.PD 0
1154
.IP "\fBc9x\fR" 4
1155
.IX Item "c9x"
1156
.IP "\fBiso9899:1999\fR" 4
1157
.IX Item "iso9899:1999"
1158
.IP "\fBiso9899:199x\fR" 4
1159
.IX Item "iso9899:199x"
1160
.PD
1161
\&\s-1ISO\s0 C99.  Note that this standard is not yet fully supported; see
1162
<\fBhttp://gcc.gnu.org/gcc\-4.2/c99status.html\fR> for more information.  The
1163
names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
1164
.IP "\fBgnu89\fR" 4
1165
.IX Item "gnu89"
1166
Default, \s-1ISO\s0 C90 plus \s-1GNU\s0 extensions (including some C99 features).
1167
.IP "\fBgnu99\fR" 4
1168
.IX Item "gnu99"
1169
.PD 0
1170
.IP "\fBgnu9x\fR" 4
1171
.IX Item "gnu9x"
1172
.PD
1173
\&\s-1ISO\s0 C99 plus \s-1GNU\s0 extensions.  When \s-1ISO\s0 C99 is fully implemented in \s-1GCC\s0,
1174
this will become the default.  The name \fBgnu9x\fR is deprecated.
1175
.IP "\fBc++98\fR" 4
1176
.IX Item "c++98"
1177
The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
1178
.IP "\fBgnu++98\fR" 4
1179
.IX Item "gnu++98"
1180
The same as \fB\-std=c++98\fR plus \s-1GNU\s0 extensions.  This is the
1181
default for \*(C+ code.
1182
.RE
1183
.RS 4
1184
.Sp
1185
Even when this option is not specified, you can still use some of the
1186
features of newer standards in so far as they do not conflict with
1187
previous C standards.  For example, you may use \f(CW\*(C`_\|_restrict_\|_\*(C'\fR even
1188
when \fB\-std=c99\fR is not specified.
1189
.Sp
1190
The \fB\-std\fR options specifying some version of \s-1ISO\s0 C have the same
1191
effects as \fB\-ansi\fR, except that features that were not in \s-1ISO\s0 C90
1192
but are in the specified version (for example, \fB//\fR comments and
1193
the \f(CW\*(C`inline\*(C'\fR keyword in \s-1ISO\s0 C99) are not disabled.
1194
.RE
1195
.IP "\fB\-fgnu89\-inline\fR" 4
1196
.IX Item "-fgnu89-inline"
1197
The option \fB\-fgnu89\-inline\fR tells \s-1GCC\s0 to use the traditional
1198
\&\s-1GNU\s0 semantics for \f(CW\*(C`inline\*(C'\fR functions when in C99 mode.
1199
  Using this
1200
option is roughly equivalent to adding the \f(CW\*(C`gnu_inline\*(C'\fR function
1201
attribute to all inline functions.
1202
.Sp
1203
This option is accepted by \s-1GCC\s0 versions 4.1.3 and up.  In \s-1GCC\s0 versions
1204
prior to 4.3, C99 inline semantics are not supported, and thus this
1205
option is effectively assumed to be present regardless of whether or not
1206
it is specified; the only effect of specifying it explicitly is to
1207
disable warnings about using inline functions in C99 mode.  Likewise,
1208
the option \fB\-fno\-gnu89\-inline\fR is not supported in versions of
1209
\&\s-1GCC\s0 before 4.3.  It will be supported only in C99 or gnu99 mode, not in
1210
C89 or gnu89 mode.
1211
.Sp
1212
The preprocesor macros \f(CW\*(C`_\|_GNUC_GNU_INLINE_\|_\*(C'\fR and
1213
\&\f(CW\*(C`_\|_GNUC_STDC_INLINE_\|_\*(C'\fR may be used to check which semantics are
1214
in effect for \f(CW\*(C`inline\*(C'\fR functions.
1215
.IP "\fB\-aux\-info\fR \fIfilename\fR" 4
1216
.IX Item "-aux-info filename"
1217
Output to the given filename prototyped declarations for all functions
1218
declared and/or defined in a translation unit, including those in header
1219
files.  This option is silently ignored in any language other than C.
1220
.Sp
1221
Besides declarations, the file indicates, in comments, the origin of
1222
each declaration (source file and line), whether the declaration was
1223
implicit, prototyped or unprototyped (\fBI\fR, \fBN\fR for new or
1224
\&\fBO\fR for old, respectively, in the first character after the line
1225
number and the colon), and whether it came from a declaration or a
1226
definition (\fBC\fR or \fBF\fR, respectively, in the following
1227
character).  In the case of function definitions, a K&R\-style list of
1228
arguments followed by their declarations is also provided, inside
1229
comments, after the declaration.
1230
.IP "\fB\-fno\-asm\fR" 4
1231
.IX Item "-fno-asm"
1232
Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
1233
keyword, so that code can use these words as identifiers.  You can use
1234
the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
1235
instead.  \fB\-ansi\fR implies \fB\-fno\-asm\fR.
1236
.Sp
1237
In \*(C+, this switch only affects the \f(CW\*(C`typeof\*(C'\fR keyword, since
1238
\&\f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`inline\*(C'\fR are standard keywords.  You may want to
1239
use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
1240
effect.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR), this
1241
switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, since
1242
\&\f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO\s0 C99.
1243
.IP "\fB\-fno\-builtin\fR" 4
1244
.IX Item "-fno-builtin"
1245
.PD 0
1246
.IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4
1247
.IX Item "-fno-builtin-function"
1248
.PD
1249
Don't recognize built-in functions that do not begin with
1250
\&\fB_\|_builtin_\fR as prefix.
1251
.Sp
1252
\&\s-1GCC\s0 normally generates special code to handle certain built-in functions
1253
more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
1254
instructions that adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
1255
may become inline copy loops.  The resulting code is often both smaller
1256
and faster, but since the function calls no longer appear as such, you
1257
cannot set a breakpoint on those calls, nor can you change the behavior
1258
of the functions by linking with a different library.  In addition,
1259
when a function is recognized as a built-in function, \s-1GCC\s0 may use
1260
information about that function to warn about problems with calls to
1261
that function, or to generate more efficient code, even if the
1262
resulting code still contains calls to that function.  For example,
1263
warnings are given with \fB\-Wformat\fR for bad calls to
1264
\&\f(CW\*(C`printf\*(C'\fR, when \f(CW\*(C`printf\*(C'\fR is built in, and \f(CW\*(C`strlen\*(C'\fR is
1265
known not to modify global memory.
1266
.Sp
1267
With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
1268
only the built-in function \fIfunction\fR is
1269
disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
1270
function is named this is not built-in in this version of \s-1GCC\s0, this
1271
option is ignored.  There is no corresponding
1272
\&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
1273
built-in functions selectively when using \fB\-fno\-builtin\fR or
1274
\&\fB\-ffreestanding\fR, you may define macros such as:
1275
.Sp
1276
.Vb 2
1277
\&        #define abs(n)          __builtin_abs ((n))
1278
\&        #define strcpy(d, s)    __builtin_strcpy ((d), (s))
1279
.Ve
1280
.IP "\fB\-fhosted\fR" 4
1281
.IX Item "-fhosted"
1282
Assert that compilation takes place in a hosted environment.  This implies
1283
\&\fB\-fbuiltin\fR.  A hosted environment is one in which the
1284
entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
1285
type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
1286
This is equivalent to \fB\-fno\-freestanding\fR.
1287
.IP "\fB\-ffreestanding\fR" 4
1288
.IX Item "-ffreestanding"
1289
Assert that compilation takes place in a freestanding environment.  This
1290
implies \fB\-fno\-builtin\fR.  A freestanding environment
1291
is one in which the standard library may not exist, and program startup may
1292
not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an \s-1OS\s0 kernel.
1293
This is equivalent to \fB\-fno\-hosted\fR.
1294
.IP "\fB\-fopenmp\fR" 4
1295
.IX Item "-fopenmp"
1296
Enable handling of OpenMP directives \f(CW\*(C`#pragma omp\*(C'\fR in C/\*(C+ and
1297
\&\f(CW\*(C`!$omp\*(C'\fR in Fortran.  When \fB\-fopenmp\fR is specified, the
1298
compiler generates parallel code according to the OpenMP Application
1299
Program Interface v2.5 <\fBhttp://www.openmp.org/\fR>.
1300
.IP "\fB\-fms\-extensions\fR" 4
1301
.IX Item "-fms-extensions"
1302
Accept some non-standard constructs used in Microsoft header files.
1303
.Sp
1304
Some cases of unnamed fields in structures and unions are only
1305
accepted with this option.
1306
.IP "\fB\-trigraphs\fR" 4
1307
.IX Item "-trigraphs"
1308
Support \s-1ISO\s0 C trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
1309
options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR.
1310
.IP "\fB\-no\-integrated\-cpp\fR" 4
1311
.IX Item "-no-integrated-cpp"
1312
Performs a compilation in two passes: preprocessing and compiling.  This
1313
option allows a user supplied \*(L"cc1\*(R", \*(L"cc1plus\*(R", or \*(L"cc1obj\*(R" via the
1314
\&\fB\-B\fR option.  The user supplied compilation step can then add in
1315
an additional preprocessing step after normal preprocessing but before
1316
compiling.  The default is to use the integrated cpp (internal cpp)
1317
.Sp
1318
The semantics of this option will change if \*(L"cc1\*(R", \*(L"cc1plus\*(R", and
1319
\&\*(L"cc1obj\*(R" are merged.
1320
.IP "\fB\-traditional\fR" 4
1321
.IX Item "-traditional"
1322
.PD 0
1323
.IP "\fB\-traditional\-cpp\fR" 4
1324
.IX Item "-traditional-cpp"
1325
.PD
1326
Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
1327
C compiler.  They are now only supported with the \fB\-E\fR switch.
1328
The preprocessor continues to support a pre-standard mode.  See the \s-1GNU\s0
1329
\&\s-1CPP\s0 manual for details.
1330
.IP "\fB\-fcond\-mismatch\fR" 4
1331
.IX Item "-fcond-mismatch"
1332
Allow conditional expressions with mismatched types in the second and
1333
third arguments.  The value of such an expression is void.  This option
1334
is not supported for \*(C+.
1335
.IP "\fB\-funsigned\-char\fR" 4
1336
.IX Item "-funsigned-char"
1337
Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
1338
.Sp
1339
Each kind of machine has a default for what \f(CW\*(C`char\*(C'\fR should
1340
be.  It is either like \f(CW\*(C`unsigned char\*(C'\fR by default or like
1341
\&\f(CW\*(C`signed char\*(C'\fR by default.
1342
.Sp
1343
Ideally, a portable program should always use \f(CW\*(C`signed char\*(C'\fR or
1344
\&\f(CW\*(C`unsigned char\*(C'\fR when it depends on the signedness of an object.
1345
But many programs have been written to use plain \f(CW\*(C`char\*(C'\fR and
1346
expect it to be signed, or expect it to be unsigned, depending on the
1347
machines they were written for.  This option, and its inverse, let you
1348
make such a program work with the opposite default.
1349
.Sp
1350
The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
1351
\&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
1352
is always just like one of those two.
1353
.IP "\fB\-fsigned\-char\fR" 4
1354
.IX Item "-fsigned-char"
1355
Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
1356
.Sp
1357
Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
1358
the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
1359
\&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
1360
.IP "\fB\-fsigned\-bitfields\fR" 4
1361
.IX Item "-fsigned-bitfields"
1362
.PD 0
1363
.IP "\fB\-funsigned\-bitfields\fR" 4
1364
.IX Item "-funsigned-bitfields"
1365
.IP "\fB\-fno\-signed\-bitfields\fR" 4
1366
.IX Item "-fno-signed-bitfields"
1367
.IP "\fB\-fno\-unsigned\-bitfields\fR" 4
1368
.IX Item "-fno-unsigned-bitfields"
1369
.PD
1370
These options control whether a bit-field is signed or unsigned, when the
1371
declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
1372
default, such a bit-field is signed, because this is consistent: the
1373
basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
1374
.Sh "Options Controlling \*(C+ Dialect"
1375
.IX Subsection "Options Controlling  Dialect"
1376
This section describes the command-line options that are only meaningful
1377
for \*(C+ programs; but you can also use most of the \s-1GNU\s0 compiler options
1378
regardless of what language your program is in.  For example, you
1379
might compile a file \f(CW\*(C`firstClass.C\*(C'\fR like this:
1380
.PP
1381
.Vb 1
1382
\&        g++ -g -frepo -O -c firstClass.C
1383
.Ve
1384
.PP
1385
In this example, only \fB\-frepo\fR is an option meant
1386
only for \*(C+ programs; you can use the other options with any
1387
language supported by \s-1GCC\s0.
1388
.PP
1389
Here is a list of options that are \fIonly\fR for compiling \*(C+ programs:
1390
.IP "\fB\-fabi\-version=\fR\fIn\fR" 4
1391
.IX Item "-fabi-version=n"
1392
Use version \fIn\fR of the \*(C+ \s-1ABI\s0.  Version 2 is the version of the
1393
\&\*(C+ \s-1ABI\s0 that first appeared in G++ 3.4.  Version 1 is the version of
1394
the \*(C+ \s-1ABI\s0 that first appeared in G++ 3.2.  Version 0 will always be
1395
the version that conforms most closely to the \*(C+ \s-1ABI\s0 specification.
1396
Therefore, the \s-1ABI\s0 obtained using version 0 will change as \s-1ABI\s0 bugs
1397
are fixed.
1398
.Sp
1399
The default is version 2.
1400
.IP "\fB\-fno\-access\-control\fR" 4
1401
.IX Item "-fno-access-control"
1402
Turn off all access checking.  This switch is mainly useful for working
1403
around bugs in the access control code.
1404
.IP "\fB\-fcheck\-new\fR" 4
1405
.IX Item "-fcheck-new"
1406
Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null
1407
before attempting to modify the storage allocated.  This check is
1408
normally unnecessary because the \*(C+ standard specifies that
1409
\&\f(CW\*(C`operator new\*(C'\fR will only return \f(CW0\fR if it is declared
1410
\&\fB\f(BIthrow()\fB\fR, in which case the compiler will always check the
1411
return value even without this option.  In all other cases, when
1412
\&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory
1413
exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
1414
\&\fBnew (nothrow)\fR.
1415
.IP "\fB\-fconserve\-space\fR" 4
1416
.IX Item "-fconserve-space"
1417
Put uninitialized or runtime-initialized global variables into the
1418
common segment, as C does.  This saves space in the executable at the
1419
cost of not diagnosing duplicate definitions.  If you compile with this
1420
flag and your program mysteriously crashes after \f(CW\*(C`main()\*(C'\fR has
1421
completed, you may have an object that is being destroyed twice because
1422
two definitions were merged.
1423
.Sp
1424
This option is no longer useful on most targets, now that support has
1425
been added for putting variables into \s-1BSS\s0 without making them common.
1426
.IP "\fB\-ffriend\-injection\fR" 4
1427
.IX Item "-ffriend-injection"
1428
Inject friend functions into the enclosing namespace, so that they are
1429
visible outside the scope of the class in which they are declared.
1430
Friend functions were documented to work this way in the old Annotated
1431
\&\*(C+ Reference Manual, and versions of G++ before 4.1 always worked
1432
that way.  However, in \s-1ISO\s0 \*(C+ a friend function which is not declared
1433
in an enclosing scope can only be found using argument dependent
1434
lookup.  This option causes friends to be injected as they were in
1435
earlier releases.
1436
.Sp
1437
This option is for compatibility, and may be removed in a future
1438
release of G++.
1439
.IP "\fB\-fno\-elide\-constructors\fR" 4
1440
.IX Item "-fno-elide-constructors"
1441
The \*(C+ standard allows an implementation to omit creating a temporary
1442
which is only used to initialize another object of the same type.
1443
Specifying this option disables that optimization, and forces G++ to
1444
call the copy constructor in all cases.
1445
.IP "\fB\-fno\-enforce\-eh\-specs\fR" 4
1446
.IX Item "-fno-enforce-eh-specs"
1447
Don't generate code to check for violation of exception specifications
1448
at runtime.  This option violates the \*(C+ standard, but may be useful
1449
for reducing code size in production builds, much like defining
1450
\&\fB\s-1NDEBUG\s0\fR.  This does not give user code permission to throw
1451
exceptions in violation of the exception specifications; the compiler
1452
will still optimize based on the specifications, so throwing an
1453
unexpected exception will result in undefined behavior.
1454
.IP "\fB\-ffor\-scope\fR" 4
1455
.IX Item "-ffor-scope"
1456
.PD 0
1457
.IP "\fB\-fno\-for\-scope\fR" 4
1458
.IX Item "-fno-for-scope"
1459
.PD
1460
If \fB\-ffor\-scope\fR is specified, the scope of variables declared in
1461
a \fIfor-init-statement\fR is limited to the \fBfor\fR loop itself,
1462
as specified by the \*(C+ standard.
1463
If \fB\-fno\-for\-scope\fR is specified, the scope of variables declared in
1464
a \fIfor-init-statement\fR extends to the end of the enclosing scope,
1465
as was the case in old versions of G++, and other (traditional)
1466
implementations of \*(C+.
1467
.Sp
1468
The default if neither flag is given to follow the standard,
1469
but to allow and give a warning for old-style code that would
1470
otherwise be invalid, or have different behavior.
1471
.IP "\fB\-fno\-gnu\-keywords\fR" 4
1472
.IX Item "-fno-gnu-keywords"
1473
Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
1474
word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
1475
\&\fB\-ansi\fR implies \fB\-fno\-gnu\-keywords\fR.
1476
.IP "\fB\-fno\-implicit\-templates\fR" 4
1477
.IX Item "-fno-implicit-templates"
1478
Never emit code for non-inline templates which are instantiated
1479
implicitly (i.e. by use); only emit code for explicit instantiations.
1480
.IP "\fB\-fno\-implicit\-inline\-templates\fR" 4
1481
.IX Item "-fno-implicit-inline-templates"
1482
Don't emit code for implicit instantiations of inline templates, either.
1483
The default is to handle inlines differently so that compiles with and
1484
without optimization will need the same set of explicit instantiations.
1485
.IP "\fB\-fno\-implement\-inlines\fR" 4
1486
.IX Item "-fno-implement-inlines"
1487
To save space, do not emit out-of-line copies of inline functions
1488
controlled by \fB#pragma implementation\fR.  This will cause linker
1489
errors if these functions are not inlined everywhere they are called.
1490
.IP "\fB\-fms\-extensions\fR" 4
1491
.IX Item "-fms-extensions"
1492
Disable pedantic warnings about constructs used in \s-1MFC\s0, such as implicit
1493
int and getting a pointer to member function via non-standard syntax.
1494
.IP "\fB\-fno\-nonansi\-builtins\fR" 4
1495
.IX Item "-fno-nonansi-builtins"
1496
Disable built-in declarations of functions that are not mandated by
1497
\&\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,
1498
\&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
1499
.IP "\fB\-fno\-operator\-names\fR" 4
1500
.IX Item "-fno-operator-names"
1501
Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
1502
\&\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
1503
synonyms as keywords.
1504
.IP "\fB\-fno\-optional\-diags\fR" 4
1505
.IX Item "-fno-optional-diags"
1506
Disable diagnostics that the standard says a compiler does not need to
1507
issue.  Currently, the only such diagnostic issued by G++ is the one for
1508
a name having multiple meanings within a class.
1509
.IP "\fB\-fpermissive\fR" 4
1510
.IX Item "-fpermissive"
1511
Downgrade some diagnostics about nonconformant code from errors to
1512
warnings.  Thus, using \fB\-fpermissive\fR will allow some
1513
nonconforming code to compile.
1514
.IP "\fB\-frepo\fR" 4
1515
.IX Item "-frepo"
1516
Enable automatic template instantiation at link time.  This option also
1517
implies \fB\-fno\-implicit\-templates\fR.
1518
.IP "\fB\-fno\-rtti\fR" 4
1519
.IX Item "-fno-rtti"
1520
Disable generation of information about every class with virtual
1521
functions for use by the \*(C+ runtime type identification features
1522
(\fBdynamic_cast\fR and \fBtypeid\fR).  If you don't use those parts
1523
of the language, you can save some space by using this flag.  Note that
1524
exception handling uses the same information, but it will generate it as
1525
needed. The \fBdynamic_cast\fR operator can still be used for casts that
1526
do not require runtime type information, i.e. casts to \f(CW\*(C`void *\*(C'\fR or to
1527
unambiguous base classes.
1528
.IP "\fB\-fstats\fR" 4
1529
.IX Item "-fstats"
1530
Emit statistics about front-end processing at the end of the compilation.
1531
This information is generally only useful to the G++ development team.
1532
.IP "\fB\-ftemplate\-depth\-\fR\fIn\fR" 4
1533
.IX Item "-ftemplate-depth-n"
1534
Set the maximum instantiation depth for template classes to \fIn\fR.
1535
A limit on the template instantiation depth is needed to detect
1536
endless recursions during template class instantiation.  \s-1ANSI/ISO\s0 \*(C+
1537
conforming programs must not rely on a maximum depth greater than 17.
1538
.IP "\fB\-fno\-threadsafe\-statics\fR" 4
1539
.IX Item "-fno-threadsafe-statics"
1540
Do not emit the extra code to use the routines specified in the \*(C+
1541
\&\s-1ABI\s0 for thread-safe initialization of local statics.  You can use this
1542
option to reduce code size slightly in code that doesn't need to be
1543
thread\-safe.
1544
.IP "\fB\-fuse\-cxa\-atexit\fR" 4
1545
.IX Item "-fuse-cxa-atexit"
1546
Register destructors for objects with static storage duration with the
1547
\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
1548
This option is required for fully standards-compliant handling of static
1549
destructors, but will only work if your C library supports
1550
\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
1551
.IP "\fB\-fno\-use\-cxa\-get\-exception\-ptr\fR" 4
1552
.IX Item "-fno-use-cxa-get-exception-ptr"
1553
Don't use the \f(CW\*(C`_\|_cxa_get_exception_ptr\*(C'\fR runtime routine.  This
1554
will cause \f(CW\*(C`std::uncaught_exception\*(C'\fR to be incorrect, but is necessary
1555
if the runtime routine is not available.
1556
.IP "\fB\-fvisibility\-inlines\-hidden\fR" 4
1557
.IX Item "-fvisibility-inlines-hidden"
1558
This switch declares that the user does not attempt to compare
1559
pointers to inline methods where the addresses of the two functions
1560
were taken in different shared objects.
1561
.Sp
1562
The effect of this is that \s-1GCC\s0 may, effectively, mark inline methods with
1563
\&\f(CW\*(C`_\|_attribute_\|_ ((visibility ("hidden")))\*(C'\fR so that they do not
1564
appear in the export table of a \s-1DSO\s0 and do not require a \s-1PLT\s0 indirection
1565
when used within the \s-1DSO\s0.  Enabling this option can have a dramatic effect
1566
on load and link times of a \s-1DSO\s0 as it massively reduces the size of the
1567
dynamic export table when the library makes heavy use of templates.
1568
.Sp
1569
The behaviour of this switch is not quite the same as marking the
1570
methods as hidden directly, because it does not affect static variables
1571
local to the function or cause the compiler to deduce that
1572
the function is defined in only one shared object.
1573
.Sp
1574
You may mark a method as having a visibility explicitly to negate the
1575
effect of the switch for that method.  For example, if you do want to
1576
compare pointers to a particular inline method, you might mark it as
1577
having default visibility.  Marking the enclosing class with explicit
1578
visibility will have no effect.
1579
.Sp
1580
Explicitly instantiated inline methods are unaffected by this option
1581
as their linkage might otherwise cross a shared library boundary.
1582
.IP "\fB\-fno\-weak\fR" 4
1583
.IX Item "-fno-weak"
1584
Do not use weak symbol support, even if it is provided by the linker.
1585
By default, G++ will use weak symbols if they are available.  This
1586
option exists only for testing, and should not be used by end\-users;
1587
it will result in inferior code and has no benefits.  This option may
1588
be removed in a future release of G++.
1589
.IP "\fB\-nostdinc++\fR" 4
1590
.IX Item "-nostdinc++"
1591
Do not search for header files in the standard directories specific to
1592
\&\*(C+, but do still search the other standard directories.  (This option
1593
is used when building the \*(C+ library.)
1594
.PP
1595
In addition, these optimization, warning, and code generation options
1596
have meanings only for \*(C+ programs:
1597
.IP "\fB\-fno\-default\-inline\fR" 4
1598
.IX Item "-fno-default-inline"
1599
Do not assume \fBinline\fR for functions defined inside a class scope.
1600
  Note that these
1601
functions will have linkage like inline functions; they just won't be
1602
inlined by default.
1603
.IP "\fB\-Wabi\fR (\*(C+ only)" 4
1604
.IX Item "-Wabi ( only)"
1605
Warn when G++ generates code that is probably not compatible with the
1606
vendor-neutral \*(C+ \s-1ABI\s0.  Although an effort has been made to warn about
1607
all such cases, there are probably some cases that are not warned about,
1608
even though G++ is generating incompatible code.  There may also be
1609
cases where warnings are emitted even though the code that is generated
1610
will be compatible.
1611
.Sp
1612
You should rewrite your code to avoid these warnings if you are
1613
concerned about the fact that code generated by G++ may not be binary
1614
compatible with code generated by other compilers.
1615
.Sp
1616
The known incompatibilities at this point include:
1617
.RS 4
1618
.IP "*" 4
1619
Incorrect handling of tail-padding for bit\-fields.  G++ may attempt to
1620
pack data into the same byte as a base class.  For example:
1621
.Sp
1622
.Vb 2
1623
\&        struct A { virtual void f(); int f1 : 1; };
1624
\&        struct B : public A { int f2 : 1; };
1625
.Ve
1626
.Sp
1627
In this case, G++ will place \f(CW\*(C`B::f2\*(C'\fR into the same byte
1628
as\f(CW\*(C`A::f1\*(C'\fR; other compilers will not.  You can avoid this problem
1629
by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
1630
byte size on your platform; that will cause G++ and other compilers to
1631
layout \f(CW\*(C`B\*(C'\fR identically.
1632
.IP "*" 4
1633
Incorrect handling of tail-padding for virtual bases.  G++ does not use
1634
tail padding when laying out virtual bases.  For example:
1635
.Sp
1636
.Vb 3
1637
\&        struct A { virtual void f(); char c1; };
1638
\&        struct B { B(); char c2; };
1639
\&        struct C : public A, public virtual B {};
1640
.Ve
1641
.Sp
1642
In this case, G++ will not place \f(CW\*(C`B\*(C'\fR into the tail-padding for
1643
\&\f(CW\*(C`A\*(C'\fR; other compilers will.  You can avoid this problem by
1644
explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
1645
alignment (ignoring virtual base classes); that will cause G++ and other
1646
compilers to layout \f(CW\*(C`C\*(C'\fR identically.
1647
.IP "*" 4
1648
Incorrect handling of bit-fields with declared widths greater than that
1649
of their underlying types, when the bit-fields appear in a union.  For
1650
example:
1651
.Sp
1652
.Vb 1
1653
\&        union U { int i : 4096; };
1654
.Ve
1655
.Sp
1656
Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
1657
union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
1658
.IP "*" 4
1659
Empty classes can be placed at incorrect offsets.  For example:
1660
.Sp
1661
.Vb 1
1662
\&        struct A {};
1663
.Ve
1664
.Sp
1665
.Vb 4
1666
\&        struct B {
1667
\&          A a;
1668
\&          virtual void f ();
1669
\&        };
1670
.Ve
1671
.Sp
1672
.Vb 1
1673
\&        struct C : public B, public A {};
1674
.Ve
1675
.Sp
1676
G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
1677
it should be placed at offset zero.  G++ mistakenly believes that the
1678
\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
1679
.IP "*" 4
1680
Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
1681
template template parameters can be mangled incorrectly.
1682
.Sp
1683
.Vb 2
1684
\&        template 
1685
\&        void f(typename Q::X) {}
1686
.Ve
1687
.Sp
1688
.Vb 2
1689
\&        template