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