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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [doc/] [gcc.1] - Blame information for rev 12

Details | Compare with Previous | View Log

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