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