p1689r5: initial support
[official-gcc.git] / gcc / c-family / c.opt
blob44b9c862c142cddfb3ba43f3643b0e8035d67416
1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2023 Free Software Foundation, Inc.
4 ; This file is part of GCC.
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.
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.
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/>.
20 ; See the GCC internals manual for a description of this file's format.
22 ; Please try to keep this file in ASCII collating order.
24 Language
27 Language
28 ObjC
30 Language
31 C++
33 Language
34 ObjC++
36 -all-warnings
37 C ObjC C++ ObjC++ Warning Alias(Wall)
39 -ansi
40 C ObjC C++ ObjC++ Alias(ansi)
42 -assert
43 C ObjC C++ ObjC++ Separate Alias(A) MissingArgError(assertion missing after %qs)
45 -assert=
46 C ObjC C++ ObjC++ Joined Alias(A) MissingArgError(assertion missing after %qs)
48 -comments
49 C ObjC C++ ObjC++ Alias(C)
51 -comments-in-macros
52 C ObjC C++ ObjC++ Alias(CC)
54 -define-macro
55 C ObjC C++ ObjC++ Separate Alias(D) MissingArgError(macro name missing after %qs)
57 -define-macro=
58 C ObjC C++ ObjC++ Joined Alias(D) MissingArgError(macro name missing after %qs)
60 -dependencies
61 C ObjC C++ ObjC++ Alias(M)
63 -dump
64 C ObjC C++ ObjC++ Separate Alias(d)
66 -dump=
67 C ObjC C++ ObjC++ Joined Alias(d)
69 -imacros
70 C ObjC C++ ObjC++ Separate Alias(imacros) MissingArgError(missing filename after %qs)
72 -imacros=
73 C ObjC C++ ObjC++ Joined Alias(imacros) MissingArgError(missing filename after %qs)
75 -include
76 C ObjC C++ ObjC++ Separate Alias(include) MissingArgError(missing filename after %qs)
78 -include=
79 C ObjC C++ ObjC++ Joined Alias(include) MissingArgError(missing filename after %qs)
81 -include-barrier
82 C ObjC C++ ObjC++ Alias(I, -)
84 -include-directory
85 C ObjC C++ ObjC++ Separate Alias(I) MissingArgError(missing path after %qs)
87 -include-directory=
88 C ObjC C++ ObjC++ Joined Alias(I) MissingArgError(missing path after %qs)
90 -include-directory-after
91 C ObjC C++ ObjC++ Separate Alias(idirafter) MissingArgError(missing path after %qs)
93 -include-directory-after=
94 C ObjC C++ ObjC++ Joined Alias(idirafter) MissingArgError(missing path after %qs)
96 -include-prefix
97 C ObjC C++ ObjC++ Separate Alias(iprefix)
99 -include-prefix=
100 C ObjC C++ ObjC++ JoinedOrMissing Alias(iprefix)
102 -include-with-prefix
103 C ObjC C++ ObjC++ Separate Alias(iwithprefix)
105 -include-with-prefix=
106 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
108 -include-with-prefix-after
109 C ObjC C++ ObjC++ Separate Alias(iwithprefix)
111 -include-with-prefix-after=
112 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
114 -include-with-prefix-before
115 C ObjC C++ ObjC++ Separate Alias(iwithprefixbefore)
117 -include-with-prefix-before=
118 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefixbefore)
120 -no-integrated-cpp
121 Driver Alias(no-integrated-cpp)
123 -no-line-commands
124 C ObjC C++ ObjC++ Alias(P)
126 -no-standard-includes
127 C ObjC C++ ObjC++ Alias(nostdinc)
129 -no-warnings
130 C ObjC C++ ObjC++ Alias(w)
132 -output
133 C ObjC C++ ObjC++ Separate Alias(o)
135 -output=
136 C ObjC C++ ObjC++ Joined Alias(o)
138 -output-pch
139 C ObjC C++ ObjC++ Separate
141 -pedantic
142 C ObjC C++ ObjC++ Alias(pedantic)
144 -preprocess
145 C ObjC C++ ObjC++ Undocumented Alias(E)
147 -print-missing-file-dependencies
148 C ObjC C++ ObjC++ Alias(MG)
150 -trace-includes
151 C ObjC C++ ObjC++ Alias(H)
153 -traditional
154 Driver Alias(traditional)
156 -traditional-cpp
157 C ObjC C++ ObjC++ Alias(traditional-cpp)
159 -trigraphs
160 C ObjC C++ ObjC++ Alias(trigraphs)
162 -undefine-macro
163 C ObjC C++ ObjC++ Separate Alias(U) MissingArgError(macro name missing after %qs)
165 -undefine-macro=
166 C ObjC C++ ObjC++ Joined Alias(U) MissingArgError(macro name missing after %qs)
168 -user-dependencies
169 C ObjC C++ ObjC++ Alias(MM)
171 -verbose
172 Common C ObjC C++ ObjC++ Alias(v)
174 -write-dependencies
175 C ObjC C++ ObjC++ NoDriverArg Separate Alias(MD) MissingArgError(missing filename after %qs)
177 -write-user-dependencies
178 C ObjC C++ ObjC++ NoDriverArg Separate Alias(MMD) MissingArgError(missing filename after %qs)
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>.
185 C ObjC C++ ObjC++
186 Do not discard comments.
189 C ObjC C++ ObjC++
190 Do not discard comments in macro expansions.
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.
197 C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only)
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.
203 fgimple
204 C Var(flag_gimple) Init(0)
205 Enable parsing GIMPLE.
208 C ObjC C++ ObjC++
209 Print the name of header files as they are used.
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.
216 C ObjC C++ ObjC++
217 Generate make dependencies.
220 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
221 Generate make dependencies and compile.
224 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
225 -MF <file>      Write dependency output to the given file.
228 C ObjC C++ ObjC++
229 Treat missing header files as generated files.
232 C ObjC C++ ObjC++
233 Like -M but ignore system header files.
236 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
237 Like -MD but ignore system header files.
239 Mmodules
241 Generate C++ Module dependency information.
243 Mno-modules
245 ; undocumented
248 C ObjC C++ ObjC++
249 Generate phony targets for all headers.
252 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
253 -MQ <target>    Add a target that may require quoting.
256 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
257 -MT <target>    Add a target that does not require quoting.
259 fdeps-format=
260 C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing format after %qs)
261 Structured format for output dependency information.  Supported (\"p1689r5\").
263 fdeps-file=
264 C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing output path after %qs)
265 File for output dependency information.
267 fdeps-target=
268 C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing path after %qs)
269 -fdeps-target=obj.o Output file for the compile step.
272 C ObjC C++ ObjC++
273 Do not generate #line directives.
276 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
277 -U<macro>       Undefine <macro>.
279 WNSObject-attribute
280 C ObjC C++ ObjC++ LTO Var(warn_nsobject_attribute) Warning Init(1)
281 Warn if the NSObject attribute is applied to a non-typedef.
283 Wabi
284 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
285 Warn about things that will change when compiling with an ABI-compliant compiler.
287 Wabi=
288 C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
289 Warn about things that change between the current -fabi-version and the specified version.
291 Wabi-tag
292 C++ ObjC++ Var(warn_abi_tag) Warning
293 Warn if a subobject has an abi_tag attribute that the complete object type does not have.
295 Wpsabi
296 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
298 Wabsolute-value
299 C ObjC Var(warn_absolute_value) Warning EnabledBy(Wextra)
300 Warn on suspicious calls of standard functions computing absolute values.
302 Waddress
303 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
304 Warn about suspicious uses of memory addresses.
306 Enum
307 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
309 EnumValue
310 Enum(warn_aligned_new_level) String(none) Value(0)
312 EnumValue
313 Enum(warn_aligned_new_level) String(global) Value(1)
315 EnumValue
316 Enum(warn_aligned_new_level) String(all) Value(2)
318 Waligned-new
319 C++ ObjC++ Alias(Waligned-new=,global,none)
320 Warn about 'new' of type with extended alignment without -faligned-new.
322 Waligned-new=
323 C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
324 -Waligned-new=[none|global|all] Warn even if 'new' uses a class member allocation function.
326 Wall
327 C ObjC C++ ObjC++ Warning
328 Enable most warning messages.
330 Walloca
331 C ObjC C++ ObjC++ Var(warn_alloca) Warning
332 Warn on any use of alloca.
334 Walloc-size-larger-than=
335 C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined Host_Wide_Int ByteSize Warning Init(HOST_WIDE_INT_MAX)
336 -Walloc-size-larger-than=<bytes>        Warn for calls to allocation functions that
337 attempt to allocate objects larger than the specified number of bytes.
339 Wno-alloc-size-larger-than
340 C ObjC C++ LTO ObjC++ Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
341 Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.
343 Walloc-zero
344 C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
345 Warn for calls to allocation functions that specify zero bytes.
347 Walloca-larger-than=
348 C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
349 -Walloca-larger-than=<number>   Warn on unbounded uses of
350 alloca, and on bounded uses of alloca whose bound can be larger than
351 <number> bytes.
353 Wno-alloca-larger-than
354 C ObjC C++ LTO ObjC++ Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
355 Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.
357 Warray-bounds=
358 LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
359 ; in common.opt
361 Warray-compare
362 C ObjC C++ ObjC++ Var(warn_array_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
363 Warn about comparisons between two operands of array type.
365 Warray-parameter
366 C ObjC C++ ObjC++ Warning Alias(Warray-parameter=, 2, 0)
367 Warn about mismatched declarations of array parameters and unsafe accesses to them.
369 Warray-parameter=
370 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_array_parameter) IntegerRange(0, 2) LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) Warning
371 Warn about mismatched declarations of array parameters and unsafe accesses to them.
373 Wzero-length-bounds
374 C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
375 Warn about accesses to interior zero-length array members.
377 Wassign-intercept
378 ObjC ObjC++ Var(warn_assign_intercept) Warning
379 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
381 Wbad-function-cast
382 C ObjC Var(warn_bad_function_cast) Warning
383 Warn about casting functions to incompatible types.
385 Wbidi-chars
386 C ObjC C++ ObjC++ Warning Alias(Wbidi-chars=,any,none)
389 Wbidi-chars=
390 C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(cpp_warn_bidirectional) CppReason(CPP_W_BIDIRECTIONAL) Var(warn_bidirectional) Init(bidirectional_unpaired) Enum(cpp_bidirectional_level) EnumSet
391 -Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters.
393 ; Required for these enum values.
394 SourceInclude
395 cpplib.h
397 Enum
398 Name(cpp_bidirectional_level) Type(int) UnknownError(argument %qs to %<-Wbidi-chars%> not recognized)
400 EnumValue
401 Enum(cpp_bidirectional_level) String(none) Value(bidirectional_none) Set(1)
403 EnumValue
404 Enum(cpp_bidirectional_level) String(unpaired) Value(bidirectional_unpaired) Set(1)
406 EnumValue
407 Enum(cpp_bidirectional_level) String(any) Value(bidirectional_any) Set(1)
409 EnumValue
410 Enum(cpp_bidirectional_level) String(ucn) Value(bidirectional_ucn) Set(2)
412 Wbool-compare
413 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
414 Warn about boolean expression compared with an integer value different from true/false.
416 Wbool-operation
417 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
418 Warn about certain operations on boolean expressions.
420 Wframe-address
421 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
422 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
424 Wbuiltin-declaration-mismatch
425 C ObjC C++ ObjC++ Var(warn_builtin_declaration_mismatch) Init(1) Warning
426 Warn when a built-in function is declared with the wrong signature.
428 Wbuiltin-macro-redefined
429 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
430 Warn when a built-in preprocessor macro is undefined or redefined.
432 Wc11-c2x-compat
433 C ObjC CPP(cpp_warn_c11_c2x_compat) CppReason(CPP_W_C11_C2X_COMPAT) Var(warn_c11_c2x_compat) Init(-1) Warning
434 Warn about features not present in ISO C11, but present in ISO C2X.
436 Wc90-c99-compat
437 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
438 Warn about features not present in ISO C90, but present in ISO C99.
440 Wc99-c11-compat
441 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
442 Warn about features not present in ISO C99, but present in ISO C11.
444 Wc++-compat
445 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
446 Warn about C constructs that are not in the common subset of C and C++.
448 Wc++0x-compat
449 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
451 Wc++11-compat
452 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
453 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
455 Wc++14-compat
456 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
457 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
459 Wc++1z-compat
460 C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
462 Wc++17-compat
463 C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
464 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
466 Wc++2a-compat
467 C++ ObjC++ Warning Alias(Wc++20-compat) Undocumented
469 Wc++20-compat
470 C++ ObjC++ Var(warn_cxx20_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx20_compat) CppReason(CPP_W_CXX20_COMPAT)
471 Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.
473 Wc++11-extensions
474 C++ ObjC++ Var(warn_cxx11_extensions) Warning Init(1)
475 Warn about C++11 constructs in code compiled with an older standard.
477 Wc++14-extensions
478 C++ ObjC++ Var(warn_cxx14_extensions) Warning Init(1)
479 Warn about C++14 constructs in code compiled with an older standard.
481 Wc++17-extensions
482 C++ ObjC++ Var(warn_cxx17_extensions) Warning Init(1)
483 Warn about C++17 constructs in code compiled with an older standard.
485 Wc++20-extensions
486 C++ ObjC++ Var(warn_cxx20_extensions) Warning Init(1)
487 Warn about C++20 constructs in code compiled with an older standard.
489 Wc++23-extensions
490 C++ ObjC++ Var(warn_cxx23_extensions) Warning Init(1)
491 Warn about C++23 constructs in code compiled with an older standard.
493 Wcast-function-type
494 C ObjC C++ ObjC++ Var(warn_cast_function_type) Warning EnabledBy(Wextra)
495 Warn about casts between incompatible function types.
497 Wcast-qual
498 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
499 Warn about casts which discard qualifiers.
501 Wcatch-value
502 C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
503 Warn about catch handlers of non-reference type.
505 Wcatch-value=
506 C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0) IntegerRange(0, 3)
507 Warn about catch handlers of non-reference type.
509 Wchanges-meaning
510 C++ ObjC++ Var(warn_changes_meaning) Warning Init(1)
511 Complain about a name being declared as a class member after a previous use of the same name.
513 Wchar-subscripts
514 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
515 Warn about subscripts whose type is \"char\".
517 Wchkp
518 C ObjC C++ ObjC++ Warning WarnRemoved
519 Removed in GCC 9.  This switch has no effect.
521 Wclobbered
522 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
523 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
525 Wcomma-subscript
526 C++ ObjC++ Var(warn_comma_subscript) Warning
527 Warn about uses of a comma operator within a subscripting expression.
529 Wcomment
530 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
531 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
533 Wcomments
534 C ObjC C++ ObjC++ Warning Alias(Wcomment)
535 Synonym for -Wcomment.
537 Wconditionally-supported
538 C++ ObjC++ Var(warn_conditionally_supported) Warning
539 Warn for conditionally-supported constructs.
541 Wconversion
542 C ObjC C++ ObjC++ Var(warn_conversion) Warning
543 Warn for implicit type conversions that may change a value.
545 Wconversion-null
546 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
547 Warn for converting NULL from/to a non-pointer type.
549 Wcpp
550 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
551 ; Documented in common.opt
553 Wctad-maybe-unsupported
554 C++ ObjC++ Var(warn_ctad_maybe_unsupported) Warning
555 Warn when performing class template argument deduction on a type with no
556 deduction guides.
558 Wctor-dtor-privacy
559 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
560 Warn when all constructors and destructors are private.
562 Wdangling-else
563 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
564 Warn about dangling else.
566 Wdangling-pointer
567 C ObjC C++ LTO ObjC++ Alias(Wdangling-pointer=, 2, 0) Warning
568 Warn for uses of pointers to auto variables whose lifetime has ended.
570 Wdangling-pointer=
571 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_dangling_pointer) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) IntegerRange(0, 2)
572 Warn for uses of pointers to auto variables whose lifetime has ended.
574 Wdangling-reference
575 C++ ObjC++ Var(warn_dangling_reference) Warning LangEnabledBy(C++ ObjC++, Wall)
576 Warn when a reference is bound to a temporary whose lifetime has ended.
578 Wdate-time
579 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
580 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
582 Wdeclaration-after-statement
583 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
584 Warn when a declaration is found after a statement.
586 Wdelete-incomplete
587 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
588 Warn when deleting a pointer to incomplete type.
590 Wdelete-non-virtual-dtor
591 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
592 Warn about deleting polymorphic objects with non-virtual destructors.
594 Wdeprecated
595 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED)
596 ; Documented in common.opt
598 Wdeprecated-copy
599 C++ ObjC++ Var(warn_deprecated_copy) Warning LangEnabledBy(C++ ObjC++, Wextra)
600 Mark implicitly-declared copy operations as deprecated if the class has a
601 user-provided copy operation.
603 Wdeprecated-copy-dtor
604 C++ ObjC++ Var(warn_deprecated_copy, 2) Warning
605 Mark implicitly-declared copy operations as deprecated if the class has a
606 user-provided copy operation or destructor.
608 Wdeprecated-enum-enum-conversion
609 C++ ObjC++ Var(warn_deprecated_enum_enum_conv) Warning
610 Warn about deprecated arithmetic conversions on operands of enumeration types.
612 Wdeprecated-enum-float-conversion
613 C++ ObjC++ Var(warn_deprecated_enum_float_conv) Warning
614 Warn about deprecated arithmetic conversions on operands where one is of enumeration
615 type and the other is of a floating-point type.
617 Wdesignated-init
618 C ObjC Var(warn_designated_init) Init(1) Warning
619 Warn about positional initialization of structs requiring designated initializers.
621 Wdiscarded-array-qualifiers
622 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
623 Warn if qualifiers on arrays which are pointer targets are discarded.
625 Wdiscarded-qualifiers
626 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
627 Warn if type qualifiers on pointers are discarded.
629 Wdiv-by-zero
630 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
631 Warn about compile-time integer division by zero.
633 Wduplicated-branches
634 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
635 Warn about duplicated branches in if-else statements.
637 Wduplicated-cond
638 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
639 Warn about duplicated conditions in an if-else-if chain.
641 Weffc++
642 C++ ObjC++ Var(warn_ecpp) Warning
643 Warn about violations of Effective C++ style rules.
645 Wempty-body
646 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
647 Warn about an empty body in an if or else statement.
649 Wendif-labels
650 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)
651 Warn about stray tokens after #else and #endif.
653 Wenum-compare
654 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
655 Warn about comparison of different enum types.
657 Wenum-conversion
658 C ObjC C++ ObjC++ Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
659 Warn about implicit conversion of enum types.
661 Wenum-int-mismatch
662 C ObjC Var(warn_enum_int_mismatch) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
663 Warn about enum/integer type mismatches.
665 Werror
666 C ObjC C++ ObjC++
667 ; Documented in common.opt
669 Werror-implicit-function-declaration
670 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
671 This switch is deprecated; use -Werror=implicit-function-declaration instead.
673 Wexceptions
674 C++ ObjC++ Var(warn_exceptions) Init(1) Warning
675 Warn when an exception handler is shadowed by another handler.
677 Wextra
678 C ObjC C++ ObjC++ Warning
679 ; in common.opt
681 Wextra-semi
682 C++ ObjC++ Var(warn_extra_semi) Warning
683 Warn about semicolon after in-class function definition.
685 Wfloat-conversion
686 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
687 Warn for implicit type conversions that cause loss of floating point precision.
689 Wfloat-equal
690 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
691 Warn if testing floating point numbers for equality.
693 Wformat
694 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
695 Warn about printf/scanf/strftime/strfmon format string anomalies.
697 Wformat-contains-nul
698 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
699 Warn about format strings that contain NUL bytes.
701 Wformat-diag
702 C ObjC C++ ObjC++ Var(warn_format_diag) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
703 Warn about GCC format strings with strings unsuitable for diagnostics.
705 Wformat-extra-args
706 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
707 Warn if passing too many arguments to a function for its format string.
709 Wformat-nonliteral
710 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
711 Warn about format strings that are not literals.
713 Wformat-overflow
714 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
715 Warn about function calls with format strings that write past the end
716 of the destination region.  Same as -Wformat-overflow=1.
718 Wformat-security
719 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
720 Warn about possible security problems with format functions.
722 Wformat-signedness
723 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
724 Warn about sign differences with format functions.
726 Wformat-truncation
727 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
728 Warn about calls to snprintf and similar functions that truncate output.
729 Same as -Wformat-truncation=1.
731 Wformat-y2k
732 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
733 Warn about strftime formats yielding 2-digit years.
735 Wformat-zero-length
736 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
737 Warn about zero-length formats.
739 Wformat=
740 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
741 Warn about printf/scanf/strftime/strfmon format string anomalies.
743 Wformat-overflow=
744 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)
745 Warn about function calls with format strings that write past the end
746 of the destination region.
748 Wformat-truncation=
749 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)
750 Warn about calls to snprintf and similar functions that truncate output.
752 Wflex-array-member-not-at-end
753 C C++ Var(warn_flex_array_member_not_at_end) Warning
754 Warn when a structure containing a C99 flexible array member as the last
755 field is not at the end of another structure.
757 Wif-not-aligned
758 C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
759 Warn when the field in a struct is not aligned.
761 Wignored-qualifiers
762 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
763 Warn whenever type qualifiers are ignored.
765 Wignored-attributes
766 C C++ Var(warn_ignored_attributes) Init(1) Warning
767 Warn whenever attributes are ignored.
769 Winaccessible-base
770 C++ ObjC++ Var(warn_inaccessible_base) Init(1) Warning
771 Warn when a base is inaccessible in derived due to ambiguity.
773 Wincompatible-pointer-types
774 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
775 Warn when there is a conversion between pointers that have incompatible types.
777 Winfinite-recursion
778 C ObjC C++ LTO ObjC++ Var(warn_infinite_recursion) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
779 Warn for infinitely recursive calls.
781 Waddress-of-packed-member
782 C ObjC C++ ObjC++ Var(warn_address_of_packed_member) Init(1) Warning
783 Warn when the address of packed member of struct or union is taken.
785 Winit-self
786 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
787 Warn about variables which are initialized to themselves.
789 Winit-list-lifetime
790 C++ ObjC++ Var(warn_init_list) Warning Init(1)
791 Warn about uses of std::initializer_list that can result in dangling pointers.
793 Winterference-size
794 C++ ObjC++ Var(warn_interference_size) Warning Init(1)
795 Warn about nonsensical values of --param destructive-interference-size or
796 constructive-interference-size.
798 Wimplicit
799 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
800 Warn about implicit declarations.
802 Wimplicit-fallthrough=
803 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
804 ; in common.opt
806 Wdouble-promotion
807 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
808 Warn about implicit conversions from \"float\" to \"double\".
810 Wexpansion-to-defined
811 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)
812 Warn if \"defined\" is used outside #if.
814 Wimplicit-function-declaration
815 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
816 Warn about implicit function declarations.
818 Wimplicit-int
819 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
820 Warn when a declaration does not specify a type.
822 Wimport
823 C ObjC C++ ObjC++ Undocumented Ignore
825 Winherited-variadic-ctor
826 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
827 Warn about C++11 inheriting constructors when the base has a variadic constructor.
829 Wint-conversion
830 C ObjC Var(warn_int_conversion) Init(1) Warning
831 Warn about incompatible integer to pointer and pointer to integer conversions.
833 Wint-in-bool-context
834 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
835 Warn for suspicious integer expressions in boolean context.
837 Wint-to-pointer-cast
838 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
839 Warn when there is a cast to a pointer from an integer of a different size.
841 Winvalid-constexpr
842 C++ ObjC++ Var(warn_invalid_constexpr) Init(-1) Warning
843 Warn when a function never produces a constant expression.
845 Winvalid-offsetof
846 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
847 Warn about invalid uses of the \"offsetof\" macro.
849 Winvalid-pch
850 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
851 Warn about PCH files that are found but not used.
853 Winvalid-utf8
854 C ObjC C++ ObjC++ CPP(cpp_warn_invalid_utf8) CppReason(CPP_W_INVALID_UTF8) Var(warn_invalid_utf8) Init(0) Warning
855 Warn about invalid UTF-8 characters.
857 Wjump-misses-init
858 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
859 Warn when a jump misses a variable initialization.
861 Wliteral-suffix
862 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
863 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
865 Wlogical-op
866 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
867 Warn when a logical operator is suspiciously always evaluating to true or false.
869 Wlogical-not-parentheses
870 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
871 Warn when logical not is used on the left hand side operand of a comparison.
873 Wlong-long
874 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)
875 Do not warn about using \"long long\" when -pedantic.
877 Wmain
878 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
879 Warn about suspicious declarations of \"main\".
881 Wmain
882 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
885 Wmemset-transposed-args
886 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
887 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
889 Wmemset-elt-size
890 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
891 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
893 Wmisleading-indentation
894 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
895 Warn when the indentation of the code does not reflect the block structure.
897 Wmismatched-dealloc
898 C ObjC C++ ObjC++ Var(warn_mismatched_alloc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
899 Warn for deallocation calls with arguments returned from mismatched allocation
900 functions.
902 Wmismatched-new-delete
903 C++ ObjC++ Var(warn_mismatched_new_delete) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
904 Warn for mismatches between calls to operator new or delete and the corresponding
905 call to the allocation or deallocation function.
907 Wmismatched-tags
908 C++ ObjC++ Var(warn_mismatched_tags) Warning
909 Warn when a class is redeclared or referenced using a mismatched class-key.
911 Wmissing-braces
912 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
913 Warn about possibly missing braces around initializers.
915 Wmissing-declarations
916 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
917 Warn about global functions without previous declarations.
919 Wmissing-field-initializers
920 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
921 Warn about missing fields in struct initializers.
923 Wmissing-requires
924 C++ ObjC++ Var(warn_missing_requires) Init(1) Warning
925 Warn about likely missing requires keyword.
927 Wmissing-template-keyword
928 C++ ObjC++ Var(warn_missing_template_keyword) Init(1) Warning
929 Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.
931 Wmultistatement-macros
932 C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
933 Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
935 Wmultiple-inheritance
936 C++ ObjC++ Var(warn_multiple_inheritance) Warning
937 Warn on direct multiple inheritance.
939 Wnamespaces
940 C++ ObjC++ Var(warn_namespaces) Warning
941 Warn on namespace definition.
943 Wnrvo
944 C++ ObjC++ Var(warn_nrvo)
945 Warn if the named return value optimization is not performed although it is allowed.
947 Wpacked-not-aligned
948 C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
949 Warn when fields in a struct with the packed attribute are misaligned.
951 Wrange-loop-construct
952 C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
953 Warn when a range-based for-loop is creating unnecessary copies.
955 Wredundant-tags
956 C++ ObjC++ Var(warn_redundant_tags) Warning
957 Warn when a class or enumerated type is referenced using a redundant class-key.
959 Wsized-deallocation
960 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
961 Warn about missing sized deallocation functions.
963 Wsizeof-pointer-div
964 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
965 Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
967 Wsizeof-array-div
968 C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
969 Warn about divisions of two sizeof operators when the first one is applied
970 to an array and the divisor does not equal the size of the array element.
972 Wsizeof-pointer-memaccess
973 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
974 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
976 Wsizeof-array-argument
977 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
978 Warn when sizeof is applied on a parameter declared as an array.
980 Wstring-compare
981 C ObjC C++ LTO ObjC++ Warning Var(warn_string_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
982 Warn about calls to strcmp and strncmp used in equality expressions that
983 are necessarily true or false due to the length of one and size of the other
984 argument.
986 Wstringop-overflow
987 C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
988 Warn about buffer overflow in string manipulation functions like memcpy
989 and strcpy.
991 Wstringop-overflow=
992 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)
993 Under the control of Object Size type, warn about buffer overflow in string
994 manipulation functions like memcpy and strcpy.
996 Wstringop-overread
997 C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
998 Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
1000 Wstringop-truncation
1001 C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
1002 Warn about truncation in string manipulation functions like strncat and strncpy.
1004 Wstrict-flex-arrays
1005 C C++ Var(warn_strict_flex_arrays) Warning
1006 Warn about inproper usages of flexible array members
1007 according to the level of -fstrict-flex-arrays.
1009 Wsuggest-attribute=format
1010 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
1011 Warn about functions which might be candidates for format attributes.
1013 Wsuggest-override
1014 C++ ObjC++ Var(warn_override) Warning
1015 Suggest that the override keyword be used when the declaration of a virtual
1016 function overrides another.
1018 Wswitch
1019 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1020 Warn about enumerated switches, with no default, missing a case.
1022 Wswitch-default
1023 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
1024 Warn about enumerated switches missing a \"default:\" statement.
1026 Wswitch-enum
1027 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
1028 Warn about all enumerated switches missing a specific case.
1030 Wswitch-bool
1031 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
1032 Warn about switches with boolean controlling expression.
1034 Wswitch-outside-range
1035 C ObjC C++ ObjC++ Var(warn_switch_outside_range) Warning Init(1)
1036 Warn about switch values that are outside of the switch's type range.
1038 Wtemplates
1039 C++ ObjC++ Var(warn_templates) Warning
1040 Warn on primary template declaration.
1042 Wmissing-attributes
1043 C ObjC C++ ObjC++ Var(warn_missing_attributes) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1044 Warn about declarations of entities that may be missing attributes
1045 that related entities have been declared with.
1047 Wmissing-format-attribute
1048 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
1051 Wmissing-include-dirs
1052 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
1053 Warn about user-specified include directories that do not exist.
1055 Wmissing-parameter-type
1056 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
1057 Warn about function parameters declared without a type specifier in K&R-style functions.
1059 Wmissing-prototypes
1060 C ObjC Var(warn_missing_prototypes) Warning
1061 Warn about global functions without prototypes.
1063 Wmissing-variable-declarations
1064 C ObjC Var(warn_missing_variable_declarations) Warning
1065 Warn about global variables without previous declarations.
1067 Wmudflap
1068 C ObjC C++ ObjC++ WarnRemoved
1070 Wmultichar
1071 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
1072 Warn about use of multi-character character constants.
1074 Wnarrowing
1075 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
1076 Warn about narrowing conversions within { } that are ill-formed in C++11.
1078 Wnested-externs
1079 C ObjC Var(warn_nested_externs) Warning
1080 Warn about \"extern\" declarations not at file scope.
1082 Wnoexcept
1083 C++ ObjC++ Var(warn_noexcept) Warning
1084 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
1086 Wnoexcept-type
1087 C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
1088 Warn if C++17 noexcept function type will change the mangled name of a symbol.
1090 Wnon-template-friend
1091 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
1092 Warn when non-templatized friend functions are declared within a template.
1094 Wclass-conversion
1095 C++ ObjC++ Var(warn_class_conversion) Init(1) Warning
1096 Warn when a conversion function will never be called due to the type it converts to.
1098 Wclass-memaccess
1099 C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
1100 Warn for unsafe raw memory writes to objects of class types.
1102 Wnon-virtual-dtor
1103 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
1104 Warn about non-virtual destructors.
1106 Wnonnull
1107 C ObjC C++ LTO ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=,warn_format >= 1,0)
1108 Warn about NULL being passed to argument slots marked as requiring non-NULL.
1110 Wnonnull
1111 C ObjC C++ LTO ObjC++ LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
1114 Wnonnull-compare
1115 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1118 Wnormalized
1119 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
1122 Wnormalized=
1123 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)
1124 -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
1126 ; Required for these enum values.
1127 SourceInclude
1128 cpplib.h
1130 Enum
1131 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
1133 EnumValue
1134 Enum(cpp_normalize_level) String(none) Value(normalized_none)
1136 EnumValue
1137 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
1139 EnumValue
1140 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
1142 EnumValue
1143 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
1145 Wobjc-root-class
1146 ObjC ObjC++ Var(warn_objc_root_class) Warning Init(1)
1147 Warn if a class interface has no superclass.  Root classes may use an attribute
1148 to suppress this warning.
1150 Wold-style-cast
1151 C++ ObjC++ Var(warn_old_style_cast) Warning
1152 Warn if a C-style cast is used in a program.
1154 Wold-style-declaration
1155 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
1156 Warn for obsolescent usage in a declaration.
1158 Wold-style-definition
1159 C ObjC Var(warn_old_style_definition) Init(-1) Warning
1160 Warn if an old-style parameter definition is used.
1162 Wopenacc-parallelism
1163 C C++ Var(warn_openacc_parallelism) Warning
1164 Warn about potentially suboptimal choices related to OpenACC parallelism.
1166 Wopenmp-simd
1167 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
1168 Warn if a simd directive is overridden by the vectorizer cost model.
1170 Woverlength-strings
1171 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1172 Warn if a string is longer than the maximum portable length specified by the standard.
1174 Woverloaded-virtual
1175 C++ ObjC++ Warning Alias(Woverloaded-virtual=,2,0)
1176 Warn about overloaded virtual function names.
1178 Woverloaded-virtual=
1179 C++ ObjC++ Joined UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
1180 Warn about overloaded virtual function names.
1182 Woverride-init
1183 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
1184 Warn about overriding initializers without side effects.
1186 Woverride-init-side-effects
1187 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
1188 Warn about overriding initializers with side effects.
1190 Wpacked-bitfield-compat
1191 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
1192 Warn about packed bit-fields whose offset changed in GCC 4.4.
1194 Wparentheses
1195 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1196 Warn about possibly missing parentheses.
1198 Wpedantic
1199 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
1200 ; Documented in common.opt
1202 Wpessimizing-move
1203 C++ ObjC++ Var(warn_pessimizing_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1204 Warn about calling std::move on a local object in a return statement preventing copy elision.
1206 Wpmf-conversions
1207 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
1208 Warn when converting the type of pointers to member functions.
1210 Wpointer-arith
1211 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1212 Warn about function pointer arithmetic.
1214 Wpointer-sign
1215 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
1216 Warn when a pointer differs in signedness in an assignment.
1218 Wpointer-compare
1219 C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
1220 Warn when a pointer is compared with a zero character constant.
1222 Wpointer-to-int-cast
1223 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
1224 Warn when a pointer is cast to an integer of a different size.
1226 Wpragmas
1227 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
1228 Warn about misuses of pragmas.
1230 Wprio-ctor-dtor
1231 C ObjC C++ ObjC++ Var(warn_prio_ctor_dtor) Init(1) Warning
1232 Warn if constructor or destructors with priorities from 0 to 100 are used.
1234 Wproperty-assign-default
1235 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
1236 Warn if a property for an Objective-C object has no assign semantics specified.
1238 Wprotocol
1239 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
1240 Warn if inherited methods are unimplemented.
1242 Wplacement-new
1243 C++ Warning Alias(Wplacement-new=, 1, 0)
1244 Warn for placement new expressions with undefined behavior.
1246 Wplacement-new=
1247 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
1248 Warn for placement new expressions with undefined behavior.
1250 Wredundant-decls
1251 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
1252 Warn about multiple declarations of the same object.
1254 Wredundant-move
1255 C++ ObjC++ Var(warn_redundant_move) Warning LangEnabledBy(C++ ObjC++,Wextra)
1256 Warn about redundant calls to std::move.
1258 Wregister
1259 C++ ObjC++ Var(warn_register) Warning
1260 Warn about uses of register storage specifier.
1262 Wreorder
1263 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
1264 Warn when the compiler reorders code.
1266 Wreturn-type
1267 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Init(-1)
1268 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
1270 Wscalar-storage-order
1271 C ObjC C++ ObjC++ Var(warn_scalar_storage_order) Init(1) Warning
1272 Warn on suspicious constructs involving reverse scalar storage order.
1274 Wselector
1275 ObjC ObjC++ Var(warn_selector) Warning
1276 Warn if a selector has multiple methods.
1278 Wself-move
1279 C++ ObjC++ Var(warn_self_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1280 Warn when a value is moved to itself with std::move.
1282 Wsequence-point
1283 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1284 Warn about possible violations of sequence point rules.
1286 Wshadow-ivar
1287 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
1288 Warn if a local declaration hides an instance variable.
1290 Wshift-overflow
1291 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
1292 Warn if left shift of a signed value overflows.
1294 Wshift-overflow=
1295 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
1296 Warn if left shift of a signed value overflows.
1298 Wshift-count-negative
1299 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
1300 Warn if shift count is negative.
1302 Wshift-count-overflow
1303 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
1304 Warn if shift count >= width of type.
1306 Wshift-negative-value
1307 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
1308 Warn if left shifting a negative value.
1310 Warith-conversion
1311 C ObjC C++ ObjC++ Var(warn_arith_conv) Warning
1312 Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.
1314 Wsign-compare
1315 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
1316 Warn about signed-unsigned comparisons.
1318 Wsign-compare
1319 C ObjC C++ ObjC++ EnabledBy(Wextra)
1322 Wsign-conversion
1323 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
1324 Warn for implicit type conversions between signed and unsigned integers.
1326 Wsign-promo
1327 C++ ObjC++ Var(warn_sign_promo) Warning
1328 Warn when overload promotes from unsigned to signed.
1330 Wstrict-null-sentinel
1331 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
1332 Warn about uncasted NULL used as sentinel.
1334 Wstrict-prototypes
1335 C ObjC Var(warn_strict_prototypes) Warning
1336 Warn about unprototyped function declarations.
1338 Wstrict-aliasing=
1339 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
1342 Wstrict-overflow=
1343 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
1346 Wstrict-selector-match
1347 ObjC ObjC++ Var(warn_strict_selector_match) Warning
1348 Warn if type signatures of candidate methods do not match exactly.
1350 Wsync-nand
1351 C C++ Var(warn_sync_nand) Init(1) Warning
1352 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
1354 Wsynth
1355 C++ ObjC++ Var(warn_synth) Warning
1356 Deprecated.  This switch has no effect.
1358 Wsystem-headers
1359 C ObjC C++ ObjC++ Warning
1360 ; Documented in common.opt
1362 Wtautological-compare
1363 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1364 Warn if a comparison always evaluates to true or false.
1366 Wterminate
1367 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1368 Warn if a throw expression will always result in a call to terminate().
1370 Wtraditional
1371 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1372 Warn about features not present in traditional C.
1374 Wtraditional-conversion
1375 C ObjC Var(warn_traditional_conversion) Warning
1376 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1378 Wtrigraphs
1379 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1380 Warn if trigraphs are encountered that might affect the meaning of the program.
1382 Wundeclared-selector
1383 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1384 Warn about @selector()s without previously declared methods.
1386 Wundef
1387 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1388 Warn if an undefined macro is used in an #if directive.
1390 Wunicode
1391 C ObjC C++ ObjC++ CPP(cpp_warn_unicode) CppReason(CPP_W_UNICODE) Var(warn_unicode) Init(1) Warning
1392 Warn about invalid forms of delimited or named escape sequences.
1394 Wuninitialized
1395 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1398 Wmaybe-uninitialized
1399 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1402 Wunknown-pragmas
1403 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1404 Warn about unrecognized pragmas.
1406 Wunsuffixed-float-constants
1407 C ObjC Var(warn_unsuffixed_float_constants) Warning
1408 Warn about unsuffixed float constants.
1410 Wunused
1411 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1412 ; documented in common.opt
1414 Wunused-local-typedefs
1415 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1416 Warn when typedefs locally defined in a function are not used.
1418 Wunused-macros
1419 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1420 Warn about macros defined in the main file that are not used.
1422 Wunused-result
1423 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1424 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1426 Wunused-variable
1427 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1428 ; documented in common.opt
1430 Wunused-const-variable
1431 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1432 Warn when a const variable is unused.
1434 Wunused-const-variable=
1435 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
1436 Warn when a const variable is unused.
1438 ; Defining this option here in addition to common.opt is necessary
1439 ; in order for the default -Wall setting of -Wuse-after-free=2 to take
1440 ; effect.
1442 Wuse-after-free=
1443 LangEnabledBy(C ObjC C++ LTO ObjC++, Wall,2,0)
1444 ; in common.opt
1446 Wvariadic-macros
1447 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)
1448 Warn about using variadic macros.
1450 Wvarargs
1451 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1452 Warn about questionable usage of the macros used to retrieve variable arguments.
1454 Wvexing-parse
1455 C++ ObjC++ Warning Var(warn_vexing_parse) Init(1)
1456 Warn about the most vexing parse syntactic ambiguity.
1458 Wvla
1459 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1460 Warn if a variable length array is used.
1462 Wvla-larger-than=
1463 C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
1464 -Wvla-larger-than=<number>      Warn on unbounded uses of variable-length
1465 arrays, and on bounded uses of variable-length arrays whose bound can be
1466 larger than <number> bytes.
1468 Wno-vla-larger-than
1469 C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
1470 Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
1472 Wvla-parameter
1473 C ObjC C++ ObjC++ Var(warn_vla_parameter) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1474 Warn about mismatched declarations of VLA parameters.
1476 Wvolatile
1477 C++ ObjC++ Var(warn_volatile) Warning
1478 Warn about deprecated uses of volatile qualifier.
1480 Wvolatile-register-var
1481 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1482 Warn when a register variable is declared volatile.
1484 Wvirtual-inheritance
1485 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1486 Warn on direct virtual inheritance.
1488 Wvirtual-move-assign
1489 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1490 Warn if a virtual base has a non-trivial move assignment operator.
1492 Wwrite-strings
1493 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1494 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.
1496 Wxor-used-as-pow
1497 C ObjC C++ ObjC++ Var(warn_xor_used_as_pow) Warning Init(1)
1498 Warn about xor operators where it appears the user meant exponentiation.
1500 Wzero-as-null-pointer-constant
1501 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1502 Warn when a literal '0' is used as null pointer.
1504 Wuseless-cast
1505 C ObjC C++ ObjC++ Var(warn_useless_cast) Warning
1506 Warn about useless casts.
1508 Wsubobject-linkage
1509 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1510 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.
1512 Welaborated-enum-base
1513 C++ ObjC++ Var(warn_elaborated_enum_base) Warning Init(1)
1514 Warn if an additional enum-base is used in an elaborated-type-specifier.
1516 Wduplicate-decl-specifier
1517 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1518 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1520 Wrestrict
1521 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
1522 Warn when an argument passed to a restrict-qualified parameter aliases with
1523 another argument.
1525 ansi
1526 C ObjC C++ ObjC++
1527 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1530 C ObjC C++ ObjC++ Joined
1531 ; Documented in common.opt.  FIXME - what about -dI, -dD, -dN and -dD?
1533 fabi-compat-version=
1534 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1535 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1537 faccess-control
1538 C++ ObjC++ Var(flag_access_control) Init(1)
1539 Enforce class member access control semantics.
1541 fada-spec-parent=
1542 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1543 -fada-spec-parent=unit  Dump Ada specs as child units of given parent.
1545 faligned-new
1546 C++ ObjC++ Alias(faligned-new=,1,0)
1547 Support C++17 allocation of over-aligned types.
1549 faligned-new=
1550 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1551 -faligned-new=<N>       Use C++17 over-aligned type allocation for alignments greater than N.
1553 fall-virtual
1554 C++ ObjC++ WarnRemoved
1556 fallow-parameterless-variadic-functions
1557 C ObjC Ignore
1558 Does nothing. Preserved for backward compatibility.
1560 falt-external-templates
1561 C++ ObjC++ WarnRemoved
1562 No longer supported.
1564 fasm
1565 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1566 Recognize the \"asm\" keyword.
1568 ; Define extra predefined macros for use in libgcc.
1569 fbuilding-libgcc
1570 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1572 fbuiltin
1573 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1574 Recognize built-in functions.
1576 fbuiltin-
1577 C ObjC C++ ObjC++ Joined
1579 fcanonical-system-headers
1580 C ObjC C++ ObjC++
1581 Where shorter, use canonicalized paths to systems headers.
1583 fchar8_t
1584 C++ ObjC++ Var(flag_char8_t) Init(-1)
1585 Enable the char8_t fundamental type and use it as the type for UTF-8 string
1586 and character literals.
1588 fcheck-pointer-bounds
1589 C ObjC C++ ObjC++ LTO WarnRemoved
1590 Removed in GCC 9.  This switch has no effect.
1592 fchkp-check-incomplete-type
1593 C ObjC C++ ObjC++ LTO WarnRemoved
1594 Removed in GCC 9.  This switch has no effect.
1596 fchkp-zero-input-bounds-for-main
1597 C ObjC C++ ObjC++ LTO WarnRemoved
1598 Removed in GCC 9.  This switch has no effect.
1600 fchkp-first-field-has-own-bounds
1601 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1602 Removed in GCC 9.  This switch has no effect.
1604 fchkp-narrow-bounds
1605 C ObjC C++ ObjC++ LTO WarnRemoved
1606 Removed in GCC 9.  This switch has no effect.
1608 fchkp-narrow-to-innermost-array
1609 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1610 Removed in GCC 9.  This switch has no effect.
1612 fchkp-flexible-struct-trailing-arrays
1613 C ObjC C++ ObjC++ LTO WarnRemoved
1614 Removed in GCC 9.  This switch has no effect.
1616 fchkp-optimize
1617 C ObjC C++ ObjC++ LTO WarnRemoved
1619 fchkp-use-fast-string-functions
1620 C ObjC C++ ObjC++ LTO WarnRemoved
1621 Removed in GCC 9.  This switch has no effect.
1623 fchkp-use-nochk-string-functions
1624 C ObjC C++ ObjC++ LTO WarnRemoved
1625 Removed in GCC 9.  This switch has no effect.
1627 fchkp-use-static-bounds
1628 C ObjC C++ ObjC++ LTO WarnRemoved
1629 Removed in GCC 9.  This switch has no effect.
1631 fchkp-use-static-const-bounds
1632 C ObjC C++ ObjC++ LTO WarnRemoved
1633 Removed in GCC 9.  This switch has no effect.
1635 fchkp-treat-zero-dynamic-size-as-infinite
1636 C ObjC C++ ObjC++ LTO WarnRemoved
1637 Removed in GCC 9.  This switch has no effect.
1639 fchkp-check-read
1640 C ObjC C++ ObjC++ LTO WarnRemoved
1641 Removed in GCC 9.  This switch has no effect.
1643 fchkp-check-write
1644 C ObjC C++ ObjC++ LTO WarnRemoved
1645 Removed in GCC 9.  This switch has no effect.
1647 fchkp-store-bounds
1648 C ObjC C++ ObjC++ LTO WarnRemoved
1649 Removed in GCC 9.  This switch has no effect.
1651 fchkp-instrument-calls
1652 C ObjC C++ ObjC++ LTO WarnRemoved
1653 Removed in GCC 9.  This switch has no effect.
1655 fchkp-instrument-marked-only
1656 C ObjC C++ ObjC++ LTO WarnRemoved
1657 Removed in GCC 9.  This switch has no effect.
1659 fchkp-use-wrappers
1660 C ObjC C++ ObjC++ LTO WarnRemoved
1661 Removed in GCC 9.  This switch has no effect.
1663 static-libmpx
1664 Driver WarnRemoved
1665 Removed in GCC 9.  This switch has no effect.
1667 static-libmpxwrappers
1668 Driver WarnRemoved
1669 Removed in GCC 9.  This switch has no effect.
1671 fcilkplus
1672 C ObjC C++ ObjC++ LTO Undocumented Ignore
1673 Removed in GCC 8.  This switch has no effect.
1675 fconcepts
1676 C++ ObjC++ Var(flag_concepts)
1677 Enable support for C++ concepts.
1679 fconcepts-ts
1680 C++ ObjC++ Var(flag_concepts_ts) Init(0)
1681 Enable certain features present in the Concepts TS.
1683 fconcepts-diagnostics-depth=
1684 C++ ObjC++ Joined RejectNegative UInteger Var(concepts_diagnostics_max_depth) Init(1)
1685 Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure.
1687 fcond-mismatch
1688 C ObjC C++ ObjC++
1689 Allow the arguments of the '?' operator to have different types.
1691 fconserve-space
1692 C++ ObjC++ Ignore
1693 Does nothing.  Preserved for backward compatibility.
1695 fconstant-string-class=
1696 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1697 -fconst-string-class=<name>     Use class <name> for constant strings.
1699 fconstexpr-depth=
1700 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1701 -fconstexpr-depth=<number>      Specify maximum constexpr recursion depth.
1703 fconstexpr-cache-depth=
1704 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_cache_depth) Init(8)
1705 -fconstexpr-cache-depth=<number>        Specify maximum constexpr recursion cache depth.
1707 fconstexpr-fp-except
1708 C++ ObjC++ Var(flag_constexpr_fp_except) Init(0)
1709 Allow IEC559 floating point exceptions in constant expressions.
1711 fconstexpr-loop-limit=
1712 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1713 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1715 fconstexpr-ops-limit=
1716 C++ ObjC++ Joined RejectNegative Host_Wide_Int Var(constexpr_ops_limit) Init(33554432)
1717 -fconstexpr-ops-limit=<number>  Specify maximum number of constexpr operations during a single constexpr evaluation.
1719 fcontracts
1720 C++ ObjC++ Var(flag_contracts) Init(0)
1721 Enable certain features present in drafts of C++ Contracts.
1723 Enum
1724 Name(on_off) Type(int) UnknownError(argument %qs must be either %<on%> or %<off%>)
1726 EnumValue
1727 Enum(on_off) String(off) Value(0)
1729 EnumValue
1730 Enum(on_off) String(on) Value(1)
1732 fcontract-assumption-mode=
1733 C++ Joined RejectNegative
1734 -fcontract-assumption-mode=[on|off]     Enable or disable treating axiom level contracts as assumptions (default on).
1736 fcontract-build-level=
1737 C++ Joined RejectNegative
1738 -fcontract-build-level=[off|default|audit]      Specify max contract level to generate runtime checks for.
1740 fcontract-strict-declarations=
1741 C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative
1742 -fcontract-strict-declarations=[on|off] Enable or disable warnings on generalized redeclaration of functions with contracts (default off).
1744 fcontract-mode=
1745 C++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative
1746 -fcontract-mode=[on|off]        Enable or disable all contract facilities (default on).
1748 fcontract-continuation-mode=
1749 C++ Joined RejectNegative
1750 -fcontract-continuation-mode=[on|off]   Enable or disable contract continuation mode (default off).
1752 fcontract-role=
1753 C++ Joined RejectNegative
1754 -fcontract-role=<name>:<semantics>      Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume).
1756 fcontract-semantic=
1757 C++ Joined RejectNegative
1758 -fcontract-semantic=<level>:<semantic>  Specify the concrete semantics for level.
1760 fcoroutines
1761 C++ LTO Var(flag_coroutines)
1762 Enable C++ coroutines (experimental).
1764 fdebug-cpp
1765 C ObjC C++ ObjC++
1766 Emit debug annotations during preprocessing.
1768 fdeduce-init-list
1769 C++ ObjC++ Ignore
1770 Does nothing.  Preserved for backward compatibility.
1772 fdeclone-ctor-dtor
1773 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1774 Factor complex constructors and destructors to favor space over speed.
1776 fdefault-inline
1777 C++ ObjC++ Ignore
1778 Does nothing.  Preserved for backward compatibility.
1780 fdiagnostics-show-template-tree
1781 C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1782 Print hierarchical comparisons when template types are mismatched.
1784 fdirectives-only
1785 C ObjC C++ ObjC++
1786 Preprocess directives only.
1788 fdollars-in-identifiers
1789 C ObjC C++ ObjC++
1790 Permit '$' as an identifier character.
1792 fmacro-prefix-map=
1793 C ObjC C++ ObjC++ Joined RejectNegative
1794 -fmacro-prefix-map=<old>=<new>  Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE().
1796 fdump-ada-spec
1797 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1798 Write all declarations as Ada code transitively.
1800 fdump-ada-spec-slim
1801 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1802 Write all declarations as Ada code for the given file only.
1804 felide-constructors
1805 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1807 felide-type
1808 C++ ObjC++ Var(flag_elide_type) Init(1)
1809 Do not elide common elements in template comparisons.
1811 fenforce-eh-specs
1812 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1813 Generate code to check exception specifications.
1815 fenum-int-equiv
1816 C++ ObjC++ WarnRemoved
1818 fexec-charset=
1819 C ObjC C++ ObjC++ Joined RejectNegative
1820 -fexec-charset=<cset>   Convert all strings and character constants to character set <cset>.
1822 fextended-identifiers
1823 C ObjC C++ ObjC++
1824 Permit universal character names (\\u and \\U) in identifiers.
1826 finput-charset=
1827 C ObjC C++ ObjC++ Joined RejectNegative
1828 -finput-charset=<cset>  Specify the default character set for source files.
1830 fextern-tls-init
1831 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1832 Support dynamic initialization of thread-local variables in a different translation unit.
1834 fexternal-templates
1835 C++ ObjC++ WarnRemoved
1837 ffold-simple-inlines
1838 C++ ObjC++ Optimization Var(flag_fold_simple_inlines)
1839 Fold calls to simple inline functions.
1841 ffor-scope
1842 C++ ObjC++ WarnRemoved
1844 ffreestanding
1845 C ObjC C++ ObjC++
1846 Do not assume that standard C libraries and \"main\" exist.
1848 fgnu-keywords
1849 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1850 Recognize GNU-defined keywords.
1852 fgnu-runtime
1853 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1854 Generate code for GNU runtime environment.
1856 fgnu89-inline
1857 C ObjC Var(flag_gnu89_inline) Init(-1)
1858 Use traditional GNU semantics for inline functions.
1860 fguiding-decls
1861 C++ ObjC++ WarnRemoved
1863 fhandle-exceptions
1864 C++ ObjC++ Optimization Alias(fexceptions) Warn({%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)})
1866 fhonor-std
1867 C++ ObjC++ WarnRemoved
1869 fhosted
1870 C ObjC
1871 Assume normal C execution environment.
1873 fhuge-objects
1874 C++ ObjC++ WarnRemoved
1875 No longer supported.
1877 fimplement-inlines
1878 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1879 Export functions even if they can be inlined.
1881 fimplicit-constexpr
1882 C++ ObjC++ Var(flag_implicit_constexpr)
1883 Make inline functions constexpr by default.
1885 fimplicit-inline-templates
1886 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1887 Emit implicit instantiations of inline templates.
1889 fimplicit-templates
1890 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1891 Emit implicit instantiations of templates.
1893 fnew-inheriting-ctors
1894 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1895 Implement C++17 inheriting constructor semantics.
1897 ffriend-injection
1898 C++ ObjC++ WarnRemoved
1900 fkeep-inline-dllexport
1901 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1902 Don't emit dllexported inline functions unless needed.
1904 flabels-ok
1905 C++ ObjC++ WarnRemoved
1907 flax-vector-conversions
1908 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1909 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1911 fmodules-ts
1912 C++ ObjC++ Var(flag_modules) Integer Init(0)
1913 Enable C++ modules-ts (experimental).
1915 fno-modules
1916 C++ ObjC++ Undocumented RejectNegative Var(flag_modules,0) Integer
1917 ;; undocumented
1919 fmodule-header
1920 C++ ObjC RejectNegative Var(flag_header_unit,0) Integer
1921 Enable C++ header module (experimental).
1923 fmodule-header=
1924 C++ ObjC++ Joined RejectNegative Undocumented
1926 fmodule-implicit-inline
1927 C++ ObjC++ Var(flag_module_implicit_inline,0) Integer
1928 Member functions defined within their class are inline in module purview.
1930 fmodule-only
1931 C++ ObjC RejectNegative Var(flag_module_only) Integer
1932 Only emit Compiled Module Interface.
1934 fmodule-mapper=
1935 C++ ObjC++ Joined RejectNegative MissingArgError(missing mapper)
1936 Mapper for module to CMI files.
1938 fmodule-lazy
1939 C++ ObjC++ Var(flag_module_lazy) Init(1)
1940 Enable lazy module importing.
1942 fmodule-version-ignore
1943 C++ ObjC Var(flag_module_version_ignore) Integer
1944 ; undocumented, Very dangerous, but occasionally useful
1946 Winvalid-imported-macros
1947 C++ ObjC++ Var(warn_imported_macros) Warning
1948 Warn about macros that have conflicting header units definitions.
1950 Wcompare-distinct-pointer-types
1951 C ObjC Var(warn_compare_distinct_pointer_types) Warning Init(1)
1952 Warn if pointers of distinct types are compared without a cast.
1954 flang-info-include-translate
1955 C++ Var(note_include_translate_yes)
1956 Note #include directives translated to import declarations.
1958 flang-info-include-translate-not
1959 C++ Var(note_include_translate_no)
1960 Note #include directives not translated to import declarations, and not known to be textual.
1962 flang-info-include-translate=
1963 C++ Joined RejectNegative MissingArgError(missing header name)
1964 Note a #include translation of a specific header.
1966 flang-info-module-cmi
1967 C++ Var(note_module_cmi_yes)
1968 Note Compiled Module Interface pathnames.
1970 flang-info-module-cmi=
1971 C++ Joined RejectNegative MissingArgError(missing module name)
1972 Note Compiled Module Interface pathname of a specific module or header-unit.
1974 fmax-include-depth=
1975 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1976 fmax-include-depth=<number> Set the maximum depth of the nested #include.
1978 fms-extensions
1979 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1980 Don't warn about uses of Microsoft extensions.
1982 fmudflap
1983 C ObjC C++ ObjC++ WarnRemoved
1985 fmudflapth
1986 C ObjC C++ ObjC++ WarnRemoved
1988 fmudflapir
1989 C ObjC C++ ObjC++ WarnRemoved
1991 fname-mangling-version-
1992 C++ ObjC++ Joined WarnRemoved
1994 fnew-abi
1995 C++ ObjC++ WarnRemoved
1997 fnew-ttp-matching
1998 C++ ObjC++ Var(flag_new_ttp)
1999 Implement resolution of DR 150 for matching of template template arguments.
2001 fnext-runtime
2002 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime)
2003 Generate code for NeXT (Apple macOS) runtime environment.
2005 fnil-receivers
2006 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
2007 Assume that receivers of Objective-C messages may be nil.
2009 flocal-ivars
2010 ObjC ObjC++ Var(flag_local_ivars) Init(1)
2011 Allow access to instance variables as if they were local declarations within instance method implementations.
2013 fivar-visibility=
2014 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
2015 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
2017 Enum
2018 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
2020 EnumValue
2021 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
2023 EnumValue
2024 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
2026 EnumValue
2027 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
2029 EnumValue
2030 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
2032 fnonansi-builtins
2033 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
2035 fnonnull-objects
2036 C++ ObjC++ WarnRemoved
2038 fnothrow-opt
2039 C++ ObjC++ Optimization Var(flag_nothrow_opt)
2040 Treat a throw() exception specification as noexcept to improve code size.
2042 fobjc-abi-version=
2043 ObjC ObjC++ LTO Joined RejectNegative UInteger Var(flag_objc_abi)
2044 Specify which ABI to use for Objective-C family code and meta-data generation.
2046 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
2047 ; to initialize any non-POD ivars in Objective-C++ classes.
2048 fobjc-call-cxx-cdtors
2049 ObjC++ Var(flag_objc_call_cxx_cdtors)
2050 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
2052 fobjc-direct-dispatch
2053 ObjC ObjC++ Var(flag_objc_direct_dispatch)
2054 Allow fast jumps to the message dispatcher.
2056 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
2057 ; @try, etc.) in source code.
2058 fobjc-exceptions
2059 ObjC ObjC++ Var(flag_objc_exceptions)
2060 Enable Objective-C exception and synchronization syntax.
2062 fobjc-gc
2063 ObjC ObjC++ LTO Var(flag_objc_gc)
2064 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
2066 fobjc-nilcheck
2067 ObjC ObjC++ Var(flag_objc_nilcheck,1)
2068 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
2070 ; Nonzero means that we generate NeXT setjmp based exceptions.
2071 fobjc-sjlj-exceptions
2072 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
2073 Enable Objective-C setjmp exception handling runtime.
2075 fobjc-std=objc1
2076 ObjC ObjC++ Var(flag_objc1_only)
2077 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
2079 fopenacc
2080 C ObjC C++ ObjC++ LTO Var(flag_openacc)
2081 Enable OpenACC.
2083 fopenacc-dim=
2084 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
2085 Specify default OpenACC compute dimensions.
2087 fopenmp
2088 C ObjC C++ ObjC++ LTO Var(flag_openmp)
2089 Enable OpenMP (implies -frecursive in Fortran).
2091 fopenmp-simd
2092 C ObjC C++ ObjC++ Var(flag_openmp_simd)
2093 Enable OpenMP's SIMD directives.
2095 foperator-names
2096 C++ ObjC++
2097 Recognize C++ keywords like \"compl\" and \"xor\".
2099 foptional-diags
2100 C++ ObjC++ Ignore
2101 Does nothing.  Preserved for backward compatibility.
2103 fpch-deps
2104 C ObjC C++ ObjC++
2106 fpch-preprocess
2107 C ObjC C++ ObjC++
2108 Look for and use PCH files even when preprocessing.
2110 fpermissive
2111 C++ ObjC++ Var(flag_permissive)
2112 Downgrade conformance errors to warnings.
2114 fplan9-extensions
2115 C ObjC Var(flag_plan9_extensions)
2116 Enable Plan 9 language extensions.
2118 fpreprocessed
2119 C ObjC C++ ObjC++
2120 Treat the input file as already preprocessed.
2122 ftrack-macro-expansion
2123 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
2124 ; converted into ftrack-macro-expansion=
2126 ftrack-macro-expansion=
2127 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
2128 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
2130 fpretty-templates
2131 C++ ObjC++ Var(flag_pretty_templates) Init(1)
2132 Do not pretty-print template specializations as the template signature followed by the arguments.
2134 fprintf-return-value
2135 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
2136 Treat known sprintf return values as constants.
2138 freplace-objc-classes
2139 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
2140 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
2142 frepo
2143 C++ ObjC++ WarnRemoved
2144 Removed in GCC 10.  This switch has no effect.
2146 frtti
2147 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
2148 Generate run time type descriptor information.
2150 fshort-enums
2151 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
2152 Use the narrowest integer type possible for enumeration types.
2154 fshort-wchar
2155 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
2156 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
2158 fsigned-bitfields
2159 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
2160 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
2162 fsigned-char
2163 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
2164 Make \"char\" signed by default.
2166 fsized-deallocation
2167 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
2168 Enable C++14 sized deallocation support.
2170 fstrict-flex-arrays
2171 C C++ Common Alias(fstrict-flex-arrays=,3,0)
2173 fstrict-flex-arrays=
2174 C C++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3)
2175 -fstrict-flex-arrays=<level>    Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members.
2177 fsquangle
2178 C++ ObjC++ WarnRemoved
2180 fsso-struct=
2181 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
2182 -fsso-struct=[big-endian|little-endian|native]  Set the default scalar storage order.
2184 Enum
2185 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
2187 EnumValue
2188 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
2190 EnumValue
2191 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
2193 EnumValue
2194 Enum(sso_struct) String(native) Value(SSO_NATIVE)
2196 fstats
2197 C++ ObjC++ Var(flag_detailed_statistics)
2198 Display statistics accumulated during compilation.
2200 fstrict-enums
2201 C++ ObjC++ Optimization Var(flag_strict_enums)
2202 Assume that values of enumeration type are always within the minimum range of that type.
2204 fstrict-prototype
2205 C++ ObjC++ WarnRemoved
2207 fstrong-eval-order
2208 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
2209 Follow the C++17 evaluation order requirements for assignment expressions,
2210 shift, member function calls, etc.
2212 fstrong-eval-order=
2213 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
2214 Follow the C++17 evaluation order requirements for assignment expressions,
2215 shift, member function calls, etc.
2217 Enum
2218 Name(strong_eval_order) Type(int)
2220 EnumValue
2221 Enum(strong_eval_order) String(none) Value(0)
2223 EnumValue
2224 Enum(strong_eval_order) String(some) Value(1)
2226 EnumValue
2227 Enum(strong_eval_order) String(all) Value(2)
2229 ftemplate-backtrace-limit=
2230 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
2231 Set the maximum number of template instantiation notes for a single warning or error.
2233 ftemplate-depth-
2234 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
2236 ftemplate-depth=
2237 C++ ObjC++ Joined RejectNegative UInteger
2238 -ftemplate-depth=<number>       Specify maximum template instantiation depth.
2240 fthis-is-variable
2241 C++ ObjC++ WarnRemoved
2243 fthreadsafe-statics
2244 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
2245 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
2247 funsigned-bitfields
2248 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
2249 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
2251 funsigned-char
2252 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
2253 Make \"char\" unsigned by default.
2255 fuse-cxa-atexit
2256 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
2257 Use __cxa_atexit to register destructors.
2259 fuse-cxa-get-exception-ptr
2260 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
2261 Use __cxa_get_exception_ptr in exception handling.
2263 fvisibility-inlines-hidden
2264 C++ ObjC++
2265 Marks all inlined functions and methods as having hidden visibility.
2267 fvisibility-ms-compat
2268 C++ ObjC++ Var(flag_visibility_ms_compat)
2269 Changes visibility to match Microsoft Visual Studio by default.
2271 fvtable-gc
2272 C++ ObjC++ WarnRemoved
2273 No longer supported.
2275 fvtable-thunks
2276 C++ ObjC++ WarnRemoved 
2277 No longer supported.
2279 fweak
2280 C++ ObjC++ Var(flag_weak) Init(1)
2281 Emit common-like symbols as weak symbols.
2283 fwide-exec-charset=
2284 C ObjC C++ ObjC++ Joined RejectNegative
2285 -fwide-exec-charset=<cset>      Convert all wide strings and character constants to character set <cset>.
2287 fworking-directory
2288 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
2289 Generate a #line directive pointing at the current working directory.
2291 fxref
2292 C++ ObjC++ WarnRemoved
2293 No longer supported.
2295 fzero-link
2296 ObjC ObjC++ Var(flag_zero_link)
2297 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
2299 gen-decls
2300 ObjC ObjC++ Driver Var(flag_gen_declaration) RejectNegative
2301 Dump declarations to a .decl file.
2303 femit-struct-debug-baseonly
2304 C ObjC C++ ObjC++
2305 -femit-struct-debug-baseonly    Aggressive reduced debug info for structs.
2307 femit-struct-debug-reduced
2308 C ObjC C++ ObjC++
2309 -femit-struct-debug-reduced     Conservative reduced debug info for structs.
2311 femit-struct-debug-detailed=
2312 C ObjC C++ ObjC++ Joined
2313 -femit-struct-debug-detailed=<spec-list>        Detailed reduced debug info for structs.
2315 fext-numeric-literals
2316 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
2317 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
2318 number literal rather than a user-defined number literal.
2320 idirafter
2321 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2322 -idirafter <dir>        Add <dir> to the end of the system include path.
2324 imacros
2325 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2326 -imacros <file> Accept definition of macros in <file>.
2328 imultilib
2329 C ObjC C++ ObjC++ Joined Separate
2330 -imultilib <dir>        Set <dir> to be the multilib include subdirectory.
2332 include
2333 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2334 -include <file> Include the contents of <file> before other files.
2336 iprefix
2337 C ObjC C++ ObjC++ Joined Separate
2338 -iprefix <path> Specify <path> as a prefix for next two options.
2340 isysroot
2341 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2342 -isysroot <dir> Set <dir> to be the system root directory.
2344 isystem
2345 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2346 -isystem <dir>  Add <dir> to the start of the system include path.
2348 iquote
2349 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2350 -iquote <dir>   Add <dir> to the end of the quote include path.
2352 iwithprefix
2353 C ObjC C++ ObjC++ Joined Separate
2354 -iwithprefix <dir>      Add <dir> to the end of the system include path.
2356 iwithprefixbefore
2357 C ObjC C++ ObjC++ Joined Separate
2358 -iwithprefixbefore <dir>        Add <dir> to the end of the main include path.
2360 lang-asm
2361 C Undocumented RejectDriver
2363 no-integrated-cpp
2364 Driver
2366 nostdinc
2367 C ObjC C++ ObjC++
2368 Do not search standard system include directories (those specified with -isystem will still be used).
2370 nostdinc++
2371 C++ ObjC++
2372 Do not search standard system include directories for C++.
2375 C ObjC C++ ObjC++ Joined Separate
2376 ; Documented in common.opt
2378 pedantic
2379 C ObjC C++ ObjC++ Alias(Wpedantic)
2380 ; Documented in common.opt
2382 print-objc-runtime-info
2383 ObjC ObjC++
2384 Generate C header of platform-specific features.
2386 remap
2387 C ObjC C++ ObjC++
2388 Remap file names when including files.
2390 std=c++98
2391 C++ ObjC++
2392 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2394 std=c++03
2395 C++ ObjC++ Alias(std=c++98)
2396 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2398 std=c++11
2399 C++ ObjC++
2400 Conform to the ISO 2011 C++ standard.
2402 std=c++0x
2403 C++ ObjC++ Alias(std=c++11) Undocumented
2404 Deprecated in favor of -std=c++11.
2406 std=c++1y
2407 C++ ObjC++ Alias(std=c++14) Undocumented
2408 Deprecated in favor of -std=c++14.
2410 std=c++14
2411 C++ ObjC++
2412 Conform to the ISO 2014 C++ standard.
2414 std=c++1z
2415 C++ ObjC++ Alias(std=c++17) Undocumented
2416 Deprecated in favor of -std=c++17.
2418 std=c++17
2419 C++ ObjC++
2420 Conform to the ISO 2017 C++ standard.
2422 std=c++2a
2423 C++ ObjC++ Alias(std=c++20) Undocumented
2424 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2426 std=c++20
2427 C++ ObjC++
2428 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2430 std=c++2b
2431 C++ ObjC++ Alias(std=c++23) Undocumented
2432 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2434 std=c++23
2435 C++ ObjC++
2436 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2438 std=c++2c
2439 C++ ObjC++ Alias(std=c++26)
2440 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
2442 std=c++26
2443 C++ ObjC++ Undocumented
2444 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
2446 std=c11
2447 C ObjC
2448 Conform to the ISO 2011 C standard.
2450 std=c1x
2451 C ObjC Alias(std=c11)
2452 Deprecated in favor of -std=c11.
2454 std=c17
2455 C ObjC
2456 Conform to the ISO 2017 C standard (published in 2018).
2458 std=c18
2459 C ObjC Alias(std=c17)
2460 Conform to the ISO 2017 C standard (published in 2018).
2462 std=c2x
2463 C ObjC
2464 Conform to the ISO 202X C standard draft (experimental and incomplete support).
2466 std=c89
2467 C ObjC Alias(std=c90)
2468 Conform to the ISO 1990 C standard.
2470 std=c90
2471 C ObjC
2472 Conform to the ISO 1990 C standard.
2474 std=c99
2475 C ObjC
2476 Conform to the ISO 1999 C standard.
2478 std=c9x
2479 C ObjC Alias(std=c99)
2480 Deprecated in favor of -std=c99.
2482 std=gnu++98
2483 C++ ObjC++
2484 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2485 corrigendum with GNU extensions.
2487 std=gnu++03
2488 C++ ObjC++ Alias(std=gnu++98)
2489 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2490 corrigendum with GNU extensions.
2492 std=gnu++11
2493 C++ ObjC++
2494 Conform to the ISO 2011 C++ standard with GNU extensions.
2496 std=gnu++0x
2497 C++ ObjC++ Alias(std=gnu++11) Undocumented
2498 Deprecated in favor of -std=gnu++11.
2500 std=gnu++1y
2501 C++ ObjC++ Alias(std=gnu++14) Undocumented
2502 Deprecated in favor of -std=gnu++14.
2504 std=gnu++14
2505 C++ ObjC++
2506 Conform to the ISO 2014 C++ standard with GNU extensions.
2508 std=gnu++1z
2509 C++ ObjC++ Alias(std=gnu++17) Undocumented
2510 Deprecated in favor of -std=gnu++17.
2512 std=gnu++17
2513 C++ ObjC++
2514 Conform to the ISO 2017 C++ standard with GNU extensions.
2516 std=gnu++2a
2517 C++ ObjC++ Alias(std=gnu++20) Undocumented
2518 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2520 std=gnu++20
2521 C++ ObjC++
2522 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2524 std=gnu++2b
2525 C++ ObjC++ Alias(std=gnu++23) Undocumented
2526 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2528 std=gnu++23
2529 C++ ObjC++
2530 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2532 std=gnu++2c
2533 C++ ObjC++ Alias(std=gnu++26)
2534 Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).
2536 std=gnu++26
2537 C++ ObjC++ Undocumented
2538 Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).
2540 std=gnu11
2541 C ObjC
2542 Conform to the ISO 2011 C standard with GNU extensions.
2544 std=gnu1x
2545 C ObjC Alias(std=gnu11)
2546 Deprecated in favor of -std=gnu11.
2548 std=gnu17
2549 C ObjC
2550 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2552 std=gnu18
2553 C ObjC Alias(std=gnu17)
2554 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2556 std=gnu2x
2557 C ObjC
2558 Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support).
2560 std=gnu89
2561 C ObjC Alias(std=gnu90)
2562 Conform to the ISO 1990 C standard with GNU extensions.
2564 std=gnu90
2565 C ObjC
2566 Conform to the ISO 1990 C standard with GNU extensions.
2568 std=gnu99
2569 C ObjC
2570 Conform to the ISO 1999 C standard with GNU extensions.
2572 std=gnu9x
2573 C ObjC Alias(std=gnu99)
2574 Deprecated in favor of -std=gnu99.
2576 std=iso9899:1990
2577 C ObjC Alias(std=c90)
2578 Conform to the ISO 1990 C standard.
2580 std=iso9899:199409
2581 C ObjC
2582 Conform to the ISO 1990 C standard as amended in 1994.
2584 std=iso9899:1999
2585 C ObjC Alias(std=c99)
2586 Conform to the ISO 1999 C standard.
2588 std=iso9899:199x
2589 C ObjC Alias(std=c99)
2590 Deprecated in favor of -std=iso9899:1999.
2592 std=iso9899:2011
2593 C ObjC Alias(std=c11)
2594 Conform to the ISO 2011 C standard.
2596 std=iso9899:2017
2597 C ObjC Alias(std=c17)
2598 Conform to the ISO 2017 C standard (published in 2018).
2600 std=iso9899:2018
2601 C ObjC Alias(std=c17)
2602 Conform to the ISO 2017 C standard (published in 2018).
2604 stdlib=
2605 Driver C++ ObjC++ Common Condition(ENABLE_STDLIB_OPTION) Var(flag_stdlib_kind) Joined Enum(stdlib_kind) RejectNegative Init(1)
2606 -stdlib=[libstdc++|libc++]      The standard library to be used for C++ headers
2607 and runtime.
2609 Enum
2610 Name(stdlib_kind) Type(int)
2612 EnumValue
2613 Enum(stdlib_kind) String(libstdc++) Value(1)
2615 EnumValue
2616 Enum(stdlib_kind) String(libc++) Value(2)
2618 traditional
2619 Driver
2621 traditional-cpp
2622 C ObjC C++ ObjC++
2623 Enable traditional preprocessing.
2625 trigraphs
2626 C ObjC C++ ObjC++
2627 -trigraphs      Support ISO C trigraphs.
2629 undef
2630 C ObjC C++ ObjC++ Var(flag_undef)
2631 Do not predefine system-specific and GCC-specific macros.
2634 C ObjC C++ ObjC++
2635 ; Documented in common.opt
2638 C ObjC C++ ObjC++
2639 ; Documented in common.opt
2641 ; This comment is to ensure we retain the blank line above.