1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2017 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 phony targets for all headers.
244 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
245 -MQ <target> Add a MAKE-quoted target.
248 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
249 -MT <target> Add an unquoted target.
253 Do not generate #line directives.
256 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
257 -U<macro> Undefine <macro>.
260 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
261 Warn about things that will change when compiling with an ABI-compliant compiler.
264 C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
265 Warn about things that change between the current -fabi-version and the specified version.
268 C++ ObjC++ Var(warn_abi_tag) Warning
269 Warn if a subobject has an abi_tag attribute that the complete object type does not have.
272 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
275 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
276 Warn about suspicious uses of memory addresses.
279 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
282 Enum(warn_aligned_new_level) String(none) Value(0)
285 Enum(warn_aligned_new_level) String(global) Value(1)
288 Enum(warn_aligned_new_level) String(all) Value(2)
291 C++ ObjC++ Alias(Waligned-new=,global,none)
292 Warn about 'new' of type with extended alignment without -faligned-new.
295 C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
296 -Waligned-new=all Warn even if 'new' uses a class member allocation function.
299 C ObjC C++ ObjC++ Warning
300 Enable most warning messages.
303 C ObjC C++ ObjC++ Var(warn_alloca) Warning
304 Warn on any use of alloca.
306 Walloc-size-larger-than=
307 C ObjC C++ ObjC++ Var(warn_alloc_size_limit) Warning Joined
308 -Walloc-size-larger-than=<bytes> Warn for calls to allocation functions that
309 attempt to allocate objects larger than the specified number of bytes.
312 C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
313 -Walloc-zero Warn for calls to allocation functions that specify zero bytes.
316 C ObjC C++ ObjC++ Var(warn_alloca_limit) Warning Joined RejectNegative UInteger
317 -Walloca-larger-than=<number> Warn on unbounded uses of
318 alloca, and on bounded uses of alloca whose bound can be larger than
322 LangEnabledBy(C ObjC C++ ObjC++,Wall)
326 LangEnabledBy(C ObjC C++ ObjC++,Wall,1,0)
330 ObjC ObjC++ Var(warn_assign_intercept) Warning
331 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
334 C ObjC Var(warn_bad_function_cast) Warning
335 Warn about casting functions to incompatible types.
338 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
339 Warn about boolean expression compared with an integer value different from true/false.
342 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
343 Warn about certain operations on boolean expressions.
346 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
347 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
349 Wbuiltin-declaration-mismatch
350 C ObjC C++ ObjC++ Var(warn_builtin_declaraion_mismatch) Init(1) Warning
351 Warn when a built-in function is declared with the wrong signature.
353 Wbuiltin-macro-redefined
354 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
355 Warn when a built-in preprocessor macro is undefined or redefined.
358 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
359 Warn about features not present in ISO C90, but present in ISO C99.
362 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
363 Warn about features not present in ISO C99, but present in ISO C11.
366 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
367 Warn about C constructs that are not in the common subset of C and C++.
370 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
373 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
374 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
377 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
378 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
381 C++ ObjC++ Var(warn_cxx1z_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
382 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and (forthcoming) ISO C++ 201z(7?).
385 C++ ObjC++ Warning Alias(Wc++1z-compat) Undocumented
388 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
389 Warn about casts which discard qualifiers.
392 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
393 Warn about subscripts whose type is \"char\".
396 C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
397 Warn about memory access errors found by Pointer Bounds Checker.
400 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
401 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
404 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
405 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
408 C ObjC C++ ObjC++ Warning Alias(Wcomment)
409 Synonym for -Wcomment.
411 Wconditionally-supported
412 C++ ObjC++ Var(warn_conditionally_supported) Warning
413 Warn for conditionally-supported constructs.
416 C ObjC C++ ObjC++ Var(warn_conversion) Warning
417 Warn for implicit type conversions that may change a value.
420 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
421 Warn for converting NULL from/to a non-pointer type.
424 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
425 ; Documented in common.opt
428 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
429 Warn when all constructors and destructors are private.
432 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
433 Warn about dangling else.
436 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
437 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
439 Wdeclaration-after-statement
440 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
441 Warn when a declaration is found after a statement.
444 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
445 Warn when deleting a pointer to incomplete type.
447 Wdelete-non-virtual-dtor
448 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
449 Warn about deleting polymorphic objects with non-virtual destructors.
452 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED) Var(warn_deprecated) Init(1) Warning
453 Warn if a deprecated compiler feature, class, method, or field is used.
456 C ObjC Var(warn_designated_init) Init(1) Warning
457 Warn about positional initialization of structs requiring designated initializers.
459 Wdiscarded-array-qualifiers
460 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
461 Warn if qualifiers on arrays which are pointer targets are discarded.
463 Wdiscarded-qualifiers
464 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
465 Warn if type qualifiers on pointers are discarded.
468 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
469 Warn about compile-time integer division by zero.
472 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
473 Warn about duplicated conditions in an if-else-if chain.
476 C++ ObjC++ Var(warn_ecpp) Warning
477 Warn about violations of Effective C++ style rules.
480 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
481 Warn about an empty body in an if or else statement.
484 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)
485 Warn about stray tokens after #elif and #endif.
488 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
489 Warn about comparison of different enum types.
493 ; Documented in common.opt
495 Werror-implicit-function-declaration
496 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
497 This switch is deprecated; use -Werror=implicit-function-declaration instead.
500 C ObjC C++ ObjC++ Warning
504 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
505 Warn for implicit type conversions that cause loss of floating point precision.
508 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
509 Warn if testing floating point numbers for equality.
512 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
513 Warn about printf/scanf/strftime/strfmon format string anomalies.
516 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
517 Warn about format strings that contain NUL bytes.
520 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
521 Warn if passing too many arguments to a function for its format string.
524 C ObjC C++ ObjC++ Warning Alias(Wformat-length=, 1, 0)
525 Warn about function calls with format strings that write past the end
526 of the destination region. Same as -Wformat-length=1.
529 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
530 Warn about format strings that are not literals.
533 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
534 Warn about possible security problems with format functions.
537 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
538 Warn about sign differences with format functions.
541 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
542 Warn about strftime formats yielding 2-digit years.
545 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
546 Warn about zero-length formats.
549 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
550 Warn about printf/scanf/strftime/strfmon format string anomalies.
553 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
554 Warn about function calls with format strings that write past the end
555 of the destination region.
558 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
559 Warn whenever type qualifiers are ignored.
562 C C++ Var(warn_ignored_attributes) Init(1) Warning
563 Warn whenever attributes are ignored.
565 Wincompatible-pointer-types
566 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
567 Warn when there is a conversion between pointers that have incompatible types.
570 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
571 Warn about variables which are initialized to themselves.
574 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
575 Warn about implicit declarations.
577 Wimplicit-fallthrough=
578 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
582 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
583 Warn about implicit conversions from \"float\" to \"double\".
585 Wexpansion-to-defined
586 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)
587 Warn if \"defined\" is used outside #if.
589 Wimplicit-function-declaration
590 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
591 Warn about implicit function declarations.
594 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
595 Warn when a declaration does not specify a type.
598 C ObjC C++ ObjC++ Undocumented Ignore
600 Winherited-variadic-ctor
601 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
602 Warn about C++11 inheriting constructors when the base has a variadic constructor.
605 C ObjC Var(warn_int_conversion) Init(1) Warning
606 Warn about incompatible integer to pointer and pointer to integer conversions.
609 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
610 Warn for suspicious integer expressions in boolean context.
613 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
614 Warn when there is a cast to a pointer from an integer of a different size.
617 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
618 Warn about invalid uses of the \"offsetof\" macro.
621 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
622 Warn about PCH files that are found but not used.
625 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
626 Warn when a jump misses a variable initialization.
629 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
630 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
633 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
634 Warn when a logical operator is suspiciously always evaluating to true or false.
636 Wlogical-not-parentheses
637 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
638 Warn when logical not is used on the left hand side operand of a comparison.
641 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)
642 Do not warn about using \"long long\" when -pedantic.
645 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
646 Warn about suspicious declarations of \"main\".
649 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
652 Wmemset-transposed-args
653 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
654 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
657 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
658 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
660 Wmisleading-indentation
661 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
662 Warn when the indentation of the code does not reflect the block structure.
665 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
666 Warn about possibly missing braces around initializers.
668 Wmissing-declarations
669 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
670 Warn about global functions without previous declarations.
672 Wmissing-field-initializers
673 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
674 Warn about missing fields in struct initializers.
676 Wmultiple-inheritance
677 C++ ObjC++ Var(warn_multiple_inheritance) Warning
678 Warn on direct multiple inheritance.
681 C++ ObjC++ Var(warn_namespaces) Warning
682 Warn on namespace definition.
685 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
686 Warn about missing sized deallocation functions.
688 Wsizeof-pointer-memaccess
689 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
690 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
692 Wsizeof-array-argument
693 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
694 Warn when sizeof is applied on a parameter declared as an array.
697 C ObjC C++ ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
698 Warn about buffer overflow in string manipulation functions like memcpy
702 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning
703 Under the control of Object Size type, warn about buffer overflow in string
704 manipulation functions like memcpy and strcpy.
706 Wsuggest-attribute=format
707 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
708 Warn about functions which might be candidates for format attributes.
711 C++ ObjC++ Var(warn_override) Warning
712 Suggest that the override keyword be used when the declaration of a virtual
713 function overrides another.
716 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
717 Warn about enumerated switches, with no default, missing a case.
720 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
721 Warn about enumerated switches missing a \"default:\" statement.
724 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
725 Warn about all enumerated switches missing a specific case.
728 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
729 Warn about switches with boolean controlling expression.
732 C++ ObjC++ Var(warn_templates) Warning
733 Warn on primary template declaration.
735 Wmissing-format-attribute
736 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
739 Wmissing-include-dirs
740 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
741 Warn about user-specified include directories that do not exist.
743 Wmissing-parameter-type
744 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
745 Warn about function parameters declared without a type specifier in K&R-style functions.
748 C ObjC Var(warn_missing_prototypes) Warning
749 Warn about global functions without prototypes.
752 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
755 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
756 Warn about use of multi-character character constants.
759 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
760 Warn about narrowing conversions within { } that are ill-formed in C++11.
763 C ObjC Var(warn_nested_externs) Warning
764 Warn about \"extern\" declarations not at file scope.
767 C++ ObjC++ Var(warn_noexcept) Warning
768 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
771 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
772 Warn when non-templatized friend functions are declared within a template.
775 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
776 Warn about non-virtual destructors.
779 C ObjC C++ ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1,0)
780 Warn about NULL being passed to argument slots marked as requiring non-NULL.
783 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
787 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
791 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
795 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)
796 -Wnormalized=<none|id|nfc|nfkc> Warn about non-normalised Unicode strings.
798 ; Required for these enum values.
803 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
806 Enum(cpp_normalize_level) String(none) Value(normalized_none)
809 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
812 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
815 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
818 C++ ObjC++ Var(warn_old_style_cast) Warning
819 Warn if a C-style cast is used in a program.
821 Wold-style-declaration
822 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
823 Warn for obsolescent usage in a declaration.
825 Wold-style-definition
826 C ObjC Var(warn_old_style_definition) Warning
827 Warn if an old-style parameter definition is used.
830 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
831 Warn if a simd directive is overridden by the vectorizer cost model.
834 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
835 Warn if a string is longer than the maximum portable length specified by the standard.
838 C++ ObjC++ Var(warn_overloaded_virtual) Warning
839 Warn about overloaded virtual function names.
842 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
843 Warn about overriding initializers without side effects.
845 Woverride-init-side-effects
846 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
847 Warn about overriding initializers with side effects.
849 Wpacked-bitfield-compat
850 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
851 Warn about packed bit-fields whose offset changed in GCC 4.4.
854 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
855 Warn about possibly missing parentheses.
858 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
859 ; Documented in common.opt
862 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
863 Warn when converting the type of pointers to member functions.
866 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
867 Warn about function pointer arithmetic.
870 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
871 Warn when a pointer differs in signedness in an assignment.
874 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
875 Warn when a pointer is cast to an integer of a different size.
878 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
879 Warn about misuses of pragmas.
881 Wproperty-assign-default
882 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
883 Warn if a property for an Objective-C object has no assign semantics specified.
886 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
887 Warn if inherited methods are unimplemented.
890 C++ Warning Alias(Wplacement-new=, 1, 0)
891 Warn for placement new expressions with undefined behavior.
894 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning
895 Warn for placement new expressions with undefined behavior.
898 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
899 Warn about multiple declarations of the same object.
902 C++ ObjC++ Var(warn_register) Warning
903 Warn about uses of register storage specifier.
906 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
907 Warn when the compiler reorders code.
910 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
911 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
913 Wscalar-storage-order
914 C ObjC C++ ObjC++ Init(1) Warning
915 Warn on suspicious constructs involving reverse scalar storage order.
918 ObjC ObjC++ Var(warn_selector) Warning
919 Warn if a selector has multiple methods.
922 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
923 Warn about possible violations of sequence point rules.
926 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
927 Warn if a local declaration hides an instance variable.
930 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
931 Warn if left shift of a signed value overflows.
934 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning
935 Warn if left shift of a signed value overflows.
937 Wshift-count-negative
938 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
939 Warn if shift count is negative.
941 Wshift-count-overflow
942 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
943 Warn if shift count >= width of type.
945 Wshift-negative-value
946 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
947 Warn if left shifting a negative value.
950 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
951 Warn about signed-unsigned comparisons.
954 C ObjC C++ ObjC++ EnabledBy(Wextra)
958 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
959 Warn for implicit type conversions between signed and unsigned integers.
962 C++ ObjC++ Var(warn_sign_promo) Warning
963 Warn when overload promotes from unsigned to signed.
965 Wstrict-null-sentinel
966 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
967 Warn about uncasted NULL used as sentinel.
970 C ObjC Var(warn_strict_prototypes) Warning
971 Warn about unprototyped function declarations.
974 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0)
978 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
981 Wstrict-selector-match
982 ObjC ObjC++ Var(warn_strict_selector_match) Warning
983 Warn if type signatures of candidate methods do not match exactly.
986 C C++ Var(warn_sync_nand) Init(1) Warning
987 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
990 C++ ObjC++ Var(warn_synth) Warning
991 Deprecated. This switch has no effect.
994 C ObjC C++ ObjC++ Warning
995 ; Documented in common.opt
997 Wtautological-compare
998 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
999 Warn if a comparison always evaluates to true or false.
1002 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1003 Warn if a throw expression will always result in a call to terminate().
1006 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1007 Warn about features not present in traditional C.
1009 Wtraditional-conversion
1010 C ObjC Var(warn_traditional_conversion) Warning
1011 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1014 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1015 Warn if trigraphs are encountered that might affect the meaning of the program.
1017 Wundeclared-selector
1018 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1019 Warn about @selector()s without previously declared methods.
1022 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1023 Warn if an undefined macro is used in an #if directive.
1026 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1029 Wmaybe-uninitialized
1030 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1034 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1035 Warn about unrecognized pragmas.
1037 Wunsuffixed-float-constants
1038 C ObjC Var(warn_unsuffixed_float_constants) Warning
1039 Warn about unsuffixed float constants.
1042 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1043 ; documented in common.opt
1045 Wunused-local-typedefs
1046 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1047 Warn when typedefs locally defined in a function are not used.
1050 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1051 Warn about macros defined in the main file that are not used.
1054 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1055 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1058 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1059 ; documented in common.opt
1061 Wunused-const-variable
1062 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1063 Warn when a const variable is unused.
1065 Wunused-const-variable=
1066 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0)
1067 Warn when a const variable is unused.
1070 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)
1071 Warn about using variadic macros.
1074 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1075 Warn about questionable usage of the macros used to retrieve variable arguments.
1078 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1079 Warn if a variable length array is used.
1082 C ObjC C++ ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative UInteger
1083 -Wvla-larger-than=<number> Warn on unbounded uses of variable-length arrays, and
1084 on bounded uses of variable-length arrays whose bound can be
1085 larger than <number> bytes.
1087 Wvolatile-register-var
1088 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1089 Warn when a register variable is declared volatile.
1091 Wvirtual-inheritance
1092 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1093 Warn on direct virtual inheritance.
1095 Wvirtual-move-assign
1096 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1097 Warn if a virtual base has a non-trivial move assignment operator.
1100 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1101 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.
1103 Wzero-as-null-pointer-constant
1104 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1105 Warn when a literal '0' is used as null pointer.
1108 C++ ObjC++ Var(warn_useless_cast) Warning
1109 Warn about useless casts.
1112 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1113 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.
1115 Wduplicate-decl-specifier
1116 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1117 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1120 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++)
1121 Warn when an argument passed to a restrict-qualified parameter aliases with
1126 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1129 C ObjC C++ ObjC++ Joined
1130 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
1132 fabi-compat-version=
1133 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1134 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1137 C++ ObjC++ Var(flag_access_control) Init(1)
1138 Enforce class member access control semantics.
1141 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1142 -fada-spec-parent=unit Dump Ada specs as child units of given parent.
1145 C++ ObjC++ Alias(faligned-new=,1,0)
1146 Support C++17 allocation of over-aligned types.
1149 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1150 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1153 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1155 fallow-parameterless-variadic-functions
1156 C ObjC Var(flag_allow_parameterless_variadic_functions)
1157 Allow variadic functions without named parameter.
1159 falt-external-templates
1160 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1161 No longer supported.
1164 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1165 Recognize the \"asm\" keyword.
1167 ; Define extra predefined macros for use in libgcc.
1169 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1172 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1173 Recognize built-in functions.
1176 C ObjC C++ ObjC++ Joined
1178 fcanonical-system-headers
1180 Where shorter, use canonicalized paths to systems headers.
1182 fcheck-pointer-bounds
1183 C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds)
1184 Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to
1185 control instrumentation. Currently available for C, C++ and ObjC.
1187 fchkp-check-incomplete-type
1188 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1)
1189 Generate pointer bounds checks for variables with incomplete type.
1191 fchkp-zero-input-bounds-for-main
1192 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0)
1193 Use zero bounds for all incoming arguments in 'main' function. It helps when
1194 instrumented binaries are used with legacy libs.
1196 fchkp-first-field-has-own-bounds
1197 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds)
1198 Forces Pointer Bounds Checker to use narrowed bounds for address of the first
1199 field in the structure. By default pointer to the first field has the same
1200 bounds as pointer to the whole structure.
1203 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1)
1204 Control how Pointer Bounds Checker handle pointers to object fields. When
1205 narrowing is on, field bounds are used. Otherwise full object bounds are used.
1207 fchkp-narrow-to-innermost-array
1208 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray)
1209 Forces Pointer Bounds Checker to use bounds of the innermost arrays in case of
1210 nested static arrays access. By default outermost array is used.
1212 fchkp-flexible-struct-trailing-arrays
1213 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_flexible_struct_trailing_arrays)
1214 Forces Pointer Bounds Checker to treat all trailing arrays in structures as
1215 possibly flexible. By default only arrays fields with zero length or that are
1216 marked with attribute bnd_variable_size are treated as flexible.
1219 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1)
1220 Allow Pointer Bounds Checker optimizations. By default allowed
1221 on optimization levels >0.
1223 fchkp-use-fast-string-functions
1224 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0)
1225 Allow to use *_nobnd versions of string functions by Pointer Bounds Checker.
1227 fchkp-use-nochk-string-functions
1228 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0)
1229 Allow to use *_nochk versions of string functions by Pointer Bounds Checker.
1231 fchkp-use-static-bounds
1232 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1)
1233 Use statically initialized variable for vars bounds instead of
1234 generating them each time it is required.
1236 fchkp-use-static-const-bounds
1237 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1)
1238 Use statically initialized variable for constant bounds instead of
1239 generating them each time it is required.
1241 fchkp-treat-zero-dynamic-size-as-infinite
1242 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0)
1243 With this option zero size obtained dynamically for objects with
1244 incomplete type will be treated as infinite.
1247 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1)
1248 Generate checks for all read accesses to memory.
1251 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1)
1252 Generate checks for all write accesses to memory.
1255 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1)
1256 Generate bounds stores for pointer writes.
1258 fchkp-instrument-calls
1259 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1)
1260 Generate bounds passing for calls.
1262 fchkp-instrument-marked-only
1263 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0)
1264 Instrument only functions marked with bnd_instrument attribute.
1267 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1)
1268 Transform instrumented builtin calls into calls to wrappers.
1273 static-libmpxwrappers
1277 C ObjC C++ ObjC++ LTO Report Var(flag_cilkplus) Init(0)
1281 C++ ObjC++ Var(flag_concepts)
1282 Enable support for C++ concepts.
1286 Allow the arguments of the '?' operator to have different types.
1289 C++ ObjC++ Var(flag_conserve_space)
1290 Does nothing. Preserved for backward compatibility.
1292 fconstant-string-class=
1293 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1294 -fconst-string-class=<name> Use class <name> for constant strings.
1297 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1298 -fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
1300 fconstexpr-loop-limit=
1301 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1302 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1306 Emit debug annotations during preprocessing.
1309 C++ ObjC++ Var(flag_deduce_init_list) Init(0)
1310 -fdeduce-init-list enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list.
1313 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1314 Factor complex constructors and destructors to favor space over speed.
1318 Does nothing. Preserved for backward compatibility.
1322 Preprocess directives only.
1324 fdollars-in-identifiers
1326 Permit '$' as an identifier character.
1329 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1330 Write all declarations as Ada code transitively.
1333 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1334 Write all declarations as Ada code for the given file only.
1337 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1340 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1341 Generate code to check exception specifications.
1344 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1347 C ObjC C++ ObjC++ Joined RejectNegative
1348 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
1350 fextended-identifiers
1352 Permit universal character names (\\u and \\U) in identifiers.
1355 C ObjC C++ ObjC++ Joined RejectNegative
1356 -finput-charset=<cset> Specify the default character set for source files.
1359 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1360 Support dynamic initialization of thread-local variables in a different translation unit.
1363 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1366 C++ ObjC++ Var(flag_new_for_scope) Init(1)
1367 Scope of for-init-statement variables is local to the loop.
1371 Do not assume that standard C libraries and \"main\" exist.
1374 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1375 Recognize GNU-defined keywords.
1378 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1379 Generate code for GNU runtime environment.
1382 C ObjC Var(flag_gnu89_inline) Init(-1)
1383 Use traditional GNU semantics for inline functions.
1386 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1389 C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)})
1392 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1396 Assume normal C execution environment.
1399 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1400 No longer supported.
1403 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1404 Export functions even if they can be inlined.
1406 fimplicit-inline-templates
1407 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1408 Emit implicit instantiations of inline templates.
1411 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1412 Emit implicit instantiations of templates.
1414 fnew-inheriting-ctors
1415 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1416 Implement C++17 inheriting constructor semantics.
1419 C++ ObjC++ Var(flag_friend_injection)
1420 Inject friend functions into enclosing namespace.
1422 fkeep-inline-dllexport
1423 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1424 Don't emit dllexported inline functions unless needed.
1427 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1429 flax-vector-conversions
1430 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1431 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1434 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1435 Don't warn about uses of Microsoft extensions.
1438 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1441 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1444 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1446 fname-mangling-version-
1447 C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
1450 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1453 C++ ObjC++ Var(flag_new_ttp)
1454 Implement resolution of DR 150 for matching of template template arguments.
1457 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
1458 Generate code for NeXT (Apple Mac OS X) runtime environment.
1461 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
1462 Assume that receivers of Objective-C messages may be nil.
1465 ObjC ObjC++ Var(flag_local_ivars) Init(1)
1466 Allow access to instance variables as if they were local declarations within instance method implementations.
1469 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
1470 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
1473 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1476 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1479 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1482 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1485 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1488 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
1491 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1494 C++ ObjC++ Optimization Var(flag_nothrow_opt)
1495 Treat a throw() exception specification as noexcept to improve code size.
1498 ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
1499 Specify which ABI to use for Objective-C family code and meta-data generation.
1501 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1502 ; to initialize any non-POD ivars in Objective-C++ classes.
1503 fobjc-call-cxx-cdtors
1504 ObjC++ Var(flag_objc_call_cxx_cdtors)
1505 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
1507 fobjc-direct-dispatch
1508 ObjC ObjC++ Var(flag_objc_direct_dispatch)
1509 Allow fast jumps to the message dispatcher.
1511 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
1512 ; @try, etc.) in source code.
1514 ObjC ObjC++ Var(flag_objc_exceptions)
1515 Enable Objective-C exception and synchronization syntax.
1518 ObjC ObjC++ LTO Var(flag_objc_gc)
1519 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
1522 ObjC ObjC++ Var(flag_objc_nilcheck,1)
1523 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1525 ; Nonzero means that we generate NeXT setjmp based exceptions.
1526 fobjc-sjlj-exceptions
1527 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
1528 Enable Objective-C setjmp exception handling runtime.
1531 ObjC ObjC++ Var(flag_objc1_only)
1532 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
1535 C ObjC C++ ObjC++ LTO Var(flag_openacc)
1539 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1540 Specify default OpenACC compute dimensions.
1543 C ObjC C++ ObjC++ LTO Var(flag_openmp)
1544 Enable OpenMP (implies -frecursive in Fortran).
1547 C ObjC C++ ObjC++ Var(flag_openmp_simd)
1548 Enable OpenMP's SIMD directives.
1552 Recognize C++ keywords like \"compl\" and \"xor\".
1556 Does nothing. Preserved for backward compatibility.
1563 Look for and use PCH files even when preprocessing.
1566 C++ ObjC++ Var(flag_permissive)
1567 Downgrade conformance errors to warnings.
1570 C ObjC Var(flag_plan9_extensions)
1571 Enable Plan 9 language extensions.
1575 Treat the input file as already preprocessed.
1577 ftrack-macro-expansion
1578 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1579 ; converted into ftrack-macro-expansion=
1581 ftrack-macro-expansion=
1582 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1583 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
1586 C++ ObjC++ Var(flag_pretty_templates) Init(1)
1587 -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments.
1589 fprintf-return-value
1590 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
1591 Treat known sprintf return values as constants.
1593 freplace-objc-classes
1594 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
1595 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
1599 Enable automatic template instantiation.
1602 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
1603 Generate run time type descriptor information.
1606 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
1607 Use the narrowest integer type possible for enumeration types.
1610 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
1611 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
1614 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
1615 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
1618 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
1619 Make \"char\" signed by default.
1622 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
1623 Enable C++14 sized deallocation support.
1626 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1629 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
1630 -fsso-struct=[big-endian|little-endian] Set the default scalar storage order.
1633 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
1636 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
1639 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
1642 C++ ObjC++ Var(flag_detailed_statistics)
1643 Display statistics accumulated during compilation.
1646 C++ ObjC++ Optimization Var(flag_strict_enums)
1647 Assume that values of enumeration type are always within the minimum range of that type.
1650 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1653 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
1654 Follow the C++17 evaluation order requirements for assignment expressions,
1655 shift, member function calls, etc.
1658 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
1659 Follow the C++17 evaluation order requirements for assignment expressions,
1660 shift, member function calls, etc.
1663 Name(strong_eval_order) Type(int)
1666 Enum(strong_eval_order) String(none) Value(0)
1669 Enum(strong_eval_order) String(some) Value(1)
1672 Enum(strong_eval_order) String(all) Value(2)
1675 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1676 -ftabstop=<number> Distance between tab stops for column reporting.
1678 ftemplate-backtrace-limit=
1679 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
1680 Set the maximum number of template instantiation notes for a single warning or error.
1683 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
1686 C++ ObjC++ Joined RejectNegative UInteger
1687 -ftemplate-depth=<number> Specify maximum template instantiation depth.
1690 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1693 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
1694 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
1697 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
1698 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
1701 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
1702 Make \"char\" unsigned by default.
1705 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
1706 Use __cxa_atexit to register destructors.
1708 fuse-cxa-get-exception-ptr
1709 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
1710 Use __cxa_get_exception_ptr in exception handling.
1712 fvisibility-inlines-hidden
1714 Marks all inlined functions and methods as having hidden visibility.
1716 fvisibility-ms-compat
1717 C++ ObjC++ Var(flag_visibility_ms_compat)
1718 Changes visibility to match Microsoft Visual Studio by default.
1721 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1722 No longer supported.
1725 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1726 No longer supported.
1729 C++ ObjC++ Var(flag_weak) Init(1)
1730 Emit common-like symbols as weak symbols.
1733 C ObjC C++ ObjC++ Joined RejectNegative
1734 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
1737 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
1738 Generate a #line directive pointing at the current working directory.
1741 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1742 No longer supported.
1745 ObjC ObjC++ Var(flag_zero_link)
1746 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
1749 ObjC ObjC++ Var(flag_gen_declaration)
1750 Dump declarations to a .decl file.
1752 femit-struct-debug-baseonly
1754 -femit-struct-debug-baseonly Aggressive reduced debug info for structs.
1756 femit-struct-debug-reduced
1758 -femit-struct-debug-reduced Conservative reduced debug info for structs.
1760 femit-struct-debug-detailed=
1761 C ObjC C++ ObjC++ Joined
1762 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
1764 fext-numeric-literals
1765 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
1766 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
1767 number literal rather than a user-defined number literal.
1770 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1771 -idirafter <dir> Add <dir> to the end of the system include path.
1774 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1775 -imacros <file> Accept definition of macros in <file>.
1778 C ObjC C++ ObjC++ Joined Separate
1779 -imultilib <dir> Set <dir> to be the multilib include subdirectory.
1782 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1783 -include <file> Include the contents of <file> before other files.
1786 C ObjC C++ ObjC++ Joined Separate
1787 -iprefix <path> Specify <path> as a prefix for next two options.
1790 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1791 -isysroot <dir> Set <dir> to be the system root directory.
1794 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1795 -isystem <dir> Add <dir> to the start of the system include path.
1798 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1799 -iquote <dir> Add <dir> to the end of the quote include path.
1802 C ObjC C++ ObjC++ Joined Separate
1803 -iwithprefix <dir> Add <dir> to the end of the system include path.
1806 C ObjC C++ ObjC++ Joined Separate
1807 -iwithprefixbefore <dir> Add <dir> to the end of the main include path.
1810 C Undocumented RejectDriver
1817 Do not search standard system include directories (those specified with -isystem will still be used).
1821 Do not search standard system include directories for C++.
1824 C ObjC C++ ObjC++ Joined Separate
1825 ; Documented in common.opt
1828 C ObjC C++ ObjC++ Alias(Wpedantic)
1829 ; Documented in common.opt
1831 print-objc-runtime-info
1833 Generate C header of platform-specific features.
1837 Remap file names when including files.
1841 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1844 C++ ObjC++ Alias(std=c++98)
1845 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1849 Conform to the ISO 2011 C++ standard.
1852 C++ ObjC++ Alias(std=c++11) Undocumented
1853 Deprecated in favor of -std=c++11.
1856 C++ ObjC++ Alias(std=c++14) Undocumented
1857 Deprecated in favor of -std=c++14.
1861 Conform to the ISO 2014 C++ standard.
1865 Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete support).
1868 C++ ObjC++ Alias(std=c++1z) Undocumented
1872 Conform to the ISO 2011 C standard.
1875 C ObjC Alias(std=c11)
1876 Deprecated in favor of -std=c11.
1879 C ObjC Alias(std=c90)
1880 Conform to the ISO 1990 C standard.
1884 Conform to the ISO 1990 C standard.
1888 Conform to the ISO 1999 C standard.
1891 C ObjC Alias(std=c99)
1892 Deprecated in favor of -std=c99.
1896 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1897 corrigendum with GNU extensions.
1900 C++ ObjC++ Alias(std=gnu++98)
1901 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1902 corrigendum with GNU extensions.
1906 Conform to the ISO 2011 C++ standard with GNU extensions.
1909 C++ ObjC++ Alias(std=gnu++11) Undocumented
1910 Deprecated in favor of -std=gnu++11.
1913 C++ ObjC++ Alias(std=gnu++14) Undocumented
1914 Deprecated in favor of -std=gnu++14.
1918 Conform to the ISO 2014 C++ standard with GNU extensions.
1922 Conform to the ISO 201z(7?) C++ draft standard with GNU extensions (experimental and incomplete support).
1925 C++ ObjC++ Alias(std=gnu++1z) Undocumented
1929 Conform to the ISO 2011 C standard with GNU extensions.
1932 C ObjC Alias(std=gnu11)
1933 Deprecated in favor of -std=gnu11.
1936 C ObjC Alias(std=gnu90)
1937 Conform to the ISO 1990 C standard with GNU extensions.
1941 Conform to the ISO 1990 C standard with GNU extensions.
1945 Conform to the ISO 1999 C standard with GNU extensions.
1948 C ObjC Alias(std=gnu99)
1949 Deprecated in favor of -std=gnu99.
1952 C ObjC Alias(std=c90)
1953 Conform to the ISO 1990 C standard.
1957 Conform to the ISO 1990 C standard as amended in 1994.
1960 C ObjC Alias(std=c99)
1961 Conform to the ISO 1999 C standard.
1964 C ObjC Alias(std=c99)
1965 Deprecated in favor of -std=iso9899:1999.
1968 C ObjC Alias(std=c11)
1969 Conform to the ISO 2011 C standard.
1976 Enable traditional preprocessing.
1980 -trigraphs Support ISO C trigraphs.
1983 C ObjC C++ ObjC++ Var(flag_undef)
1984 Do not predefine system-specific and GCC-specific macros.
1988 ; Documented in common.opt
1992 ; Documented in common.opt
1994 ; This comment is to ensure we retain the blank line above.