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
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
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.
37 C ObjC C++ ObjC++ Warning Alias(Wall)
40 C ObjC C++ ObjC++ Alias(ansi)
43 C ObjC C++ ObjC++ Separate Alias(A) MissingArgError(assertion missing after %qs)
46 C ObjC C++ ObjC++ Joined Alias(A) MissingArgError(assertion missing after %qs)
49 C ObjC C++ ObjC++ Alias(C)
52 C ObjC C++ ObjC++ Alias(CC)
55 C ObjC C++ ObjC++ Separate Alias(D) MissingArgError(macro name missing after %qs)
58 C ObjC C++ ObjC++ Joined Alias(D) MissingArgError(macro name missing after %qs)
61 C ObjC C++ ObjC++ Alias(M)
64 C ObjC C++ ObjC++ Separate Alias(d)
67 C ObjC C++ ObjC++ Joined Alias(d)
70 C ObjC C++ ObjC++ Separate Alias(imacros) MissingArgError(missing filename after %qs)
73 C ObjC C++ ObjC++ Joined Alias(imacros) MissingArgError(missing filename after %qs)
76 C ObjC C++ ObjC++ Separate Alias(include) MissingArgError(missing filename after %qs)
79 C ObjC C++ ObjC++ Joined Alias(include) MissingArgError(missing filename after %qs)
82 C ObjC C++ ObjC++ Alias(I, -)
85 C ObjC C++ ObjC++ Separate Alias(I) MissingArgError(missing path after %qs)
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)
97 C ObjC C++ ObjC++ Separate Alias(iprefix)
100 C ObjC C++ ObjC++ JoinedOrMissing Alias(iprefix)
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)
121 Driver Alias(no-integrated-cpp)
124 C ObjC C++ ObjC++ Alias(P)
126 -no-standard-includes
127 C ObjC C++ ObjC++ Alias(nostdinc)
130 C ObjC C++ ObjC++ Alias(w)
133 C ObjC C++ ObjC++ Separate Alias(o)
136 C ObjC C++ ObjC++ Joined Alias(o)
139 C ObjC C++ ObjC++ Separate
142 C ObjC C++ ObjC++ Alias(pedantic)
145 C ObjC C++ ObjC++ Undocumented Alias(E)
147 -print-missing-file-dependencies
148 C ObjC C++ ObjC++ Alias(MG)
151 C ObjC C++ ObjC++ Alias(H)
154 Driver Alias(traditional)
157 C ObjC C++ ObjC++ Alias(traditional-cpp)
160 C ObjC C++ ObjC++ Alias(trigraphs)
163 C ObjC C++ ObjC++ Separate Alias(U) MissingArgError(macro name missing after %qs)
166 C ObjC C++ ObjC++ Joined Alias(U) MissingArgError(macro name missing after %qs)
169 C ObjC C++ ObjC++ Alias(MM)
172 Common C ObjC C++ ObjC++ Alias(v)
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>.
186 Do not discard comments.
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.
204 C Var(flag_gimple) Init(0)
205 Enable parsing GIMPLE.
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.
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.
229 Treat missing header files as generated files.
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.
241 Generate C++ Module dependency information.
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.
261 Do not generate #line directives.
264 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
265 -U<macro> Undefine <macro>.
268 C ObjC C++ ObjC++ LTO Var(warn_nsobject_attribute) Warning Init(1)
269 Warn if the NSObject attribute is applied to a non-typedef.
272 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
273 Warn about things that will change when compiling with an ABI-compliant compiler.
276 C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
277 Warn about things that change between the current -fabi-version and the specified version.
280 C++ ObjC++ Var(warn_abi_tag) Warning
281 Warn if a subobject has an abi_tag attribute that the complete object type does not have.
284 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
287 C ObjC Var(warn_absolute_value) Warning EnabledBy(Wextra)
288 Warn on suspicious calls of standard functions computing absolute values.
291 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
292 Warn about suspicious uses of memory addresses.
295 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
298 Enum(warn_aligned_new_level) String(none) Value(0)
301 Enum(warn_aligned_new_level) String(global) Value(1)
304 Enum(warn_aligned_new_level) String(all) Value(2)
307 C++ ObjC++ Alias(Waligned-new=,global,none)
308 Warn about 'new' of type with extended alignment without -faligned-new.
311 C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
312 -Waligned-new=[none|global|all] Warn even if 'new' uses a class member allocation function.
315 C ObjC C++ ObjC++ Warning
316 Enable most warning messages.
319 C ObjC C++ ObjC++ Var(warn_alloca) Warning
320 Warn on any use of alloca.
322 Walloc-size-larger-than=
323 C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined Host_Wide_Int ByteSize Warning Init(HOST_WIDE_INT_MAX)
324 -Walloc-size-larger-than=<bytes> Warn for calls to allocation functions that
325 attempt to allocate objects larger than the specified number of bytes.
327 Wno-alloc-size-larger-than
328 C ObjC C++ LTO ObjC++ Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
329 Disable Walloc-size-larger-than= warning. Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.
332 C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
333 Warn for calls to allocation functions that specify zero bytes.
336 C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
337 -Walloca-larger-than=<number> Warn on unbounded uses of
338 alloca, and on bounded uses of alloca whose bound can be larger than
341 Wno-alloca-larger-than
342 C ObjC C++ LTO ObjC++ Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
343 Disable Walloca-larger-than= warning. Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.
346 LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
350 C ObjC C++ ObjC++ Var(warn_array_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
351 Warn about comparisons between two operands of array type.
354 C ObjC C++ ObjC++ Warning Alias(Warray-parameter=, 2, 0)
355 Warn about mismatched declarations of array parameters and unsafe accesses to them.
358 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_array_parameter) IntegerRange(0, 2) LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) Warning
359 Warn about mismatched declarations of array parameters and unsafe accesses to them.
362 C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
363 Warn about accesses to interior zero-length array members.
366 ObjC ObjC++ Var(warn_assign_intercept) Warning
367 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
370 C ObjC Var(warn_bad_function_cast) Warning
371 Warn about casting functions to incompatible types.
374 C ObjC C++ ObjC++ Warning Alias(Wbidi-chars=,any,none)
378 C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(cpp_warn_bidirectional) CppReason(CPP_W_BIDIRECTIONAL) Var(warn_bidirectional) Init(bidirectional_unpaired) Enum(cpp_bidirectional_level) EnumSet
379 -Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters.
381 ; Required for these enum values.
386 Name(cpp_bidirectional_level) Type(int) UnknownError(argument %qs to %<-Wbidi-chars%> not recognized)
389 Enum(cpp_bidirectional_level) String(none) Value(bidirectional_none) Set(1)
392 Enum(cpp_bidirectional_level) String(unpaired) Value(bidirectional_unpaired) Set(1)
395 Enum(cpp_bidirectional_level) String(any) Value(bidirectional_any) Set(1)
398 Enum(cpp_bidirectional_level) String(ucn) Value(bidirectional_ucn) Set(2)
401 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
402 Warn about boolean expression compared with an integer value different from true/false.
405 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
406 Warn about certain operations on boolean expressions.
409 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
410 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
412 Wbuiltin-declaration-mismatch
413 C ObjC C++ ObjC++ Var(warn_builtin_declaration_mismatch) Init(1) Warning
414 Warn when a built-in function is declared with the wrong signature.
416 Wbuiltin-macro-redefined
417 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
418 Warn when a built-in preprocessor macro is undefined or redefined.
421 C ObjC CPP(cpp_warn_c11_c2x_compat) CppReason(CPP_W_C11_C2X_COMPAT) Var(warn_c11_c2x_compat) Init(-1) Warning
422 Warn about features not present in ISO C11, but present in ISO C2X.
425 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
426 Warn about features not present in ISO C90, but present in ISO C99.
429 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
430 Warn about features not present in ISO C99, but present in ISO C11.
433 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
434 Warn about C constructs that are not in the common subset of C and C++.
437 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
440 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
441 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
444 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
445 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
448 C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
451 C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
452 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
455 C++ ObjC++ Warning Alias(Wc++20-compat) Undocumented
458 C++ ObjC++ Var(warn_cxx20_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx20_compat) CppReason(CPP_W_CXX20_COMPAT)
459 Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.
462 C++ ObjC++ Var(warn_cxx11_extensions) Warning Init(1)
463 Warn about C++11 constructs in code compiled with an older standard.
466 C++ ObjC++ Var(warn_cxx14_extensions) Warning Init(1)
467 Warn about C++14 constructs in code compiled with an older standard.
470 C++ ObjC++ Var(warn_cxx17_extensions) Warning Init(1)
471 Warn about C++17 constructs in code compiled with an older standard.
474 C++ ObjC++ Var(warn_cxx20_extensions) Warning Init(1)
475 Warn about C++20 constructs in code compiled with an older standard.
478 C++ ObjC++ Var(warn_cxx23_extensions) Warning Init(1)
479 Warn about C++23 constructs in code compiled with an older standard.
482 C ObjC C++ ObjC++ Var(warn_cast_function_type) Warning EnabledBy(Wextra)
483 Warn about casts between incompatible function types.
486 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
487 Warn about casts which discard qualifiers.
490 C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
491 Warn about catch handlers of non-reference type.
494 C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0) IntegerRange(0, 3)
495 Warn about catch handlers of non-reference type.
498 C++ ObjC++ Var(warn_changes_meaning) Warning Init(1)
499 Complain about a name being declared as a class member after a previous use of the same name.
502 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
503 Warn about subscripts whose type is \"char\".
506 C ObjC C++ ObjC++ Warning WarnRemoved
507 Removed in GCC 9. This switch has no effect.
510 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
511 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
514 C++ ObjC++ Var(warn_comma_subscript) Warning
515 Warn about uses of a comma operator within a subscripting expression.
518 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
519 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
522 C ObjC C++ ObjC++ Warning Alias(Wcomment)
523 Synonym for -Wcomment.
525 Wconditionally-supported
526 C++ ObjC++ Var(warn_conditionally_supported) Warning
527 Warn for conditionally-supported constructs.
530 C ObjC C++ ObjC++ Var(warn_conversion) Warning
531 Warn for implicit type conversions that may change a value.
534 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
535 Warn for converting NULL from/to a non-pointer type.
538 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
539 ; Documented in common.opt
541 Wctad-maybe-unsupported
542 C++ ObjC++ Var(warn_ctad_maybe_unsupported) Warning
543 Warn when performing class template argument deduction on a type with no
547 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
548 Warn when all constructors and destructors are private.
551 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
552 Warn about dangling else.
555 C ObjC C++ LTO ObjC++ Alias(Wdangling-pointer=, 2, 0) Warning
556 Warn for uses of pointers to auto variables whose lifetime has ended.
559 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_dangling_pointer) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) IntegerRange(0, 2)
560 Warn for uses of pointers to auto variables whose lifetime has ended.
563 C++ ObjC++ Var(warn_dangling_reference) Warning LangEnabledBy(C++ ObjC++, Wall)
564 Warn when a reference is bound to a temporary whose lifetime has ended.
567 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
568 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
570 Wdeclaration-after-statement
571 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
572 Warn when a declaration is found after a statement.
575 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
576 Warn when deleting a pointer to incomplete type.
578 Wdelete-non-virtual-dtor
579 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
580 Warn about deleting polymorphic objects with non-virtual destructors.
583 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED)
584 ; Documented in common.opt
587 C++ ObjC++ Var(warn_deprecated_copy) Warning LangEnabledBy(C++ ObjC++, Wextra)
588 Mark implicitly-declared copy operations as deprecated if the class has a
589 user-provided copy operation.
591 Wdeprecated-copy-dtor
592 C++ ObjC++ Var(warn_deprecated_copy, 2) Warning
593 Mark implicitly-declared copy operations as deprecated if the class has a
594 user-provided copy operation or destructor.
596 Wdeprecated-enum-enum-conversion
597 C++ ObjC++ Var(warn_deprecated_enum_enum_conv) Warning
598 Warn about deprecated arithmetic conversions on operands of enumeration types.
600 Wdeprecated-enum-float-conversion
601 C++ ObjC++ Var(warn_deprecated_enum_float_conv) Warning
602 Warn about deprecated arithmetic conversions on operands where one is of enumeration
603 type and the other is of a floating-point type.
606 C ObjC Var(warn_designated_init) Init(1) Warning
607 Warn about positional initialization of structs requiring designated initializers.
609 Wdiscarded-array-qualifiers
610 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
611 Warn if qualifiers on arrays which are pointer targets are discarded.
613 Wdiscarded-qualifiers
614 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
615 Warn if type qualifiers on pointers are discarded.
618 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
619 Warn about compile-time integer division by zero.
622 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
623 Warn about duplicated branches in if-else statements.
626 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
627 Warn about duplicated conditions in an if-else-if chain.
630 C++ ObjC++ Var(warn_ecpp) Warning
631 Warn about violations of Effective C++ style rules.
634 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
635 Warn about an empty body in an if or else statement.
638 C ObjC C++ ObjC++ CPP(warn_endif_labels) CppReason(CPP_W_ENDIF_LABELS) Var(cpp_warn_endif_labels) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
639 Warn about stray tokens after #else and #endif.
642 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
643 Warn about comparison of different enum types.
646 C ObjC C++ ObjC++ Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
647 Warn about implicit conversion of enum types.
650 C ObjC Var(warn_enum_int_mismatch) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
651 Warn about enum/integer type mismatches.
655 ; Documented in common.opt
657 Werror-implicit-function-declaration
658 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
659 This switch is deprecated; use -Werror=implicit-function-declaration instead.
662 C++ ObjC++ Var(warn_exceptions) Init(1) Warning
663 Warn when an exception handler is shadowed by another handler.
666 C ObjC C++ ObjC++ Warning
670 C++ ObjC++ Var(warn_extra_semi) Warning
671 Warn about semicolon after in-class function definition.
674 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
675 Warn for implicit type conversions that cause loss of floating point precision.
678 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
679 Warn if testing floating point numbers for equality.
682 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
683 Warn about printf/scanf/strftime/strfmon format string anomalies.
686 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
687 Warn about format strings that contain NUL bytes.
690 C ObjC C++ ObjC++ Var(warn_format_diag) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
691 Warn about GCC format strings with strings unsuitable for diagnostics.
694 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
695 Warn if passing too many arguments to a function for its format string.
698 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
699 Warn about format strings that are not literals.
702 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
703 Warn about function calls with format strings that write past the end
704 of the destination region. Same as -Wformat-overflow=1.
707 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
708 Warn about possible security problems with format functions.
711 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
712 Warn about sign differences with format functions.
715 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
716 Warn about calls to snprintf and similar functions that truncate output.
717 Same as -Wformat-truncation=1.
720 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
721 Warn about strftime formats yielding 2-digit years.
724 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
725 Warn about zero-length formats.
728 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
729 Warn about printf/scanf/strftime/strfmon format string anomalies.
732 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_overflow) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
733 Warn about function calls with format strings that write past the end
734 of the destination region.
737 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_trunc) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
738 Warn about calls to snprintf and similar functions that truncate output.
740 Wflex-array-member-not-at-end
741 C C++ Var(warn_flex_array_member_not_at_end) Warning
742 Warn when a structure containing a C99 flexible array member as the last
743 field is not at the end of another structure.
746 C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
747 Warn when the field in a struct is not aligned.
750 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
751 Warn whenever type qualifiers are ignored.
754 C C++ Var(warn_ignored_attributes) Init(1) Warning
755 Warn whenever attributes are ignored.
758 C++ ObjC++ Var(warn_inaccessible_base) Init(1) Warning
759 Warn when a base is inaccessible in derived due to ambiguity.
761 Wincompatible-pointer-types
762 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
763 Warn when there is a conversion between pointers that have incompatible types.
766 C ObjC C++ LTO ObjC++ Var(warn_infinite_recursion) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
767 Warn for infinitely recursive calls.
769 Waddress-of-packed-member
770 C ObjC C++ ObjC++ Var(warn_address_of_packed_member) Init(1) Warning
771 Warn when the address of packed member of struct or union is taken.
774 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
775 Warn about variables which are initialized to themselves.
778 C++ ObjC++ Var(warn_init_list) Warning Init(1)
779 Warn about uses of std::initializer_list that can result in dangling pointers.
782 C++ ObjC++ Var(warn_interference_size) Warning Init(1)
783 Warn about nonsensical values of --param destructive-interference-size or
784 constructive-interference-size.
787 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
788 Warn about implicit declarations.
790 Wimplicit-fallthrough=
791 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
795 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
796 Warn about implicit conversions from \"float\" to \"double\".
798 Wexpansion-to-defined
799 C ObjC C++ ObjC++ CPP(warn_expansion_to_defined) CppReason(CPP_W_EXPANSION_TO_DEFINED) Var(cpp_warn_expansion_to_defined) Init(0) Warning EnabledBy(Wextra || Wpedantic)
800 Warn if \"defined\" is used outside #if.
802 Wimplicit-function-declaration
803 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
804 Warn about implicit function declarations.
807 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
808 Warn when a declaration does not specify a type.
811 C ObjC C++ ObjC++ Undocumented Ignore
813 Winherited-variadic-ctor
814 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
815 Warn about C++11 inheriting constructors when the base has a variadic constructor.
818 C ObjC Var(warn_int_conversion) Init(1) Warning
819 Warn about incompatible integer to pointer and pointer to integer conversions.
822 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
823 Warn for suspicious integer expressions in boolean context.
826 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
827 Warn when there is a cast to a pointer from an integer of a different size.
830 C++ ObjC++ Var(warn_invalid_constexpr) Init(-1) Warning
831 Warn when a function never produces a constant expression.
834 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
835 Warn about invalid uses of the \"offsetof\" macro.
838 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
839 Warn about PCH files that are found but not used.
842 C ObjC C++ ObjC++ CPP(cpp_warn_invalid_utf8) CppReason(CPP_W_INVALID_UTF8) Var(warn_invalid_utf8) Init(0) Warning
843 Warn about invalid UTF-8 characters.
846 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
847 Warn when a jump misses a variable initialization.
850 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
851 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
854 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
855 Warn when a logical operator is suspiciously always evaluating to true or false.
857 Wlogical-not-parentheses
858 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
859 Warn when logical not is used on the left hand side operand of a comparison.
862 C ObjC C++ ObjC++ CPP(cpp_warn_long_long) CppReason(CPP_W_LONG_LONG) Var(warn_long_long) Init(-1) Warning LangEnabledBy(C ObjC,Wc90-c99-compat)
863 Do not warn about using \"long long\" when -pedantic.
866 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
867 Warn about suspicious declarations of \"main\".
870 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
873 Wmemset-transposed-args
874 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
875 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
878 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
879 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
881 Wmisleading-indentation
882 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
883 Warn when the indentation of the code does not reflect the block structure.
886 C ObjC C++ ObjC++ Var(warn_mismatched_alloc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
887 Warn for deallocation calls with arguments returned from mismatched allocation
890 Wmismatched-new-delete
891 C++ ObjC++ Var(warn_mismatched_new_delete) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
892 Warn for mismatches between calls to operator new or delete and the corresponding
893 call to the allocation or deallocation function.
896 C++ ObjC++ Var(warn_mismatched_tags) Warning
897 Warn when a class is redeclared or referenced using a mismatched class-key.
900 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
901 Warn about possibly missing braces around initializers.
903 Wmissing-declarations
904 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
905 Warn about global functions without previous declarations.
907 Wmissing-field-initializers
908 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
909 Warn about missing fields in struct initializers.
912 C++ ObjC++ Var(warn_missing_requires) Init(1) Warning
913 Warn about likely missing requires keyword.
915 Wmissing-template-keyword
916 C++ ObjC++ Var(warn_missing_template_keyword) Init(1) Warning
917 Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.
919 Wmultistatement-macros
920 C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
921 Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
923 Wmultiple-inheritance
924 C++ ObjC++ Var(warn_multiple_inheritance) Warning
925 Warn on direct multiple inheritance.
928 C++ ObjC++ Var(warn_namespaces) Warning
929 Warn on namespace definition.
932 C++ ObjC++ Var(warn_nrvo)
933 Warn if the named return value optimization is not performed although it is allowed.
936 C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
937 Warn when fields in a struct with the packed attribute are misaligned.
939 Wrange-loop-construct
940 C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
941 Warn when a range-based for-loop is creating unnecessary copies.
944 C++ ObjC++ Var(warn_redundant_tags) Warning
945 Warn when a class or enumerated type is referenced using a redundant class-key.
948 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
949 Warn about missing sized deallocation functions.
952 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
953 Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
956 C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
957 Warn about divisions of two sizeof operators when the first one is applied
958 to an array and the divisor does not equal the size of the array element.
960 Wsizeof-pointer-memaccess
961 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
962 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
964 Wsizeof-array-argument
965 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
966 Warn when sizeof is applied on a parameter declared as an array.
969 C ObjC C++ LTO ObjC++ Warning Var(warn_string_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
970 Warn about calls to strcmp and strncmp used in equality expressions that
971 are necessarily true or false due to the length of one and size of the other
975 C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
976 Warn about buffer overflow in string manipulation functions like memcpy
980 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall, 2, 0) IntegerRange(0, 4)
981 Under the control of Object Size type, warn about buffer overflow in string
982 manipulation functions like memcpy and strcpy.
985 C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
986 Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
989 C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
990 Warn about truncation in string manipulation functions like strncat and strncpy.
993 C C++ Var(warn_strict_flex_arrays) Warning
994 Warn about inproper usages of flexible array members
995 according to the level of -fstrict-flex-arrays.
997 Wsuggest-attribute=format
998 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
999 Warn about functions which might be candidates for format attributes.
1002 C++ ObjC++ Var(warn_override) Warning
1003 Suggest that the override keyword be used when the declaration of a virtual
1004 function overrides another.
1007 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1008 Warn about enumerated switches, with no default, missing a case.
1011 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
1012 Warn about enumerated switches missing a \"default:\" statement.
1015 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
1016 Warn about all enumerated switches missing a specific case.
1019 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
1020 Warn about switches with boolean controlling expression.
1022 Wswitch-outside-range
1023 C ObjC C++ ObjC++ Var(warn_switch_outside_range) Warning Init(1)
1024 Warn about switch values that are outside of the switch's type range.
1027 C++ ObjC++ Var(warn_templates) Warning
1028 Warn on primary template declaration.
1031 C ObjC C++ ObjC++ Var(warn_missing_attributes) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1032 Warn about declarations of entities that may be missing attributes
1033 that related entities have been declared with.
1035 Wmissing-format-attribute
1036 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
1039 Wmissing-include-dirs
1040 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
1041 Warn about user-specified include directories that do not exist.
1043 Wmissing-parameter-type
1044 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
1045 Warn about function parameters declared without a type specifier in K&R-style functions.
1048 C ObjC Var(warn_missing_prototypes) Warning
1049 Warn about global functions without prototypes.
1051 Wmissing-variable-declarations
1052 C ObjC Var(warn_missing_variable_declarations) Warning
1053 Warn about global variables without previous declarations.
1056 C ObjC C++ ObjC++ WarnRemoved
1059 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
1060 Warn about use of multi-character character constants.
1063 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
1064 Warn about narrowing conversions within { } that are ill-formed in C++11.
1067 C ObjC Var(warn_nested_externs) Warning
1068 Warn about \"extern\" declarations not at file scope.
1071 C++ ObjC++ Var(warn_noexcept) Warning
1072 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
1075 C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
1076 Warn if C++17 noexcept function type will change the mangled name of a symbol.
1078 Wnon-template-friend
1079 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
1080 Warn when non-templatized friend functions are declared within a template.
1083 C++ ObjC++ Var(warn_class_conversion) Init(1) Warning
1084 Warn when a conversion function will never be called due to the type it converts to.
1087 C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
1088 Warn for unsafe raw memory writes to objects of class types.
1091 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
1092 Warn about non-virtual destructors.
1095 C ObjC C++ LTO ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=,warn_format >= 1,0)
1096 Warn about NULL being passed to argument slots marked as requiring non-NULL.
1099 C ObjC C++ LTO ObjC++ LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
1103 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1107 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
1111 C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(warn_normalize) CppReason(CPP_W_NORMALIZE) Init(normalized_C) Var(cpp_warn_normalize) Enum(cpp_normalize_level)
1112 -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
1114 ; Required for these enum values.
1119 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
1122 Enum(cpp_normalize_level) String(none) Value(normalized_none)
1125 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
1128 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
1131 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
1134 ObjC ObjC++ Var(warn_objc_root_class) Warning Init(1)
1135 Warn if a class interface has no superclass. Root classes may use an attribute
1136 to suppress this warning.
1139 C++ ObjC++ Var(warn_old_style_cast) Warning
1140 Warn if a C-style cast is used in a program.
1142 Wold-style-declaration
1143 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
1144 Warn for obsolescent usage in a declaration.
1146 Wold-style-definition
1147 C ObjC Var(warn_old_style_definition) Init(-1) Warning
1148 Warn if an old-style parameter definition is used.
1150 Wopenacc-parallelism
1151 C C++ Var(warn_openacc_parallelism) Warning
1152 Warn about potentially suboptimal choices related to OpenACC parallelism.
1155 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
1156 Warn if a simd directive is overridden by the vectorizer cost model.
1159 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1160 Warn if a string is longer than the maximum portable length specified by the standard.
1163 C++ ObjC++ Warning Alias(Woverloaded-virtual=,2,0)
1164 Warn about overloaded virtual function names.
1166 Woverloaded-virtual=
1167 C++ ObjC++ Joined UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
1168 Warn about overloaded virtual function names.
1171 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
1172 Warn about overriding initializers without side effects.
1174 Woverride-init-side-effects
1175 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
1176 Warn about overriding initializers with side effects.
1178 Wpacked-bitfield-compat
1179 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
1180 Warn about packed bit-fields whose offset changed in GCC 4.4.
1183 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1184 Warn about possibly missing parentheses.
1187 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
1188 ; Documented in common.opt
1191 C++ ObjC++ Var(warn_pessimizing_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1192 Warn about calling std::move on a local object in a return statement preventing copy elision.
1195 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
1196 Warn when converting the type of pointers to member functions.
1199 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1200 Warn about function pointer arithmetic.
1203 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
1204 Warn when a pointer differs in signedness in an assignment.
1207 C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
1208 Warn when a pointer is compared with a zero character constant.
1210 Wpointer-to-int-cast
1211 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
1212 Warn when a pointer is cast to an integer of a different size.
1215 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
1216 Warn about misuses of pragmas.
1219 C ObjC C++ ObjC++ Var(warn_prio_ctor_dtor) Init(1) Warning
1220 Warn if constructor or destructors with priorities from 0 to 100 are used.
1222 Wproperty-assign-default
1223 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
1224 Warn if a property for an Objective-C object has no assign semantics specified.
1227 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
1228 Warn if inherited methods are unimplemented.
1231 C++ Warning Alias(Wplacement-new=, 1, 0)
1232 Warn for placement new expressions with undefined behavior.
1235 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
1236 Warn for placement new expressions with undefined behavior.
1239 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
1240 Warn about multiple declarations of the same object.
1243 C++ ObjC++ Var(warn_redundant_move) Warning LangEnabledBy(C++ ObjC++,Wextra)
1244 Warn about redundant calls to std::move.
1247 C++ ObjC++ Var(warn_register) Warning
1248 Warn about uses of register storage specifier.
1251 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
1252 Warn when the compiler reorders code.
1255 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Init(-1)
1256 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
1258 Wscalar-storage-order
1259 C ObjC C++ ObjC++ Var(warn_scalar_storage_order) Init(1) Warning
1260 Warn on suspicious constructs involving reverse scalar storage order.
1263 ObjC ObjC++ Var(warn_selector) Warning
1264 Warn if a selector has multiple methods.
1267 C++ ObjC++ Var(warn_self_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1268 Warn when a value is moved to itself with std::move.
1271 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1272 Warn about possible violations of sequence point rules.
1275 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
1276 Warn if a local declaration hides an instance variable.
1279 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
1280 Warn if left shift of a signed value overflows.
1283 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
1284 Warn if left shift of a signed value overflows.
1286 Wshift-count-negative
1287 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
1288 Warn if shift count is negative.
1290 Wshift-count-overflow
1291 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
1292 Warn if shift count >= width of type.
1294 Wshift-negative-value
1295 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
1296 Warn if left shifting a negative value.
1299 C ObjC C++ ObjC++ Var(warn_arith_conv) Warning
1300 Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.
1303 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
1304 Warn about signed-unsigned comparisons.
1307 C ObjC C++ ObjC++ EnabledBy(Wextra)
1311 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
1312 Warn for implicit type conversions between signed and unsigned integers.
1315 C++ ObjC++ Var(warn_sign_promo) Warning
1316 Warn when overload promotes from unsigned to signed.
1318 Wstrict-null-sentinel
1319 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
1320 Warn about uncasted NULL used as sentinel.
1323 C ObjC Var(warn_strict_prototypes) Warning
1324 Warn about unprototyped function declarations.
1327 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
1331 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
1334 Wstrict-selector-match
1335 ObjC ObjC++ Var(warn_strict_selector_match) Warning
1336 Warn if type signatures of candidate methods do not match exactly.
1339 C C++ Var(warn_sync_nand) Init(1) Warning
1340 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
1343 C++ ObjC++ Var(warn_synth) Warning
1344 Deprecated. This switch has no effect.
1347 C ObjC C++ ObjC++ Warning
1348 ; Documented in common.opt
1350 Wtautological-compare
1351 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1352 Warn if a comparison always evaluates to true or false.
1355 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1356 Warn if a throw expression will always result in a call to terminate().
1359 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1360 Warn about features not present in traditional C.
1362 Wtraditional-conversion
1363 C ObjC Var(warn_traditional_conversion) Warning
1364 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1367 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1368 Warn if trigraphs are encountered that might affect the meaning of the program.
1370 Wundeclared-selector
1371 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1372 Warn about @selector()s without previously declared methods.
1375 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1376 Warn if an undefined macro is used in an #if directive.
1379 C ObjC C++ ObjC++ CPP(cpp_warn_unicode) CppReason(CPP_W_UNICODE) Var(warn_unicode) Init(1) Warning
1380 Warn about invalid forms of delimited or named escape sequences.
1383 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1386 Wmaybe-uninitialized
1387 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1391 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1392 Warn about unrecognized pragmas.
1394 Wunsuffixed-float-constants
1395 C ObjC Var(warn_unsuffixed_float_constants) Warning
1396 Warn about unsuffixed float constants.
1399 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1400 ; documented in common.opt
1402 Wunused-local-typedefs
1403 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1404 Warn when typedefs locally defined in a function are not used.
1407 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1408 Warn about macros defined in the main file that are not used.
1411 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1412 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1415 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1416 ; documented in common.opt
1418 Wunused-const-variable
1419 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1420 Warn when a const variable is unused.
1422 Wunused-const-variable=
1423 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
1424 Warn when a const variable is unused.
1426 ; Defining this option here in addition to common.opt is necessary
1427 ; in order for the default -Wall setting of -Wuse-after-free=2 to take
1431 LangEnabledBy(C ObjC C++ LTO ObjC++, Wall,2,0)
1435 C ObjC C++ ObjC++ CPP(warn_variadic_macros) CppReason(CPP_W_VARIADIC_MACROS) Var(cpp_warn_variadic_macros) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic || Wtraditional)
1436 Warn about using variadic macros.
1439 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1440 Warn about questionable usage of the macros used to retrieve variable arguments.
1443 C++ ObjC++ Warning Var(warn_vexing_parse) Init(1)
1444 Warn about the most vexing parse syntactic ambiguity.
1447 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1448 Warn if a variable length array is used.
1451 C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
1452 -Wvla-larger-than=<number> Warn on unbounded uses of variable-length
1453 arrays, and on bounded uses of variable-length arrays whose bound can be
1454 larger than <number> bytes.
1457 C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
1458 Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
1461 C ObjC C++ ObjC++ Var(warn_vla_parameter) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1462 Warn about mismatched declarations of VLA parameters.
1465 C++ ObjC++ Var(warn_volatile) Warning
1466 Warn about deprecated uses of volatile qualifier.
1468 Wvolatile-register-var
1469 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1470 Warn when a register variable is declared volatile.
1472 Wvirtual-inheritance
1473 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1474 Warn on direct virtual inheritance.
1476 Wvirtual-move-assign
1477 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1478 Warn if a virtual base has a non-trivial move assignment operator.
1481 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1482 In C++, nonzero means warn about deprecated conversion from string literals to 'char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard.
1485 C ObjC C++ ObjC++ Var(warn_xor_used_as_pow) Warning Init(1)
1486 Warn about xor operators where it appears the user meant exponentiation.
1488 Wzero-as-null-pointer-constant
1489 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1490 Warn when a literal '0' is used as null pointer.
1493 C ObjC C++ ObjC++ Var(warn_useless_cast) Warning
1494 Warn about useless casts.
1497 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1498 Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage.
1500 Welaborated-enum-base
1501 C++ ObjC++ Var(warn_elaborated_enum_base) Warning Init(1)
1502 Warn if an additional enum-base is used in an elaborated-type-specifier.
1504 Wduplicate-decl-specifier
1505 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1506 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1509 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
1510 Warn when an argument passed to a restrict-qualified parameter aliases with
1515 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1518 C ObjC C++ ObjC++ Joined
1519 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
1521 fabi-compat-version=
1522 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1523 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1526 C++ ObjC++ Var(flag_access_control) Init(1)
1527 Enforce class member access control semantics.
1530 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1531 -fada-spec-parent=unit Dump Ada specs as child units of given parent.
1534 C++ ObjC++ Alias(faligned-new=,1,0)
1535 Support C++17 allocation of over-aligned types.
1538 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1539 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1542 C++ ObjC++ WarnRemoved
1544 fallow-parameterless-variadic-functions
1546 Does nothing. Preserved for backward compatibility.
1548 falt-external-templates
1549 C++ ObjC++ WarnRemoved
1550 No longer supported.
1553 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1554 Recognize the \"asm\" keyword.
1556 ; Define extra predefined macros for use in libgcc.
1558 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1561 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1562 Recognize built-in functions.
1565 C ObjC C++ ObjC++ Joined
1567 fcanonical-system-headers
1569 Where shorter, use canonicalized paths to systems headers.
1572 C++ ObjC++ Var(flag_char8_t) Init(-1)
1573 Enable the char8_t fundamental type and use it as the type for UTF-8 string
1574 and character literals.
1576 fcheck-pointer-bounds
1577 C ObjC C++ ObjC++ LTO WarnRemoved
1578 Removed in GCC 9. This switch has no effect.
1580 fchkp-check-incomplete-type
1581 C ObjC C++ ObjC++ LTO WarnRemoved
1582 Removed in GCC 9. This switch has no effect.
1584 fchkp-zero-input-bounds-for-main
1585 C ObjC C++ ObjC++ LTO WarnRemoved
1586 Removed in GCC 9. This switch has no effect.
1588 fchkp-first-field-has-own-bounds
1589 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1590 Removed in GCC 9. This switch has no effect.
1593 C ObjC C++ ObjC++ LTO WarnRemoved
1594 Removed in GCC 9. This switch has no effect.
1596 fchkp-narrow-to-innermost-array
1597 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1598 Removed in GCC 9. This switch has no effect.
1600 fchkp-flexible-struct-trailing-arrays
1601 C ObjC C++ ObjC++ LTO WarnRemoved
1602 Removed in GCC 9. This switch has no effect.
1605 C ObjC C++ ObjC++ LTO WarnRemoved
1607 fchkp-use-fast-string-functions
1608 C ObjC C++ ObjC++ LTO WarnRemoved
1609 Removed in GCC 9. This switch has no effect.
1611 fchkp-use-nochk-string-functions
1612 C ObjC C++ ObjC++ LTO WarnRemoved
1613 Removed in GCC 9. This switch has no effect.
1615 fchkp-use-static-bounds
1616 C ObjC C++ ObjC++ LTO WarnRemoved
1617 Removed in GCC 9. This switch has no effect.
1619 fchkp-use-static-const-bounds
1620 C ObjC C++ ObjC++ LTO WarnRemoved
1621 Removed in GCC 9. This switch has no effect.
1623 fchkp-treat-zero-dynamic-size-as-infinite
1624 C ObjC C++ ObjC++ LTO WarnRemoved
1625 Removed in GCC 9. This switch has no effect.
1628 C ObjC C++ ObjC++ LTO WarnRemoved
1629 Removed in GCC 9. This switch has no effect.
1632 C ObjC C++ ObjC++ LTO WarnRemoved
1633 Removed in GCC 9. This switch has no effect.
1636 C ObjC C++ ObjC++ LTO WarnRemoved
1637 Removed in GCC 9. This switch has no effect.
1639 fchkp-instrument-calls
1640 C ObjC C++ ObjC++ LTO WarnRemoved
1641 Removed in GCC 9. This switch has no effect.
1643 fchkp-instrument-marked-only
1644 C ObjC C++ ObjC++ LTO WarnRemoved
1645 Removed in GCC 9. This switch has no effect.
1648 C ObjC C++ ObjC++ LTO WarnRemoved
1649 Removed in GCC 9. This switch has no effect.
1653 Removed in GCC 9. This switch has no effect.
1655 static-libmpxwrappers
1657 Removed in GCC 9. This switch has no effect.
1660 C ObjC C++ ObjC++ LTO Undocumented Ignore
1661 Removed in GCC 8. This switch has no effect.
1664 C++ ObjC++ Var(flag_concepts)
1665 Enable support for C++ concepts.
1668 C++ ObjC++ Var(flag_concepts_ts) Init(0)
1669 Enable certain features present in the Concepts TS.
1671 fconcepts-diagnostics-depth=
1672 C++ ObjC++ Joined RejectNegative UInteger Var(concepts_diagnostics_max_depth) Init(1)
1673 Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure.
1677 Allow the arguments of the '?' operator to have different types.
1681 Does nothing. Preserved for backward compatibility.
1683 fconstant-string-class=
1684 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1685 -fconst-string-class=<name> Use class <name> for constant strings.
1688 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1689 -fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
1691 fconstexpr-cache-depth=
1692 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_cache_depth) Init(8)
1693 -fconstexpr-cache-depth=<number> Specify maximum constexpr recursion cache depth.
1695 fconstexpr-fp-except
1696 C++ ObjC++ Var(flag_constexpr_fp_except) Init(0)
1697 Allow IEC559 floating point exceptions in constant expressions.
1699 fconstexpr-loop-limit=
1700 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1701 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1703 fconstexpr-ops-limit=
1704 C++ ObjC++ Joined RejectNegative Host_Wide_Int Var(constexpr_ops_limit) Init(33554432)
1705 -fconstexpr-ops-limit=<number> Specify maximum number of constexpr operations during a single constexpr evaluation.
1708 C++ ObjC++ Var(flag_contracts) Init(0)
1709 Enable certain features present in drafts of C++ Contracts.
1712 Name(on_off) Type(int) UnknownError(argument %qs must be either %<on%> or %<off%>)
1715 Enum(on_off) String(off) Value(0)
1718 Enum(on_off) String(on) Value(1)
1720 fcontract-assumption-mode=
1721 C++ Joined RejectNegative
1722 -fcontract-assumption-mode=[on|off] Enable or disable treating axiom level contracts as assumptions (default on).
1724 fcontract-build-level=
1725 C++ Joined RejectNegative
1726 -fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for.
1728 fcontract-strict-declarations=
1729 C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative
1730 -fcontract-strict-declarations=[on|off] Enable or disable warnings on generalized redeclaration of functions with contracts (default off).
1733 C++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative
1734 -fcontract-mode=[on|off] Enable or disable all contract facilities (default on).
1736 fcontract-continuation-mode=
1737 C++ Joined RejectNegative
1738 -fcontract-continuation-mode=[on|off] Enable or disable contract continuation mode (default off).
1741 C++ Joined RejectNegative
1742 -fcontract-role=<name>:<semantics> Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume).
1745 C++ Joined RejectNegative
1746 -fcontract-semantic=<level>:<semantic> Specify the concrete semantics for level.
1749 C++ LTO Var(flag_coroutines)
1750 Enable C++ coroutines (experimental).
1754 Emit debug annotations during preprocessing.
1758 Does nothing. Preserved for backward compatibility.
1761 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1762 Factor complex constructors and destructors to favor space over speed.
1766 Does nothing. Preserved for backward compatibility.
1768 fdiagnostics-show-template-tree
1769 C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1770 Print hierarchical comparisons when template types are mismatched.
1774 Preprocess directives only.
1776 fdollars-in-identifiers
1778 Permit '$' as an identifier character.
1781 C ObjC C++ ObjC++ Joined RejectNegative
1782 -fmacro-prefix-map=<old>=<new> Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE().
1785 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1786 Write all declarations as Ada code transitively.
1789 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1790 Write all declarations as Ada code for the given file only.
1793 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1796 C++ ObjC++ Var(flag_elide_type) Init(1)
1797 Do not elide common elements in template comparisons.
1800 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1801 Generate code to check exception specifications.
1804 C++ ObjC++ WarnRemoved
1807 C ObjC C++ ObjC++ Joined RejectNegative
1808 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
1810 fextended-identifiers
1812 Permit universal character names (\\u and \\U) in identifiers.
1815 C ObjC C++ ObjC++ Joined RejectNegative
1816 -finput-charset=<cset> Specify the default character set for source files.
1819 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1820 Support dynamic initialization of thread-local variables in a different translation unit.
1823 C++ ObjC++ WarnRemoved
1825 ffold-simple-inlines
1826 C++ ObjC++ Optimization Var(flag_fold_simple_inlines)
1827 Fold calls to simple inline functions.
1830 C++ ObjC++ WarnRemoved
1834 Do not assume that standard C libraries and \"main\" exist.
1837 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1838 Recognize GNU-defined keywords.
1841 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1842 Generate code for GNU runtime environment.
1845 C ObjC Var(flag_gnu89_inline) Init(-1)
1846 Use traditional GNU semantics for inline functions.
1849 C++ ObjC++ WarnRemoved
1852 C++ ObjC++ Optimization Alias(fexceptions) Warn({%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)})
1855 C++ ObjC++ WarnRemoved
1859 Assume normal C execution environment.
1862 C++ ObjC++ WarnRemoved
1863 No longer supported.
1866 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1867 Export functions even if they can be inlined.
1870 C++ ObjC++ Var(flag_implicit_constexpr)
1871 Make inline functions constexpr by default.
1873 fimplicit-inline-templates
1874 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1875 Emit implicit instantiations of inline templates.
1878 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1879 Emit implicit instantiations of templates.
1881 fnew-inheriting-ctors
1882 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1883 Implement C++17 inheriting constructor semantics.
1886 C++ ObjC++ WarnRemoved
1888 fkeep-inline-dllexport
1889 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1890 Don't emit dllexported inline functions unless needed.
1893 C++ ObjC++ WarnRemoved
1895 flax-vector-conversions
1896 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1897 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1900 C++ ObjC++ Var(flag_modules) Integer Init(0)
1901 Enable C++ modules-ts (experimental).
1904 C++ ObjC++ Undocumented RejectNegative Var(flag_modules,0) Integer
1908 C++ ObjC RejectNegative Var(flag_header_unit,0) Integer
1909 Enable C++ header module (experimental).
1912 C++ ObjC++ Joined RejectNegative Undocumented
1914 fmodule-implicit-inline
1915 C++ ObjC++ Var(flag_module_implicit_inline,0) Integer
1916 Member functions defined within their class are inline in module purview.
1919 C++ ObjC RejectNegative Var(flag_module_only) Integer
1920 Only emit Compiled Module Interface.
1923 C++ ObjC++ Joined RejectNegative MissingArgError(missing mapper)
1924 Mapper for module to CMI files.
1927 C++ ObjC++ Var(flag_module_lazy) Init(1)
1928 Enable lazy module importing.
1930 fmodule-version-ignore
1931 C++ ObjC Var(flag_module_version_ignore) Integer
1932 ; undocumented, Very dangerous, but occasionally useful
1934 Winvalid-imported-macros
1935 C++ ObjC++ Var(warn_imported_macros) Warning
1936 Warn about macros that have conflicting header units definitions.
1938 Wcompare-distinct-pointer-types
1939 C ObjC Var(warn_compare_distinct_pointer_types) Warning Init(1)
1940 Warn if pointers of distinct types are compared without a cast.
1942 flang-info-include-translate
1943 C++ Var(note_include_translate_yes)
1944 Note #include directives translated to import declarations.
1946 flang-info-include-translate-not
1947 C++ Var(note_include_translate_no)
1948 Note #include directives not translated to import declarations, and not known to be textual.
1950 flang-info-include-translate=
1951 C++ Joined RejectNegative MissingArgError(missing header name)
1952 Note a #include translation of a specific header.
1954 flang-info-module-cmi
1955 C++ Var(note_module_cmi_yes)
1956 Note Compiled Module Interface pathnames.
1958 flang-info-module-cmi=
1959 C++ Joined RejectNegative MissingArgError(missing module name)
1960 Note Compiled Module Interface pathname of a specific module or header-unit.
1963 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1964 fmax-include-depth=<number> Set the maximum depth of the nested #include.
1967 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1968 Don't warn about uses of Microsoft extensions.
1971 C ObjC C++ ObjC++ WarnRemoved
1974 C ObjC C++ ObjC++ WarnRemoved
1977 C ObjC C++ ObjC++ WarnRemoved
1979 fname-mangling-version-
1980 C++ ObjC++ Joined WarnRemoved
1983 C++ ObjC++ WarnRemoved
1986 C++ ObjC++ Var(flag_new_ttp)
1987 Implement resolution of DR 150 for matching of template template arguments.
1990 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime)
1991 Generate code for NeXT (Apple macOS) runtime environment.
1994 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
1995 Assume that receivers of Objective-C messages may be nil.
1998 ObjC ObjC++ Var(flag_local_ivars) Init(1)
1999 Allow access to instance variables as if they were local declarations within instance method implementations.
2002 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
2003 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
2006 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
2009 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
2012 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
2015 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
2018 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
2021 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
2024 C++ ObjC++ WarnRemoved
2027 C++ ObjC++ Optimization Var(flag_nothrow_opt)
2028 Treat a throw() exception specification as noexcept to improve code size.
2031 ObjC ObjC++ LTO Joined RejectNegative UInteger Var(flag_objc_abi)
2032 Specify which ABI to use for Objective-C family code and meta-data generation.
2034 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
2035 ; to initialize any non-POD ivars in Objective-C++ classes.
2036 fobjc-call-cxx-cdtors
2037 ObjC++ Var(flag_objc_call_cxx_cdtors)
2038 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
2040 fobjc-direct-dispatch
2041 ObjC ObjC++ Var(flag_objc_direct_dispatch)
2042 Allow fast jumps to the message dispatcher.
2044 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
2045 ; @try, etc.) in source code.
2047 ObjC ObjC++ Var(flag_objc_exceptions)
2048 Enable Objective-C exception and synchronization syntax.
2051 ObjC ObjC++ LTO Var(flag_objc_gc)
2052 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
2055 ObjC ObjC++ Var(flag_objc_nilcheck,1)
2056 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
2058 ; Nonzero means that we generate NeXT setjmp based exceptions.
2059 fobjc-sjlj-exceptions
2060 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
2061 Enable Objective-C setjmp exception handling runtime.
2064 ObjC ObjC++ Var(flag_objc1_only)
2065 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
2068 C ObjC C++ ObjC++ LTO Var(flag_openacc)
2072 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
2073 Specify default OpenACC compute dimensions.
2076 C ObjC C++ ObjC++ LTO Var(flag_openmp)
2077 Enable OpenMP (implies -frecursive in Fortran).
2080 C ObjC C++ ObjC++ Var(flag_openmp_simd)
2081 Enable OpenMP's SIMD directives.
2085 Recognize C++ keywords like \"compl\" and \"xor\".
2089 Does nothing. Preserved for backward compatibility.
2096 Look for and use PCH files even when preprocessing.
2099 C++ ObjC++ Var(flag_permissive)
2100 Downgrade conformance errors to warnings.
2103 C ObjC Var(flag_plan9_extensions)
2104 Enable Plan 9 language extensions.
2108 Treat the input file as already preprocessed.
2110 ftrack-macro-expansion
2111 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
2112 ; converted into ftrack-macro-expansion=
2114 ftrack-macro-expansion=
2115 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
2116 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
2119 C++ ObjC++ Var(flag_pretty_templates) Init(1)
2120 Do not pretty-print template specializations as the template signature followed by the arguments.
2122 fprintf-return-value
2123 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
2124 Treat known sprintf return values as constants.
2126 freplace-objc-classes
2127 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
2128 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
2131 C++ ObjC++ WarnRemoved
2132 Removed in GCC 10. This switch has no effect.
2135 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
2136 Generate run time type descriptor information.
2139 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
2140 Use the narrowest integer type possible for enumeration types.
2143 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
2144 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
2147 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
2148 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
2151 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
2152 Make \"char\" signed by default.
2155 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
2156 Enable C++14 sized deallocation support.
2159 C C++ Common Alias(fstrict-flex-arrays=,3,0)
2161 fstrict-flex-arrays=
2162 C C++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3)
2163 -fstrict-flex-arrays=<level> Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members.
2166 C++ ObjC++ WarnRemoved
2169 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
2170 -fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order.
2173 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
2176 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
2179 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
2182 Enum(sso_struct) String(native) Value(SSO_NATIVE)
2185 C++ ObjC++ Var(flag_detailed_statistics)
2186 Display statistics accumulated during compilation.
2189 C++ ObjC++ Optimization Var(flag_strict_enums)
2190 Assume that values of enumeration type are always within the minimum range of that type.
2193 C++ ObjC++ WarnRemoved
2196 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
2197 Follow the C++17 evaluation order requirements for assignment expressions,
2198 shift, member function calls, etc.
2201 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
2202 Follow the C++17 evaluation order requirements for assignment expressions,
2203 shift, member function calls, etc.
2206 Name(strong_eval_order) Type(int)
2209 Enum(strong_eval_order) String(none) Value(0)
2212 Enum(strong_eval_order) String(some) Value(1)
2215 Enum(strong_eval_order) String(all) Value(2)
2217 ftemplate-backtrace-limit=
2218 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
2219 Set the maximum number of template instantiation notes for a single warning or error.
2222 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
2225 C++ ObjC++ Joined RejectNegative UInteger
2226 -ftemplate-depth=<number> Specify maximum template instantiation depth.
2229 C++ ObjC++ WarnRemoved
2232 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
2233 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
2236 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
2237 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
2240 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
2241 Make \"char\" unsigned by default.
2244 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
2245 Use __cxa_atexit to register destructors.
2247 fuse-cxa-get-exception-ptr
2248 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
2249 Use __cxa_get_exception_ptr in exception handling.
2251 fvisibility-inlines-hidden
2253 Marks all inlined functions and methods as having hidden visibility.
2255 fvisibility-ms-compat
2256 C++ ObjC++ Var(flag_visibility_ms_compat)
2257 Changes visibility to match Microsoft Visual Studio by default.
2260 C++ ObjC++ WarnRemoved
2261 No longer supported.
2264 C++ ObjC++ WarnRemoved
2265 No longer supported.
2268 C++ ObjC++ Var(flag_weak) Init(1)
2269 Emit common-like symbols as weak symbols.
2272 C ObjC C++ ObjC++ Joined RejectNegative
2273 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
2276 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
2277 Generate a #line directive pointing at the current working directory.
2280 C++ ObjC++ WarnRemoved
2281 No longer supported.
2284 ObjC ObjC++ Var(flag_zero_link)
2285 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
2288 ObjC ObjC++ Driver Var(flag_gen_declaration) RejectNegative
2289 Dump declarations to a .decl file.
2291 femit-struct-debug-baseonly
2293 -femit-struct-debug-baseonly Aggressive reduced debug info for structs.
2295 femit-struct-debug-reduced
2297 -femit-struct-debug-reduced Conservative reduced debug info for structs.
2299 femit-struct-debug-detailed=
2300 C ObjC C++ ObjC++ Joined
2301 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
2303 fext-numeric-literals
2304 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
2305 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
2306 number literal rather than a user-defined number literal.
2309 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2310 -idirafter <dir> Add <dir> to the end of the system include path.
2313 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2314 -imacros <file> Accept definition of macros in <file>.
2317 C ObjC C++ ObjC++ Joined Separate
2318 -imultilib <dir> Set <dir> to be the multilib include subdirectory.
2321 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2322 -include <file> Include the contents of <file> before other files.
2325 C ObjC C++ ObjC++ Joined Separate
2326 -iprefix <path> Specify <path> as a prefix for next two options.
2329 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2330 -isysroot <dir> Set <dir> to be the system root directory.
2333 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2334 -isystem <dir> Add <dir> to the start of the system include path.
2337 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2338 -iquote <dir> Add <dir> to the end of the quote include path.
2341 C ObjC C++ ObjC++ Joined Separate
2342 -iwithprefix <dir> Add <dir> to the end of the system include path.
2345 C ObjC C++ ObjC++ Joined Separate
2346 -iwithprefixbefore <dir> Add <dir> to the end of the main include path.
2349 C Undocumented RejectDriver
2356 Do not search standard system include directories (those specified with -isystem will still be used).
2360 Do not search standard system include directories for C++.
2363 C ObjC C++ ObjC++ Joined Separate
2364 ; Documented in common.opt
2367 C ObjC C++ ObjC++ Alias(Wpedantic)
2368 ; Documented in common.opt
2370 print-objc-runtime-info
2372 Generate C header of platform-specific features.
2376 Remap file names when including files.
2380 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2383 C++ ObjC++ Alias(std=c++98)
2384 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2388 Conform to the ISO 2011 C++ standard.
2391 C++ ObjC++ Alias(std=c++11) Undocumented
2392 Deprecated in favor of -std=c++11.
2395 C++ ObjC++ Alias(std=c++14) Undocumented
2396 Deprecated in favor of -std=c++14.
2400 Conform to the ISO 2014 C++ standard.
2403 C++ ObjC++ Alias(std=c++17) Undocumented
2404 Deprecated in favor of -std=c++17.
2408 Conform to the ISO 2017 C++ standard.
2411 C++ ObjC++ Alias(std=c++20) Undocumented
2412 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2416 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2419 C++ ObjC++ Alias(std=c++23) Undocumented
2420 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2424 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2427 C++ ObjC++ Alias(std=c++26)
2428 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
2431 C++ ObjC++ Undocumented
2432 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
2436 Conform to the ISO 2011 C standard.
2439 C ObjC Alias(std=c11)
2440 Deprecated in favor of -std=c11.
2444 Conform to the ISO 2017 C standard (published in 2018).
2447 C ObjC Alias(std=c17)
2448 Conform to the ISO 2017 C standard (published in 2018).
2452 Conform to the ISO 202X C standard draft (experimental and incomplete support).
2455 C ObjC Alias(std=c90)
2456 Conform to the ISO 1990 C standard.
2460 Conform to the ISO 1990 C standard.
2464 Conform to the ISO 1999 C standard.
2467 C ObjC Alias(std=c99)
2468 Deprecated in favor of -std=c99.
2472 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2473 corrigendum with GNU extensions.
2476 C++ ObjC++ Alias(std=gnu++98)
2477 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2478 corrigendum with GNU extensions.
2482 Conform to the ISO 2011 C++ standard with GNU extensions.
2485 C++ ObjC++ Alias(std=gnu++11) Undocumented
2486 Deprecated in favor of -std=gnu++11.
2489 C++ ObjC++ Alias(std=gnu++14) Undocumented
2490 Deprecated in favor of -std=gnu++14.
2494 Conform to the ISO 2014 C++ standard with GNU extensions.
2497 C++ ObjC++ Alias(std=gnu++17) Undocumented
2498 Deprecated in favor of -std=gnu++17.
2502 Conform to the ISO 2017 C++ standard with GNU extensions.
2505 C++ ObjC++ Alias(std=gnu++20) Undocumented
2506 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2510 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2513 C++ ObjC++ Alias(std=gnu++23) Undocumented
2514 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2518 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2521 C++ ObjC++ Alias(std=gnu++26)
2522 Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).
2525 C++ ObjC++ Undocumented
2526 Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).
2530 Conform to the ISO 2011 C standard with GNU extensions.
2533 C ObjC Alias(std=gnu11)
2534 Deprecated in favor of -std=gnu11.
2538 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2541 C ObjC Alias(std=gnu17)
2542 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2546 Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support).
2549 C ObjC Alias(std=gnu90)
2550 Conform to the ISO 1990 C standard with GNU extensions.
2554 Conform to the ISO 1990 C standard with GNU extensions.
2558 Conform to the ISO 1999 C standard with GNU extensions.
2561 C ObjC Alias(std=gnu99)
2562 Deprecated in favor of -std=gnu99.
2565 C ObjC Alias(std=c90)
2566 Conform to the ISO 1990 C standard.
2570 Conform to the ISO 1990 C standard as amended in 1994.
2573 C ObjC Alias(std=c99)
2574 Conform to the ISO 1999 C standard.
2577 C ObjC Alias(std=c99)
2578 Deprecated in favor of -std=iso9899:1999.
2581 C ObjC Alias(std=c11)
2582 Conform to the ISO 2011 C standard.
2585 C ObjC Alias(std=c17)
2586 Conform to the ISO 2017 C standard (published in 2018).
2589 C ObjC Alias(std=c17)
2590 Conform to the ISO 2017 C standard (published in 2018).
2593 Driver C++ ObjC++ Common Condition(ENABLE_STDLIB_OPTION) Var(flag_stdlib_kind) Joined Enum(stdlib_kind) RejectNegative Init(1)
2594 -stdlib=[libstdc++|libc++] The standard library to be used for C++ headers
2598 Name(stdlib_kind) Type(int)
2601 Enum(stdlib_kind) String(libstdc++) Value(1)
2604 Enum(stdlib_kind) String(libc++) Value(2)
2611 Enable traditional preprocessing.
2615 -trigraphs Support ISO C trigraphs.
2618 C ObjC C++ ObjC++ Var(flag_undef)
2619 Do not predefine system-specific and GCC-specific macros.
2623 ; Documented in common.opt
2627 ; Documented in common.opt
2629 ; This comment is to ensure we retain the blank line above.