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