1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2022 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++ Joined 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++)
350 LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
354 C ObjC C++ ObjC++ Var(warn_array_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
355 Warn about comparisons between two operands of array type.
358 C ObjC C++ ObjC++ Warning Alias(Warray-parameter=, 2, 0)
359 Warn about mismatched declarations of array parameters and unsafe accesses to them.
362 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_array_parameter) IntegerRange(0, 2) LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) Warning
363 Warn about mismatched declarations of array parameters and unsafe accesses to them.
366 C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
367 Warn about accesses to interior zero-length array members.
370 ObjC ObjC++ Var(warn_assign_intercept) Warning
371 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
374 C ObjC Var(warn_bad_function_cast) Warning
375 Warn about casting functions to incompatible types.
378 C ObjC C++ ObjC++ Warning Alias(Wbidi-chars=,any,none)
382 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)
383 -Wbidi-chars=[none|unpaired|any] Warn about UTF-8 bidirectional control characters.
385 ; Required for these enum values.
390 Name(cpp_bidirectional_level) Type(int) UnknownError(argument %qs to %<-Wbidi-chars%> not recognized)
393 Enum(cpp_bidirectional_level) String(none) Value(bidirectional_none)
396 Enum(cpp_bidirectional_level) String(unpaired) Value(bidirectional_unpaired)
399 Enum(cpp_bidirectional_level) String(any) Value(bidirectional_any)
402 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
403 Warn about boolean expression compared with an integer value different from true/false.
406 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
407 Warn about certain operations on boolean expressions.
410 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
411 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
413 Wbuiltin-declaration-mismatch
414 C ObjC C++ ObjC++ Var(warn_builtin_declaration_mismatch) Init(1) Warning
415 Warn when a built-in function is declared with the wrong signature.
417 Wbuiltin-macro-redefined
418 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
419 Warn when a built-in preprocessor macro is undefined or redefined.
422 C ObjC CPP(cpp_warn_c11_c2x_compat) CppReason(CPP_W_C11_C2X_COMPAT) Var(warn_c11_c2x_compat) Init(-1) Warning
423 Warn about features not present in ISO C11, but present in ISO C2X.
426 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
427 Warn about features not present in ISO C90, but present in ISO C99.
430 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
431 Warn about features not present in ISO C99, but present in ISO C11.
434 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
435 Warn about C constructs that are not in the common subset of C and C++.
438 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
441 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
442 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
445 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
446 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
449 C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
452 C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
453 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
456 C++ ObjC++ Warning Alias(Wc++20-compat) Undocumented
459 C++ ObjC++ Var(warn_cxx20_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
460 Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.
463 C++ ObjC++ Var(warn_cxx11_extensions) Warning LangEnabledBy(C++ ObjC++) Init(1)
464 Warn about C++11 constructs in code compiled with an older standard.
467 C++ ObjC++ Var(warn_cxx14_extensions) Warning LangEnabledBy(C++ ObjC++) Init(1)
468 Warn about C++14 constructs in code compiled with an older standard.
471 C++ ObjC++ Var(warn_cxx17_extensions) Warning LangEnabledBy(C++ ObjC++) Init(1)
472 Warn about C++17 constructs in code compiled with an older standard.
475 C++ ObjC++ Var(warn_cxx20_extensions) Warning LangEnabledBy(C++ ObjC++) Init(1)
476 Warn about C++20 constructs in code compiled with an older standard.
479 C++ ObjC++ Var(warn_cxx23_extensions) Warning LangEnabledBy(C++ ObjC++) Init(1)
480 Warn about C++23 constructs in code compiled with an older standard.
483 C ObjC C++ ObjC++ Var(warn_cast_function_type) Warning EnabledBy(Wextra)
484 Warn about casts between incompatible function types.
487 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
488 Warn about casts which discard qualifiers.
491 C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
492 Warn about catch handlers of non-reference type.
495 C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0) IntegerRange(0, 3)
496 Warn about catch handlers of non-reference type.
499 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
500 Warn about subscripts whose type is \"char\".
503 C ObjC C++ ObjC++ Warning WarnRemoved
504 Removed in GCC 9. This switch has no effect.
507 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
508 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
511 C++ ObjC++ Var(warn_comma_subscript) Warning
512 Warn about uses of a comma operator within a subscripting expression.
515 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
516 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
519 C ObjC C++ ObjC++ Warning Alias(Wcomment)
520 Synonym for -Wcomment.
522 Wconditionally-supported
523 C++ ObjC++ Var(warn_conditionally_supported) Warning
524 Warn for conditionally-supported constructs.
527 C ObjC C++ ObjC++ Var(warn_conversion) Warning
528 Warn for implicit type conversions that may change a value.
531 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
532 Warn for converting NULL from/to a non-pointer type.
535 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
536 ; Documented in common.opt
538 Wctad-maybe-unsupported
539 C++ ObjC++ Var(warn_ctad_maybe_unsupported) Warning
540 Warn when performing class template argument deduction on a type with no
544 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
545 Warn when all constructors and destructors are private.
548 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
549 Warn about dangling else.
552 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
553 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
555 Wdeclaration-after-statement
556 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
557 Warn when a declaration is found after a statement.
560 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
561 Warn when deleting a pointer to incomplete type.
563 Wdelete-non-virtual-dtor
564 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
565 Warn about deleting polymorphic objects with non-virtual destructors.
568 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED)
569 ; Documented in common.opt
572 C++ ObjC++ Var(warn_deprecated_copy) Warning LangEnabledBy(C++ ObjC++, Wextra)
573 Mark implicitly-declared copy operations as deprecated if the class has a
574 user-provided copy operation.
576 Wdeprecated-copy-dtor
577 C++ ObjC++ Var(warn_deprecated_copy, 2) Warning
578 Mark implicitly-declared copy operations as deprecated if the class has a
579 user-provided copy operation or destructor.
581 Wdeprecated-enum-enum-conversion
582 C++ ObjC++ Var(warn_deprecated_enum_enum_conv) Warning
583 Warn about deprecated arithmetic conversions on operands of enumeration types.
585 Wdeprecated-enum-float-conversion
586 C++ ObjC++ Var(warn_deprecated_enum_float_conv) Warning
587 Warn about deprecated arithmetic conversions on operands where one is of enumeration
588 type and the other is of a floating-point type.
591 C ObjC Var(warn_designated_init) Init(1) Warning
592 Warn about positional initialization of structs requiring designated initializers.
594 Wdiscarded-array-qualifiers
595 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
596 Warn if qualifiers on arrays which are pointer targets are discarded.
598 Wdiscarded-qualifiers
599 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
600 Warn if type qualifiers on pointers are discarded.
603 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
604 Warn about compile-time integer division by zero.
607 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
608 Warn about duplicated branches in if-else statements.
611 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
612 Warn about duplicated conditions in an if-else-if chain.
615 C++ ObjC++ Var(warn_ecpp) Warning
616 Warn about violations of Effective C++ style rules.
619 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
620 Warn about an empty body in an if or else statement.
623 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)
624 Warn about stray tokens after #else and #endif.
627 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
628 Warn about comparison of different enum types.
631 C ObjC C++ ObjC++ Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
632 Warn about implicit conversion of enum types.
636 ; Documented in common.opt
638 Werror-implicit-function-declaration
639 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
640 This switch is deprecated; use -Werror=implicit-function-declaration instead.
643 C++ ObjC++ Var(warn_exceptions) Init(1) Warning
644 Warn when an exception handler is shadowed by another handler.
647 C ObjC C++ ObjC++ Warning
651 C++ ObjC++ Var(warn_extra_semi) Warning
652 Warn about semicolon after in-class function definition.
655 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
656 Warn for implicit type conversions that cause loss of floating point precision.
659 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
660 Warn if testing floating point numbers for equality.
663 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
664 Warn about printf/scanf/strftime/strfmon format string anomalies.
667 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
668 Warn about format strings that contain NUL bytes.
671 C ObjC C++ ObjC++ Var(warn_format_diag) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
672 Warn about GCC format strings with strings unsuitable for diagnostics.
675 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
676 Warn if passing too many arguments to a function for its format string.
679 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
680 Warn about format strings that are not literals.
683 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
684 Warn about function calls with format strings that write past the end
685 of the destination region. Same as -Wformat-overflow=1.
688 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
689 Warn about possible security problems with format functions.
692 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
693 Warn about sign differences with format functions.
696 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
697 Warn about calls to snprintf and similar functions that truncate output.
698 Same as -Wformat-truncation=1.
701 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
702 Warn about strftime formats yielding 2-digit years.
705 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
706 Warn about zero-length formats.
709 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
710 Warn about printf/scanf/strftime/strfmon format string anomalies.
713 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)
714 Warn about function calls with format strings that write past the end
715 of the destination region.
718 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)
719 Warn about calls to snprintf and similar functions that truncate output.
722 C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
723 Warn when the field in a struct is not aligned.
726 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
727 Warn whenever type qualifiers are ignored.
730 C C++ Var(warn_ignored_attributes) Init(1) Warning
731 Warn whenever attributes are ignored.
734 C++ ObjC++ Var(warn_inaccessible_base) Init(1) Warning
735 Warn when a base is inaccessible in derived due to ambiguity.
737 Wincompatible-pointer-types
738 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
739 Warn when there is a conversion between pointers that have incompatible types.
742 C ObjC C++ LTO ObjC++ Var(warn_infinite_recursion) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
743 Warn for infinitely recursive calls.
745 Waddress-of-packed-member
746 C ObjC C++ ObjC++ Var(warn_address_of_packed_member) Init(1) Warning
747 Warn when the address of packed member of struct or union is taken.
750 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
751 Warn about variables which are initialized to themselves.
754 C++ ObjC++ Var(warn_init_list) Warning Init(1)
755 Warn about uses of std::initializer_list that can result in dangling pointers.
758 C++ ObjC++ Var(warn_interference_size) Warning Init(1)
759 Warn about nonsensical values of --param destructive-interference-size or
760 constructive-interference-size.
763 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
764 Warn about implicit declarations.
766 Wimplicit-fallthrough=
767 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
771 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
772 Warn about implicit conversions from \"float\" to \"double\".
774 Wexpansion-to-defined
775 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)
776 Warn if \"defined\" is used outside #if.
778 Wimplicit-function-declaration
779 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
780 Warn about implicit function declarations.
783 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
784 Warn when a declaration does not specify a type.
787 C ObjC C++ ObjC++ Undocumented Ignore
789 Winherited-variadic-ctor
790 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
791 Warn about C++11 inheriting constructors when the base has a variadic constructor.
794 C ObjC Var(warn_int_conversion) Init(1) Warning
795 Warn about incompatible integer to pointer and pointer to integer conversions.
798 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
799 Warn for suspicious integer expressions in boolean context.
802 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
803 Warn when there is a cast to a pointer from an integer of a different size.
806 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
807 Warn about invalid uses of the \"offsetof\" macro.
810 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
811 Warn about PCH files that are found but not used.
814 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
815 Warn when a jump misses a variable initialization.
818 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
819 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
822 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
823 Warn when a logical operator is suspiciously always evaluating to true or false.
825 Wlogical-not-parentheses
826 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
827 Warn when logical not is used on the left hand side operand of a comparison.
830 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)
831 Do not warn about using \"long long\" when -pedantic.
834 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
835 Warn about suspicious declarations of \"main\".
838 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
841 Wmemset-transposed-args
842 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
843 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
846 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
847 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
849 Wmisleading-indentation
850 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
851 Warn when the indentation of the code does not reflect the block structure.
854 C ObjC C++ ObjC++ Var(warn_mismatched_alloc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
855 Warn for deallocation calls with arguments returned from mismatched allocation
858 Wmismatched-new-delete
859 C++ ObjC++ Var(warn_mismatched_new_delete) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
860 Warn for mismatches between calls to operator new or delete and the corresponding
861 call to the allocation or deallocation function.
864 C++ ObjC++ Var(warn_mismatched_tags) Warning
865 Warn when a class is redeclared or referenced using a mismatched class-key.
868 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
869 Warn about possibly missing braces around initializers.
871 Wmissing-declarations
872 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
873 Warn about global functions without previous declarations.
875 Wmissing-field-initializers
876 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
877 Warn about missing fields in struct initializers.
880 C++ ObjC++ Var(warn_missing_requires) Init(1) Warning
881 Warn about likely missing requires keyword.
883 Wmissing-template-keyword
884 C++ ObjC++ Var(warn_missing_template_keyword) Init(1) Warning
885 Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.
887 Wmultistatement-macros
888 C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
889 Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
891 Wmultiple-inheritance
892 C++ ObjC++ Var(warn_multiple_inheritance) Warning
893 Warn on direct multiple inheritance.
896 C++ ObjC++ Var(warn_namespaces) Warning
897 Warn on namespace definition.
900 C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
901 Warn when fields in a struct with the packed attribute are misaligned.
903 Wrange-loop-construct
904 C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
905 Warn when a range-based for-loop is creating unnecessary copies.
908 C++ ObjC++ Var(warn_redundant_tags) Warning
909 Warn when a class or enumerated type is referenced using a redundant class-key.
912 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
913 Warn about missing sized deallocation functions.
916 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
917 Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
920 C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
921 Warn about divisions of two sizeof operators when the first one is applied
922 to an array and the divisor does not equal the size of the array element.
924 Wsizeof-pointer-memaccess
925 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
926 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
928 Wsizeof-array-argument
929 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
930 Warn when sizeof is applied on a parameter declared as an array.
933 C ObjC C++ LTO ObjC++ Warning Var(warn_string_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
934 Warn about calls to strcmp and strncmp used in equality expressions that
935 are necessarily true or false due to the length of one and size of the other
939 C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
940 Warn about buffer overflow in string manipulation functions like memcpy
944 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)
945 Under the control of Object Size type, warn about buffer overflow in string
946 manipulation functions like memcpy and strcpy.
949 C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
950 Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
953 C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
954 Warn about truncation in string manipulation functions like strncat and strncpy.
956 Wsuggest-attribute=format
957 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
958 Warn about functions which might be candidates for format attributes.
961 C++ ObjC++ Var(warn_override) Warning
962 Suggest that the override keyword be used when the declaration of a virtual
963 function overrides another.
966 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
967 Warn about enumerated switches, with no default, missing a case.
970 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
971 Warn about enumerated switches missing a \"default:\" statement.
974 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
975 Warn about all enumerated switches missing a specific case.
978 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
979 Warn about switches with boolean controlling expression.
981 Wswitch-outside-range
982 C ObjC C++ ObjC++ Var(warn_switch_outside_range) Warning Init(1)
983 Warn about switch values that are outside of the switch's type range.
986 C++ ObjC++ Var(warn_templates) Warning
987 Warn on primary template declaration.
990 C ObjC C++ ObjC++ Var(warn_missing_attributes) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
991 Warn about declarations of entities that may be missing attributes
992 that related entities have been declared with.
994 Wmissing-format-attribute
995 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
998 Wmissing-include-dirs
999 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
1000 Warn about user-specified include directories that do not exist.
1002 Wmissing-parameter-type
1003 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
1004 Warn about function parameters declared without a type specifier in K&R-style functions.
1007 C ObjC Var(warn_missing_prototypes) Warning
1008 Warn about global functions without prototypes.
1011 C ObjC C++ ObjC++ WarnRemoved
1014 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
1015 Warn about use of multi-character character constants.
1018 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
1019 Warn about narrowing conversions within { } that are ill-formed in C++11.
1022 C ObjC Var(warn_nested_externs) Warning
1023 Warn about \"extern\" declarations not at file scope.
1026 C++ ObjC++ Var(warn_noexcept) Warning
1027 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
1030 C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
1031 Warn if C++17 noexcept function type will change the mangled name of a symbol.
1033 Wnon-template-friend
1034 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
1035 Warn when non-templatized friend functions are declared within a template.
1038 C++ ObjC++ Var(warn_class_conversion) Init(1) Warning
1039 Warn when a conversion function will never be called due to the type it converts to.
1042 C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
1043 Warn for unsafe raw memory writes to objects of class types.
1046 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
1047 Warn about non-virtual destructors.
1050 C ObjC C++ LTO ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=,warn_format >= 1,0)
1051 Warn about NULL being passed to argument slots marked as requiring non-NULL.
1054 C ObjC C++ LTO ObjC++ LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
1058 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1062 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
1066 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)
1067 -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
1069 ; Required for these enum values.
1074 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
1077 Enum(cpp_normalize_level) String(none) Value(normalized_none)
1080 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
1083 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
1086 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
1089 ObjC ObjC++ Var(warn_objc_root_class) Warning Init(1)
1090 Warn if a class interface has no superclass. Root classes may use an attribute
1091 to suppress this warning.
1094 C++ ObjC++ Var(warn_old_style_cast) Warning
1095 Warn if a C-style cast is used in a program.
1097 Wold-style-declaration
1098 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
1099 Warn for obsolescent usage in a declaration.
1101 Wold-style-definition
1102 C ObjC Var(warn_old_style_definition) Init(-1) Warning
1103 Warn if an old-style parameter definition is used.
1105 Wopenacc-parallelism
1106 C C++ Var(warn_openacc_parallelism) Warning
1107 Warn about potentially suboptimal choices related to OpenACC parallelism.
1110 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
1111 Warn if a simd directive is overridden by the vectorizer cost model.
1114 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1115 Warn if a string is longer than the maximum portable length specified by the standard.
1118 C++ ObjC++ Var(warn_overloaded_virtual) Warning
1119 Warn about overloaded virtual function names.
1122 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
1123 Warn about overriding initializers without side effects.
1125 Woverride-init-side-effects
1126 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
1127 Warn about overriding initializers with side effects.
1129 Wpacked-bitfield-compat
1130 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
1131 Warn about packed bit-fields whose offset changed in GCC 4.4.
1134 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1135 Warn about possibly missing parentheses.
1138 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
1139 ; Documented in common.opt
1142 C++ ObjC++ Var(warn_pessimizing_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1143 Warn about calling std::move on a local object in a return statement preventing copy elision.
1146 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
1147 Warn when converting the type of pointers to member functions.
1150 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1151 Warn about function pointer arithmetic.
1154 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
1155 Warn when a pointer differs in signedness in an assignment.
1158 C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
1159 Warn when a pointer is compared with a zero character constant.
1161 Wpointer-to-int-cast
1162 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
1163 Warn when a pointer is cast to an integer of a different size.
1166 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
1167 Warn about misuses of pragmas.
1170 C ObjC C++ ObjC++ Var(warn_prio_ctor_dtor) Init(1) Warning
1171 Warn if constructor or destructors with priorities from 0 to 100 are used.
1173 Wproperty-assign-default
1174 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
1175 Warn if a property for an Objective-C object has no assign semantics specified.
1178 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
1179 Warn if inherited methods are unimplemented.
1182 C++ Warning Alias(Wplacement-new=, 1, 0)
1183 Warn for placement new expressions with undefined behavior.
1186 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
1187 Warn for placement new expressions with undefined behavior.
1190 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
1191 Warn about multiple declarations of the same object.
1194 C++ ObjC++ Var(warn_redundant_move) Warning LangEnabledBy(C++ ObjC++,Wextra)
1195 Warn about redundant calls to std::move.
1198 C++ ObjC++ Var(warn_register) Warning
1199 Warn about uses of register storage specifier.
1202 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
1203 Warn when the compiler reorders code.
1206 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Init(-1)
1207 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
1209 Wscalar-storage-order
1210 C ObjC C++ ObjC++ Var(warn_scalar_storage_order) Init(1) Warning
1211 Warn on suspicious constructs involving reverse scalar storage order.
1214 ObjC ObjC++ Var(warn_selector) Warning
1215 Warn if a selector has multiple methods.
1218 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1219 Warn about possible violations of sequence point rules.
1222 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
1223 Warn if a local declaration hides an instance variable.
1226 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
1227 Warn if left shift of a signed value overflows.
1230 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
1231 Warn if left shift of a signed value overflows.
1233 Wshift-count-negative
1234 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
1235 Warn if shift count is negative.
1237 Wshift-count-overflow
1238 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
1239 Warn if shift count >= width of type.
1241 Wshift-negative-value
1242 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
1243 Warn if left shifting a negative value.
1246 C ObjC C++ ObjC++ Var(warn_arith_conv) Warning
1247 Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.
1250 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
1251 Warn about signed-unsigned comparisons.
1254 C ObjC C++ ObjC++ EnabledBy(Wextra)
1258 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
1259 Warn for implicit type conversions between signed and unsigned integers.
1262 C++ ObjC++ Var(warn_sign_promo) Warning
1263 Warn when overload promotes from unsigned to signed.
1265 Wstrict-null-sentinel
1266 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
1267 Warn about uncasted NULL used as sentinel.
1270 C ObjC Var(warn_strict_prototypes) Warning
1271 Warn about unprototyped function declarations.
1274 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
1278 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
1281 Wstrict-selector-match
1282 ObjC ObjC++ Var(warn_strict_selector_match) Warning
1283 Warn if type signatures of candidate methods do not match exactly.
1286 C C++ Var(warn_sync_nand) Init(1) Warning
1287 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
1290 C++ ObjC++ Var(warn_synth) Warning
1291 Deprecated. This switch has no effect.
1294 C ObjC C++ ObjC++ Warning
1295 ; Documented in common.opt
1297 Wtautological-compare
1298 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1299 Warn if a comparison always evaluates to true or false.
1302 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1303 Warn if a throw expression will always result in a call to terminate().
1306 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1307 Warn about features not present in traditional C.
1309 Wtraditional-conversion
1310 C ObjC Var(warn_traditional_conversion) Warning
1311 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1314 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1315 Warn if trigraphs are encountered that might affect the meaning of the program.
1317 Wundeclared-selector
1318 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1319 Warn about @selector()s without previously declared methods.
1322 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1323 Warn if an undefined macro is used in an #if directive.
1326 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1329 Wmaybe-uninitialized
1330 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1334 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1335 Warn about unrecognized pragmas.
1337 Wunsuffixed-float-constants
1338 C ObjC Var(warn_unsuffixed_float_constants) Warning
1339 Warn about unsuffixed float constants.
1342 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1343 ; documented in common.opt
1345 Wunused-local-typedefs
1346 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1347 Warn when typedefs locally defined in a function are not used.
1350 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1351 Warn about macros defined in the main file that are not used.
1354 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1355 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1358 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1359 ; documented in common.opt
1361 Wunused-const-variable
1362 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1363 Warn when a const variable is unused.
1365 Wunused-const-variable=
1366 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
1367 Warn when a const variable is unused.
1370 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)
1371 Warn about using variadic macros.
1374 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1375 Warn about questionable usage of the macros used to retrieve variable arguments.
1378 C++ ObjC++ Warning Var(warn_vexing_parse) Init(1)
1379 Warn about the most vexing parse syntactic ambiguity.
1382 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1383 Warn if a variable length array is used.
1386 C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
1387 -Wvla-larger-than=<number> Warn on unbounded uses of variable-length
1388 arrays, and on bounded uses of variable-length arrays whose bound can be
1389 larger than <number> bytes.
1392 C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
1393 Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
1396 C ObjC C++ ObjC++ Var(warn_vla_parameter) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1397 Warn about mismatched declarations of VLA parameters.
1400 C++ ObjC++ Var(warn_volatile) Warning
1401 Warn about deprecated uses of volatile qualifier.
1403 Wvolatile-register-var
1404 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1405 Warn when a register variable is declared volatile.
1407 Wvirtual-inheritance
1408 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1409 Warn on direct virtual inheritance.
1411 Wvirtual-move-assign
1412 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1413 Warn if a virtual base has a non-trivial move assignment operator.
1416 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1417 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.
1419 Wzero-as-null-pointer-constant
1420 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1421 Warn when a literal '0' is used as null pointer.
1424 C++ ObjC++ Var(warn_useless_cast) Warning
1425 Warn about useless casts.
1428 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1429 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.
1431 Wduplicate-decl-specifier
1432 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1433 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1436 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
1437 Warn when an argument passed to a restrict-qualified parameter aliases with
1442 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1445 C ObjC C++ ObjC++ Joined
1446 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
1448 fabi-compat-version=
1449 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1450 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1453 C++ ObjC++ Var(flag_access_control) Init(1)
1454 Enforce class member access control semantics.
1457 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1458 -fada-spec-parent=unit Dump Ada specs as child units of given parent.
1461 C++ ObjC++ Alias(faligned-new=,1,0)
1462 Support C++17 allocation of over-aligned types.
1465 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1466 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1469 C++ ObjC++ WarnRemoved
1471 fallow-parameterless-variadic-functions
1472 C ObjC Var(flag_allow_parameterless_variadic_functions)
1473 Allow variadic functions without named parameter.
1475 falt-external-templates
1476 C++ ObjC++ WarnRemoved
1477 No longer supported.
1480 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1481 Recognize the \"asm\" keyword.
1483 ; Define extra predefined macros for use in libgcc.
1485 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1488 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1489 Recognize built-in functions.
1492 C ObjC C++ ObjC++ Joined
1494 fcanonical-system-headers
1496 Where shorter, use canonicalized paths to systems headers.
1499 C++ ObjC++ Var(flag_char8_t) Init(-1)
1500 Enable the char8_t fundamental type and use it as the type for UTF-8 string
1501 and character literals.
1503 fcheck-pointer-bounds
1504 C ObjC C++ ObjC++ LTO WarnRemoved
1505 Removed in GCC 9. This switch has no effect.
1507 fchkp-check-incomplete-type
1508 C ObjC C++ ObjC++ LTO WarnRemoved
1509 Removed in GCC 9. This switch has no effect.
1511 fchkp-zero-input-bounds-for-main
1512 C ObjC C++ ObjC++ LTO WarnRemoved
1513 Removed in GCC 9. This switch has no effect.
1515 fchkp-first-field-has-own-bounds
1516 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1517 Removed in GCC 9. This switch has no effect.
1520 C ObjC C++ ObjC++ LTO WarnRemoved
1521 Removed in GCC 9. This switch has no effect.
1523 fchkp-narrow-to-innermost-array
1524 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1525 Removed in GCC 9. This switch has no effect.
1527 fchkp-flexible-struct-trailing-arrays
1528 C ObjC C++ ObjC++ LTO WarnRemoved
1529 Removed in GCC 9. This switch has no effect.
1532 C ObjC C++ ObjC++ LTO WarnRemoved
1534 fchkp-use-fast-string-functions
1535 C ObjC C++ ObjC++ LTO WarnRemoved
1536 Removed in GCC 9. This switch has no effect.
1538 fchkp-use-nochk-string-functions
1539 C ObjC C++ ObjC++ LTO WarnRemoved
1540 Removed in GCC 9. This switch has no effect.
1542 fchkp-use-static-bounds
1543 C ObjC C++ ObjC++ LTO WarnRemoved
1544 Removed in GCC 9. This switch has no effect.
1546 fchkp-use-static-const-bounds
1547 C ObjC C++ ObjC++ LTO WarnRemoved
1548 Removed in GCC 9. This switch has no effect.
1550 fchkp-treat-zero-dynamic-size-as-infinite
1551 C ObjC C++ ObjC++ LTO WarnRemoved
1552 Removed in GCC 9. This switch has no effect.
1555 C ObjC C++ ObjC++ LTO WarnRemoved
1556 Removed in GCC 9. This switch has no effect.
1559 C ObjC C++ ObjC++ LTO WarnRemoved
1560 Removed in GCC 9. This switch has no effect.
1563 C ObjC C++ ObjC++ LTO WarnRemoved
1564 Removed in GCC 9. This switch has no effect.
1566 fchkp-instrument-calls
1567 C ObjC C++ ObjC++ LTO WarnRemoved
1568 Removed in GCC 9. This switch has no effect.
1570 fchkp-instrument-marked-only
1571 C ObjC C++ ObjC++ LTO WarnRemoved
1572 Removed in GCC 9. This switch has no effect.
1575 C ObjC C++ ObjC++ LTO WarnRemoved
1576 Removed in GCC 9. This switch has no effect.
1580 Removed in GCC 9. This switch has no effect.
1582 static-libmpxwrappers
1584 Removed in GCC 9. This switch has no effect.
1587 C ObjC C++ ObjC++ LTO Undocumented Ignore
1588 Removed in GCC 8. This switch has no effect.
1591 C++ ObjC++ Var(flag_concepts)
1592 Enable support for C++ concepts.
1595 C++ ObjC++ Var(flag_concepts_ts) Init(0)
1596 Enable certain features present in the Concepts TS.
1598 fconcepts-diagnostics-depth=
1599 C++ ObjC++ Joined RejectNegative UInteger Var(concepts_diagnostics_max_depth) Init(1)
1600 Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure.
1604 Allow the arguments of the '?' operator to have different types.
1608 Does nothing. Preserved for backward compatibility.
1610 fconstant-string-class=
1611 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1612 -fconst-string-class=<name> Use class <name> for constant strings.
1615 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1616 -fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
1618 fconstexpr-cache-depth=
1619 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_cache_depth) Init(8)
1620 -fconstexpr-cache-depth=<number> Specify maximum constexpr recursion cache depth.
1622 fconstexpr-fp-except
1623 C++ ObjC++ Var(flag_constexpr_fp_except) Init(0)
1624 Allow IEC559 floating point exceptions in constant expressions.
1626 fconstexpr-loop-limit=
1627 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1628 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1630 fconstexpr-ops-limit=
1631 C++ ObjC++ Joined RejectNegative Host_Wide_Int Var(constexpr_ops_limit) Init(33554432)
1632 -fconstexpr-ops-limit=<number> Specify maximum number of constexpr operations during a single constexpr evaluation.
1635 C++ LTO Var(flag_coroutines)
1636 Enable C++ coroutines (experimental).
1640 Emit debug annotations during preprocessing.
1644 Does nothing. Preserved for backward compatibility.
1647 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1648 Factor complex constructors and destructors to favor space over speed.
1652 Does nothing. Preserved for backward compatibility.
1654 fdiagnostics-show-template-tree
1655 C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1656 Print hierarchical comparisons when template types are mismatched.
1660 Preprocess directives only.
1662 fdollars-in-identifiers
1664 Permit '$' as an identifier character.
1667 C ObjC C++ ObjC++ Joined RejectNegative
1668 -fmacro-prefix-map=<old>=<new> Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE().
1671 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1672 Write all declarations as Ada code transitively.
1675 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1676 Write all declarations as Ada code for the given file only.
1679 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1682 C++ ObjC++ Var(flag_elide_type) Init(1)
1683 Do not elide common elements in template comparisons.
1686 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1687 Generate code to check exception specifications.
1690 C++ ObjC++ WarnRemoved
1693 C ObjC C++ ObjC++ Joined RejectNegative
1694 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
1696 fextended-identifiers
1698 Permit universal character names (\\u and \\U) in identifiers.
1701 C ObjC C++ ObjC++ Joined RejectNegative
1702 -finput-charset=<cset> Specify the default character set for source files.
1705 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1706 Support dynamic initialization of thread-local variables in a different translation unit.
1709 C++ ObjC++ WarnRemoved
1712 C++ ObjC++ WarnRemoved
1716 Do not assume that standard C libraries and \"main\" exist.
1719 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1720 Recognize GNU-defined keywords.
1723 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1724 Generate code for GNU runtime environment.
1727 C ObjC Var(flag_gnu89_inline) Init(-1)
1728 Use traditional GNU semantics for inline functions.
1731 C++ ObjC++ WarnRemoved
1734 C++ ObjC++ Optimization Alias(fexceptions) Warn({%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)})
1737 C++ ObjC++ WarnRemoved
1741 Assume normal C execution environment.
1744 C++ ObjC++ WarnRemoved
1745 No longer supported.
1748 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1749 Export functions even if they can be inlined.
1752 C++ ObjC++ Var(flag_implicit_constexpr)
1753 Make inline functions constexpr by default.
1755 fimplicit-inline-templates
1756 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1757 Emit implicit instantiations of inline templates.
1760 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1761 Emit implicit instantiations of templates.
1763 fnew-inheriting-ctors
1764 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1765 Implement C++17 inheriting constructor semantics.
1768 C++ ObjC++ WarnRemoved
1770 fkeep-inline-dllexport
1771 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1772 Don't emit dllexported inline functions unless needed.
1775 C++ ObjC++ WarnRemoved
1777 flax-vector-conversions
1778 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1779 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1782 C++ ObjC++ Var(flag_modules) Integer Init(0)
1783 Enable C++ modules-ts (experimental).
1786 C++ ObjC++ Undocumented RejectNegative Var(flag_modules,0) Integer
1790 C++ ObjC RejectNegative Var(flag_header_unit,0) Integer
1791 Enable C++ header module (experimental).
1794 C++ ObjC++ Joined RejectNegative Undocumented
1796 fmodule-implicit-inline
1797 C++ ObjC++ Var(flag_module_implicit_inline,0) Integer
1798 Member functions defined within their class are inline in module purview.
1801 C++ ObjC RejectNegative Var(flag_module_only) Integer
1802 Only emit Compiled Module Interface.
1805 C++ ObjC++ Joined RejectNegative MissingArgError(missing mapper)
1806 Mapper for module to CMI files.
1809 C++ ObjC++ Var(flag_module_lazy) Init(1)
1810 Enable lazy module importing.
1812 fmodule-version-ignore
1813 C++ ObjC Var(flag_module_version_ignore) Integer
1814 ; undocumented, Very dangerous, but occasionally useful
1816 Winvalid-imported-macros
1817 C++ ObjC++ Var(warn_imported_macros) Warning
1818 Warn about macros that have conflicting header units definitions.
1820 flang-info-include-translate
1821 C++ Var(note_include_translate_yes)
1822 Note #include directives translated to import declarations.
1824 flang-info-include-translate-not
1825 C++ Var(note_include_translate_no)
1826 Note #include directives not translated to import declarations, and not known to be textual.
1828 flang-info-include-translate=
1829 C++ Joined RejectNegative MissingArgError(missing header name)
1830 Note a #include translation of a specific header.
1832 flang-info-module-cmi
1833 C++ Var(note_module_cmi_yes)
1834 Note Compiled Module Interface pathnames.
1836 flang-info-module-cmi=
1837 C++ Joined RejectNegative MissingArgError(missing module name)
1838 Note Compiled Module Interface pathname of a specific module or header-unit.
1841 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1842 fmax-include-depth=<number> Set the maximum depth of the nested #include.
1845 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1846 Don't warn about uses of Microsoft extensions.
1849 C ObjC C++ ObjC++ WarnRemoved
1852 C ObjC C++ ObjC++ WarnRemoved
1855 C ObjC C++ ObjC++ WarnRemoved
1857 fname-mangling-version-
1858 C++ ObjC++ Joined WarnRemoved
1861 C++ ObjC++ WarnRemoved
1864 C++ ObjC++ Var(flag_new_ttp)
1865 Implement resolution of DR 150 for matching of template template arguments.
1868 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime)
1869 Generate code for NeXT (Apple Mac OS X) runtime environment.
1872 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
1873 Assume that receivers of Objective-C messages may be nil.
1876 ObjC ObjC++ Var(flag_local_ivars) Init(1)
1877 Allow access to instance variables as if they were local declarations within instance method implementations.
1880 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
1881 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
1884 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1887 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1890 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1893 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1896 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1899 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
1902 C++ ObjC++ WarnRemoved
1905 C++ ObjC++ Optimization Var(flag_nothrow_opt)
1906 Treat a throw() exception specification as noexcept to improve code size.
1909 ObjC ObjC++ LTO Joined RejectNegative UInteger Var(flag_objc_abi)
1910 Specify which ABI to use for Objective-C family code and meta-data generation.
1912 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1913 ; to initialize any non-POD ivars in Objective-C++ classes.
1914 fobjc-call-cxx-cdtors
1915 ObjC++ Var(flag_objc_call_cxx_cdtors)
1916 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
1918 fobjc-direct-dispatch
1919 ObjC ObjC++ Var(flag_objc_direct_dispatch)
1920 Allow fast jumps to the message dispatcher.
1922 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
1923 ; @try, etc.) in source code.
1925 ObjC ObjC++ Var(flag_objc_exceptions)
1926 Enable Objective-C exception and synchronization syntax.
1929 ObjC ObjC++ LTO Var(flag_objc_gc)
1930 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
1933 ObjC ObjC++ Var(flag_objc_nilcheck,1)
1934 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1936 ; Nonzero means that we generate NeXT setjmp based exceptions.
1937 fobjc-sjlj-exceptions
1938 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
1939 Enable Objective-C setjmp exception handling runtime.
1942 ObjC ObjC++ Var(flag_objc1_only)
1943 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
1946 C ObjC C++ ObjC++ LTO Var(flag_openacc)
1950 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1951 Specify default OpenACC compute dimensions.
1954 C ObjC C++ ObjC++ LTO Var(flag_openmp)
1955 Enable OpenMP (implies -frecursive in Fortran).
1958 C ObjC C++ ObjC++ Var(flag_openmp_simd)
1959 Enable OpenMP's SIMD directives.
1963 Recognize C++ keywords like \"compl\" and \"xor\".
1967 Does nothing. Preserved for backward compatibility.
1974 Look for and use PCH files even when preprocessing.
1977 C++ ObjC++ Var(flag_permissive)
1978 Downgrade conformance errors to warnings.
1981 C ObjC Var(flag_plan9_extensions)
1982 Enable Plan 9 language extensions.
1986 Treat the input file as already preprocessed.
1988 ftrack-macro-expansion
1989 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1990 ; converted into ftrack-macro-expansion=
1992 ftrack-macro-expansion=
1993 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1994 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
1997 C++ ObjC++ Var(flag_pretty_templates) Init(1)
1998 Do not pretty-print template specializations as the template signature followed by the arguments.
2000 fprintf-return-value
2001 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
2002 Treat known sprintf return values as constants.
2004 freplace-objc-classes
2005 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
2006 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
2009 C++ ObjC++ WarnRemoved
2010 Removed in GCC 10. This switch has no effect.
2013 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
2014 Generate run time type descriptor information.
2017 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
2018 Use the narrowest integer type possible for enumeration types.
2021 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
2022 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
2025 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
2026 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
2029 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
2030 Make \"char\" signed by default.
2033 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
2034 Enable C++14 sized deallocation support.
2037 C++ ObjC++ WarnRemoved
2040 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
2041 -fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order.
2044 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
2047 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
2050 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
2053 Enum(sso_struct) String(native) Value(SSO_NATIVE)
2056 C++ ObjC++ Var(flag_detailed_statistics)
2057 Display statistics accumulated during compilation.
2060 C++ ObjC++ Optimization Var(flag_strict_enums)
2061 Assume that values of enumeration type are always within the minimum range of that type.
2064 C++ ObjC++ WarnRemoved
2067 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
2068 Follow the C++17 evaluation order requirements for assignment expressions,
2069 shift, member function calls, etc.
2072 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
2073 Follow the C++17 evaluation order requirements for assignment expressions,
2074 shift, member function calls, etc.
2077 Name(strong_eval_order) Type(int)
2080 Enum(strong_eval_order) String(none) Value(0)
2083 Enum(strong_eval_order) String(some) Value(1)
2086 Enum(strong_eval_order) String(all) Value(2)
2088 ftemplate-backtrace-limit=
2089 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
2090 Set the maximum number of template instantiation notes for a single warning or error.
2093 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
2096 C++ ObjC++ Joined RejectNegative UInteger
2097 -ftemplate-depth=<number> Specify maximum template instantiation depth.
2100 C++ ObjC++ WarnRemoved
2103 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
2104 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
2107 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
2108 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
2111 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
2112 Make \"char\" unsigned by default.
2115 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
2116 Use __cxa_atexit to register destructors.
2118 fuse-cxa-get-exception-ptr
2119 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
2120 Use __cxa_get_exception_ptr in exception handling.
2122 fvisibility-inlines-hidden
2124 Marks all inlined functions and methods as having hidden visibility.
2126 fvisibility-ms-compat
2127 C++ ObjC++ Var(flag_visibility_ms_compat)
2128 Changes visibility to match Microsoft Visual Studio by default.
2131 C++ ObjC++ WarnRemoved
2132 No longer supported.
2135 C++ ObjC++ WarnRemoved
2136 No longer supported.
2139 C++ ObjC++ Var(flag_weak) Init(1)
2140 Emit common-like symbols as weak symbols.
2143 C ObjC C++ ObjC++ Joined RejectNegative
2144 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
2147 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
2148 Generate a #line directive pointing at the current working directory.
2151 C++ ObjC++ WarnRemoved
2152 No longer supported.
2155 ObjC ObjC++ Var(flag_zero_link)
2156 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
2159 ObjC ObjC++ Driver Var(flag_gen_declaration) RejectNegative
2160 Dump declarations to a .decl file.
2162 femit-struct-debug-baseonly
2164 -femit-struct-debug-baseonly Aggressive reduced debug info for structs.
2166 femit-struct-debug-reduced
2168 -femit-struct-debug-reduced Conservative reduced debug info for structs.
2170 femit-struct-debug-detailed=
2171 C ObjC C++ ObjC++ Joined
2172 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
2174 fext-numeric-literals
2175 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
2176 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
2177 number literal rather than a user-defined number literal.
2180 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2181 -idirafter <dir> Add <dir> to the end of the system include path.
2184 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2185 -imacros <file> Accept definition of macros in <file>.
2188 C ObjC C++ ObjC++ Joined Separate
2189 -imultilib <dir> Set <dir> to be the multilib include subdirectory.
2192 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2193 -include <file> Include the contents of <file> before other files.
2196 C ObjC C++ ObjC++ Joined Separate
2197 -iprefix <path> Specify <path> as a prefix for next two options.
2200 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2201 -isysroot <dir> Set <dir> to be the system root directory.
2204 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2205 -isystem <dir> Add <dir> to the start of the system include path.
2208 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2209 -iquote <dir> Add <dir> to the end of the quote include path.
2212 C ObjC C++ ObjC++ Joined Separate
2213 -iwithprefix <dir> Add <dir> to the end of the system include path.
2216 C ObjC C++ ObjC++ Joined Separate
2217 -iwithprefixbefore <dir> Add <dir> to the end of the main include path.
2220 C Undocumented RejectDriver
2227 Do not search standard system include directories (those specified with -isystem will still be used).
2231 Do not search standard system include directories for C++.
2234 C ObjC C++ ObjC++ Joined Separate
2235 ; Documented in common.opt
2238 C ObjC C++ ObjC++ Alias(Wpedantic)
2239 ; Documented in common.opt
2241 print-objc-runtime-info
2243 Generate C header of platform-specific features.
2247 Remap file names when including files.
2251 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2254 C++ ObjC++ Alias(std=c++98)
2255 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2259 Conform to the ISO 2011 C++ standard.
2262 C++ ObjC++ Alias(std=c++11) Undocumented
2263 Deprecated in favor of -std=c++11.
2266 C++ ObjC++ Alias(std=c++14) Undocumented
2267 Deprecated in favor of -std=c++14.
2271 Conform to the ISO 2014 C++ standard.
2274 C++ ObjC++ Alias(std=c++17) Undocumented
2275 Deprecated in favor of -std=c++17.
2279 Conform to the ISO 2017 C++ standard.
2282 C++ ObjC++ Alias(std=c++20) Undocumented
2283 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2287 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2290 C++ ObjC++ Alias(std=c++23)
2291 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2294 C++ ObjC++ Undocumented
2295 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2299 Conform to the ISO 2011 C standard.
2302 C ObjC Alias(std=c11)
2303 Deprecated in favor of -std=c11.
2307 Conform to the ISO 2017 C standard (published in 2018).
2310 C ObjC Alias(std=c17)
2311 Conform to the ISO 2017 C standard (published in 2018).
2315 Conform to the ISO 202X C standard draft (experimental and incomplete support).
2318 C ObjC Alias(std=c90)
2319 Conform to the ISO 1990 C standard.
2323 Conform to the ISO 1990 C standard.
2327 Conform to the ISO 1999 C standard.
2330 C ObjC Alias(std=c99)
2331 Deprecated in favor of -std=c99.
2335 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2336 corrigendum with GNU extensions.
2339 C++ ObjC++ Alias(std=gnu++98)
2340 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2341 corrigendum with GNU extensions.
2345 Conform to the ISO 2011 C++ standard with GNU extensions.
2348 C++ ObjC++ Alias(std=gnu++11) Undocumented
2349 Deprecated in favor of -std=gnu++11.
2352 C++ ObjC++ Alias(std=gnu++14) Undocumented
2353 Deprecated in favor of -std=gnu++14.
2357 Conform to the ISO 2014 C++ standard with GNU extensions.
2360 C++ ObjC++ Alias(std=gnu++17) Undocumented
2361 Deprecated in favor of -std=gnu++17.
2365 Conform to the ISO 2017 C++ standard with GNU extensions.
2368 C++ ObjC++ Alias(std=gnu++20) Undocumented
2369 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2373 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2376 C++ ObjC++ Alias(std=gnu++23)
2377 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2380 C++ ObjC++ Undocumented
2381 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2385 Conform to the ISO 2011 C standard with GNU extensions.
2388 C ObjC Alias(std=gnu11)
2389 Deprecated in favor of -std=gnu11.
2393 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2396 C ObjC Alias(std=gnu17)
2397 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2401 Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support).
2404 C ObjC Alias(std=gnu90)
2405 Conform to the ISO 1990 C standard with GNU extensions.
2409 Conform to the ISO 1990 C standard with GNU extensions.
2413 Conform to the ISO 1999 C standard with GNU extensions.
2416 C ObjC Alias(std=gnu99)
2417 Deprecated in favor of -std=gnu99.
2420 C ObjC Alias(std=c90)
2421 Conform to the ISO 1990 C standard.
2425 Conform to the ISO 1990 C standard as amended in 1994.
2428 C ObjC Alias(std=c99)
2429 Conform to the ISO 1999 C standard.
2432 C ObjC Alias(std=c99)
2433 Deprecated in favor of -std=iso9899:1999.
2436 C ObjC Alias(std=c11)
2437 Conform to the ISO 2011 C standard.
2440 C ObjC Alias(std=c17)
2441 Conform to the ISO 2017 C standard (published in 2018).
2444 C ObjC Alias(std=c17)
2445 Conform to the ISO 2017 C standard (published in 2018).
2448 Driver C++ ObjC++ Common Condition(ENABLE_STDLIB_OPTION) Var(flag_stdlib_kind) Joined Enum(stdlib_kind) RejectNegative Init(1)
2449 -stdlib=[libstdc++|libc++] The standard library to be used for C++ headers
2453 Name(stdlib_kind) Type(int)
2456 Enum(stdlib_kind) String(libstdc++) Value(1)
2459 Enum(stdlib_kind) String(libc++) Value(2)
2466 Enable traditional preprocessing.
2470 -trigraphs Support ISO C trigraphs.
2473 C ObjC C++ ObjC++ Var(flag_undef)
2474 Do not predefine system-specific and GCC-specific macros.
2478 ; Documented in common.opt
2482 ; Documented in common.opt
2484 ; This comment is to ensure we retain the blank line above.