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