]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/c-family/c.opt
re PR c++/69657 (abs() not inlined after including math.h)
[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 779Wplacement-new
46cb9332
MS
780C++ Warning Alias(Wplacement-new=, 1, 0)
781Warn for placement new expressions with undefined behavior.
782
783Wplacement-new=
784C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning
eb11eb15 785Warn for placement new expressions with undefined behavior.
e2f5cc96 786
fef3106c 787Wredundant-decls
c662432e 788C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
a7b2e184 789Warn about multiple declarations of the same object.
fef3106c
NB
790
791Wreorder
f2bc201f 792C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
a7b2e184 793Warn when the compiler reorders code.
fef3106c
NB
794
795Wreturn-type
4a0ae68e 796C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 797Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
fef3106c 798
ee45a32d
EB
799Wscalar-storage-order
800C ObjC C++ ObjC++ Init(1) Warning
801Warn on suspicious constructs involving reverse scalar storage order.
802
fef3106c 803Wselector
c662432e 804ObjC ObjC++ Var(warn_selector) Warning
a7b2e184 805Warn if a selector has multiple methods.
fef3106c 806
13c21655
PC
807Wsequence-point
808C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 809Warn about possible violations of sequence point rules.
13c21655 810
dcaaa5a0 811Wshadow-ivar
dff8943f 812ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
a7b2e184 813Warn if a local declaration hides an instance variable.
dcaaa5a0 814
451b5e48
MP
815Wshift-overflow
816C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
a7b2e184 817Warn if left shift of a signed value overflows.
451b5e48
MP
818
819Wshift-overflow=
820C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning
a7b2e184 821Warn if left shift of a signed value overflows.
451b5e48 822
13c21655
PC
823Wshift-count-negative
824C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
a7b2e184 825Warn if shift count is negative.
13c21655
PC
826
827Wshift-count-overflow
828C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
a7b2e184 829Warn if shift count >= width of type.
fef3106c 830
0173bd2a
MP
831Wshift-negative-value
832C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
a7b2e184 833Warn if left shifting a negative value.
0173bd2a 834
fef3106c 835Wsign-compare
4a0ae68e 836C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
a7b2e184 837Warn about signed-unsigned comparisons.
fef3106c 838
4a0ae68e
MLI
839Wsign-compare
840C ObjC C++ ObjC++ EnabledBy(Wextra)
841;
842
843Wsign-conversion
63bbf46d 844C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
a7b2e184 845Warn for implicit type conversions between signed and unsigned integers.
4a0ae68e 846
fef3106c 847Wsign-promo
c662432e 848C++ ObjC++ Var(warn_sign_promo) Warning
a7b2e184 849Warn when overload promotes from unsigned to signed.
fef3106c 850
b2f97e4a 851Wstrict-null-sentinel
5498f011 852C++ ObjC++ Warning Var(warn_strict_null_sentinel)
a7b2e184 853Warn about uncasted NULL used as sentinel.
b2f97e4a 854
fef3106c 855Wstrict-prototypes
c662432e 856C ObjC Var(warn_strict_prototypes) Warning
a7b2e184 857Warn about unprototyped function declarations.
fef3106c 858
65d4f2cd
MLI
859Wstrict-aliasing=
860C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0)
861;
862
863Wstrict-overflow=
864C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
865;
866
6e955430 867Wstrict-selector-match
c662432e 868ObjC ObjC++ Var(warn_strict_selector_match) Warning
a7b2e184 869Warn if type signatures of candidate methods do not match exactly.
6e955430 870
23462d4d
UB
871Wsync-nand
872C C++ Var(warn_sync_nand) Init(1) Warning
a7b2e184 873Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
23462d4d 874
fef3106c 875Wsynth
c662432e 876C++ ObjC++ Var(warn_synth) Warning
a7b2e184 877Deprecated. This switch has no effect.
fef3106c
NB
878
879Wsystem-headers
c662432e 880C ObjC C++ ObjC++ Warning
9a0f3e86 881; Documented in common.opt
fef3106c 882
05b28fd6
MP
883Wtautological-compare
884C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 885Warn if a comparison always evaluates to true or false.
05b28fd6 886
8243e2a9
JM
887Wterminate
888C++ ObjC++ Warning Var(warn_terminate) Init(1)
a7b2e184 889Warn if a throw expression will always result in a call to terminate().
8243e2a9 890
fef3106c 891Wtraditional
b559c810 892C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
a7b2e184 893Warn about features not present in traditional C.
fef3106c 894
05170031 895Wtraditional-conversion
c662432e 896C ObjC Var(warn_traditional_conversion) Warning
a7b2e184 897Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
05170031 898
fef3106c 899Wtrigraphs
b559c810 900C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 901Warn if trigraphs are encountered that might affect the meaning of the program.
fef3106c
NB
902
903Wundeclared-selector
c662432e 904ObjC ObjC++ Var(warn_undeclared_selector) Warning
a7b2e184 905Warn about @selector()s without previously declared methods.
fef3106c
NB
906
907Wundef
b559c810 908C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
a7b2e184 909Warn if an undefined macro is used in an #if directive.
fef3106c 910
4a0ae68e
MLI
911Wuninitialized
912C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
913;
914
915Wmaybe-uninitialized
916C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
917;
918
fef3106c 919Wunknown-pragmas
34a180a6 920C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
a7b2e184 921Warn about unrecognized pragmas.
fef3106c 922
6ec637a4
JJ
923Wunsuffixed-float-constants
924C ObjC Var(warn_unsuffixed_float_constants) Warning
a7b2e184 925Warn about unsuffixed float constants.
6ec637a4 926
4a0ae68e
MLI
927Wunused
928C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
929; documented in common.opt
930
3797cb21 931Wunused-local-typedefs
650dc14a 932C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
a7b2e184 933Warn when typedefs locally defined in a function are not used.
3797cb21 934
fef3106c 935Wunused-macros
b559c810 936C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
a7b2e184 937Warn about macros defined in the main file that are not used.
fef3106c 938
156f545a
MLI
939Wunused-result
940C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
a7b2e184 941Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
156f545a 942
0f876f22
MW
943Wunused-variable
944C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
945; documented in common.opt
946
947Wunused-const-variable
948C ObjC C++ ObjC++ Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable)
a7b2e184 949Warn when a const variable is unused.
0f876f22 950
e5b79219 951Wvariadic-macros
27e51192 952C 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 953Warn about using variadic macros.
e5b79219 954
b9c8da34
DS
955Wvarargs
956C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
a7b2e184 957Warn about questionable usage of the macros used to retrieve variable arguments.
b9c8da34 958
50d50fc7
SP
959Wvla
960C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
a7b2e184 961Warn if a variable length array is used.
50d50fc7 962
16302daf 963Wvolatile-register-var
4a0ae68e 964C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
a7b2e184 965Warn when a register variable is declared volatile.
16302daf 966
6b333269
NS
967Wvirtual-inheritance
968C++ ObjC++ Var(warn_virtual_inheritance) Warning
a7b2e184 969Warn on direct virtual inheritance.
6b333269 970
f14edc1a
JM
971Wvirtual-move-assign
972C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
a7b2e184 973Warn if a virtual base has a non-trivial move assignment operator.
f14edc1a 974
fef3106c 975Wwrite-strings
c662432e 976C ObjC C++ ObjC++ Var(warn_write_strings) Warning
d8a07487 977In 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 978
89401152
PC
979Wzero-as-null-pointer-constant
980C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
a7b2e184 981Warn when a literal '0' is used as null pointer.
89401152 982
04398fa8
PC
983Wuseless-cast
984C++ ObjC++ Var(warn_useless_cast) Warning
a7b2e184 985Warn about useless casts.
04398fa8 986
273aa49e
PC
987Wsubobject-linkage
988C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
a7b2e184 989Warn 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 990
fef3106c
NB
991ansi
992C ObjC C++ ObjC++
a7b2e184 993A synonym for -std=c89 (for C) or -std=c++98 (for C++).
fef3106c
NB
994
995d
996C ObjC C++ ObjC++ Joined
72de27ea 997; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
fef3106c 998
62984918
JM
999fabi-compat-version=
1000C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
a7b2e184 1001The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
62984918 1002
fef3106c 1003faccess-control
5498f011 1004C++ ObjC++ Var(flag_access_control) Init(1)
a7b2e184 1005Enforce class member access control semantics.
fef3106c 1006
da5182be
TQ
1007fada-spec-parent=
1008C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
a7b2e184 1009-fada-spec-parent=unit Dump Ada specs as child units of given parent.
da5182be 1010
fef3106c 1011fall-virtual
2d2bd949 1012C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1013
6637388f
TG
1014fallow-parameterless-variadic-functions
1015C ObjC Var(flag_allow_parameterless_variadic_functions)
a7b2e184 1016Allow variadic functions without named parameter.
6637388f 1017
fef3106c 1018falt-external-templates
2d2bd949 1019C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1020No longer supported.
fef3106c
NB
1021
1022fasm
5498f011 1023C ObjC C++ ObjC++ Var(flag_no_asm, 0)
a7b2e184 1024Recognize the \"asm\" keyword.
fef3106c 1025
10e48e39
RO
1026; Define extra predefined macros for use in libgcc.
1027fbuilding-libgcc
1028C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1029
fef3106c 1030fbuiltin
5498f011 1031C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
a7b2e184 1032Recognize built-in functions.
fef3106c
NB
1033
1034fbuiltin-
1035C ObjC C++ ObjC++ Joined
1036
5dc99c46
SB
1037fcanonical-system-headers
1038C ObjC C++ ObjC++
1039Where shorter, use canonicalized paths to systems headers.
1040
d5e254e1 1041fcheck-pointer-bounds
79d64904 1042C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds)
d5e254e1
IE
1043Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to
1044control instrumentation. Currently available for C, C++ and ObjC.
1045
1046fchkp-check-incomplete-type
79d64904 1047C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1)
a7b2e184 1048Generate pointer bounds checks for variables with incomplete type.
d5e254e1
IE
1049
1050fchkp-zero-input-bounds-for-main
79d64904 1051C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0)
d5e254e1
IE
1052Use zero bounds for all incoming arguments in 'main' function. It helps when
1053instrumented binaries are used with legacy libs.
1054
1055fchkp-first-field-has-own-bounds
79d64904 1056C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds)
d5e254e1
IE
1057Forces Pointer Bounds Checker to use narrowed bounds for address of the first
1058field in the structure. By default pointer to the first field has the same
1059bounds as pointer to the whole structure.
1060
1061fchkp-narrow-bounds
79d64904 1062C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1)
d5e254e1
IE
1063Control how Pointer Bounds Checker handle pointers to object fields. When
1064narrowing is on, field bounds are used. Otherwise full object bounds are used.
1065
1066fchkp-narrow-to-innermost-array
79d64904 1067C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray)
d5e254e1
IE
1068Forces Pointer Bounds Checker to use bounds of the innermost arrays in case of
1069nested static arryas access. By default outermost array is used.
1070
1071fchkp-optimize
1072C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1)
1073Allow Pointer Bounds Checker optimizations. By default allowed
1074on optimization levels >0.
1075
1076fchkp-use-fast-string-functions
1077C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0)
1078Allow to use *_nobnd versions of string functions by Pointer Bounds Checker.
1079
1080fchkp-use-nochk-string-functions
1081C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0)
1082Allow to use *_nochk versions of string functions by Pointer Bounds Checker.
1083
1084fchkp-use-static-bounds
79d64904 1085C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1)
d5e254e1
IE
1086Use statically initialized variable for vars bounds instead of
1087generating them each time it is required.
1088
1089fchkp-use-static-const-bounds
79d64904 1090C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1)
d5e254e1
IE
1091Use statically initialized variable for constant bounds instead of
1092generating them each time it is required.
1093
1094fchkp-treat-zero-dynamic-size-as-infinite
79d64904 1095C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0)
d5e254e1
IE
1096With this option zero size obtained dynamically for objects with
1097incomplete type will be treated as infinite.
1098
1099fchkp-check-read
1100C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1)
1101Generate checks for all read accesses to memory.
1102
1103fchkp-check-write
1104C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1)
1105Generate checks for all write accesses to memory.
1106
1107fchkp-store-bounds
1108C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1)
1109Generate bounds stores for pointer writes.
1110
1111fchkp-instrument-calls
1112C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1)
1113Generate bounds passing for calls.
1114
1115fchkp-instrument-marked-only
1116C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0)
1117Instrument only functions marked with bnd_instrument attribute.
1118
226d62d2
IE
1119fchkp-use-wrappers
1120C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1)
1121Transform instrumented builtin calls into calls to wrappers.
1122
5373cd33
IE
1123static-libmpx
1124Driver
1125
d2d7e672
IE
1126static-libmpxwrappers
1127Driver
1128
36536d79 1129fcilkplus
b72271b9 1130C ObjC C++ ObjC++ LTO Report Var(flag_cilkplus) Init(0)
a7b2e184 1131Enable Cilk Plus.
36536d79 1132
971e17ff
AS
1133fconcepts
1134C++ ObjC++ Var(flag_concepts)
a7b2e184 1135Enable support for C++ concepts.
971e17ff 1136
fef3106c
NB
1137fcond-mismatch
1138C ObjC C++ ObjC++
a7b2e184 1139Allow the arguments of the '?' operator to have different types.
fef3106c
NB
1140
1141fconserve-space
5498f011 1142C++ ObjC++ Var(flag_conserve_space)
6f07a821 1143Does nothing. Preserved for backward compatibility.
fef3106c 1144
fef3106c 1145fconstant-string-class=
61ff2bdc 1146ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
a7b2e184 1147-fconst-string-class=<name> Use class <name> for constant strings.
fef3106c 1148
17bc631c 1149fconstexpr-depth=
49a000c3 1150C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
a7b2e184 1151-fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
17bc631c 1152
847e697a
TT
1153fdebug-cpp
1154C ObjC C++ ObjC++
a7b2e184 1155Emit debug annotations during preprocessing.
847e697a 1156
5f5babf1 1157fdeduce-init-list
15694fdd 1158C++ ObjC++ Var(flag_deduce_init_list) Init(0)
a7b2e184 1159-fdeduce-init-list enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list.
5f5babf1 1160
1f26ac87
JM
1161fdeclone-ctor-dtor
1162C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
a7b2e184 1163Factor complex constructors and destructors to favor space over speed.
1f26ac87 1164
fef3106c 1165fdefault-inline
2d2bd949 1166C++ ObjC++ Ignore
5498f011 1167Does nothing. Preserved for backward compatibility.
fef3106c 1168
ccfc4c91
OW
1169fdirectives-only
1170C ObjC C++ ObjC++
1171Preprocess directives only.
1172
fef3106c
NB
1173fdollars-in-identifiers
1174C ObjC C++ ObjC++
a7b2e184 1175Permit '$' as an identifier character.
fef3106c 1176
3b78de56
AC
1177fdump-ada-spec
1178C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
a7b2e184 1179Write all declarations as Ada code transitively.
3b78de56
AC
1180
1181fdump-ada-spec-slim
1182C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
a7b2e184 1183Write all declarations as Ada code for the given file only.
3b78de56 1184
fef3106c 1185felide-constructors
5498f011 1186C++ ObjC++ Var(flag_elide_constructors) Init(1)
fef3106c
NB
1187
1188fenforce-eh-specs
5498f011 1189C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
a7b2e184 1190Generate code to check exception specifications.
fef3106c
NB
1191
1192fenum-int-equiv
2d2bd949 1193C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1194
e6cc3a24
ZW
1195fexec-charset=
1196C ObjC C++ ObjC++ Joined RejectNegative
a7b2e184 1197-fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
e6cc3a24 1198
af15a2fe
JM
1199fextended-identifiers
1200C ObjC C++ ObjC++
a7b2e184 1201Permit universal character names (\\u and \\U) in identifiers.
af15a2fe 1202
16dd5cfe
EC
1203finput-charset=
1204C ObjC C++ ObjC++ Joined RejectNegative
a7b2e184 1205-finput-charset=<cset> Specify the default character set for source files.
16dd5cfe 1206
5af057d8
JM
1207fextern-tls-init
1208C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
a7b2e184 1209Support dynamic initialization of thread-local variables in a different translation unit.
16dd5cfe 1210
fef3106c 1211fexternal-templates
2d2bd949 1212C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1213
fef3106c 1214ffor-scope
5498f011 1215C++ ObjC++ Var(flag_new_for_scope) Init(1)
a7b2e184 1216Scope of for-init-statement variables is local to the loop.
fef3106c
NB
1217
1218ffreestanding
820b51ae 1219C ObjC C++ ObjC++
a7b2e184 1220Do not assume that standard C libraries and \"main\" exist.
fef3106c
NB
1221
1222fgnu-keywords
5498f011 1223C++ ObjC++ Var(flag_no_gnu_keywords, 0)
a7b2e184 1224Recognize GNU-defined keywords.
fef3106c
NB
1225
1226fgnu-runtime
fb5610fb 1227ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
a7b2e184 1228Generate code for GNU runtime environment.
fef3106c 1229
da1c7394 1230fgnu89-inline
2cbac420 1231C ObjC Var(flag_gnu89_inline) Init(-1)
a7b2e184 1232Use traditional GNU semantics for inline functions.
da1c7394 1233
fef3106c 1234fguiding-decls
2d2bd949 1235C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1236
1237fhandle-exceptions
2d2bd949 1238C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)})
fef3106c
NB
1239
1240fhonor-std
2d2bd949 1241C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1242
1243fhosted
1244C ObjC
a7b2e184 1245Assume normal C execution environment.
fef3106c
NB
1246
1247fhuge-objects
2d2bd949 1248C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1249No longer supported.
fef3106c
NB
1250
1251fimplement-inlines
5498f011 1252C++ ObjC++ Var(flag_implement_inlines) Init(1)
a7b2e184 1253Export functions even if they can be inlined.
fef3106c
NB
1254
1255fimplicit-inline-templates
5498f011 1256C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
a7b2e184 1257Emit implicit instantiations of inline templates.
fef3106c
NB
1258
1259fimplicit-templates
5498f011 1260C++ ObjC++ Var(flag_implicit_templates) Init(1)
a7b2e184 1261Emit implicit instantiations of templates.
fef3106c 1262
d63d5d0c 1263ffriend-injection
2cbac420 1264C++ ObjC++ Var(flag_friend_injection)
a7b2e184 1265Inject friend functions into enclosing namespace.
d63d5d0c 1266
47ea1edf
DK
1267fkeep-inline-dllexport
1268C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
a7b2e184 1269Don't emit dllexported inline functions unless needed.
47ea1edf 1270
fef3106c 1271flabels-ok
2d2bd949 1272C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1273
00c8e9f6 1274flax-vector-conversions
5498f011 1275C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
00c8e9f6
MS
1276Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1277
fef3106c 1278fms-extensions
5498f011 1279C ObjC C++ ObjC++ Var(flag_ms_extensions)
a7b2e184 1280Don't warn about uses of Microsoft extensions.
fef3106c 1281
5720c0dc 1282fmudflap
98906124 1283C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc
RG
1284
1285fmudflapth
98906124 1286C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc
RG
1287
1288fmudflapir
98906124 1289C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
5720c0dc 1290
fef3106c 1291fname-mangling-version-
2d2bd949 1292C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1293
1294fnew-abi
2d2bd949 1295C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1296
1297fnext-runtime
fb5610fb 1298ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
a7b2e184 1299Generate code for NeXT (Apple Mac OS X) runtime environment.
264fa2db
ZL
1300
1301fnil-receivers
5498f011 1302ObjC ObjC++ Var(flag_nil_receivers) Init(1)
a7b2e184 1303Assume that receivers of Objective-C messages may be nil.
fef3106c 1304
dcaaa5a0
DP
1305flocal-ivars
1306ObjC ObjC++ Var(flag_local_ivars) Init(1)
1307Allow access to instance variables as if they were local declarations within instance method implementations.
1308
1309fivar-visibility=
1310ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
a7b2e184 1311-fvisibility=[private|protected|public|package] Set the default symbol visibility.
dcaaa5a0
DP
1312
1313Enum
1314Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1315
1316EnumValue
1317Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1318
1319EnumValue
1320Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1321
1322EnumValue
1323Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1324
1325EnumValue
1326Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1327
fef3106c 1328fnonansi-builtins
5498f011 1329C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
fef3106c
NB
1330
1331fnonnull-objects
2d2bd949 1332C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1333
9feb3d6a
JM
1334fnothrow-opt
1335C++ ObjC++ Optimization Var(flag_nothrow_opt)
a7b2e184 1336Treat a throw() exception specification as noexcept to improve code size.
9feb3d6a 1337
0a256240 1338fobjc-abi-version=
fb5610fb 1339ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
0a256240
NP
1340Specify which ABI to use for Objective-C family code and meta-data generation.
1341
6e955430
ZL
1342; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1343; to initialize any non-POD ivars in Objective-C++ classes.
1344fobjc-call-cxx-cdtors
1345ObjC++ Var(flag_objc_call_cxx_cdtors)
a7b2e184 1346Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
6e955430
ZL
1347
1348fobjc-direct-dispatch
1349ObjC ObjC++ Var(flag_objc_direct_dispatch)
a7b2e184 1350Allow fast jumps to the message dispatcher.
6e955430
ZL
1351
1352; Nonzero means that we will allow new ObjC exception syntax (@throw,
1353; @try, etc.) in source code.
264fa2db 1354fobjc-exceptions
6e955430 1355ObjC ObjC++ Var(flag_objc_exceptions)
a7b2e184 1356Enable Objective-C exception and synchronization syntax.
264fa2db 1357
6e955430 1358fobjc-gc
fb5610fb 1359ObjC ObjC++ LTO Var(flag_objc_gc)
a7b2e184 1360Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
6e955430 1361
0a256240
NP
1362fobjc-nilcheck
1363ObjC ObjC++ Var(flag_objc_nilcheck,1)
1364Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1365
6e955430 1366; Nonzero means that we generate NeXT setjmp based exceptions.
093c7153 1367fobjc-sjlj-exceptions
6e955430 1368ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
a7b2e184 1369Enable Objective-C setjmp exception handling runtime.
093c7153 1370
22d8d616
NP
1371fobjc-std=objc1
1372ObjC ObjC++ Var(flag_objc1_only)
a7b2e184 1373Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
22d8d616 1374
41dbbb37 1375fopenacc
a0c88d06 1376C ObjC C++ ObjC++ LTO Var(flag_openacc)
a7b2e184 1377Enable OpenACC.
41dbbb37 1378
b6adbb9f
NS
1379fopenacc-dim=
1380C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1381Specify default OpenACC compute dimensions.
1382
953ff289 1383fopenmp
1506ae0e 1384C ObjC C++ ObjC++ LTO Var(flag_openmp)
a7b2e184 1385Enable OpenMP (implies -frecursive in Fortran).
953ff289 1386
6d7f7e0a
TB
1387fopenmp-simd
1388C ObjC C++ ObjC++ Var(flag_openmp_simd)
a7b2e184 1389Enable OpenMP's SIMD directives.
6d7f7e0a 1390
fef3106c
NB
1391foperator-names
1392C++ ObjC++
a7b2e184 1393Recognize C++ keywords like \"compl\" and \"xor\".
fef3106c
NB
1394
1395foptional-diags
2d2bd949 1396C++ ObjC++ Ignore
5498f011 1397Does nothing. Preserved for backward compatibility.
fef3106c
NB
1398
1399fpch-deps
1400C ObjC C++ ObjC++
1401
c0d578e6
GK
1402fpch-preprocess
1403C ObjC C++ ObjC++
a7b2e184 1404Look for and use PCH files even when preprocessing.
c0d578e6 1405
fef3106c 1406fpermissive
0c3641b0 1407C++ ObjC++ Var(flag_permissive)
a7b2e184 1408Downgrade conformance errors to warnings.
fef3106c 1409
478a1c5b
ILT
1410fplan9-extensions
1411C ObjC Var(flag_plan9_extensions)
a7b2e184 1412Enable Plan 9 language extensions.
478a1c5b 1413
fef3106c
NB
1414fpreprocessed
1415C ObjC C++ ObjC++
a7b2e184 1416Treat the input file as already preprocessed.
fef3106c 1417
92582b75
TT
1418ftrack-macro-expansion
1419C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1420; converted into ftrack-macro-expansion=
1421
1422ftrack-macro-expansion=
1423C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
a7b2e184 1424-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
92582b75 1425
6ea2bd47 1426fpretty-templates
5498f011 1427C++ ObjC++ Var(flag_pretty_templates) Init(1)
a7b2e184 1428-fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments.
6ea2bd47 1429
264fa2db 1430freplace-objc-classes
fb5610fb 1431ObjC ObjC++ LTO Var(flag_replace_objc_classes)
a7b2e184 1432Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
264fa2db 1433
fef3106c
NB
1434frepo
1435C++ ObjC++
a7b2e184 1436Enable automatic template instantiation.
fef3106c
NB
1437
1438frtti
5498f011 1439C++ ObjC++ Optimization Var(flag_rtti) Init(1)
a7b2e184 1440Generate run time type descriptor information.
fef3106c 1441
fef3106c 1442fshort-enums
dd6fe7d4 1443C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
a7b2e184 1444Use the narrowest integer type possible for enumeration types.
fef3106c
NB
1445
1446fshort-wchar
dd6fe7d4 1447C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
a7b2e184 1448Force the underlying type for \"wchar_t\" to be \"unsigned short\".
fef3106c 1449
fef3106c 1450fsigned-bitfields
5498f011 1451C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
a7b2e184 1452When \"signed\" or \"unsigned\" is not given make the bitfield signed.
fef3106c
NB
1453
1454fsigned-char
5498f011 1455C ObjC C++ ObjC++ LTO Var(flag_signed_char)
a7b2e184 1456Make \"char\" signed by default.
fef3106c 1457
20b06add
JM
1458fsized-deallocation
1459C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
a7b2e184 1460Enable C++14 sized deallocation support.
20b06add 1461
fef3106c 1462fsquangle
2d2bd949 1463C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1464
ee45a32d
EB
1465fsso-struct=
1466C ObjC Joined Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
1467-fsso-struct=[big-endian|little-endian] Set the default scalar storage order.
1468
1469Enum
1470Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
1471
1472EnumValue
1473Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
1474
1475EnumValue
1476Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
1477
fef3106c 1478fstats
5498f011 1479C++ ObjC++ Var(flag_detailed_statistics)
a7b2e184 1480Display statistics accumulated during compilation.
fef3106c 1481
cbb4feb3
JM
1482fstrict-enums
1483C++ ObjC++ Optimization Var(flag_strict_enums)
a7b2e184 1484Assume that values of enumeration type are always within the minimum range of that type.
cbb4feb3 1485
fef3106c 1486fstrict-prototype
2d2bd949 1487C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c
NB
1488
1489ftabstop=
7b086b11 1490C ObjC C++ ObjC++ Joined RejectNegative UInteger
a7b2e184 1491-ftabstop=<number> Distance between tab stops for column reporting.
fef3106c 1492
a12bf402
MLI
1493ftemplate-backtrace-limit=
1494C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
a7b2e184 1495Set the maximum number of template instantiation notes for a single warning or error.
a12bf402 1496
fef3106c 1497ftemplate-depth-
5de8299c 1498C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
124e0d27
MLI
1499
1500ftemplate-depth=
c22cacf3 1501C++ ObjC++ Joined RejectNegative UInteger
a7b2e184 1502-ftemplate-depth=<number> Specify maximum template instantiation depth.
fef3106c
NB
1503
1504fthis-is-variable
2d2bd949 1505C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fef3106c 1506
40aac948 1507fthreadsafe-statics
5498f011 1508C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
a7b2e184 1509-fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
40aac948 1510
fef3106c 1511funsigned-bitfields
f0036cca 1512C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
a7b2e184 1513When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
fef3106c
NB
1514
1515funsigned-char
f0036cca 1516C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
a7b2e184 1517Make \"char\" unsigned by default.
fef3106c
NB
1518
1519fuse-cxa-atexit
5498f011 1520C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
a7b2e184 1521Use __cxa_atexit to register destructors.
fef3106c 1522
c7b5e395 1523fuse-cxa-get-exception-ptr
5498f011 1524C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
a7b2e184 1525Use __cxa_get_exception_ptr in exception handling.
c7b5e395 1526
d7afec4b 1527fvisibility-inlines-hidden
d0b07283 1528C++ ObjC++
a7b2e184 1529Marks all inlined functions and methods as having hidden visibility.
d7afec4b 1530
ddbfd28d
GK
1531fvisibility-ms-compat
1532C++ ObjC++ Var(flag_visibility_ms_compat)
a7b2e184 1533Changes visibility to match Microsoft Visual Studio by default.
ddbfd28d 1534
fef3106c 1535fvtable-gc
2d2bd949 1536C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1537No longer supported.
fef3106c
NB
1538
1539fvtable-thunks
2d2bd949 1540C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1541No longer supported.
fef3106c
NB
1542
1543fweak
5498f011 1544C++ ObjC++ Var(flag_weak) Init(1)
a7b2e184 1545Emit common-like symbols as weak symbols.
fef3106c 1546
e6cc3a24
ZW
1547fwide-exec-charset=
1548C ObjC C++ ObjC++ Joined RejectNegative
a7b2e184 1549-fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
e6cc3a24 1550
b20d9f0c 1551fworking-directory
5498f011 1552C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
a7b2e184 1553Generate a #line directive pointing at the current working directory.
b20d9f0c 1554
fef3106c 1555fxref
2d2bd949 1556C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
a7b2e184 1557No longer supported.
fef3106c 1558
264fa2db 1559fzero-link
5498f011 1560ObjC ObjC++ Var(flag_zero_link)
a7b2e184 1561Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
264fa2db 1562
fef3106c 1563gen-decls
5498f011 1564ObjC ObjC++ Var(flag_gen_declaration)
a7b2e184 1565Dump declarations to a .decl file.
fef3106c 1566
39ef6592
LC
1567femit-struct-debug-baseonly
1568C ObjC C++ ObjC++
a7b2e184 1569-femit-struct-debug-baseonly Aggressive reduced debug info for structs.
39ef6592
LC
1570
1571femit-struct-debug-reduced
1572C ObjC C++ ObjC++
a7b2e184 1573-femit-struct-debug-reduced Conservative reduced debug info for structs.
39ef6592
LC
1574
1575femit-struct-debug-detailed=
1576C ObjC C++ ObjC++ Joined
a7b2e184 1577-femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
39ef6592 1578
a4a0016d 1579fext-numeric-literals
a7b2e184 1580C++ ObjC++
a4a0016d
ESR
1581Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
1582number literal rather than a user-defined number literal.
1583
fef3106c 1584idirafter
61ff2bdc 1585C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1586-idirafter <dir> Add <dir> to the end of the system include path.
fef3106c
NB
1587
1588imacros
61ff2bdc 1589C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
a7b2e184 1590-imacros <file> Accept definition of macros in <file>.
fef3106c 1591
2b6dd222
JM
1592imultilib
1593C ObjC C++ ObjC++ Joined Separate
a7b2e184 1594-imultilib <dir> Set <dir> to be the multilib include subdirectory.
2b6dd222 1595
fef3106c 1596include
61ff2bdc 1597C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
a7b2e184 1598-include <file> Include the contents of <file> before other files.
fef3106c
NB
1599
1600iprefix
1601C ObjC C++ ObjC++ Joined Separate
a7b2e184 1602-iprefix <path> Specify <path> as a prefix for next two options.
fef3106c
NB
1603
1604isysroot
61ff2bdc 1605C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1606-isysroot <dir> Set <dir> to be the system root directory.
fef3106c
NB
1607
1608isystem
61ff2bdc 1609C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1610-isystem <dir> Add <dir> to the start of the system include path.
fef3106c 1611
4bed3787 1612iquote
61ff2bdc 1613C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
a7b2e184 1614-iquote <dir> Add <dir> to the end of the quote include path.
4bed3787 1615
fef3106c
NB
1616iwithprefix
1617C ObjC C++ ObjC++ Joined Separate
a7b2e184 1618-iwithprefix <dir> Add <dir> to the end of the system include path.
fef3106c
NB
1619
1620iwithprefixbefore
1621C ObjC C++ ObjC++ Joined Separate
a7b2e184 1622-iwithprefixbefore <dir> Add <dir> to the end of the main include path.
fef3106c
NB
1623
1624lang-asm
603349bf 1625C Undocumented RejectDriver
fef3106c 1626
e200444e
JM
1627no-integrated-cpp
1628Driver
1629
fef3106c
NB
1630nostdinc
1631C ObjC C++ ObjC++
a7b2e184 1632Do not search standard system include directories (those specified with -isystem will still be used).
fef3106c
NB
1633
1634nostdinc++
72de27ea 1635C++ ObjC++
a7b2e184 1636Do not search standard system include directories for C++.
fef3106c
NB
1637
1638o
1639C ObjC C++ ObjC++ Joined Separate
72de27ea 1640; Documented in common.opt
fef3106c
NB
1641
1642pedantic
c1771a20 1643C ObjC C++ ObjC++ Alias(Wpedantic)
72de27ea 1644; Documented in common.opt
fef3106c 1645
fef3106c
NB
1646print-objc-runtime-info
1647ObjC ObjC++
a7b2e184 1648Generate C header of platform-specific features.
fef3106c
NB
1649
1650remap
1651C ObjC C++ ObjC++
a7b2e184 1652Remap file names when including files.
fef3106c
NB
1653
1654std=c++98
1655C++ ObjC++
a7b2e184 1656Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
c7dc8804
JM
1657
1658std=c++03
1659C++ ObjC++ Alias(std=c++98)
a7b2e184 1660Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
fef3106c 1661
97e3ad20 1662std=c++11
966541e3 1663C++ ObjC++
a7b2e184 1664Conform to the ISO 2011 C++ standard.
97e3ad20
JM
1665
1666std=c++0x
70e24808 1667C++ ObjC++ Alias(std=c++11) Undocumented
a7b2e184 1668Deprecated in favor of -std=c++11.
966541e3 1669
552b8185 1670std=c++1y
028aee17 1671C++ ObjC++ Alias(std=c++14) Undocumented
a7b2e184 1672Deprecated in favor of -std=c++14.
70e24808
JM
1673
1674std=c++14
381bf11e 1675C++ ObjC++
a7b2e184 1676Conform to the ISO 2014 C++ standard.
552b8185 1677
da73100b
JM
1678std=c++1z
1679C++ ObjC++
a7b2e184 1680Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete support).
da73100b
JM
1681
1682std=c++17
1683C++ ObjC++ Alias(std=c++1z) Undocumented
1684
48b0b196 1685std=c11
2778d766 1686C ObjC
a7b2e184 1687Conform to the ISO 2011 C standard.
48b0b196
JM
1688
1689std=c1x
1690C ObjC Alias(std=c11)
a7b2e184 1691Deprecated in favor of -std=c11.
2778d766 1692
fef3106c 1693std=c89
5de8299c 1694C ObjC Alias(std=c90)
a7b2e184 1695Conform to the ISO 1990 C standard.
fef3106c 1696
7e1542b9
MLI
1697std=c90
1698C ObjC
a7b2e184 1699Conform to the ISO 1990 C standard.
7e1542b9 1700
fef3106c
NB
1701std=c99
1702C ObjC
a7b2e184 1703Conform to the ISO 1999 C standard.
fef3106c
NB
1704
1705std=c9x
5de8299c 1706C ObjC Alias(std=c99)
a7b2e184 1707Deprecated in favor of -std=c99.
fef3106c
NB
1708
1709std=gnu++98
1710C++ ObjC++
97e3ad20 1711Conform to the ISO 1998 C++ standard revised by the 2003 technical
a7b2e184 1712corrigendum with GNU extensions.
fef3106c 1713
97e3ad20
JM
1714std=gnu++03
1715C++ ObjC++ Alias(std=gnu++98)
1716Conform to the ISO 1998 C++ standard revised by the 2003 technical
a7b2e184 1717corrigendum with GNU extensions.
97e3ad20
JM
1718
1719std=gnu++11
966541e3 1720C++ ObjC++
a7b2e184 1721Conform to the ISO 2011 C++ standard with GNU extensions.
97e3ad20
JM
1722
1723std=gnu++0x
381bf11e 1724C++ ObjC++ Alias(std=gnu++11) Undocumented
a7b2e184 1725Deprecated in favor of -std=gnu++11.
966541e3 1726
552b8185 1727std=gnu++1y
028aee17 1728C++ ObjC++ Alias(std=gnu++14) Undocumented
a7b2e184 1729Deprecated in favor of -std=gnu++14.
552b8185 1730
a07f6ed2 1731std=gnu++14
028aee17 1732C++ ObjC++
a7b2e184 1733Conform to the ISO 2014 C++ standard with GNU extensions.
a07f6ed2 1734
da73100b
JM
1735std=gnu++1z
1736C++ ObjC++
a7b2e184 1737Conform to the ISO 201z(7?) C++ draft standard with GNU extensions (experimental and incomplete support).
da73100b
JM
1738
1739std=gnu++17
a545cacd 1740C++ ObjC++ Alias(std=gnu++1z) Undocumented
da73100b 1741
48b0b196 1742std=gnu11
2778d766 1743C ObjC
a7b2e184 1744Conform to the ISO 2011 C standard with GNU extensions.
48b0b196
JM
1745
1746std=gnu1x
1747C ObjC Alias(std=gnu11)
a7b2e184 1748Deprecated in favor of -std=gnu11.
2778d766 1749
fef3106c 1750std=gnu89
5de8299c 1751C ObjC Alias(std=gnu90)
a7b2e184 1752Conform to the ISO 1990 C standard with GNU extensions.
fef3106c 1753
7e1542b9
MLI
1754std=gnu90
1755C ObjC
a7b2e184 1756Conform to the ISO 1990 C standard with GNU extensions.
7e1542b9 1757
fef3106c
NB
1758std=gnu99
1759C ObjC
a7b2e184 1760Conform to the ISO 1999 C standard with GNU extensions.
fef3106c
NB
1761
1762std=gnu9x
5de8299c 1763C ObjC Alias(std=gnu99)
a7b2e184 1764Deprecated in favor of -std=gnu99.
fef3106c
NB
1765
1766std=iso9899:1990
5de8299c 1767C ObjC Alias(std=c90)
a7b2e184 1768Conform to the ISO 1990 C standard.
fef3106c
NB
1769
1770std=iso9899:199409
1771C ObjC
a7b2e184 1772Conform to the ISO 1990 C standard as amended in 1994.
fef3106c
NB
1773
1774std=iso9899:1999
5de8299c 1775C ObjC Alias(std=c99)
a7b2e184 1776Conform to the ISO 1999 C standard.
fef3106c
NB
1777
1778std=iso9899:199x
5de8299c 1779C ObjC Alias(std=c99)
a7b2e184 1780Deprecated in favor of -std=iso9899:1999.
fef3106c 1781
48b0b196
JM
1782std=iso9899:2011
1783C ObjC Alias(std=c11)
a7b2e184 1784Conform to the ISO 2011 C standard.
48b0b196 1785
e200444e
JM
1786traditional
1787Driver
1788
fef3106c
NB
1789traditional-cpp
1790C ObjC C++ ObjC++
a7b2e184 1791Enable traditional preprocessing.
fef3106c
NB
1792
1793trigraphs
1794C ObjC C++ ObjC++
a7b2e184 1795-trigraphs Support ISO C trigraphs.
fef3106c
NB
1796
1797undef
5498f011 1798C ObjC C++ ObjC++ Var(flag_undef)
a7b2e184 1799Do not predefine system-specific and GCC-specific macros.
fef3106c
NB
1800
1801v
d5478783
JM
1802C ObjC C++ ObjC++
1803; Documented in common.opt
fef3106c
NB
1804
1805w
1806C ObjC C++ ObjC++
72de27ea 1807; Documented in common.opt
e11a4ae5
NB
1808
1809; This comment is to ensure we retain the blank line above.