1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2016 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.
205 Print the name of header files as they are used.
208 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
209 -I <dir> Add <dir> to the end of the main include path.
213 Generate make dependencies.
216 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
217 Generate make dependencies and compile.
220 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
221 -MF <file> Write dependency output to the given file.
225 Treat missing header files as generated files.
229 Like -M but ignore system header files.
232 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
233 Like -MD but ignore system header files.
237 Generate phony targets for all headers.
240 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
241 -MQ <target> Add a MAKE-quoted target.
244 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
245 -MT <target> Add an unquoted target.
249 Do not generate #line directives.
252 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
253 -U<macro> Undefine <macro>.
256 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
257 Warn about things that will change when compiling with an ABI-compliant compiler.
260 C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
261 Warn about things that change between the current -fabi-version and the specified version.
264 C++ ObjC++ Var(warn_abi_tag) Warning
265 Warn if a subobject has an abi_tag attribute that the complete object type does not have.
268 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
271 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
272 Warn about suspicious uses of memory addresses.
275 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
278 Enum(warn_aligned_new_level) String(none) Value(0)
281 Enum(warn_aligned_new_level) String(global) Value(1)
284 Enum(warn_aligned_new_level) String(all) Value(2)
287 C++ ObjC++ Alias(Waligned-new=,global,none)
288 Warn about 'new' of type with extended alignment without -faligned-new.
291 C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
292 -Waligned-new=all Warn even if 'new' uses a class member allocation function.
295 C ObjC C++ ObjC++ Warning
296 Enable most warning messages.
299 C ObjC C++ ObjC++ Var(warn_alloca) Warning
300 Warn on any use of alloca.
303 C ObjC C++ ObjC++ Var(warn_alloca_limit) Warning Joined RejectNegative UInteger
304 -Walloca-larger-than=<number> Warn on unbounded uses of
305 alloca, and on bounded uses of alloca whose bound can be larger than
309 LangEnabledBy(C ObjC C++ ObjC++,Wall)
313 LangEnabledBy(C ObjC C++ ObjC++,Wall,1,0)
317 ObjC ObjC++ Var(warn_assign_intercept) Warning
318 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
321 C ObjC Var(warn_bad_function_cast) Warning
322 Warn about casting functions to incompatible types.
325 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
326 Warn about boolean expression compared with an integer value different from true/false.
329 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
330 Warn about certain operations on boolean expressions.
333 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
334 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
336 Wbuiltin-macro-redefined
337 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
338 Warn when a built-in preprocessor macro is undefined or redefined.
341 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
342 Warn about features not present in ISO C90, but present in ISO C99.
345 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
346 Warn about features not present in ISO C99, but present in ISO C11.
349 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
350 Warn about C constructs that are not in the common subset of C and C++.
353 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
356 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
357 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
360 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
361 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
364 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
365 Warn about casts which discard qualifiers.
368 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
369 Warn about subscripts whose type is \"char\".
372 C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
373 Warn about memory access errors found by Pointer Bounds Checker.
376 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
377 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
380 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
381 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
384 C ObjC C++ ObjC++ Warning Alias(Wcomment)
385 Synonym for -Wcomment.
387 Wconditionally-supported
388 C++ ObjC++ Var(warn_conditionally_supported) Warning
389 Warn for conditionally-supported constructs.
392 C ObjC C++ ObjC++ Var(warn_conversion) Warning
393 Warn for implicit type conversions that may change a value.
396 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
397 Warn for converting NULL from/to a non-pointer type.
400 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
401 ; Documented in common.opt
404 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
405 Warn when all constructors and destructors are private.
408 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
409 Warn about dangling else.
412 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
413 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
415 Wdeclaration-after-statement
416 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
417 Warn when a declaration is found after a statement.
420 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
421 Warn when deleting a pointer to incomplete type.
423 Wdelete-non-virtual-dtor
424 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
425 Warn about deleting polymorphic objects with non-virtual destructors.
428 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED) Var(warn_deprecated) Init(1) Warning
429 Warn if a deprecated compiler feature, class, method, or field is used.
432 C ObjC Var(warn_designated_init) Init(1) Warning
433 Warn about positional initialization of structs requiring designated initializers.
435 Wdiscarded-array-qualifiers
436 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
437 Warn if qualifiers on arrays which are pointer targets are discarded.
439 Wdiscarded-qualifiers
440 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
441 Warn if type qualifiers on pointers are discarded.
444 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
445 Warn about compile-time integer division by zero.
448 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
449 Warn about duplicated conditions in an if-else-if chain.
452 C++ ObjC++ Var(warn_ecpp) Warning
453 Warn about violations of Effective C++ style rules.
456 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
457 Warn about an empty body in an if or else statement.
460 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)
461 Warn about stray tokens after #elif and #endif.
464 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
465 Warn about comparison of different enum types.
469 ; Documented in common.opt
471 Werror-implicit-function-declaration
472 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
473 This switch is deprecated; use -Werror=implicit-function-declaration instead.
476 C ObjC C++ ObjC++ Warning
480 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
481 Warn for implicit type conversions that cause loss of floating point precision.
484 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
485 Warn if testing floating point numbers for equality.
488 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
489 Warn about printf/scanf/strftime/strfmon format string anomalies.
492 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
493 Warn about format strings that contain NUL bytes.
496 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
497 Warn if passing too many arguments to a function for its format string.
500 C ObjC C++ ObjC++ Warning Alias(Wformat-length=, 1, 0)
501 Warn about function calls with format strings that write past the end
502 of the destination region. Same as -Wformat-length=1.
505 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
506 Warn about format strings that are not literals.
509 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
510 Warn about possible security problems with format functions.
513 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
514 Warn about sign differences with format functions.
517 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
518 Warn about strftime formats yielding 2-digit years.
521 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
522 Warn about zero-length formats.
525 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
526 Warn about printf/scanf/strftime/strfmon format string anomalies.
529 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
530 Warn about function calls with format strings that write past the end
531 of the destination region.
534 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
535 Warn whenever type qualifiers are ignored.
538 C C++ Var(warn_ignored_attributes) Init(1) Warning
539 Warn whenever attributes are ignored.
541 Wincompatible-pointer-types
542 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
543 Warn when there is a conversion between pointers that have incompatible types.
546 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
547 Warn about variables which are initialized to themselves.
550 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
551 Warn about implicit declarations.
553 Wimplicit-fallthrough=
554 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
558 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
559 Warn about implicit conversions from \"float\" to \"double\".
561 Wimplicit-function-declaration
562 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
563 Warn about implicit function declarations.
566 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
567 Warn when a declaration does not specify a type.
570 C ObjC C++ ObjC++ Undocumented Ignore
572 Winherited-variadic-ctor
573 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
574 Warn about C++11 inheriting constructors when the base has a variadic constructor.
577 C ObjC Var(warn_int_conversion) Init(1) Warning
578 Warn about incompatible integer to pointer and pointer to integer conversions.
581 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
582 Warn for suspicious integer expressions in boolean context.
585 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
586 Warn when there is a cast to a pointer from an integer of a different size.
589 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
590 Warn about invalid uses of the \"offsetof\" macro.
593 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
594 Warn about PCH files that are found but not used.
597 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
598 Warn when a jump misses a variable initialization.
601 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
602 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
605 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
606 Warn when a logical operator is suspiciously always evaluating to true or false.
608 Wlogical-not-parentheses
609 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
610 Warn when logical not is used on the left hand side operand of a comparison.
613 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)
614 Do not warn about using \"long long\" when -pedantic.
617 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
618 Warn about suspicious declarations of \"main\".
621 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
624 Wmemset-transposed-args
625 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
626 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
629 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
630 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
632 Wmisleading-indentation
633 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
634 Warn when the indentation of the code does not reflect the block structure.
637 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
638 Warn about possibly missing braces around initializers.
640 Wmissing-declarations
641 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
642 Warn about global functions without previous declarations.
644 Wmissing-field-initializers
645 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
646 Warn about missing fields in struct initializers.
648 Wmultiple-inheritance
649 C++ ObjC++ Var(warn_multiple_inheritance) Warning
650 Warn on direct multiple inheritance.
653 C++ ObjC++ Var(warn_namespaces) Warning
654 Warn on namespace definition.
657 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
658 Warn about missing sized deallocation functions.
660 Wsizeof-pointer-memaccess
661 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
662 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
664 Wsizeof-array-argument
665 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
666 Warn when sizeof is applied on a parameter declared as an array.
668 Wsuggest-attribute=format
669 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
670 Warn about functions which might be candidates for format attributes.
673 C++ ObjC++ Var(warn_override) Warning
674 Suggest that the override keyword be used when the declaration of a virtual
675 function overrides another.
678 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
679 Warn about enumerated switches, with no default, missing a case.
682 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
683 Warn about enumerated switches missing a \"default:\" statement.
686 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
687 Warn about all enumerated switches missing a specific case.
690 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
691 Warn about switches with boolean controlling expression.
694 C++ ObjC++ Var(warn_templates) Warning
695 Warn on primary template declaration.
697 Wmissing-format-attribute
698 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
701 Wmissing-include-dirs
702 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
703 Warn about user-specified include directories that do not exist.
705 Wmissing-parameter-type
706 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
707 Warn about function parameters declared without a type specifier in K&R-style functions.
710 C ObjC Var(warn_missing_prototypes) Warning
711 Warn about global functions without prototypes.
714 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
717 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
718 Warn about use of multi-character character constants.
721 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
722 Warn about narrowing conversions within { } that are ill-formed in C++11.
725 C ObjC Var(warn_nested_externs) Warning
726 Warn about \"extern\" declarations not at file scope.
729 C++ ObjC++ Var(warn_noexcept) Warning
730 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
733 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
734 Warn when non-templatized friend functions are declared within a template.
737 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
738 Warn about non-virtual destructors.
741 C ObjC C++ ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1,0)
742 Warn about NULL being passed to argument slots marked as requiring non-NULL.
745 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
749 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
753 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
757 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)
758 -Wnormalized=<none|id|nfc|nfkc> Warn about non-normalised Unicode strings.
760 ; Required for these enum values.
765 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
768 Enum(cpp_normalize_level) String(none) Value(normalized_none)
771 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
774 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
777 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
780 C++ ObjC++ Var(warn_old_style_cast) Warning
781 Warn if a C-style cast is used in a program.
783 Wold-style-declaration
784 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
785 Warn for obsolescent usage in a declaration.
787 Wold-style-definition
788 C ObjC Var(warn_old_style_definition) Warning
789 Warn if an old-style parameter definition is used.
792 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
793 Warn if a simd directive is overridden by the vectorizer cost model.
796 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
797 Warn if a string is longer than the maximum portable length specified by the standard.
800 C++ ObjC++ Var(warn_overloaded_virtual) Warning
801 Warn about overloaded virtual function names.
804 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
805 Warn about overriding initializers without side effects.
807 Woverride-init-side-effects
808 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
809 Warn about overriding initializers with side effects.
811 Wpacked-bitfield-compat
812 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
813 Warn about packed bit-fields whose offset changed in GCC 4.4.
816 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
817 Warn about possibly missing parentheses.
820 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
821 ; Documented in common.opt
824 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
825 Warn when converting the type of pointers to member functions.
828 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
829 Warn about function pointer arithmetic.
832 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
833 Warn when a pointer differs in signedness in an assignment.
836 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
837 Warn when a pointer is cast to an integer of a different size.
840 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
841 Warn about misuses of pragmas.
843 Wproperty-assign-default
844 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
845 Warn if a property for an Objective-C object has no assign semantics specified.
848 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
849 Warn if inherited methods are unimplemented.
852 C++ Warning Alias(Wplacement-new=, 1, 0)
853 Warn for placement new expressions with undefined behavior.
856 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning
857 Warn for placement new expressions with undefined behavior.
860 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
861 Warn about multiple declarations of the same object.
864 C++ ObjC++ Var(warn_register) Warning
865 Warn about uses of register storage specifier.
868 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
869 Warn when the compiler reorders code.
872 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
873 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
875 Wscalar-storage-order
876 C ObjC C++ ObjC++ Init(1) Warning
877 Warn on suspicious constructs involving reverse scalar storage order.
880 ObjC ObjC++ Var(warn_selector) Warning
881 Warn if a selector has multiple methods.
884 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
885 Warn about possible violations of sequence point rules.
888 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
889 Warn if a local declaration hides an instance variable.
892 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
893 Warn if left shift of a signed value overflows.
896 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning
897 Warn if left shift of a signed value overflows.
899 Wshift-count-negative
900 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
901 Warn if shift count is negative.
903 Wshift-count-overflow
904 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
905 Warn if shift count >= width of type.
907 Wshift-negative-value
908 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
909 Warn if left shifting a negative value.
912 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
913 Warn about signed-unsigned comparisons.
916 C ObjC C++ ObjC++ EnabledBy(Wextra)
920 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
921 Warn for implicit type conversions between signed and unsigned integers.
924 C++ ObjC++ Var(warn_sign_promo) Warning
925 Warn when overload promotes from unsigned to signed.
927 Wstrict-null-sentinel
928 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
929 Warn about uncasted NULL used as sentinel.
932 C ObjC Var(warn_strict_prototypes) Warning
933 Warn about unprototyped function declarations.
936 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0)
940 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
943 Wstrict-selector-match
944 ObjC ObjC++ Var(warn_strict_selector_match) Warning
945 Warn if type signatures of candidate methods do not match exactly.
948 C C++ Var(warn_sync_nand) Init(1) Warning
949 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
952 C++ ObjC++ Var(warn_synth) Warning
953 Deprecated. This switch has no effect.
956 C ObjC C++ ObjC++ Warning
957 ; Documented in common.opt
959 Wtautological-compare
960 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
961 Warn if a comparison always evaluates to true or false.
964 C++ ObjC++ Warning Var(warn_terminate) Init(1)
965 Warn if a throw expression will always result in a call to terminate().
968 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
969 Warn about features not present in traditional C.
971 Wtraditional-conversion
972 C ObjC Var(warn_traditional_conversion) Warning
973 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
976 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
977 Warn if trigraphs are encountered that might affect the meaning of the program.
980 ObjC ObjC++ Var(warn_undeclared_selector) Warning
981 Warn about @selector()s without previously declared methods.
984 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
985 Warn if an undefined macro is used in an #if directive.
988 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
992 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
996 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
997 Warn about unrecognized pragmas.
999 Wunsuffixed-float-constants
1000 C ObjC Var(warn_unsuffixed_float_constants) Warning
1001 Warn about unsuffixed float constants.
1004 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1005 ; documented in common.opt
1007 Wunused-local-typedefs
1008 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1009 Warn when typedefs locally defined in a function are not used.
1012 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1013 Warn about macros defined in the main file that are not used.
1016 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1017 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1020 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1021 ; documented in common.opt
1023 Wunused-const-variable
1024 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1025 Warn when a const variable is unused.
1027 Wunused-const-variable=
1028 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0)
1029 Warn when a const variable is unused.
1032 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)
1033 Warn about using variadic macros.
1036 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1037 Warn about questionable usage of the macros used to retrieve variable arguments.
1040 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1041 Warn if a variable length array is used.
1044 C ObjC C++ ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative UInteger
1045 -Wvla-larger-than=<number> Warn on unbounded uses of variable-length arrays, and
1046 on bounded uses of variable-length arrays whose bound can be
1047 larger than <number> bytes.
1049 Wvolatile-register-var
1050 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1051 Warn when a register variable is declared volatile.
1053 Wvirtual-inheritance
1054 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1055 Warn on direct virtual inheritance.
1057 Wvirtual-move-assign
1058 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1059 Warn if a virtual base has a non-trivial move assignment operator.
1062 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1063 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.
1065 Wzero-as-null-pointer-constant
1066 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1067 Warn when a literal '0' is used as null pointer.
1070 C++ ObjC++ Var(warn_useless_cast) Warning
1071 Warn about useless casts.
1074 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1075 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.
1077 Wduplicate-decl-specifier
1078 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1079 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1083 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1086 C ObjC C++ ObjC++ Joined
1087 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
1089 fabi-compat-version=
1090 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1091 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1094 C++ ObjC++ Var(flag_access_control) Init(1)
1095 Enforce class member access control semantics.
1098 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1099 -fada-spec-parent=unit Dump Ada specs as child units of given parent.
1102 C++ ObjC++ Alias(faligned-new=,1,0)
1103 Support C++17 allocation of over-aligned types.
1106 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1107 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1110 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1112 fallow-parameterless-variadic-functions
1113 C ObjC Var(flag_allow_parameterless_variadic_functions)
1114 Allow variadic functions without named parameter.
1116 falt-external-templates
1117 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1118 No longer supported.
1121 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1122 Recognize the \"asm\" keyword.
1124 ; Define extra predefined macros for use in libgcc.
1126 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1129 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1130 Recognize built-in functions.
1133 C ObjC C++ ObjC++ Joined
1135 fcanonical-system-headers
1137 Where shorter, use canonicalized paths to systems headers.
1139 fcheck-pointer-bounds
1140 C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds)
1141 Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to
1142 control instrumentation. Currently available for C, C++ and ObjC.
1144 fchkp-check-incomplete-type
1145 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1)
1146 Generate pointer bounds checks for variables with incomplete type.
1148 fchkp-zero-input-bounds-for-main
1149 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0)
1150 Use zero bounds for all incoming arguments in 'main' function. It helps when
1151 instrumented binaries are used with legacy libs.
1153 fchkp-first-field-has-own-bounds
1154 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds)
1155 Forces Pointer Bounds Checker to use narrowed bounds for address of the first
1156 field in the structure. By default pointer to the first field has the same
1157 bounds as pointer to the whole structure.
1160 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1)
1161 Control how Pointer Bounds Checker handle pointers to object fields. When
1162 narrowing is on, field bounds are used. Otherwise full object bounds are used.
1164 fchkp-narrow-to-innermost-array
1165 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray)
1166 Forces Pointer Bounds Checker to use bounds of the innermost arrays in case of
1167 nested static arryas access. By default outermost array is used.
1170 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1)
1171 Allow Pointer Bounds Checker optimizations. By default allowed
1172 on optimization levels >0.
1174 fchkp-use-fast-string-functions
1175 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0)
1176 Allow to use *_nobnd versions of string functions by Pointer Bounds Checker.
1178 fchkp-use-nochk-string-functions
1179 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0)
1180 Allow to use *_nochk versions of string functions by Pointer Bounds Checker.
1182 fchkp-use-static-bounds
1183 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1)
1184 Use statically initialized variable for vars bounds instead of
1185 generating them each time it is required.
1187 fchkp-use-static-const-bounds
1188 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1)
1189 Use statically initialized variable for constant bounds instead of
1190 generating them each time it is required.
1192 fchkp-treat-zero-dynamic-size-as-infinite
1193 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0)
1194 With this option zero size obtained dynamically for objects with
1195 incomplete type will be treated as infinite.
1198 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1)
1199 Generate checks for all read accesses to memory.
1202 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1)
1203 Generate checks for all write accesses to memory.
1206 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1)
1207 Generate bounds stores for pointer writes.
1209 fchkp-instrument-calls
1210 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1)
1211 Generate bounds passing for calls.
1213 fchkp-instrument-marked-only
1214 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0)
1215 Instrument only functions marked with bnd_instrument attribute.
1218 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1)
1219 Transform instrumented builtin calls into calls to wrappers.
1224 static-libmpxwrappers
1228 C ObjC C++ ObjC++ LTO Report Var(flag_cilkplus) Init(0)
1232 C++ ObjC++ Var(flag_concepts)
1233 Enable support for C++ concepts.
1237 Allow the arguments of the '?' operator to have different types.
1240 C++ ObjC++ Var(flag_conserve_space)
1241 Does nothing. Preserved for backward compatibility.
1243 fconstant-string-class=
1244 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1245 -fconst-string-class=<name> Use class <name> for constant strings.
1248 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1249 -fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
1251 fconstexpr-loop-limit=
1252 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1253 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1257 Emit debug annotations during preprocessing.
1260 C++ ObjC++ Var(flag_deduce_init_list) Init(0)
1261 -fdeduce-init-list enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list.
1264 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1265 Factor complex constructors and destructors to favor space over speed.
1269 Does nothing. Preserved for backward compatibility.
1273 Preprocess directives only.
1275 fdollars-in-identifiers
1277 Permit '$' as an identifier character.
1280 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1281 Write all declarations as Ada code transitively.
1284 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1285 Write all declarations as Ada code for the given file only.
1288 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1291 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1292 Generate code to check exception specifications.
1295 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1298 C ObjC C++ ObjC++ Joined RejectNegative
1299 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
1301 fextended-identifiers
1303 Permit universal character names (\\u and \\U) in identifiers.
1306 C ObjC C++ ObjC++ Joined RejectNegative
1307 -finput-charset=<cset> Specify the default character set for source files.
1310 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1311 Support dynamic initialization of thread-local variables in a different translation unit.
1314 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1317 C++ ObjC++ Var(flag_new_for_scope) Init(1)
1318 Scope of for-init-statement variables is local to the loop.
1322 Do not assume that standard C libraries and \"main\" exist.
1325 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1326 Recognize GNU-defined keywords.
1329 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1330 Generate code for GNU runtime environment.
1333 C ObjC Var(flag_gnu89_inline) Init(-1)
1334 Use traditional GNU semantics for inline functions.
1337 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1340 C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)})
1343 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1347 Assume normal C execution environment.
1350 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1351 No longer supported.
1354 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1355 Export functions even if they can be inlined.
1357 fimplicit-inline-templates
1358 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1359 Emit implicit instantiations of inline templates.
1362 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1363 Emit implicit instantiations of templates.
1365 fnew-inheriting-ctors
1366 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1367 Implement C++17 inheriting constructor semantics.
1370 C++ ObjC++ Var(flag_friend_injection)
1371 Inject friend functions into enclosing namespace.
1373 fkeep-inline-dllexport
1374 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1375 Don't emit dllexported inline functions unless needed.
1378 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1380 flax-vector-conversions
1381 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1382 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1385 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1386 Don't warn about uses of Microsoft extensions.
1389 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1392 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1395 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1397 fname-mangling-version-
1398 C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
1401 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1404 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
1405 Generate code for NeXT (Apple Mac OS X) runtime environment.
1408 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
1409 Assume that receivers of Objective-C messages may be nil.
1412 ObjC ObjC++ Var(flag_local_ivars) Init(1)
1413 Allow access to instance variables as if they were local declarations within instance method implementations.
1416 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
1417 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
1420 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1423 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1426 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1429 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1432 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1435 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
1438 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1441 C++ ObjC++ Optimization Var(flag_nothrow_opt)
1442 Treat a throw() exception specification as noexcept to improve code size.
1445 ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
1446 Specify which ABI to use for Objective-C family code and meta-data generation.
1448 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1449 ; to initialize any non-POD ivars in Objective-C++ classes.
1450 fobjc-call-cxx-cdtors
1451 ObjC++ Var(flag_objc_call_cxx_cdtors)
1452 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
1454 fobjc-direct-dispatch
1455 ObjC ObjC++ Var(flag_objc_direct_dispatch)
1456 Allow fast jumps to the message dispatcher.
1458 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
1459 ; @try, etc.) in source code.
1461 ObjC ObjC++ Var(flag_objc_exceptions)
1462 Enable Objective-C exception and synchronization syntax.
1465 ObjC ObjC++ LTO Var(flag_objc_gc)
1466 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
1469 ObjC ObjC++ Var(flag_objc_nilcheck,1)
1470 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1472 ; Nonzero means that we generate NeXT setjmp based exceptions.
1473 fobjc-sjlj-exceptions
1474 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
1475 Enable Objective-C setjmp exception handling runtime.
1478 ObjC ObjC++ Var(flag_objc1_only)
1479 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
1482 C ObjC C++ ObjC++ LTO Var(flag_openacc)
1486 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1487 Specify default OpenACC compute dimensions.
1490 C ObjC C++ ObjC++ LTO Var(flag_openmp)
1491 Enable OpenMP (implies -frecursive in Fortran).
1494 C ObjC C++ ObjC++ Var(flag_openmp_simd)
1495 Enable OpenMP's SIMD directives.
1499 Recognize C++ keywords like \"compl\" and \"xor\".
1503 Does nothing. Preserved for backward compatibility.
1510 Look for and use PCH files even when preprocessing.
1513 C++ ObjC++ Var(flag_permissive)
1514 Downgrade conformance errors to warnings.
1517 C ObjC Var(flag_plan9_extensions)
1518 Enable Plan 9 language extensions.
1522 Treat the input file as already preprocessed.
1524 ftrack-macro-expansion
1525 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1526 ; converted into ftrack-macro-expansion=
1528 ftrack-macro-expansion=
1529 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1530 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
1533 C++ ObjC++ Var(flag_pretty_templates) Init(1)
1534 -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments.
1536 fprintf-return-value
1537 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(0)
1538 Treat known sprintf return values as constants.
1540 freplace-objc-classes
1541 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
1542 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
1546 Enable automatic template instantiation.
1549 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
1550 Generate run time type descriptor information.
1553 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
1554 Use the narrowest integer type possible for enumeration types.
1557 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
1558 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
1561 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
1562 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
1565 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
1566 Make \"char\" signed by default.
1569 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
1570 Enable C++14 sized deallocation support.
1573 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1576 C ObjC Joined Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
1577 -fsso-struct=[big-endian|little-endian] Set the default scalar storage order.
1580 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
1583 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
1586 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
1589 C++ ObjC++ Var(flag_detailed_statistics)
1590 Display statistics accumulated during compilation.
1593 C++ ObjC++ Optimization Var(flag_strict_enums)
1594 Assume that values of enumeration type are always within the minimum range of that type.
1597 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1600 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
1601 Follow the C++17 evaluation order requirements for assignment expressions,
1602 shift, member function calls, etc.
1605 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) Init(-1)
1606 Follow the C++17 evaluation order requirements for assignment expressions,
1607 shift, member function calls, etc.
1610 Name(strong_eval_order) Type(int)
1613 Enum(strong_eval_order) String(none) Value(0)
1616 Enum(strong_eval_order) String(some) Value(1)
1619 Enum(strong_eval_order) String(all) Value(2)
1622 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1623 -ftabstop=<number> Distance between tab stops for column reporting.
1625 ftemplate-backtrace-limit=
1626 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
1627 Set the maximum number of template instantiation notes for a single warning or error.
1630 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
1633 C++ ObjC++ Joined RejectNegative UInteger
1634 -ftemplate-depth=<number> Specify maximum template instantiation depth.
1637 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1640 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
1641 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
1644 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
1645 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
1648 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
1649 Make \"char\" unsigned by default.
1652 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
1653 Use __cxa_atexit to register destructors.
1655 fuse-cxa-get-exception-ptr
1656 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
1657 Use __cxa_get_exception_ptr in exception handling.
1659 fvisibility-inlines-hidden
1661 Marks all inlined functions and methods as having hidden visibility.
1663 fvisibility-ms-compat
1664 C++ ObjC++ Var(flag_visibility_ms_compat)
1665 Changes visibility to match Microsoft Visual Studio by default.
1668 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1669 No longer supported.
1672 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1673 No longer supported.
1676 C++ ObjC++ Var(flag_weak) Init(1)
1677 Emit common-like symbols as weak symbols.
1680 C ObjC C++ ObjC++ Joined RejectNegative
1681 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
1684 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
1685 Generate a #line directive pointing at the current working directory.
1688 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1689 No longer supported.
1692 ObjC ObjC++ Var(flag_zero_link)
1693 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
1696 ObjC ObjC++ Var(flag_gen_declaration)
1697 Dump declarations to a .decl file.
1699 femit-struct-debug-baseonly
1701 -femit-struct-debug-baseonly Aggressive reduced debug info for structs.
1703 femit-struct-debug-reduced
1705 -femit-struct-debug-reduced Conservative reduced debug info for structs.
1707 femit-struct-debug-detailed=
1708 C ObjC C++ ObjC++ Joined
1709 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
1711 fext-numeric-literals
1712 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
1713 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
1714 number literal rather than a user-defined number literal.
1717 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1718 -idirafter <dir> Add <dir> to the end of the system include path.
1721 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1722 -imacros <file> Accept definition of macros in <file>.
1725 C ObjC C++ ObjC++ Joined Separate
1726 -imultilib <dir> Set <dir> to be the multilib include subdirectory.
1729 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1730 -include <file> Include the contents of <file> before other files.
1733 C ObjC C++ ObjC++ Joined Separate
1734 -iprefix <path> Specify <path> as a prefix for next two options.
1737 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1738 -isysroot <dir> Set <dir> to be the system root directory.
1741 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1742 -isystem <dir> Add <dir> to the start of the system include path.
1745 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1746 -iquote <dir> Add <dir> to the end of the quote include path.
1749 C ObjC C++ ObjC++ Joined Separate
1750 -iwithprefix <dir> Add <dir> to the end of the system include path.
1753 C ObjC C++ ObjC++ Joined Separate
1754 -iwithprefixbefore <dir> Add <dir> to the end of the main include path.
1757 C Undocumented RejectDriver
1764 Do not search standard system include directories (those specified with -isystem will still be used).
1768 Do not search standard system include directories for C++.
1771 C ObjC C++ ObjC++ Joined Separate
1772 ; Documented in common.opt
1775 C ObjC C++ ObjC++ Alias(Wpedantic)
1776 ; Documented in common.opt
1778 print-objc-runtime-info
1780 Generate C header of platform-specific features.
1784 Remap file names when including files.
1788 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1791 C++ ObjC++ Alias(std=c++98)
1792 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1796 Conform to the ISO 2011 C++ standard.
1799 C++ ObjC++ Alias(std=c++11) Undocumented
1800 Deprecated in favor of -std=c++11.
1803 C++ ObjC++ Alias(std=c++14) Undocumented
1804 Deprecated in favor of -std=c++14.
1808 Conform to the ISO 2014 C++ standard.
1812 Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete support).
1815 C++ ObjC++ Alias(std=c++1z) Undocumented
1819 Conform to the ISO 2011 C standard.
1822 C ObjC Alias(std=c11)
1823 Deprecated in favor of -std=c11.
1826 C ObjC Alias(std=c90)
1827 Conform to the ISO 1990 C standard.
1831 Conform to the ISO 1990 C standard.
1835 Conform to the ISO 1999 C standard.
1838 C ObjC Alias(std=c99)
1839 Deprecated in favor of -std=c99.
1843 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1844 corrigendum with GNU extensions.
1847 C++ ObjC++ Alias(std=gnu++98)
1848 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1849 corrigendum with GNU extensions.
1853 Conform to the ISO 2011 C++ standard with GNU extensions.
1856 C++ ObjC++ Alias(std=gnu++11) Undocumented
1857 Deprecated in favor of -std=gnu++11.
1860 C++ ObjC++ Alias(std=gnu++14) Undocumented
1861 Deprecated in favor of -std=gnu++14.
1865 Conform to the ISO 2014 C++ standard with GNU extensions.
1869 Conform to the ISO 201z(7?) C++ draft standard with GNU extensions (experimental and incomplete support).
1872 C++ ObjC++ Alias(std=gnu++1z) Undocumented
1876 Conform to the ISO 2011 C standard with GNU extensions.
1879 C ObjC Alias(std=gnu11)
1880 Deprecated in favor of -std=gnu11.
1883 C ObjC Alias(std=gnu90)
1884 Conform to the ISO 1990 C standard with GNU extensions.
1888 Conform to the ISO 1990 C standard with GNU extensions.
1892 Conform to the ISO 1999 C standard with GNU extensions.
1895 C ObjC Alias(std=gnu99)
1896 Deprecated in favor of -std=gnu99.
1899 C ObjC Alias(std=c90)
1900 Conform to the ISO 1990 C standard.
1904 Conform to the ISO 1990 C standard as amended in 1994.
1907 C ObjC Alias(std=c99)
1908 Conform to the ISO 1999 C standard.
1911 C ObjC Alias(std=c99)
1912 Deprecated in favor of -std=iso9899:1999.
1915 C ObjC Alias(std=c11)
1916 Conform to the ISO 2011 C standard.
1923 Enable traditional preprocessing.
1927 -trigraphs Support ISO C trigraphs.
1930 C ObjC C++ ObjC++ Var(flag_undef)
1931 Do not predefine system-specific and GCC-specific macros.
1935 ; Documented in common.opt
1939 ; Documented in common.opt
1941 ; This comment is to ensure we retain the blank line above.