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