]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/c-family/c.opt
cmd/go: pass -funwind-tables when compiling C code
[thirdparty/gcc.git] / gcc / c-family / c.opt
CommitLineData
fef3106c 1; Options for the C, ObjC, C++ and ObjC++ front ends.
cbe34bb5 2; Copyright (C) 2003-2017 Free Software Foundation, Inc.
fef3106c
NB
3;
4; This file is part of GCC.
5;
6; GCC is free software; you can redistribute it and/or modify it under
7; the terms of the GNU General Public License as published by the Free
9dcd6f09 8; Software Foundation; either version 3, or (at your option) any later
fef3106c 9; version.
c22cacf3 10;
fef3106c
NB
11; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12; WARRANTY; without even the implied warranty of MERCHANTABILITY or
13; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14; for more details.
c22cacf3 15;
fef3106c 16; You should have received a copy of the GNU General Public License
9dcd6f09
NC
17; along with GCC; see the file COPYING3. If not see
18; <http://www.gnu.org/licenses/>.
fef3106c 19
8abb6b22 20; See the GCC internals manual for a description of this file's format.
fef3106c 21
fef3106c
NB
22; Please try to keep this file in ASCII collating order.
23
be43ab4e
NB
24Language
25C
26
27Language
28ObjC
29
30Language
31C++
32
33Language
34ObjC++
35
e200444e
JM
36-all-warnings
37C ObjC C++ ObjC++ Warning Alias(Wall)
38
39-ansi
40C ObjC C++ ObjC++ Alias(ansi)
41
42-assert
43C ObjC C++ ObjC++ Separate Alias(A) MissingArgError(assertion missing after %qs)
44
45-assert=
46C ObjC C++ ObjC++ Joined Alias(A) MissingArgError(assertion missing after %qs)
47
48-comments
49C ObjC C++ ObjC++ Alias(C)
50
51-comments-in-macros
52C ObjC C++ ObjC++ Alias(CC)
53
54-define-macro
55C ObjC C++ ObjC++ Separate Alias(D) MissingArgError(macro name missing after %qs)
56
57-define-macro=
58C ObjC C++ ObjC++ Joined Alias(D) MissingArgError(macro name missing after %qs)
59
60-dependencies
61C ObjC C++ ObjC++ Alias(M)
62
63-dump
64C ObjC C++ ObjC++ Separate Alias(d)
65
66-dump=
67C ObjC C++ ObjC++ Joined Alias(d)
68
69-imacros
70C ObjC C++ ObjC++ Separate Alias(imacros) MissingArgError(missing filename after %qs)
71
72-imacros=
73C ObjC C++ ObjC++ Joined Alias(imacros) MissingArgError(missing filename after %qs)
74
75-include
76C ObjC C++ ObjC++ Separate Alias(include) MissingArgError(missing filename after %qs)
77
78-include=
79C ObjC C++ ObjC++ Joined Alias(include) MissingArgError(missing filename after %qs)
80
81-include-barrier
82C ObjC C++ ObjC++ Alias(I, -)
83
84-include-directory
85C ObjC C++ ObjC++ Separate Alias(I) MissingArgError(missing path after %qs)
86
87-include-directory=
88C ObjC C++ ObjC++ Joined Alias(I) MissingArgError(missing path after %qs)
89
90-include-directory-after
91C ObjC C++ ObjC++ Separate Alias(idirafter) MissingArgError(missing path after %qs)
92
93-include-directory-after=
94C ObjC C++ ObjC++ Joined Alias(idirafter) MissingArgError(missing path after %qs)
95
96-include-prefix
97C ObjC C++ ObjC++ Separate Alias(iprefix)
98
99-include-prefix=
100C ObjC C++ ObjC++ JoinedOrMissing Alias(iprefix)
101
102-include-with-prefix
103C ObjC C++ ObjC++ Separate Alias(iwithprefix)
104
105-include-with-prefix=
106C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
107
108-include-with-prefix-after
109C ObjC C++ ObjC++ Separate Alias(iwithprefix)
110
111-include-with-prefix-after=
112C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
113
114-include-with-prefix-before
115C ObjC C++ ObjC++ Separate Alias(iwithprefixbefore)
116
117-include-with-prefix-before=
118C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefixbefore)
119
120-no-integrated-cpp
121Driver Alias(no-integrated-cpp)
122
123-no-line-commands
124C ObjC C++ ObjC++ Alias(P)
125
126-no-standard-includes
127C ObjC C++ ObjC++ Alias(nostdinc)
128
129-no-warnings
130C ObjC C++ ObjC++ Alias(w)
131
132-output
133C ObjC C++ ObjC++ Separate Alias(o)
134
135-output=
136C ObjC C++ ObjC++ Joined Alias(o)
137
fef3106c
NB
138-output-pch=
139C ObjC C++ ObjC++ Joined Separate
140
e200444e
JM
141-pedantic
142C ObjC C++ ObjC++ Alias(pedantic)
143
e200444e
JM
144-preprocess
145C ObjC C++ ObjC++ Undocumented Alias(E)
146
147-print-missing-file-dependencies
148C ObjC C++ ObjC++ Alias(MG)
149
150-trace-includes
151C ObjC C++ ObjC++ Alias(H)
152
153-traditional
154Driver Alias(traditional)
155
156-traditional-cpp
157C ObjC C++ ObjC++ Alias(traditional-cpp)
158
159-trigraphs
160C ObjC C++ ObjC++ Alias(trigraphs)
161
162-undefine-macro
163C ObjC C++ ObjC++ Separate Alias(U) MissingArgError(macro name missing after %qs)
164
165-undefine-macro=
166C ObjC C++ ObjC++ Joined Alias(U) MissingArgError(macro name missing after %qs)
167
168-user-dependencies
169C ObjC C++ ObjC++ Alias(MM)
170
171-verbose
172Common C ObjC C++ ObjC++ Alias(v)
173
174-write-dependencies
175C ObjC C++ ObjC++ NoDriverArg Separate Alias(MD) MissingArgError(missing filename after %qs)
176
177-write-user-dependencies
178C ObjC C++ ObjC++ NoDriverArg Separate Alias(MMD) MissingArgError(missing filename after %qs)
179
fef3106c 180A
61ff2bdc 181C ObjC C++ ObjC++ Joined Separate MissingArgError(assertion missing after %qs)
a7b2e184 182-A<question>=<answer> Assert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>.
fef3106c
NB
183
184C
185C ObjC C++ ObjC++
a7b2e184 186Do not discard comments.
fef3106c
NB
187
188CC
189C ObjC C++ ObjC++
a7b2e184 190Do not discard comments in macro expansions.
fef3106c
NB
191
192D
61ff2bdc 193C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
a7b2e184 194-D<macro>[=<val>] Define a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1.
fef3106c
NB
195
196E
5498f011 197C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only)
fef3106c 198
94d1613b 199F
bd837408 200Driver C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 201-F <dir> Add <dir> to the end of the main framework include path.
94d1613b 202
1ee62b92
PG
203fgimple
204C Var(flag_gimple) Init(0)
205Enable parsing GIMPLE.
206
fef3106c
NB
207H
208C ObjC C++ ObjC++
a7b2e184 209Print the name of header files as they are used.
fef3106c
NB
210
211I
61ff2bdc 212C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 213-I <dir> Add <dir> to the end of the main include path.
fef3106c
NB
214
215M
216C ObjC C++ ObjC++
a7b2e184 217Generate make dependencies.
fef3106c 218
c878765b
JM
219MD
220C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
a7b2e184 221Generate make dependencies and compile.
fef3106c
NB
222
223MF
61ff2bdc 224C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
a7b2e184 225-MF <file> Write dependency output to the given file.
fef3106c
NB
226
227MG
228C ObjC C++ ObjC++
a7b2e184 229Treat missing header files as generated files.
fef3106c
NB
230
231MM
232C ObjC C++ ObjC++
a7b2e184 233Like -M but ignore system header files.
fef3106c 234
c878765b
JM
235MMD
236C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
a7b2e184 237Like -MD but ignore system header files.
fef3106c
NB
238
239MP
240C ObjC C++ ObjC++
a7b2e184 241Generate phony targets for all headers.
fef3106c
NB
242
243MQ
61ff2bdc 244C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
a7b2e184 245-MQ <target> Add a MAKE-quoted target.
fef3106c
NB
246
247MT
61ff2bdc 248C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
a7b2e184 249-MT <target> Add an unquoted target.
fef3106c
NB
250
251P
252C ObjC C++ ObjC++
a7b2e184 253Do not generate #line directives.
fef3106c
NB
254
255U
61ff2bdc 256C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
a7b2e184 257-U<macro> Undefine <macro>.
fef3106c
NB
258
259Wabi
d7f09764 260C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
a7b2e184 261Warn about things that will change when compiling with an ABI-compliant compiler.
fef3106c 262
62984918
JM
263Wabi=
264C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
a7b2e184 265Warn about things that change between the current -fabi-version and the specified version.
62984918 266
7dbb85a7
JM
267Wabi-tag
268C++ ObjC++ Var(warn_abi_tag) Warning
a7b2e184 269Warn if a subobject has an abi_tag attribute that the complete object type does not have.
7dbb85a7 270
bce08d50 271Wpsabi
50b15873 272C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
bce08d50 273
c116cd05 274Waddress
4a0ae68e 275C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 276Warn about suspicious uses of memory addresses.
c116cd05 277
af63ba4b
JM
278Enum
279Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
280
281EnumValue
282Enum(warn_aligned_new_level) String(none) Value(0)
283
284EnumValue
285Enum(warn_aligned_new_level) String(global) Value(1)
286
287EnumValue
288Enum(warn_aligned_new_level) String(all) Value(2)
289
290Waligned-new
291C++ ObjC++ Alias(Waligned-new=,global,none)
292Warn about 'new' of type with extended alignment without -faligned-new.
293
294Waligned-new=
2e1c20b1 295C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
6a825afe 296-Waligned-new=[none|global|all] Warn even if 'new' uses a class member allocation function.
af63ba4b 297
fef3106c 298Wall
c662432e 299C ObjC C++ ObjC++ Warning
a7b2e184 300Enable most warning messages.
fef3106c 301
adc577c5
AH
302Walloca
303C ObjC C++ ObjC++ Var(warn_alloca) Warning
304Warn on any use of alloca.
305
8bd9f164 306Walloc-size-larger-than=
d127ae9f 307C ObjC C++ ObjC++ Var(warn_alloc_size_limit) Warning Joined LangEnabledBy(C ObjC C++ ObjC++,Wall)
8bd9f164
MS
308-Walloc-size-larger-than=<bytes> Warn for calls to allocation functions that
309attempt to allocate objects larger than the specified number of bytes.
310
311Walloc-zero
312C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
313-Walloc-zero Warn for calls to allocation functions that specify zero bytes.
314
adc577c5 315Walloca-larger-than=
bf5fbf46 316C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined RejectNegative UInteger
9453ba0a 317-Walloca-larger-than=<number> Warn on unbounded uses of
adc577c5
AH
318alloca, and on bounded uses of alloca whose bound can be larger than
319<number> bytes.
320
34a180a6
MLI
321Warray-bounds
322LangEnabledBy(C ObjC C++ ObjC++,Wall)
323; in common.opt
324
de1b5c17
MU
325Warray-bounds=
326LangEnabledBy(C ObjC C++ ObjC++,Wall,1,0)
327; in common.opt
328
6e955430 329Wassign-intercept
c662432e 330ObjC ObjC++ Var(warn_assign_intercept) Warning
a7b2e184 331Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
6e955430 332
fef3106c 333Wbad-function-cast
c662432e 334C ObjC Var(warn_bad_function_cast) Warning
a7b2e184 335Warn about casting functions to incompatible types.
fef3106c 336
04159acf
MP
337Wbool-compare
338C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 339Warn about boolean expression compared with an integer value different from true/false.
04159acf 340
9a2300e9
MP
341Wbool-operation
342C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
343Warn about certain operations on boolean expressions.
344
8423e57c
MS
345Wframe-address
346C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 347Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
8423e57c 348
48330c93
BE
349Wbuiltin-declaration-mismatch
350C ObjC C++ ObjC++ Var(warn_builtin_declaraion_mismatch) Init(1) Warning
351Warn when a built-in function is declared with the wrong signature.
352
c047ce93 353Wbuiltin-macro-redefined
b559c810 354C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
a7b2e184 355Warn when a built-in preprocessor macro is undefined or redefined.
c047ce93 356
f3bede71 357Wc90-c99-compat
b559c810 358C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
a7b2e184 359Warn about features not present in ISO C90, but present in ISO C99.
f3bede71 360
35aff4fb
MP
361Wc99-c11-compat
362C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
a7b2e184 363Warn about features not present in ISO C99, but present in ISO C11.
35aff4fb 364
b7e20b53 365Wc++-compat
b559c810 366C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
a7b2e184 367Warn about C constructs that are not in the common subset of C and C++.
b7e20b53 368
e1f1ee86 369Wc++0x-compat
765189ff 370C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
97e3ad20
JM
371
372Wc++11-compat
765189ff 373C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
a7b2e184 374Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
b7e20b53 375
20b06add
JM
376Wc++14-compat
377C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
a7b2e184 378Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
20b06add 379
51dc6603
JM
380Wc++1z-compat
381C++ ObjC++ Var(warn_cxx1z_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
382Warn about C++ constructs whose meaning differs between ISO C++ 2014 and (forthcoming) ISO C++ 201z(7?).
383
384Wc++17-compat
385C++ ObjC++ Warning Alias(Wc++1z-compat) Undocumented
386
fef3106c 387Wcast-qual
c662432e 388C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
a7b2e184 389Warn about casts which discard qualifiers.
fef3106c 390
3fa4634c
VR
391Wcatch-value
392C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
393Warn about catch handlers of non-reference type.
394
63dbcd13 395Wcatch-value=
3fa4634c 396C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0)
63dbcd13
VR
397Warn about catch handlers of non-reference type.
398
fef3106c 399Wchar-subscripts
4a0ae68e 400C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 401Warn about subscripts whose type is \"char\".
fef3106c 402
d5e254e1 403Wchkp
c2d89095 404C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 405Warn about memory access errors found by Pointer Bounds Checker.
d5e254e1 406
2b001724 407Wclobbered
95744782 408C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
a7b2e184 409Warn about variables that might be changed by \"longjmp\" or \"vfork\".
2b001724 410
fef3106c 411Wcomment
b559c810 412C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 413Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
fef3106c
NB
414
415Wcomments
5de8299c 416C ObjC C++ ObjC++ Warning Alias(Wcomment)
a7b2e184 417Synonym for -Wcomment.
fef3106c 418
dfeadaa0
PC
419Wconditionally-supported
420C++ ObjC++ Var(warn_conditionally_supported) Warning
a7b2e184 421Warn for conditionally-supported constructs.
dfeadaa0 422
fef3106c 423Wconversion
c662432e 424C ObjC C++ ObjC++ Var(warn_conversion) Warning
a7b2e184 425Warn for implicit type conversions that may change a value.
fef3106c 426
17251338
MLI
427Wconversion-null
428C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
a7b2e184 429Warn for converting NULL from/to a non-pointer type.
17251338 430
b559c810
MLI
431Wcpp
432C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
433; Documented in common.opt
434
fef3106c 435Wctor-dtor-privacy
c662432e 436C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
a7b2e184 437Warn when all constructors and destructors are private.
deef7113
MP
438
439Wdangling-else
440C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
441Warn about dangling else.
fef3106c 442
b559c810
MLI
443Wdate-time
444C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
a7b2e184 445Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
b559c810 446
85617eba 447Wdeclaration-after-statement
177cce46 448C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
a7b2e184 449Warn when a declaration is found after a statement.
85617eba 450
c9b0866a
PC
451Wdelete-incomplete
452C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
a7b2e184 453Warn when deleting a pointer to incomplete type.
c9b0866a 454
014ab419 455Wdelete-non-virtual-dtor
27e51192 456C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
a7b2e184 457Warn about deleting polymorphic objects with non-virtual destructors.
014ab419 458
fef3106c 459Wdeprecated
b559c810 460C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED) Var(warn_deprecated) Init(1) Warning
a7b2e184 461Warn if a deprecated compiler feature, class, method, or field is used.
fef3106c 462
976d5a22
TT
463Wdesignated-init
464C ObjC Var(warn_designated_init) Init(1) Warning
a7b2e184 465Warn about positional initialization of structs requiring designated initializers.
976d5a22 466
768952be
MU
467Wdiscarded-array-qualifiers
468C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
a7b2e184 469Warn if qualifiers on arrays which are pointer targets are discarded.
768952be 470
d00887e8
MP
471Wdiscarded-qualifiers
472C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
a7b2e184 473Warn if type qualifiers on pointers are discarded.
d00887e8 474
fef3106c 475Wdiv-by-zero
2cbac420 476C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
a7b2e184 477Warn about compile-time integer division by zero.
fef3106c 478
2ebd93e1
MP
479Wduplicated-branches
480C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
481Warn about duplicated branches in if-else statements.
482
3e3b8d63 483Wduplicated-cond
12651878 484C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
a7b2e184 485Warn about duplicated conditions in an if-else-if chain.
3e3b8d63 486
fef3106c 487Weffc++
c662432e 488C++ ObjC++ Var(warn_ecpp) Warning
a7b2e184 489Warn about violations of Effective C++ style rules.
fef3106c 490
b3b433c5 491Wempty-body
95744782 492C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
a7b2e184 493Warn about an empty body in an if or else statement.
b3b433c5 494
fef3106c 495Wendif-labels
b559c810 496C ObjC C++ ObjC++ CPP(warn_endif_labels) CppReason(CPP_W_ENDIF_LABELS) Var(cpp_warn_endif_labels) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
f6a7a9d5 497Warn about stray tokens after #else and #endif.
fef3106c 498
a3299096 499Wenum-compare
27e51192 500C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
a7b2e184 501Warn about comparison of different enum types.
a3299096 502
fef3106c
NB
503Werror
504C ObjC C++ ObjC++
72de27ea 505; Documented in common.opt
fef3106c
NB
506
507Werror-implicit-function-declaration
5de8299c 508C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
a7b2e184 509This switch is deprecated; use -Werror=implicit-function-declaration instead.
fef3106c 510
70f6d5e1
JJ
511Wextra
512C ObjC C++ ObjC++ Warning
513; in common.opt
514
c3cbcd45
VR
515Wextra-semi
516C++ ObjC++ Var(warn_extra_semi) Warning
517Warn about semicolon after in-class function definition.
518
49b0aa18 519Wfloat-conversion
63bbf46d 520C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
a7b2e184 521Warn for implicit type conversions that cause loss of floating point precision.
49b0aa18 522
fef3106c 523Wfloat-equal
c662432e 524C ObjC C++ ObjC++ Var(warn_float_equal) Warning
a7b2e184 525Warn if testing floating point numbers for equality.
fef3106c
NB
526
527Wformat
7332899a 528C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
a7b2e184 529Warn about printf/scanf/strftime/strfmon format string anomalies.
fef3106c 530
7332899a
MLI
531Wformat-contains-nul
532C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
a7b2e184 533Warn about format strings that contain NUL bytes.
7332899a 534
fef3106c 535Wformat-extra-args
7332899a 536C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
a7b2e184 537Warn if passing too many arguments to a function for its format string.
fef3106c
NB
538
539Wformat-nonliteral
7332899a 540C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
a7b2e184 541Warn about format strings that are not literals.
fef3106c 542
bce6f760 543Wformat-overflow
63010089 544C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
bce6f760
MS
545Warn about function calls with format strings that write past the end
546of the destination region. Same as -Wformat-overflow=1.
547
fef3106c 548Wformat-security
7332899a 549C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
a7b2e184 550Warn about possible security problems with format functions.
fef3106c 551
cbbd2b1c 552Wformat-signedness
7631f0e2 553C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
a7b2e184 554Warn about sign differences with format functions.
cbbd2b1c 555
efcc8d38 556Wformat-truncation
bf5fbf46 557C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
efcc8d38
MS
558Warn about calls to snprintf and similar functions that truncate output.
559Same as -Wformat-truncation=1.
560
fef3106c 561Wformat-y2k
7332899a 562C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
a7b2e184 563Warn about strftime formats yielding 2-digit years.
fef3106c
NB
564
565Wformat-zero-length
7332899a 566C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
a7b2e184 567Warn about zero-length formats.
fef3106c
NB
568
569Wformat=
63010089 570C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
a7b2e184 571Warn about printf/scanf/strftime/strfmon format string anomalies.
fef3106c 572
bce6f760 573Wformat-overflow=
63010089 574C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_overflow) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
88d0c3f0
MS
575Warn about function calls with format strings that write past the end
576of the destination region.
577
efcc8d38 578Wformat-truncation=
63010089 579C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format_trunc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
efcc8d38
MS
580Warn about calls to snprintf and similar functions that truncate output.
581
5db2e9ca 582Wignored-qualifiers
95744782 583C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
5db2e9ca
DK
584Warn whenever type qualifiers are ignored.
585
fbdb6baf
MP
586Wignored-attributes
587C C++ Var(warn_ignored_attributes) Init(1) Warning
588Warn whenever attributes are ignored.
589
d5c3d343
MP
590Wincompatible-pointer-types
591C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
a7b2e184 592Warn when there is a conversion between pointers that have incompatible types.
d5c3d343 593
3390f9c9 594Winit-self
0ccb505d 595C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
a7b2e184 596Warn about variables which are initialized to themselves.
3390f9c9 597
fef3106c 598Wimplicit
4a0ae68e 599C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
a7b2e184 600Warn about implicit declarations.
fef3106c 601
70f6d5e1
JJ
602Wimplicit-fallthrough=
603LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
604; in common.opt
605
0a0b3574
MM
606Wdouble-promotion
607C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
a7b2e184 608Warn about implicit conversions from \"float\" to \"double\".
0a0b3574 609
fb2675cb
PB
610Wexpansion-to-defined
611C ObjC C++ ObjC++ CPP(warn_expansion_to_defined) CppReason(CPP_W_EXPANSION_TO_DEFINED) Var(cpp_warn_expansion_to_defined) Init(0) Warning EnabledBy(Wextra || Wpedantic)
612Warn if \"defined\" is used outside #if.
613
fef3106c 614Wimplicit-function-declaration
4a0ae68e 615C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
a7b2e184 616Warn about implicit function declarations.
fef3106c
NB
617
618Wimplicit-int
92574c7c 619C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
a7b2e184 620Warn when a declaration does not specify a type.
fef3106c
NB
621
622Wimport
2d2bd949 623C ObjC C++ ObjC++ Undocumented Ignore
fef3106c 624
4514a96b
JM
625Winherited-variadic-ctor
626C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
a7b2e184 627Warn about C++11 inheriting constructors when the base has a variadic constructor.
4514a96b 628
52ec0ea3
MP
629Wint-conversion
630C ObjC Var(warn_int_conversion) Init(1) Warning
a7b2e184 631Warn about incompatible integer to pointer and pointer to integer conversions.
52ec0ea3 632
144a96e4
BE
633Wint-in-bool-context
634C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
635Warn for suspicious integer expressions in boolean context.
636
53a2494e 637Wint-to-pointer-cast
dc8d2739 638C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
a7b2e184 639Warn when there is a cast to a pointer from an integer of a different size.
53a2494e 640
fef3106c 641Winvalid-offsetof
c662432e 642C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
a7b2e184 643Warn about invalid uses of the \"offsetof\" macro.
fef3106c
NB
644
645Winvalid-pch
b559c810 646C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
a7b2e184 647Warn about PCH files that are found but not used.
fef3106c 648
e1b7793c 649Wjump-misses-init
f2bc201f 650C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
a7b2e184 651Warn when a jump misses a variable initialization.
e1b7793c 652
7f5f5f98 653Wliteral-suffix
b559c810 654C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
7f5f5f98
OW
655Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
656
ca409efd 657Wlogical-op
a7b2e184
MS
658C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
659Warn when a logical operator is suspiciously always evaluating to true or false.
ca409efd 660
742938c9 661Wlogical-not-parentheses
d2e4feca 662C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 663Warn when logical not is used on the left hand side operand of a comparison.
742938c9 664
fef3106c 665Wlong-long
b559c810 666C ObjC C++ ObjC++ CPP(cpp_warn_long_long) CppReason(CPP_W_LONG_LONG) Var(warn_long_long) Init(-1) Warning LangEnabledBy(C ObjC,Wc90-c99-compat)
a7b2e184 667Do not warn about using \"long long\" when -pedantic.
fef3106c
NB
668
669Wmain
34a180a6 670C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
a7b2e184 671Warn about suspicious declarations of \"main\".
fef3106c 672
34a180a6
MLI
673Wmain
674LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
675;
676
b108f48f
JJ
677Wmemset-transposed-args
678C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 679Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
b108f48f 680
c1e1f433
BS
681Wmemset-elt-size
682C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
683Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
684
c3388e62 685Wmisleading-indentation
f6069ccc 686C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
a7b2e184 687Warn when the indentation of the code does not reflect the block structure.
c3388e62 688
fef3106c 689Wmissing-braces
4f7f7aca 690C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
a7b2e184 691Warn about possibly missing braces around initializers.
fef3106c
NB
692
693Wmissing-declarations
c662432e 694C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
a7b2e184 695Warn about global functions without previous declarations.
fef3106c 696
eaac4679 697Wmissing-field-initializers
95744782 698C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
a7b2e184 699Warn about missing fields in struct initializers.
eaac4679 700
3e2becc4
MP
701Wmultistatement-macros
702C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
703Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
704
6b333269
NS
705Wmultiple-inheritance
706C++ ObjC++ Var(warn_multiple_inheritance) Warning
a7b2e184 707Warn on direct multiple inheritance.
6b333269
NS
708
709Wnamespaces
710C++ ObjC++ Var(warn_namespaces) Warning
a7b2e184 711Warn on namespace definition.
6b333269 712
20b06add
JM
713Wsized-deallocation
714C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
a7b2e184 715Warn about missing sized deallocation functions.
20b06add 716
40ffd95f
BE
717Wsizeof-pointer-div
718C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
719Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
720
1a4049e7 721Wsizeof-pointer-memaccess
4a0ae68e 722C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 723Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
1a4049e7 724
773ec47f
MP
725Wsizeof-array-argument
726C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
a7b2e184 727Warn when sizeof is applied on a parameter declared as an array.
773ec47f 728
ee92e7ba
MS
729Wstringop-overflow
730C ObjC C++ ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
731Warn about buffer overflow in string manipulation functions like memcpy
732and strcpy.
733
734Wstringop-overflow=
281ac396 735C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall, 2, 0) IntegerRange(0, 4)
ee92e7ba
MS
736Under the control of Object Size type, warn about buffer overflow in string
737manipulation functions like memcpy and strcpy.
738
90137d8f
MLI
739Wsuggest-attribute=format
740C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
a7b2e184 741Warn about functions which might be candidates for format attributes.
fef3106c 742
2f42e5de
TS
743Wsuggest-override
744C++ ObjC++ Var(warn_override) Warning
745Suggest that the override keyword be used when the declaration of a virtual
746function overrides another.
747
34a180a6
MLI
748Wswitch
749C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 750Warn about enumerated switches, with no default, missing a case.
34a180a6
MLI
751
752Wswitch-default
753C ObjC C++ ObjC++ Var(warn_switch_default) Warning
a7b2e184 754Warn about enumerated switches missing a \"default:\" statement.
34a180a6
MLI
755
756Wswitch-enum
757C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
a7b2e184 758Warn about all enumerated switches missing a specific case.
34a180a6 759
fedfecef 760Wswitch-bool
5c3d09f7 761C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
a7b2e184 762Warn about switches with boolean controlling expression.
fedfecef 763
6b333269
NS
764Wtemplates
765C++ ObjC++ Var(warn_templates) Warning
a7b2e184 766Warn on primary template declaration.
6b333269 767
90137d8f 768Wmissing-format-attribute
54d62f51 769C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
90137d8f
MLI
770;
771
b02398bd 772Wmissing-include-dirs
b559c810 773C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
a7b2e184 774Warn about user-specified include directories that do not exist.
b02398bd 775
cb4af25a 776Wmissing-parameter-type
95744782 777C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
a7b2e184 778Warn about function parameters declared without a type specifier in K&R-style functions.
cb4af25a 779
fef3106c 780Wmissing-prototypes
c662432e 781C ObjC Var(warn_missing_prototypes) Warning
a7b2e184 782Warn about global functions without prototypes.
fef3106c 783
5720c0dc 784Wmudflap
98906124 785C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc 786
fef3106c 787Wmultichar
b559c810 788C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
a7b2e184 789Warn about use of multi-character character constants.
fef3106c 790
76f86d00 791Wnarrowing
765189ff 792C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
a7b2e184 793Warn about narrowing conversions within { } that are ill-formed in C++11.
76f86d00 794
fef3106c 795Wnested-externs
c662432e 796C ObjC Var(warn_nested_externs) Warning
a7b2e184 797Warn about \"extern\" declarations not at file scope.
fef3106c 798
59f9c2ed
JM
799Wnoexcept
800C++ ObjC++ Var(warn_noexcept) Warning
a7b2e184 801Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
59f9c2ed 802
108154ff
JM
803Wnoexcept-type
804C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++1z-compat)
805Warn if C++1z noexcept function type will change the mangled name of a symbol.
806
fef3106c 807Wnon-template-friend
c662432e 808C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
a7b2e184 809Warn when non-templatized friend functions are declared within a template.
fef3106c 810
c3684b7b
MS
811Wclass-memaccess
812C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
813Warn for unsafe raw memory writes to objects of class types.
814
fef3106c 815Wnon-virtual-dtor
880a467b 816C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
a7b2e184 817Warn about non-virtual destructors.
fef3106c
NB
818
819Wnonnull
7332899a 820C ObjC C++ ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1,0)
a7b2e184 821Warn about NULL being passed to argument slots marked as requiring non-NULL.
fef3106c 822
7332899a
MLI
823Wnonnull
824C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
825;
826
bf14eba2
JJ
827Wnonnull-compare
828C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
829;
830
1ef33fd4 831Wnormalized
54d62f51 832C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
1ef33fd4
MLI
833;
834
50668cf6 835Wnormalized=
b559c810 836C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(warn_normalize) CppReason(CPP_W_NORMALIZE) Init(normalized_C) Var(cpp_warn_normalize) Enum(cpp_normalize_level)
54dcd526 837-Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
1ef33fd4
MLI
838
839; Required for these enum values.
840SourceInclude
841cpplib.h
842
843Enum
844Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
845
846EnumValue
847Enum(cpp_normalize_level) String(none) Value(normalized_none)
848
849EnumValue
850Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
851
852EnumValue
853Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
854
855EnumValue
856Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
50668cf6 857
fef3106c 858Wold-style-cast
c662432e 859C++ ObjC++ Var(warn_old_style_cast) Warning
a7b2e184 860Warn if a C-style cast is used in a program.
fef3106c 861
b1ed4cb4 862Wold-style-declaration
95744782 863C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
a7b2e184 864Warn for obsolescent usage in a declaration.
b1ed4cb4 865
c034f121 866Wold-style-definition
c662432e 867C ObjC Var(warn_old_style_definition) Warning
a7b2e184 868Warn if an old-style parameter definition is used.
c034f121 869
8b5e1202
SO
870Wopenmp-simd
871C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
a7b2e184 872Warn if a simd directive is overridden by the vectorizer cost model.
8b5e1202 873
89a42ac8 874Woverlength-strings
34a180a6 875C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
a7b2e184 876Warn if a string is longer than the maximum portable length specified by the standard.
89a42ac8 877
fef3106c 878Woverloaded-virtual
c662432e 879C++ ObjC++ Var(warn_overloaded_virtual) Warning
a7b2e184 880Warn about overloaded virtual function names.
fef3106c 881
7ed322d7 882Woverride-init
95744782 883C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
a7b2e184 884Warn about overriding initializers without side effects.
7ed322d7 885
755e528f
MP
886Woverride-init-side-effects
887C ObjC Var(warn_override_init_side_effects) Init(1) Warning
a7b2e184 888Warn about overriding initializers with side effects.
755e528f 889
2cd36c22 890Wpacked-bitfield-compat
bee6fa6d 891C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
a7b2e184 892Warn about packed bit-fields whose offset changed in GCC 4.4.
2cd36c22 893
fef3106c 894Wparentheses
4a0ae68e 895C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 896Warn about possibly missing parentheses.
fef3106c 897
c1771a20 898Wpedantic
b559c810 899C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
c1771a20
MLI
900; Documented in common.opt
901
fef3106c 902Wpmf-conversions
c662432e 903C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
a7b2e184 904Warn when converting the type of pointers to member functions.
fef3106c
NB
905
906Wpointer-arith
44d90fe1 907C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
a7b2e184 908Warn about function pointer arithmetic.
fef3106c 909
4a0ae68e 910Wpointer-sign
27e51192 911C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
a7b2e184 912Warn when a pointer differs in signedness in an assignment.
4a0ae68e 913
a9342885
MP
914Wpointer-compare
915C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
916Warn when a pointer is compared with a zero character constant.
917
53a2494e 918Wpointer-to-int-cast
c662432e 919C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
a7b2e184 920Warn when a pointer is cast to an integer of a different size.
53a2494e 921
b9b8dde3 922Wpragmas
c662432e 923C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
a7b2e184 924Warn about misuses of pragmas.
b9b8dde3 925
9a179d01
NP
926Wproperty-assign-default
927ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
a7b2e184 928Warn if a property for an Objective-C object has no assign semantics specified.
9a179d01 929
fef3106c 930Wprotocol
c662432e 931ObjC ObjC++ Var(warn_protocol) Init(1) Warning
a7b2e184 932Warn if inherited methods are unimplemented.
fef3106c 933
e2f5cc96 934Wplacement-new
46cb9332
MS
935C++ Warning Alias(Wplacement-new=, 1, 0)
936Warn for placement new expressions with undefined behavior.
937
938Wplacement-new=
63010089 939C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
eb11eb15 940Warn for placement new expressions with undefined behavior.
e2f5cc96 941
fef3106c 942Wredundant-decls
c662432e 943C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
a7b2e184 944Warn about multiple declarations of the same object.
fef3106c 945
a2c6e7f2
JJ
946Wregister
947C++ ObjC++ Var(warn_register) Warning
948Warn about uses of register storage specifier.
949
fef3106c 950Wreorder
f2bc201f 951C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
a7b2e184 952Warn when the compiler reorders code.
fef3106c
NB
953
954Wreturn-type
4a0ae68e 955C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 956Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
fef3106c 957
ee45a32d
EB
958Wscalar-storage-order
959C ObjC C++ ObjC++ Init(1) Warning
960Warn on suspicious constructs involving reverse scalar storage order.
961
fef3106c 962Wselector
c662432e 963ObjC ObjC++ Var(warn_selector) Warning
a7b2e184 964Warn if a selector has multiple methods.
fef3106c 965
13c21655
PC
966Wsequence-point
967C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 968Warn about possible violations of sequence point rules.
13c21655 969
dcaaa5a0 970Wshadow-ivar
dff8943f 971ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
a7b2e184 972Warn if a local declaration hides an instance variable.
dcaaa5a0 973
451b5e48
MP
974Wshift-overflow
975C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
a7b2e184 976Warn if left shift of a signed value overflows.
451b5e48
MP
977
978Wshift-overflow=
63010089 979C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
a7b2e184 980Warn if left shift of a signed value overflows.
451b5e48 981
13c21655
PC
982Wshift-count-negative
983C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
a7b2e184 984Warn if shift count is negative.
13c21655
PC
985
986Wshift-count-overflow
987C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
a7b2e184 988Warn if shift count >= width of type.
fef3106c 989
0173bd2a
MP
990Wshift-negative-value
991C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
a7b2e184 992Warn if left shifting a negative value.
0173bd2a 993
fef3106c 994Wsign-compare
4a0ae68e 995C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
a7b2e184 996Warn about signed-unsigned comparisons.
fef3106c 997
4a0ae68e
MLI
998Wsign-compare
999C ObjC C++ ObjC++ EnabledBy(Wextra)
1000;
1001
1002Wsign-conversion
63bbf46d 1003C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
a7b2e184 1004Warn for implicit type conversions between signed and unsigned integers.
4a0ae68e 1005
fef3106c 1006Wsign-promo
c662432e 1007C++ ObjC++ Var(warn_sign_promo) Warning
a7b2e184 1008Warn when overload promotes from unsigned to signed.
fef3106c 1009
b2f97e4a 1010Wstrict-null-sentinel
5498f011 1011C++ ObjC++ Warning Var(warn_strict_null_sentinel)
a7b2e184 1012Warn about uncasted NULL used as sentinel.
b2f97e4a 1013
fef3106c 1014Wstrict-prototypes
c662432e 1015C ObjC Var(warn_strict_prototypes) Warning
a7b2e184 1016Warn about unprototyped function declarations.
fef3106c 1017
65d4f2cd 1018Wstrict-aliasing=
63010089 1019C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
65d4f2cd
MLI
1020;
1021
1022Wstrict-overflow=
63010089 1023C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
65d4f2cd
MLI
1024;
1025
6e955430 1026Wstrict-selector-match
c662432e 1027ObjC ObjC++ Var(warn_strict_selector_match) Warning
a7b2e184 1028Warn if type signatures of candidate methods do not match exactly.
6e955430 1029
23462d4d
UB
1030Wsync-nand
1031C C++ Var(warn_sync_nand) Init(1) Warning
a7b2e184 1032Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
23462d4d 1033
fef3106c 1034Wsynth
c662432e 1035C++ ObjC++ Var(warn_synth) Warning
a7b2e184 1036Deprecated. This switch has no effect.
fef3106c
NB
1037
1038Wsystem-headers
c662432e 1039C ObjC C++ ObjC++ Warning
9a0f3e86 1040; Documented in common.opt
fef3106c 1041
05b28fd6
MP
1042Wtautological-compare
1043C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 1044Warn if a comparison always evaluates to true or false.
05b28fd6 1045
8243e2a9
JM
1046Wterminate
1047C++ ObjC++ Warning Var(warn_terminate) Init(1)
a7b2e184 1048Warn if a throw expression will always result in a call to terminate().
8243e2a9 1049
fef3106c 1050Wtraditional
b559c810 1051C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
a7b2e184 1052Warn about features not present in traditional C.
fef3106c 1053
05170031 1054Wtraditional-conversion
c662432e 1055C ObjC Var(warn_traditional_conversion) Warning
a7b2e184 1056Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
05170031 1057
fef3106c 1058Wtrigraphs
b559c810 1059C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 1060Warn if trigraphs are encountered that might affect the meaning of the program.
fef3106c
NB
1061
1062Wundeclared-selector
c662432e 1063ObjC ObjC++ Var(warn_undeclared_selector) Warning
a7b2e184 1064Warn about @selector()s without previously declared methods.
fef3106c
NB
1065
1066Wundef
b559c810 1067C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
a7b2e184 1068Warn if an undefined macro is used in an #if directive.
fef3106c 1069
4a0ae68e
MLI
1070Wuninitialized
1071C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1072;
1073
1074Wmaybe-uninitialized
1075C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1076;
1077
fef3106c 1078Wunknown-pragmas
34a180a6 1079C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
a7b2e184 1080Warn about unrecognized pragmas.
fef3106c 1081
6ec637a4
JJ
1082Wunsuffixed-float-constants
1083C ObjC Var(warn_unsuffixed_float_constants) Warning
a7b2e184 1084Warn about unsuffixed float constants.
6ec637a4 1085
4a0ae68e
MLI
1086Wunused
1087C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1088; documented in common.opt
1089
3797cb21 1090Wunused-local-typedefs
650dc14a 1091C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
a7b2e184 1092Warn when typedefs locally defined in a function are not used.
3797cb21 1093
fef3106c 1094Wunused-macros
b559c810 1095C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
a7b2e184 1096Warn about macros defined in the main file that are not used.
fef3106c 1097
156f545a
MLI
1098Wunused-result
1099C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
a7b2e184 1100Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
156f545a 1101
0f876f22
MW
1102Wunused-variable
1103C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1104; documented in common.opt
1105
1106Wunused-const-variable
4246c8da
MW
1107C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1108Warn when a const variable is unused.
1109
1110Wunused-const-variable=
63010089 1111C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
a7b2e184 1112Warn when a const variable is unused.
0f876f22 1113
e5b79219 1114Wvariadic-macros
27e51192 1115C ObjC C++ ObjC++ CPP(warn_variadic_macros) CppReason(CPP_W_VARIADIC_MACROS) Var(cpp_warn_variadic_macros) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic || Wtraditional)
a7b2e184 1116Warn about using variadic macros.
e5b79219 1117
b9c8da34
DS
1118Wvarargs
1119C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
a7b2e184 1120Warn about questionable usage of the macros used to retrieve variable arguments.
b9c8da34 1121
50d50fc7
SP
1122Wvla
1123C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
a7b2e184 1124Warn if a variable length array is used.
50d50fc7 1125
adc577c5
AH
1126Wvla-larger-than=
1127C ObjC C++ ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative UInteger
9453ba0a 1128-Wvla-larger-than=<number> Warn on unbounded uses of variable-length arrays, and
adc577c5
AH
1129on bounded uses of variable-length arrays whose bound can be
1130larger than <number> bytes.
1131
16302daf 1132Wvolatile-register-var
4a0ae68e 1133C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 1134Warn when a register variable is declared volatile.
16302daf 1135
6b333269
NS
1136Wvirtual-inheritance
1137C++ ObjC++ Var(warn_virtual_inheritance) Warning
a7b2e184 1138Warn on direct virtual inheritance.
6b333269 1139
f14edc1a
JM
1140Wvirtual-move-assign
1141C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
a7b2e184 1142Warn if a virtual base has a non-trivial move assignment operator.
f14edc1a 1143
fef3106c 1144Wwrite-strings
c662432e 1145C ObjC C++ ObjC++ Var(warn_write_strings) Warning
d8a07487 1146In C++, nonzero means warn about deprecated conversion from string literals to 'char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard.
fef3106c 1147
89401152
PC
1148Wzero-as-null-pointer-constant
1149C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
a7b2e184 1150Warn when a literal '0' is used as null pointer.
89401152 1151
04398fa8
PC
1152Wuseless-cast
1153C++ ObjC++ Var(warn_useless_cast) Warning
a7b2e184 1154Warn about useless casts.
04398fa8 1155
273aa49e
PC
1156Wsubobject-linkage
1157C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
a7b2e184 1158Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage.
273aa49e 1159
d6e83a8d
MM
1160Wduplicate-decl-specifier
1161C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1162Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1163
975672f3
PK
1164Wrestrict
1165C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++)
1166Warn when an argument passed to a restrict-qualified parameter aliases with
1167another argument.
1168
fef3106c
NB
1169ansi
1170C ObjC C++ ObjC++
a7b2e184 1171A synonym for -std=c89 (for C) or -std=c++98 (for C++).
fef3106c
NB
1172
1173d
1174C ObjC C++ ObjC++ Joined
72de27ea 1175; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
fef3106c 1176
62984918
JM
1177fabi-compat-version=
1178C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
a7b2e184 1179The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
62984918 1180
fef3106c 1181faccess-control
5498f011 1182C++ ObjC++ Var(flag_access_control) Init(1)
a7b2e184 1183Enforce class member access control semantics.
fef3106c 1184
da5182be
TQ
1185fada-spec-parent=
1186C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
a7b2e184 1187-fada-spec-parent=unit Dump Ada specs as child units of given parent.
da5182be 1188
af63ba4b
JM
1189faligned-new
1190C++ ObjC++ Alias(faligned-new=,1,0)
1191Support C++17 allocation of over-aligned types.
1192
1193faligned-new=
2e1c20b1 1194C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
af63ba4b
JM
1195-faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1196
fef3106c 1197fall-virtual
2d2bd949 1198C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1199
6637388f
TG
1200fallow-parameterless-variadic-functions
1201C ObjC Var(flag_allow_parameterless_variadic_functions)
a7b2e184 1202Allow variadic functions without named parameter.
6637388f 1203
fef3106c 1204falt-external-templates
2d2bd949 1205C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1206No longer supported.
fef3106c
NB
1207
1208fasm
5498f011 1209C ObjC C++ ObjC++ Var(flag_no_asm, 0)
a7b2e184 1210Recognize the \"asm\" keyword.
fef3106c 1211
10e48e39
RO
1212; Define extra predefined macros for use in libgcc.
1213fbuilding-libgcc
1214C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1215
fef3106c 1216fbuiltin
5498f011 1217C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
a7b2e184 1218Recognize built-in functions.
fef3106c
NB
1219
1220fbuiltin-
1221C ObjC C++ ObjC++ Joined
1222
5dc99c46
SB
1223fcanonical-system-headers
1224C ObjC C++ ObjC++
1225Where shorter, use canonicalized paths to systems headers.
1226
d5e254e1 1227fcheck-pointer-bounds
79d64904 1228C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds)
d5e254e1
IE
1229Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to
1230control instrumentation. Currently available for C, C++ and ObjC.
1231
1232fchkp-check-incomplete-type
79d64904 1233C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1)
a7b2e184 1234Generate pointer bounds checks for variables with incomplete type.
d5e254e1
IE
1235
1236fchkp-zero-input-bounds-for-main
79d64904 1237C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0)
d5e254e1
IE
1238Use zero bounds for all incoming arguments in 'main' function. It helps when
1239instrumented binaries are used with legacy libs.
1240
1241fchkp-first-field-has-own-bounds
79d64904 1242C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds)
d5e254e1
IE
1243Forces Pointer Bounds Checker to use narrowed bounds for address of the first
1244field in the structure. By default pointer to the first field has the same
1245bounds as pointer to the whole structure.
1246
1247fchkp-narrow-bounds
79d64904 1248C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1)
d5e254e1
IE
1249Control how Pointer Bounds Checker handle pointers to object fields. When
1250narrowing is on, field bounds are used. Otherwise full object bounds are used.
1251
1252fchkp-narrow-to-innermost-array
79d64904 1253C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray)
d5e254e1 1254Forces Pointer Bounds Checker to use bounds of the innermost arrays in case of
8ba4f506
AI
1255nested static arrays access. By default outermost array is used.
1256
1257fchkp-flexible-struct-trailing-arrays
1258C ObjC C++ ObjC++ LTO Report Var(flag_chkp_flexible_struct_trailing_arrays)
1259Forces Pointer Bounds Checker to treat all trailing arrays in structures as
1260possibly flexible. By default only arrays fields with zero length or that are
1261marked with attribute bnd_variable_size are treated as flexible.
d5e254e1
IE
1262
1263fchkp-optimize
1264C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1)
1265Allow Pointer Bounds Checker optimizations. By default allowed
1266on optimization levels >0.
1267
1268fchkp-use-fast-string-functions
1269C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0)
1270Allow to use *_nobnd versions of string functions by Pointer Bounds Checker.
1271
1272fchkp-use-nochk-string-functions
1273C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0)
1274Allow to use *_nochk versions of string functions by Pointer Bounds Checker.
1275
1276fchkp-use-static-bounds
79d64904 1277C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1)
d5e254e1
IE
1278Use statically initialized variable for vars bounds instead of
1279generating them each time it is required.
1280
1281fchkp-use-static-const-bounds
79d64904 1282C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1)
d5e254e1
IE
1283Use statically initialized variable for constant bounds instead of
1284generating them each time it is required.
1285
1286fchkp-treat-zero-dynamic-size-as-infinite
79d64904 1287C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0)
d5e254e1
IE
1288With this option zero size obtained dynamically for objects with
1289incomplete type will be treated as infinite.
1290
1291fchkp-check-read
1292C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1)
1293Generate checks for all read accesses to memory.
1294
1295fchkp-check-write
1296C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1)
1297Generate checks for all write accesses to memory.
1298
1299fchkp-store-bounds
1300C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1)
1301Generate bounds stores for pointer writes.
1302
1303fchkp-instrument-calls
1304C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1)
1305Generate bounds passing for calls.
1306
1307fchkp-instrument-marked-only
1308C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0)
1309Instrument only functions marked with bnd_instrument attribute.
1310
226d62d2
IE
1311fchkp-use-wrappers
1312C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1)
1313Transform instrumented builtin calls into calls to wrappers.
1314
5373cd33
IE
1315static-libmpx
1316Driver
1317
d2d7e672
IE
1318static-libmpxwrappers
1319Driver
1320
36536d79 1321fcilkplus
b72271b9 1322C ObjC C++ ObjC++ LTO Report Var(flag_cilkplus) Init(0)
a7b2e184 1323Enable Cilk Plus.
36536d79 1324
971e17ff
AS
1325fconcepts
1326C++ ObjC++ Var(flag_concepts)
a7b2e184 1327Enable support for C++ concepts.
971e17ff 1328
fef3106c
NB
1329fcond-mismatch
1330C ObjC C++ ObjC++
a7b2e184 1331Allow the arguments of the '?' operator to have different types.
fef3106c
NB
1332
1333fconserve-space
5498f011 1334C++ ObjC++ Var(flag_conserve_space)
6f07a821 1335Does nothing. Preserved for backward compatibility.
fef3106c 1336
fef3106c 1337fconstant-string-class=
61ff2bdc 1338ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
a7b2e184 1339-fconst-string-class=<name> Use class <name> for constant strings.
fef3106c 1340
17bc631c 1341fconstexpr-depth=
49a000c3 1342C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
a7b2e184 1343-fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
17bc631c 1344
5ec2cd9f
JM
1345fconstexpr-loop-limit=
1346C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1347-fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1348
847e697a
TT
1349fdebug-cpp
1350C ObjC C++ ObjC++
a7b2e184 1351Emit debug annotations during preprocessing.
847e697a 1352
5f5babf1 1353fdeduce-init-list
15694fdd 1354C++ ObjC++ Var(flag_deduce_init_list) Init(0)
a7b2e184 1355-fdeduce-init-list enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list.
5f5babf1 1356
1f26ac87
JM
1357fdeclone-ctor-dtor
1358C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
a7b2e184 1359Factor complex constructors and destructors to favor space over speed.
1f26ac87 1360
fef3106c 1361fdefault-inline
2d2bd949 1362C++ ObjC++ Ignore
5498f011 1363Does nothing. Preserved for backward compatibility.
fef3106c 1364
f012c8ef
DM
1365fdiagnostics-show-template-tree
1366C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1367Print hierarchical comparisons when template types are mismatched.
1368
ccfc4c91
OW
1369fdirectives-only
1370C ObjC C++ ObjC++
1371Preprocess directives only.
1372
fef3106c
NB
1373fdollars-in-identifiers
1374C ObjC C++ ObjC++
a7b2e184 1375Permit '$' as an identifier character.
fef3106c 1376
3b78de56
AC
1377fdump-ada-spec
1378C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
a7b2e184 1379Write all declarations as Ada code transitively.
3b78de56
AC
1380
1381fdump-ada-spec-slim
1382C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
a7b2e184 1383Write all declarations as Ada code for the given file only.
3b78de56 1384
fef3106c 1385felide-constructors
5498f011 1386C++ ObjC++ Var(flag_elide_constructors) Init(1)
fef3106c 1387
f012c8ef
DM
1388felide-type
1389C++ ObjC++ Var(flag_elide_type) Init(1)
1390-fno-elide-type Do not elide common elements in template comparisons.
1391
fef3106c 1392fenforce-eh-specs
5498f011 1393C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
a7b2e184 1394Generate code to check exception specifications.
fef3106c
NB
1395
1396fenum-int-equiv
2d2bd949 1397C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1398
e6cc3a24
ZW
1399fexec-charset=
1400C ObjC C++ ObjC++ Joined RejectNegative
a7b2e184 1401-fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
e6cc3a24 1402
af15a2fe
JM
1403fextended-identifiers
1404C ObjC C++ ObjC++
a7b2e184 1405Permit universal character names (\\u and \\U) in identifiers.
af15a2fe 1406
16dd5cfe
EC
1407finput-charset=
1408C ObjC C++ ObjC++ Joined RejectNegative
a7b2e184 1409-finput-charset=<cset> Specify the default character set for source files.
16dd5cfe 1410
5af057d8
JM
1411fextern-tls-init
1412C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
a7b2e184 1413Support dynamic initialization of thread-local variables in a different translation unit.
16dd5cfe 1414
fef3106c 1415fexternal-templates
2d2bd949 1416C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1417
fef3106c 1418ffor-scope
5498f011 1419C++ ObjC++ Var(flag_new_for_scope) Init(1)
a7b2e184 1420Scope of for-init-statement variables is local to the loop.
fef3106c
NB
1421
1422ffreestanding
820b51ae 1423C ObjC C++ ObjC++
a7b2e184 1424Do not assume that standard C libraries and \"main\" exist.
fef3106c
NB
1425
1426fgnu-keywords
5498f011 1427C++ ObjC++ Var(flag_no_gnu_keywords, 0)
a7b2e184 1428Recognize GNU-defined keywords.
fef3106c
NB
1429
1430fgnu-runtime
fb5610fb 1431ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
a7b2e184 1432Generate code for GNU runtime environment.
fef3106c 1433
da1c7394 1434fgnu89-inline
2cbac420 1435C ObjC Var(flag_gnu89_inline) Init(-1)
a7b2e184 1436Use traditional GNU semantics for inline functions.
da1c7394 1437
fef3106c 1438fguiding-decls
2d2bd949 1439C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1440
1441fhandle-exceptions
2d2bd949 1442C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)})
fef3106c
NB
1443
1444fhonor-std
2d2bd949 1445C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1446
1447fhosted
1448C ObjC
a7b2e184 1449Assume normal C execution environment.
fef3106c
NB
1450
1451fhuge-objects
2d2bd949 1452C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1453No longer supported.
fef3106c
NB
1454
1455fimplement-inlines
5498f011 1456C++ ObjC++ Var(flag_implement_inlines) Init(1)
a7b2e184 1457Export functions even if they can be inlined.
fef3106c
NB
1458
1459fimplicit-inline-templates
5498f011 1460C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
a7b2e184 1461Emit implicit instantiations of inline templates.
fef3106c
NB
1462
1463fimplicit-templates
5498f011 1464C++ ObjC++ Var(flag_implicit_templates) Init(1)
a7b2e184 1465Emit implicit instantiations of templates.
fef3106c 1466
31f7f784
JM
1467fnew-inheriting-ctors
1468C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1469Implement C++17 inheriting constructor semantics.
1470
d63d5d0c 1471ffriend-injection
2cbac420 1472C++ ObjC++ Var(flag_friend_injection)
a7b2e184 1473Inject friend functions into enclosing namespace.
d63d5d0c 1474
47ea1edf
DK
1475fkeep-inline-dllexport
1476C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
a7b2e184 1477Don't emit dllexported inline functions unless needed.
47ea1edf 1478
fef3106c 1479flabels-ok
2d2bd949 1480C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1481
00c8e9f6 1482flax-vector-conversions
5498f011 1483C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
00c8e9f6
MS
1484Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1485
fef3106c 1486fms-extensions
5498f011 1487C ObjC C++ ObjC++ Var(flag_ms_extensions)
a7b2e184 1488Don't warn about uses of Microsoft extensions.
fef3106c 1489
5720c0dc 1490fmudflap
98906124 1491C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc
RG
1492
1493fmudflapth
98906124 1494C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc
RG
1495
1496fmudflapir
98906124 1497C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc 1498
fef3106c 1499fname-mangling-version-
2d2bd949 1500C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1501
1502fnew-abi
2d2bd949 1503C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1504
31bfc9b9
JM
1505fnew-ttp-matching
1506C++ ObjC++ Var(flag_new_ttp)
1507Implement resolution of DR 150 for matching of template template arguments.
1508
fef3106c 1509fnext-runtime
fb5610fb 1510ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
a7b2e184 1511Generate code for NeXT (Apple Mac OS X) runtime environment.
264fa2db
ZL
1512
1513fnil-receivers
5498f011 1514ObjC ObjC++ Var(flag_nil_receivers) Init(1)
a7b2e184 1515Assume that receivers of Objective-C messages may be nil.
fef3106c 1516
dcaaa5a0
DP
1517flocal-ivars
1518ObjC ObjC++ Var(flag_local_ivars) Init(1)
1519Allow access to instance variables as if they were local declarations within instance method implementations.
1520
1521fivar-visibility=
1522ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
a7b2e184 1523-fvisibility=[private|protected|public|package] Set the default symbol visibility.
dcaaa5a0
DP
1524
1525Enum
1526Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1527
1528EnumValue
1529Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1530
1531EnumValue
1532Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1533
1534EnumValue
1535Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1536
1537EnumValue
1538Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1539
fef3106c 1540fnonansi-builtins
5498f011 1541C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
fef3106c
NB
1542
1543fnonnull-objects
2d2bd949 1544C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1545
9feb3d6a
JM
1546fnothrow-opt
1547C++ ObjC++ Optimization Var(flag_nothrow_opt)
a7b2e184 1548Treat a throw() exception specification as noexcept to improve code size.
9feb3d6a 1549
0a256240 1550fobjc-abi-version=
fb5610fb 1551ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
0a256240
NP
1552Specify which ABI to use for Objective-C family code and meta-data generation.
1553
6e955430
ZL
1554; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1555; to initialize any non-POD ivars in Objective-C++ classes.
1556fobjc-call-cxx-cdtors
1557ObjC++ Var(flag_objc_call_cxx_cdtors)
a7b2e184 1558Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
6e955430
ZL
1559
1560fobjc-direct-dispatch
1561ObjC ObjC++ Var(flag_objc_direct_dispatch)
a7b2e184 1562Allow fast jumps to the message dispatcher.
6e955430
ZL
1563
1564; Nonzero means that we will allow new ObjC exception syntax (@throw,
1565; @try, etc.) in source code.
264fa2db 1566fobjc-exceptions
6e955430 1567ObjC ObjC++ Var(flag_objc_exceptions)
a7b2e184 1568Enable Objective-C exception and synchronization syntax.
264fa2db 1569
6e955430 1570fobjc-gc
fb5610fb 1571ObjC ObjC++ LTO Var(flag_objc_gc)
a7b2e184 1572Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
6e955430 1573
0a256240
NP
1574fobjc-nilcheck
1575ObjC ObjC++ Var(flag_objc_nilcheck,1)
1576Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1577
6e955430 1578; Nonzero means that we generate NeXT setjmp based exceptions.
093c7153 1579fobjc-sjlj-exceptions
6e955430 1580ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
a7b2e184 1581Enable Objective-C setjmp exception handling runtime.
093c7153 1582
22d8d616
NP
1583fobjc-std=objc1
1584ObjC ObjC++ Var(flag_objc1_only)
a7b2e184 1585Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
22d8d616 1586
41dbbb37 1587fopenacc
a0c88d06 1588C ObjC C++ ObjC++ LTO Var(flag_openacc)
a7b2e184 1589Enable OpenACC.
41dbbb37 1590
b6adbb9f
NS
1591fopenacc-dim=
1592C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1593Specify default OpenACC compute dimensions.
1594
953ff289 1595fopenmp
1506ae0e 1596C ObjC C++ ObjC++ LTO Var(flag_openmp)
a7b2e184 1597Enable OpenMP (implies -frecursive in Fortran).
953ff289 1598
6d7f7e0a
TB
1599fopenmp-simd
1600C ObjC C++ ObjC++ Var(flag_openmp_simd)
a7b2e184 1601Enable OpenMP's SIMD directives.
6d7f7e0a 1602
fef3106c
NB
1603foperator-names
1604C++ ObjC++
a7b2e184 1605Recognize C++ keywords like \"compl\" and \"xor\".
fef3106c
NB
1606
1607foptional-diags
2d2bd949 1608C++ ObjC++ Ignore
5498f011 1609Does nothing. Preserved for backward compatibility.
fef3106c
NB
1610
1611fpch-deps
1612C ObjC C++ ObjC++
1613
c0d578e6
GK
1614fpch-preprocess
1615C ObjC C++ ObjC++
a7b2e184 1616Look for and use PCH files even when preprocessing.
c0d578e6 1617
fef3106c 1618fpermissive
0c3641b0 1619C++ ObjC++ Var(flag_permissive)
a7b2e184 1620Downgrade conformance errors to warnings.
fef3106c 1621
478a1c5b
ILT
1622fplan9-extensions
1623C ObjC Var(flag_plan9_extensions)
a7b2e184 1624Enable Plan 9 language extensions.
478a1c5b 1625
fef3106c
NB
1626fpreprocessed
1627C ObjC C++ ObjC++
a7b2e184 1628Treat the input file as already preprocessed.
fef3106c 1629
92582b75
TT
1630ftrack-macro-expansion
1631C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1632; converted into ftrack-macro-expansion=
1633
1634ftrack-macro-expansion=
1635C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
a7b2e184 1636-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
92582b75 1637
6ea2bd47 1638fpretty-templates
5498f011 1639C++ ObjC++ Var(flag_pretty_templates) Init(1)
a7b2e184 1640-fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments.
6ea2bd47 1641
88d0c3f0 1642fprintf-return-value
89990732 1643C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
88d0c3f0
MS
1644Treat known sprintf return values as constants.
1645
264fa2db 1646freplace-objc-classes
fb5610fb 1647ObjC ObjC++ LTO Var(flag_replace_objc_classes)
a7b2e184 1648Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
264fa2db 1649
fef3106c
NB
1650frepo
1651C++ ObjC++
a7b2e184 1652Enable automatic template instantiation.
fef3106c
NB
1653
1654frtti
5498f011 1655C++ ObjC++ Optimization Var(flag_rtti) Init(1)
a7b2e184 1656Generate run time type descriptor information.
fef3106c 1657
fef3106c 1658fshort-enums
dd6fe7d4 1659C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
a7b2e184 1660Use the narrowest integer type possible for enumeration types.
fef3106c
NB
1661
1662fshort-wchar
dd6fe7d4 1663C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
a7b2e184 1664Force the underlying type for \"wchar_t\" to be \"unsigned short\".
fef3106c 1665
fef3106c 1666fsigned-bitfields
5498f011 1667C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
a7b2e184 1668When \"signed\" or \"unsigned\" is not given make the bitfield signed.
fef3106c
NB
1669
1670fsigned-char
5498f011 1671C ObjC C++ ObjC++ LTO Var(flag_signed_char)
a7b2e184 1672Make \"char\" signed by default.
fef3106c 1673
20b06add
JM
1674fsized-deallocation
1675C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
a7b2e184 1676Enable C++14 sized deallocation support.
20b06add 1677
fef3106c 1678fsquangle
2d2bd949 1679C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1680
ee45a32d 1681fsso-struct=
fc73e60c 1682C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
4e89adf9 1683-fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order.
ee45a32d
EB
1684
1685Enum
1686Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
1687
1688EnumValue
1689Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
1690
1691EnumValue
1692Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
1693
4e89adf9
EB
1694EnumValue
1695Enum(sso_struct) String(native) Value(SSO_NATIVE)
1696
fef3106c 1697fstats
5498f011 1698C++ ObjC++ Var(flag_detailed_statistics)
a7b2e184 1699Display statistics accumulated during compilation.
fef3106c 1700
cbb4feb3
JM
1701fstrict-enums
1702C++ ObjC++ Optimization Var(flag_strict_enums)
a7b2e184 1703Assume that values of enumeration type are always within the minimum range of that type.
cbb4feb3 1704
fef3106c 1705fstrict-prototype
2d2bd949 1706C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1707
d0cf395a
JM
1708fstrong-eval-order
1709C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
1710Follow the C++17 evaluation order requirements for assignment expressions,
1711shift, member function calls, etc.
1712
1713fstrong-eval-order=
d4a6c0ea 1714C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
d0cf395a
JM
1715Follow the C++17 evaluation order requirements for assignment expressions,
1716shift, member function calls, etc.
1717
1718Enum
1719Name(strong_eval_order) Type(int)
1720
1721EnumValue
1722Enum(strong_eval_order) String(none) Value(0)
1723
1724EnumValue
1725Enum(strong_eval_order) String(some) Value(1)
1726
1727EnumValue
1728Enum(strong_eval_order) String(all) Value(2)
1729
fef3106c 1730ftabstop=
7b086b11 1731C ObjC C++ ObjC++ Joined RejectNegative UInteger
a7b2e184 1732-ftabstop=<number> Distance between tab stops for column reporting.
fef3106c 1733
a12bf402
MLI
1734ftemplate-backtrace-limit=
1735C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
a7b2e184 1736Set the maximum number of template instantiation notes for a single warning or error.
a12bf402 1737
fef3106c 1738ftemplate-depth-
5de8299c 1739C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
124e0d27
MLI
1740
1741ftemplate-depth=
c22cacf3 1742C++ ObjC++ Joined RejectNegative UInteger
a7b2e184 1743-ftemplate-depth=<number> Specify maximum template instantiation depth.
fef3106c
NB
1744
1745fthis-is-variable
2d2bd949 1746C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1747
40aac948 1748fthreadsafe-statics
5498f011 1749C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
a7b2e184 1750-fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
40aac948 1751
fef3106c 1752funsigned-bitfields
f0036cca 1753C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
a7b2e184 1754When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
fef3106c
NB
1755
1756funsigned-char
f0036cca 1757C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
a7b2e184 1758Make \"char\" unsigned by default.
fef3106c
NB
1759
1760fuse-cxa-atexit
5498f011 1761C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
a7b2e184 1762Use __cxa_atexit to register destructors.
fef3106c 1763
c7b5e395 1764fuse-cxa-get-exception-ptr
5498f011 1765C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
a7b2e184 1766Use __cxa_get_exception_ptr in exception handling.
c7b5e395 1767
d7afec4b 1768fvisibility-inlines-hidden
d0b07283 1769C++ ObjC++
a7b2e184 1770Marks all inlined functions and methods as having hidden visibility.
d7afec4b 1771
ddbfd28d
GK
1772fvisibility-ms-compat
1773C++ ObjC++ Var(flag_visibility_ms_compat)
a7b2e184 1774Changes visibility to match Microsoft Visual Studio by default.
ddbfd28d 1775
fef3106c 1776fvtable-gc
2d2bd949 1777C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1778No longer supported.
fef3106c
NB
1779
1780fvtable-thunks
2d2bd949 1781C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1782No longer supported.
fef3106c
NB
1783
1784fweak
5498f011 1785C++ ObjC++ Var(flag_weak) Init(1)
a7b2e184 1786Emit common-like symbols as weak symbols.
fef3106c 1787
e6cc3a24
ZW
1788fwide-exec-charset=
1789C ObjC C++ ObjC++ Joined RejectNegative
a7b2e184 1790-fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
e6cc3a24 1791
b20d9f0c 1792fworking-directory
5498f011 1793C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
a7b2e184 1794Generate a #line directive pointing at the current working directory.
b20d9f0c 1795
fef3106c 1796fxref
2d2bd949 1797C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1798No longer supported.
fef3106c 1799
264fa2db 1800fzero-link
5498f011 1801ObjC ObjC++ Var(flag_zero_link)
a7b2e184 1802Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
264fa2db 1803
fef3106c 1804gen-decls
1c70261c 1805ObjC ObjC++ Driver Var(flag_gen_declaration)
a7b2e184 1806Dump declarations to a .decl file.
fef3106c 1807
39ef6592
LC
1808femit-struct-debug-baseonly
1809C ObjC C++ ObjC++
a7b2e184 1810-femit-struct-debug-baseonly Aggressive reduced debug info for structs.
39ef6592
LC
1811
1812femit-struct-debug-reduced
1813C ObjC C++ ObjC++
a7b2e184 1814-femit-struct-debug-reduced Conservative reduced debug info for structs.
39ef6592
LC
1815
1816femit-struct-debug-detailed=
1817C ObjC C++ ObjC++ Joined
a7b2e184 1818-femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
39ef6592 1819
a4a0016d 1820fext-numeric-literals
dcb466ec 1821C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
a4a0016d
ESR
1822Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
1823number literal rather than a user-defined number literal.
1824
fef3106c 1825idirafter
61ff2bdc 1826C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1827-idirafter <dir> Add <dir> to the end of the system include path.
fef3106c
NB
1828
1829imacros
61ff2bdc 1830C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
a7b2e184 1831-imacros <file> Accept definition of macros in <file>.
fef3106c 1832
2b6dd222
JM
1833imultilib
1834C ObjC C++ ObjC++ Joined Separate
a7b2e184 1835-imultilib <dir> Set <dir> to be the multilib include subdirectory.
2b6dd222 1836
fef3106c 1837include
61ff2bdc 1838C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
a7b2e184 1839-include <file> Include the contents of <file> before other files.
fef3106c
NB
1840
1841iprefix
1842C ObjC C++ ObjC++ Joined Separate
a7b2e184 1843-iprefix <path> Specify <path> as a prefix for next two options.
fef3106c
NB
1844
1845isysroot
61ff2bdc 1846C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1847-isysroot <dir> Set <dir> to be the system root directory.
fef3106c
NB
1848
1849isystem
61ff2bdc 1850C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1851-isystem <dir> Add <dir> to the start of the system include path.
fef3106c 1852
4bed3787 1853iquote
61ff2bdc 1854C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1855-iquote <dir> Add <dir> to the end of the quote include path.
4bed3787 1856
fef3106c
NB
1857iwithprefix
1858C ObjC C++ ObjC++ Joined Separate
a7b2e184 1859-iwithprefix <dir> Add <dir> to the end of the system include path.
fef3106c
NB
1860
1861iwithprefixbefore
1862C ObjC C++ ObjC++ Joined Separate
a7b2e184 1863-iwithprefixbefore <dir> Add <dir> to the end of the main include path.
fef3106c
NB
1864
1865lang-asm
603349bf 1866C Undocumented RejectDriver
fef3106c 1867
e200444e
JM
1868no-integrated-cpp
1869Driver
1870
fef3106c
NB
1871nostdinc
1872C ObjC C++ ObjC++
a7b2e184 1873Do not search standard system include directories (those specified with -isystem will still be used).
fef3106c
NB
1874
1875nostdinc++
72de27ea 1876C++ ObjC++
a7b2e184 1877Do not search standard system include directories for C++.
fef3106c
NB
1878
1879o
1880C ObjC C++ ObjC++ Joined Separate
72de27ea 1881; Documented in common.opt
fef3106c
NB
1882
1883pedantic
c1771a20 1884C ObjC C++ ObjC++ Alias(Wpedantic)
72de27ea 1885; Documented in common.opt
fef3106c 1886
fef3106c
NB
1887print-objc-runtime-info
1888ObjC ObjC++
a7b2e184 1889Generate C header of platform-specific features.
fef3106c
NB
1890
1891remap
1892C ObjC C++ ObjC++
a7b2e184 1893Remap file names when including files.
fef3106c
NB
1894
1895std=c++98
1896C++ ObjC++
a7b2e184 1897Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
c7dc8804
JM
1898
1899std=c++03
1900C++ ObjC++ Alias(std=c++98)
a7b2e184 1901Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
fef3106c 1902
97e3ad20 1903std=c++11
966541e3 1904C++ ObjC++
a7b2e184 1905Conform to the ISO 2011 C++ standard.
97e3ad20
JM
1906
1907std=c++0x
70e24808 1908C++ ObjC++ Alias(std=c++11) Undocumented
a7b2e184 1909Deprecated in favor of -std=c++11.
966541e3 1910
552b8185 1911std=c++1y
028aee17 1912C++ ObjC++ Alias(std=c++14) Undocumented
a7b2e184 1913Deprecated in favor of -std=c++14.
70e24808
JM
1914
1915std=c++14
381bf11e 1916C++ ObjC++
a7b2e184 1917Conform to the ISO 2014 C++ standard.
552b8185 1918
da73100b
JM
1919std=c++1z
1920C++ ObjC++
a7b2e184 1921Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete support).
da73100b
JM
1922
1923std=c++17
1924C++ ObjC++ Alias(std=c++1z) Undocumented
1925
48b0b196 1926std=c11
2778d766 1927C ObjC
a7b2e184 1928Conform to the ISO 2011 C standard.
48b0b196
JM
1929
1930std=c1x
1931C ObjC Alias(std=c11)
a7b2e184 1932Deprecated in favor of -std=c11.
2778d766 1933
fef3106c 1934std=c89
5de8299c 1935C ObjC Alias(std=c90)
a7b2e184 1936Conform to the ISO 1990 C standard.
fef3106c 1937
7e1542b9
MLI
1938std=c90
1939C ObjC
a7b2e184 1940Conform to the ISO 1990 C standard.
7e1542b9 1941
fef3106c
NB
1942std=c99
1943C ObjC
a7b2e184 1944Conform to the ISO 1999 C standard.
fef3106c
NB
1945
1946std=c9x
5de8299c 1947C ObjC Alias(std=c99)
a7b2e184 1948Deprecated in favor of -std=c99.
fef3106c
NB
1949
1950std=gnu++98
1951C++ ObjC++
97e3ad20 1952Conform to the ISO 1998 C++ standard revised by the 2003 technical
a7b2e184 1953corrigendum with GNU extensions.
fef3106c 1954
97e3ad20
JM
1955std=gnu++03
1956C++ ObjC++ Alias(std=gnu++98)
1957Conform to the ISO 1998 C++ standard revised by the 2003 technical
a7b2e184 1958corrigendum with GNU extensions.
97e3ad20
JM
1959
1960std=gnu++11
966541e3 1961C++ ObjC++
a7b2e184 1962Conform to the ISO 2011 C++ standard with GNU extensions.
97e3ad20
JM
1963
1964std=gnu++0x
381bf11e 1965C++ ObjC++ Alias(std=gnu++11) Undocumented
a7b2e184 1966Deprecated in favor of -std=gnu++11.
966541e3 1967
552b8185 1968std=gnu++1y
028aee17 1969C++ ObjC++ Alias(std=gnu++14) Undocumented
a7b2e184 1970Deprecated in favor of -std=gnu++14.
552b8185 1971
a07f6ed2 1972std=gnu++14
028aee17 1973C++ ObjC++
a7b2e184 1974Conform to the ISO 2014 C++ standard with GNU extensions.
a07f6ed2 1975
da73100b
JM
1976std=gnu++1z
1977C++ ObjC++
a7b2e184 1978Conform to the ISO 201z(7?) C++ draft standard with GNU extensions (experimental and incomplete support).
da73100b
JM
1979
1980std=gnu++17
a545cacd 1981C++ ObjC++ Alias(std=gnu++1z) Undocumented
da73100b 1982
48b0b196 1983std=gnu11
2778d766 1984C ObjC
a7b2e184 1985Conform to the ISO 2011 C standard with GNU extensions.
48b0b196
JM
1986
1987std=gnu1x
1988C ObjC Alias(std=gnu11)
a7b2e184 1989Deprecated in favor of -std=gnu11.
2778d766 1990
fef3106c 1991std=gnu89
5de8299c 1992C ObjC Alias(std=gnu90)
a7b2e184 1993Conform to the ISO 1990 C standard with GNU extensions.
fef3106c 1994
7e1542b9
MLI
1995std=gnu90
1996C ObjC
a7b2e184 1997Conform to the ISO 1990 C standard with GNU extensions.
7e1542b9 1998
fef3106c
NB
1999std=gnu99
2000C ObjC
a7b2e184 2001Conform to the ISO 1999 C standard with GNU extensions.
fef3106c
NB
2002
2003std=gnu9x
5de8299c 2004C ObjC Alias(std=gnu99)
a7b2e184 2005Deprecated in favor of -std=gnu99.
fef3106c
NB
2006
2007std=iso9899:1990
5de8299c 2008C ObjC Alias(std=c90)
a7b2e184 2009Conform to the ISO 1990 C standard.
fef3106c
NB
2010
2011std=iso9899:199409
2012C ObjC
a7b2e184 2013Conform to the ISO 1990 C standard as amended in 1994.
fef3106c
NB
2014
2015std=iso9899:1999
5de8299c 2016C ObjC Alias(std=c99)
a7b2e184 2017Conform to the ISO 1999 C standard.
fef3106c
NB
2018
2019std=iso9899:199x
5de8299c 2020C ObjC Alias(std=c99)
a7b2e184 2021Deprecated in favor of -std=iso9899:1999.
fef3106c 2022
48b0b196
JM
2023std=iso9899:2011
2024C ObjC Alias(std=c11)
a7b2e184 2025Conform to the ISO 2011 C standard.
48b0b196 2026
e200444e
JM
2027traditional
2028Driver
2029
fef3106c
NB
2030traditional-cpp
2031C ObjC C++ ObjC++
a7b2e184 2032Enable traditional preprocessing.
fef3106c
NB
2033
2034trigraphs
2035C ObjC C++ ObjC++
a7b2e184 2036-trigraphs Support ISO C trigraphs.
fef3106c
NB
2037
2038undef
5498f011 2039C ObjC C++ ObjC++ Var(flag_undef)
a7b2e184 2040Do not predefine system-specific and GCC-specific macros.
fef3106c
NB
2041
2042v
d5478783
JM
2043C ObjC C++ ObjC++
2044; Documented in common.opt
fef3106c
NB
2045
2046w
2047C ObjC C++ ObjC++
72de27ea 2048; Documented in common.opt
e11a4ae5
NB
2049
2050; This comment is to ensure we retain the blank line above.