PR lto/84212 - -Wno-* does not disable warnings from -flto link stage
[official-gcc.git] / gcc / c-family / c.opt
blob7fb386d456de3a2ab497523a6e1321084fd7de9f
1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2018 Free Software Foundation, Inc.
4 ; This file is part of GCC.
6 ; GCC is free software; you can redistribute it and/or modify it under
7 ; the terms of the GNU General Public License as published by the Free
8 ; Software Foundation; either version 3, or (at your option) any later
9 ; version.
11 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 ; for more details.
16 ; You should have received a copy of the GNU General Public License
17 ; along with GCC; see the file COPYING3.  If not see
18 ; <http://www.gnu.org/licenses/>.
20 ; See the GCC internals manual for a description of this file's format.
22 ; Please try to keep this file in ASCII collating order.
24 Language
27 Language
28 ObjC
30 Language
31 C++
33 Language
34 ObjC++
36 -all-warnings
37 C ObjC C++ ObjC++ Warning Alias(Wall)
39 -ansi
40 C ObjC C++ ObjC++ Alias(ansi)
42 -assert
43 C ObjC C++ ObjC++ Separate Alias(A) MissingArgError(assertion missing after %qs)
45 -assert=
46 C ObjC C++ ObjC++ Joined Alias(A) MissingArgError(assertion missing after %qs)
48 -comments
49 C ObjC C++ ObjC++ Alias(C)
51 -comments-in-macros
52 C ObjC C++ ObjC++ Alias(CC)
54 -define-macro
55 C ObjC C++ ObjC++ Separate Alias(D) MissingArgError(macro name missing after %qs)
57 -define-macro=
58 C ObjC C++ ObjC++ Joined Alias(D) MissingArgError(macro name missing after %qs)
60 -dependencies
61 C ObjC C++ ObjC++ Alias(M)
63 -dump
64 C ObjC C++ ObjC++ Separate Alias(d)
66 -dump=
67 C ObjC C++ ObjC++ Joined Alias(d)
69 -imacros
70 C ObjC C++ ObjC++ Separate Alias(imacros) MissingArgError(missing filename after %qs)
72 -imacros=
73 C ObjC C++ ObjC++ Joined Alias(imacros) MissingArgError(missing filename after %qs)
75 -include
76 C ObjC C++ ObjC++ Separate Alias(include) MissingArgError(missing filename after %qs)
78 -include=
79 C ObjC C++ ObjC++ Joined Alias(include) MissingArgError(missing filename after %qs)
81 -include-barrier
82 C ObjC C++ ObjC++ Alias(I, -)
84 -include-directory
85 C ObjC C++ ObjC++ Separate Alias(I) MissingArgError(missing path after %qs)
87 -include-directory=
88 C ObjC C++ ObjC++ Joined Alias(I) MissingArgError(missing path after %qs)
90 -include-directory-after
91 C ObjC C++ ObjC++ Separate Alias(idirafter) MissingArgError(missing path after %qs)
93 -include-directory-after=
94 C ObjC C++ ObjC++ Joined Alias(idirafter) MissingArgError(missing path after %qs)
96 -include-prefix
97 C ObjC C++ ObjC++ Separate Alias(iprefix)
99 -include-prefix=
100 C ObjC C++ ObjC++ JoinedOrMissing Alias(iprefix)
102 -include-with-prefix
103 C ObjC C++ ObjC++ Separate Alias(iwithprefix)
105 -include-with-prefix=
106 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
108 -include-with-prefix-after
109 C ObjC C++ ObjC++ Separate Alias(iwithprefix)
111 -include-with-prefix-after=
112 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
114 -include-with-prefix-before
115 C ObjC C++ ObjC++ Separate Alias(iwithprefixbefore)
117 -include-with-prefix-before=
118 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefixbefore)
120 -no-integrated-cpp
121 Driver Alias(no-integrated-cpp)
123 -no-line-commands
124 C ObjC C++ ObjC++ Alias(P)
126 -no-standard-includes
127 C ObjC C++ ObjC++ Alias(nostdinc)
129 -no-warnings
130 C ObjC C++ ObjC++ Alias(w)
132 -output
133 C ObjC C++ ObjC++ Separate Alias(o)
135 -output=
136 C ObjC C++ ObjC++ Joined Alias(o)
138 -output-pch=
139 C ObjC C++ ObjC++ Joined Separate
141 -pedantic
142 C ObjC C++ ObjC++ Alias(pedantic)
144 -preprocess
145 C ObjC C++ ObjC++ Undocumented Alias(E)
147 -print-missing-file-dependencies
148 C ObjC C++ ObjC++ Alias(MG)
150 -trace-includes
151 C ObjC C++ ObjC++ Alias(H)
153 -traditional
154 Driver Alias(traditional)
156 -traditional-cpp
157 C ObjC C++ ObjC++ Alias(traditional-cpp)
159 -trigraphs
160 C ObjC C++ ObjC++ Alias(trigraphs)
162 -undefine-macro
163 C ObjC C++ ObjC++ Separate Alias(U) MissingArgError(macro name missing after %qs)
165 -undefine-macro=
166 C ObjC C++ ObjC++ Joined Alias(U) MissingArgError(macro name missing after %qs)
168 -user-dependencies
169 C ObjC C++ ObjC++ Alias(MM)
171 -verbose
172 Common C ObjC C++ ObjC++ Alias(v)
174 -write-dependencies
175 C ObjC C++ ObjC++ NoDriverArg Separate Alias(MD) MissingArgError(missing filename after %qs)
177 -write-user-dependencies
178 C ObjC C++ ObjC++ NoDriverArg Separate Alias(MMD) MissingArgError(missing filename after %qs)
181 C ObjC C++ ObjC++ Joined Separate MissingArgError(assertion missing after %qs)
182 -A<question>=<answer>   Assert the <answer> to <question>.  Putting '-' before <question> disables the <answer> to <question>.
185 C ObjC C++ ObjC++
186 Do not discard comments.
189 C ObjC C++ ObjC++
190 Do not discard comments in macro expansions.
193 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
194 -D<macro>[=<val>]       Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1.
197 C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only)
200 Driver C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
201 -F <dir>        Add <dir> to the end of the main framework include path.
203 fgimple
204 C Var(flag_gimple) Init(0)
205 Enable parsing GIMPLE.
208 C ObjC C++ ObjC++
209 Print the name of header files as they are used.
212 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
213 -I <dir>        Add <dir> to the end of the main include path.
216 C ObjC C++ ObjC++
217 Generate make dependencies.
220 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
221 Generate make dependencies and compile.
224 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
225 -MF <file>      Write dependency output to the given file.
228 C ObjC C++ ObjC++
229 Treat missing header files as generated files.
232 C ObjC C++ ObjC++
233 Like -M but ignore system header files.
236 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
237 Like -MD but ignore system header files.
240 C ObjC C++ ObjC++
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.
252 C ObjC C++ ObjC++
253 Do not generate #line directives.
256 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
257 -U<macro>       Undefine <macro>.
259 Wabi
260 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
261 Warn about things that will change when compiling with an ABI-compliant compiler.
263 Wabi=
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.
267 Wabi-tag
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.
271 Wpsabi
272 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
274 Waddress
275 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
276 Warn about suspicious uses of memory addresses.
278 Enum
279 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
281 EnumValue
282 Enum(warn_aligned_new_level) String(none) Value(0)
284 EnumValue
285 Enum(warn_aligned_new_level) String(global) Value(1)
287 EnumValue
288 Enum(warn_aligned_new_level) String(all) Value(2)
290 Waligned-new
291 C++ ObjC++ Alias(Waligned-new=,global,none)
292 Warn about 'new' of type with extended alignment without -faligned-new.
294 Waligned-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=[none|global|all] Warn even if 'new' uses a class member allocation function.
298 Wall
299 C ObjC C++ ObjC++ Warning
300 Enable most warning messages.
302 Walloca
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++ LTO ObjC++ Var(warn_alloc_size_limit) Warning Joined LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
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.
311 Walloc-zero
312 C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
313 -Walloc-zero Warn for calls to allocation functions that specify zero bytes.
315 Walloca-larger-than=
316 C ObjC C++ LTO 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
319 <number> bytes.
321 Warray-bounds
322 LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
323 ; in common.opt
325 Warray-bounds=
326 LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
327 ; in common.opt
329 Wassign-intercept
330 ObjC ObjC++ Var(warn_assign_intercept) Warning
331 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
333 Wbad-function-cast
334 C ObjC Var(warn_bad_function_cast) Warning
335 Warn about casting functions to incompatible types.
337 Wbool-compare
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.
341 Wbool-operation
342 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
343 Warn about certain operations on boolean expressions.
345 Wframe-address
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.
357 Wc90-c99-compat
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.
361 Wc99-c11-compat
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.
365 Wc++-compat
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++.
369 Wc++0x-compat
370 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
372 Wc++11-compat
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.
376 Wc++14-compat
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.
380 Wc++1z-compat
381 C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
383 Wc++17-compat
384 C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
385 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
387 Wcast-function-type
388 C ObjC C++ ObjC++ Var(warn_cast_function_type) Warning EnabledBy(Wextra)
389 Warn about casts between incompatible function types.
391 Wcast-qual
392 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
393 Warn about casts which discard qualifiers.
395 Wcatch-value
396 C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
397 Warn about catch handlers of non-reference type.
399 Wcatch-value=
400 C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0)
401 Warn about catch handlers of non-reference type.
403 Wchar-subscripts
404 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
405 Warn about subscripts whose type is \"char\".
407 Wchkp
408 C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
409 Warn about memory access errors found by Pointer Bounds Checker.
411 Wclobbered
412 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
413 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
415 Wcomment
416 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
417 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
419 Wcomments
420 C ObjC C++ ObjC++ Warning Alias(Wcomment)
421 Synonym for -Wcomment.
423 Wconditionally-supported
424 C++ ObjC++ Var(warn_conditionally_supported) Warning
425 Warn for conditionally-supported constructs.
427 Wconversion
428 C ObjC C++ ObjC++ Var(warn_conversion) Warning
429 Warn for implicit type conversions that may change a value.
431 Wconversion-null
432 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
433 Warn for converting NULL from/to a non-pointer type.
435 Wcpp
436 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
437 ; Documented in common.opt
439 Wctor-dtor-privacy
440 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
441 Warn when all constructors and destructors are private.
443 Wdangling-else
444 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
445 Warn about dangling else.
447 Wdate-time
448 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
449 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
451 Wdeclaration-after-statement
452 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
453 Warn when a declaration is found after a statement.
455 Wdelete-incomplete
456 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
457 Warn when deleting a pointer to incomplete type.
459 Wdelete-non-virtual-dtor
460 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
461 Warn about deleting polymorphic objects with non-virtual destructors.
463 Wdeprecated
464 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED) Var(warn_deprecated) Init(1) Warning
465 Warn if a deprecated compiler feature, class, method, or field is used.
467 Wdesignated-init
468 C ObjC Var(warn_designated_init) Init(1) Warning
469 Warn about positional initialization of structs requiring designated initializers.
471 Wdiscarded-array-qualifiers
472 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
473 Warn if qualifiers on arrays which are pointer targets are discarded.
475 Wdiscarded-qualifiers
476 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
477 Warn if type qualifiers on pointers are discarded.
479 Wdiv-by-zero
480 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
481 Warn about compile-time integer division by zero.
483 Wduplicated-branches
484 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
485 Warn about duplicated branches in if-else statements.
487 Wduplicated-cond
488 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
489 Warn about duplicated conditions in an if-else-if chain.
491 Weffc++
492 C++ ObjC++ Var(warn_ecpp) Warning
493 Warn about violations of Effective C++ style rules.
495 Wempty-body
496 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
497 Warn about an empty body in an if or else statement.
499 Wendif-labels
500 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)
501 Warn about stray tokens after #else and #endif.
503 Wenum-compare
504 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
505 Warn about comparison of different enum types.
507 Werror
508 C ObjC C++ ObjC++
509 ; Documented in common.opt
511 Werror-implicit-function-declaration
512 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
513 This switch is deprecated; use -Werror=implicit-function-declaration instead.
515 Wextra
516 C ObjC C++ ObjC++ Warning
517 ; in common.opt
519 Wextra-semi
520 C++ ObjC++ Var(warn_extra_semi) Warning
521 Warn about semicolon after in-class function definition.
523 Wfloat-conversion
524 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
525 Warn for implicit type conversions that cause loss of floating point precision.
527 Wfloat-equal
528 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
529 Warn if testing floating point numbers for equality.
531 Wformat
532 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
533 Warn about printf/scanf/strftime/strfmon format string anomalies.
535 Wformat-contains-nul
536 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
537 Warn about format strings that contain NUL bytes.
539 Wformat-extra-args
540 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
541 Warn if passing too many arguments to a function for its format string.
543 Wformat-nonliteral
544 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
545 Warn about format strings that are not literals.
547 Wformat-overflow
548 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
549 Warn about function calls with format strings that write past the end
550 of the destination region.  Same as -Wformat-overflow=1.
552 Wformat-security
553 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
554 Warn about possible security problems with format functions.
556 Wformat-signedness
557 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
558 Warn about sign differences with format functions.
560 Wformat-truncation
561 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
562 Warn about calls to snprintf and similar functions that truncate output.
563 Same as -Wformat-truncation=1.
565 Wformat-y2k
566 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
567 Warn about strftime formats yielding 2-digit years.
569 Wformat-zero-length
570 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
571 Warn about zero-length formats.
573 Wformat=
574 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
575 Warn about printf/scanf/strftime/strfmon format string anomalies.
577 Wformat-overflow=
578 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_overflow) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
579 Warn about function calls with format strings that write past the end
580 of the destination region.
582 Wformat-truncation=
583 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_trunc) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
584 Warn about calls to snprintf and similar functions that truncate output.
586 Wif-not-aligned
587 C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
588 Warn when the field in a struct is not aligned.
590 Wignored-qualifiers
591 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
592 Warn whenever type qualifiers are ignored.
594 Wignored-attributes
595 C C++ Var(warn_ignored_attributes) Init(1) Warning
596 Warn whenever attributes are ignored.
598 Wincompatible-pointer-types
599 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
600 Warn when there is a conversion between pointers that have incompatible types.
602 Winit-self
603 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
604 Warn about variables which are initialized to themselves.
606 Wimplicit
607 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
608 Warn about implicit declarations.
610 Wimplicit-fallthrough=
611 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
612 ; in common.opt
614 Wdouble-promotion
615 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
616 Warn about implicit conversions from \"float\" to \"double\".
618 Wexpansion-to-defined
619 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)
620 Warn if \"defined\" is used outside #if.
622 Wimplicit-function-declaration
623 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
624 Warn about implicit function declarations.
626 Wimplicit-int
627 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
628 Warn when a declaration does not specify a type.
630 Wimport
631 C ObjC C++ ObjC++ Undocumented Ignore
633 Winherited-variadic-ctor
634 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
635 Warn about C++11 inheriting constructors when the base has a variadic constructor.
637 Wint-conversion
638 C ObjC Var(warn_int_conversion) Init(1) Warning
639 Warn about incompatible integer to pointer and pointer to integer conversions.
641 Wint-in-bool-context
642 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
643 Warn for suspicious integer expressions in boolean context.
645 Wint-to-pointer-cast
646 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
647 Warn when there is a cast to a pointer from an integer of a different size.
649 Winvalid-offsetof
650 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
651 Warn about invalid uses of the \"offsetof\" macro.
653 Winvalid-pch
654 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
655 Warn about PCH files that are found but not used.
657 Wjump-misses-init
658 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
659 Warn when a jump misses a variable initialization.
661 Wliteral-suffix
662 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
663 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
665 Wlogical-op
666 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
667 Warn when a logical operator is suspiciously always evaluating to true or false.
669 Wlogical-not-parentheses
670 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
671 Warn when logical not is used on the left hand side operand of a comparison.
673 Wlong-long
674 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)
675 Do not warn about using \"long long\" when -pedantic.
677 Wmain
678 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
679 Warn about suspicious declarations of \"main\".
681 Wmain
682 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
685 Wmemset-transposed-args
686 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
687 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
689 Wmemset-elt-size
690 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
691 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
693 Wmisleading-indentation
694 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
695 Warn when the indentation of the code does not reflect the block structure.
697 Wmissing-braces
698 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
699 Warn about possibly missing braces around initializers.
701 Wmissing-declarations
702 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
703 Warn about global functions without previous declarations.
705 Wmissing-field-initializers
706 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
707 Warn about missing fields in struct initializers.
709 Wmultistatement-macros
710 C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
711 Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
713 Wmultiple-inheritance
714 C++ ObjC++ Var(warn_multiple_inheritance) Warning
715 Warn on direct multiple inheritance.
717 Wnamespaces
718 C++ ObjC++ Var(warn_namespaces) Warning
719 Warn on namespace definition.
721 Wpacked-not-aligned
722 C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
723 Warn when fields in a struct with the packed attribute are misaligned.
725 Wsized-deallocation
726 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
727 Warn about missing sized deallocation functions.
729 Wsizeof-pointer-div
730 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
731 Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
733 Wsizeof-pointer-memaccess
734 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
735 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
737 Wsizeof-array-argument
738 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
739 Warn when sizeof is applied on a parameter declared as an array.
741 Wstringop-overflow
742 C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
743 Warn about buffer overflow in string manipulation functions like memcpy
744 and strcpy.
746 Wstringop-overflow=
747 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall, 2, 0) IntegerRange(0, 4)
748 Under the control of Object Size type, warn about buffer overflow in string
749 manipulation functions like memcpy and strcpy.
751 Wstringop-truncation
752 C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
753 Warn about truncation in string manipulation functions like strncat and strncpy.
755 Wsuggest-attribute=format
756 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
757 Warn about functions which might be candidates for format attributes.
759 Wsuggest-override
760 C++ ObjC++ Var(warn_override) Warning
761 Suggest that the override keyword be used when the declaration of a virtual
762 function overrides another.
764 Wswitch
765 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
766 Warn about enumerated switches, with no default, missing a case.
768 Wswitch-default
769 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
770 Warn about enumerated switches missing a \"default:\" statement.
772 Wswitch-enum
773 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
774 Warn about all enumerated switches missing a specific case.
776 Wswitch-bool
777 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
778 Warn about switches with boolean controlling expression.
780 Wtemplates
781 C++ ObjC++ Var(warn_templates) Warning
782 Warn on primary template declaration.
784 Wmissing-format-attribute
785 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
788 Wmissing-include-dirs
789 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
790 Warn about user-specified include directories that do not exist.
792 Wmissing-parameter-type
793 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
794 Warn about function parameters declared without a type specifier in K&R-style functions.
796 Wmissing-prototypes
797 C ObjC Var(warn_missing_prototypes) Warning
798 Warn about global functions without prototypes.
800 Wmudflap
801 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
803 Wmultichar
804 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
805 Warn about use of multi-character character constants.
807 Wnarrowing
808 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
809 Warn about narrowing conversions within { } that are ill-formed in C++11.
811 Wnested-externs
812 C ObjC Var(warn_nested_externs) Warning
813 Warn about \"extern\" declarations not at file scope.
815 Wnoexcept
816 C++ ObjC++ Var(warn_noexcept) Warning
817 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
819 Wnoexcept-type
820 C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
821 Warn if C++17 noexcept function type will change the mangled name of a symbol.
823 Wnon-template-friend
824 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
825 Warn when non-templatized friend functions are declared within a template.
827 Wclass-memaccess
828 C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
829 Warn for unsafe raw memory writes to objects of class types.
831 Wnon-virtual-dtor
832 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
833 Warn about non-virtual destructors.
835 Wnonnull
836 C ObjC C++ LTO ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=,warn_format >= 1,0)
837 Warn about NULL being passed to argument slots marked as requiring non-NULL.
839 Wnonnull
840 C ObjC C++ LTO ObjC++ LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
843 Wnonnull-compare
844 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
847 Wnormalized
848 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
851 Wnormalized=
852 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)
853 -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
855 ; Required for these enum values.
856 SourceInclude
857 cpplib.h
859 Enum
860 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
862 EnumValue
863 Enum(cpp_normalize_level) String(none) Value(normalized_none)
865 EnumValue
866 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
868 EnumValue
869 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
871 EnumValue
872 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
874 Wold-style-cast
875 C++ ObjC++ Var(warn_old_style_cast) Warning
876 Warn if a C-style cast is used in a program.
878 Wold-style-declaration
879 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
880 Warn for obsolescent usage in a declaration.
882 Wold-style-definition
883 C ObjC Var(warn_old_style_definition) Warning
884 Warn if an old-style parameter definition is used.
886 Wopenmp-simd
887 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
888 Warn if a simd directive is overridden by the vectorizer cost model.
890 Woverlength-strings
891 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
892 Warn if a string is longer than the maximum portable length specified by the standard.
894 Woverloaded-virtual
895 C++ ObjC++ Var(warn_overloaded_virtual) Warning
896 Warn about overloaded virtual function names.
898 Woverride-init
899 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
900 Warn about overriding initializers without side effects.
902 Woverride-init-side-effects
903 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
904 Warn about overriding initializers with side effects.
906 Wpacked-bitfield-compat
907 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
908 Warn about packed bit-fields whose offset changed in GCC 4.4.
910 Wparentheses
911 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
912 Warn about possibly missing parentheses.
914 Wpedantic
915 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
916 ; Documented in common.opt
918 Wpmf-conversions
919 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
920 Warn when converting the type of pointers to member functions.
922 Wpointer-arith
923 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
924 Warn about function pointer arithmetic.
926 Wpointer-sign
927 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
928 Warn when a pointer differs in signedness in an assignment.
930 Wpointer-compare
931 C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
932 Warn when a pointer is compared with a zero character constant.
934 Wpointer-to-int-cast
935 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
936 Warn when a pointer is cast to an integer of a different size.
938 Wpragmas
939 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
940 Warn about misuses of pragmas.
942 Wproperty-assign-default
943 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
944 Warn if a property for an Objective-C object has no assign semantics specified.
946 Wprotocol
947 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
948 Warn if inherited methods are unimplemented.
950 Wplacement-new
951 C++ Warning Alias(Wplacement-new=, 1, 0)
952 Warn for placement new expressions with undefined behavior.
954 Wplacement-new=
955 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
956 Warn for placement new expressions with undefined behavior.
958 Wredundant-decls
959 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
960 Warn about multiple declarations of the same object.
962 Wregister
963 C++ ObjC++ Var(warn_register) Warning
964 Warn about uses of register storage specifier.
966 Wreorder
967 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
968 Warn when the compiler reorders code.
970 Wreturn-type
971 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Init(-1)
972 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
974 Wscalar-storage-order
975 C ObjC C++ ObjC++ Init(1) Warning
976 Warn on suspicious constructs involving reverse scalar storage order.
978 Wselector
979 ObjC ObjC++ Var(warn_selector) Warning
980 Warn if a selector has multiple methods.
982 Wsequence-point
983 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
984 Warn about possible violations of sequence point rules.
986 Wshadow-ivar
987 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
988 Warn if a local declaration hides an instance variable.
990 Wshift-overflow
991 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
992 Warn if left shift of a signed value overflows.
994 Wshift-overflow=
995 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
996 Warn if left shift of a signed value overflows.
998 Wshift-count-negative
999 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
1000 Warn if shift count is negative.
1002 Wshift-count-overflow
1003 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
1004 Warn if shift count >= width of type.
1006 Wshift-negative-value
1007 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
1008 Warn if left shifting a negative value.
1010 Wsign-compare
1011 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
1012 Warn about signed-unsigned comparisons.
1014 Wsign-compare
1015 C ObjC C++ ObjC++ EnabledBy(Wextra)
1018 Wsign-conversion
1019 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
1020 Warn for implicit type conversions between signed and unsigned integers.
1022 Wsign-promo
1023 C++ ObjC++ Var(warn_sign_promo) Warning
1024 Warn when overload promotes from unsigned to signed.
1026 Wstrict-null-sentinel
1027 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
1028 Warn about uncasted NULL used as sentinel.
1030 Wstrict-prototypes
1031 C ObjC Var(warn_strict_prototypes) Warning
1032 Warn about unprototyped function declarations.
1034 Wstrict-aliasing=
1035 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
1038 Wstrict-overflow=
1039 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
1042 Wstrict-selector-match
1043 ObjC ObjC++ Var(warn_strict_selector_match) Warning
1044 Warn if type signatures of candidate methods do not match exactly.
1046 Wsync-nand
1047 C C++ Var(warn_sync_nand) Init(1) Warning
1048 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
1050 Wsynth
1051 C++ ObjC++ Var(warn_synth) Warning
1052 Deprecated.  This switch has no effect.
1054 Wsystem-headers
1055 C ObjC C++ ObjC++ Warning
1056 ; Documented in common.opt
1058 Wtautological-compare
1059 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1060 Warn if a comparison always evaluates to true or false.
1062 Wterminate
1063 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1064 Warn if a throw expression will always result in a call to terminate().
1066 Wtraditional
1067 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1068 Warn about features not present in traditional C.
1070 Wtraditional-conversion
1071 C ObjC Var(warn_traditional_conversion) Warning
1072 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1074 Wtrigraphs
1075 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1076 Warn if trigraphs are encountered that might affect the meaning of the program.
1078 Wundeclared-selector
1079 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1080 Warn about @selector()s without previously declared methods.
1082 Wundef
1083 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1084 Warn if an undefined macro is used in an #if directive.
1086 Wuninitialized
1087 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1090 Wmaybe-uninitialized
1091 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1094 Wunknown-pragmas
1095 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1096 Warn about unrecognized pragmas.
1098 Wunsuffixed-float-constants
1099 C ObjC Var(warn_unsuffixed_float_constants) Warning
1100 Warn about unsuffixed float constants.
1102 Wunused
1103 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1104 ; documented in common.opt
1106 Wunused-local-typedefs
1107 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1108 Warn when typedefs locally defined in a function are not used.
1110 Wunused-macros
1111 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1112 Warn about macros defined in the main file that are not used.
1114 Wunused-result
1115 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1116 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1118 Wunused-variable
1119 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1120 ; documented in common.opt
1122 Wunused-const-variable
1123 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1124 Warn when a const variable is unused.
1126 Wunused-const-variable=
1127 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
1128 Warn when a const variable is unused.
1130 Wvariadic-macros
1131 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)
1132 Warn about using variadic macros.
1134 Wvarargs
1135 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1136 Warn about questionable usage of the macros used to retrieve variable arguments.
1138 Wvla
1139 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1140 Warn if a variable length array is used.
1142 Wvla-larger-than=
1143 C ObjC C++ ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative UInteger
1144 -Wvla-larger-than=<number>      Warn on unbounded uses of variable-length arrays, and
1145 on bounded uses of variable-length arrays whose bound can be
1146 larger than <number> bytes.
1148 Wvolatile-register-var
1149 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1150 Warn when a register variable is declared volatile.
1152 Wvirtual-inheritance
1153 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1154 Warn on direct virtual inheritance.
1156 Wvirtual-move-assign
1157 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1158 Warn if a virtual base has a non-trivial move assignment operator.
1160 Wwrite-strings
1161 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1162 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.
1164 Wzero-as-null-pointer-constant
1165 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1166 Warn when a literal '0' is used as null pointer.
1168 Wuseless-cast
1169 C++ ObjC++ Var(warn_useless_cast) Warning
1170 Warn about useless casts.
1172 Wsubobject-linkage
1173 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1174 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.
1176 Wduplicate-decl-specifier
1177 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1178 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1180 Wrestrict
1181 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
1182 Warn when an argument passed to a restrict-qualified parameter aliases with
1183 another argument.
1185 ansi
1186 C ObjC C++ ObjC++
1187 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1190 C ObjC C++ ObjC++ Joined
1191 ; Documented in common.opt.  FIXME - what about -dI, -dD, -dN and -dD?
1193 fabi-compat-version=
1194 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1195 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1197 faccess-control
1198 C++ ObjC++ Var(flag_access_control) Init(1)
1199 Enforce class member access control semantics.
1201 fada-spec-parent=
1202 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1203 -fada-spec-parent=unit  Dump Ada specs as child units of given parent.
1205 faligned-new
1206 C++ ObjC++ Alias(faligned-new=,1,0)
1207 Support C++17 allocation of over-aligned types.
1209 faligned-new=
1210 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1211 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1213 fall-virtual
1214 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1216 fallow-parameterless-variadic-functions
1217 C ObjC Var(flag_allow_parameterless_variadic_functions)
1218 Allow variadic functions without named parameter.
1220 falt-external-templates
1221 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1222 No longer supported.
1224 fasm
1225 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1226 Recognize the \"asm\" keyword.
1228 ; Define extra predefined macros for use in libgcc.
1229 fbuilding-libgcc
1230 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1232 fbuiltin
1233 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1234 Recognize built-in functions.
1236 fbuiltin-
1237 C ObjC C++ ObjC++ Joined
1239 fcanonical-system-headers
1240 C ObjC C++ ObjC++
1241 Where shorter, use canonicalized paths to systems headers.
1243 fcheck-pointer-bounds
1244 C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds)
1245 Add Pointer Bounds Checker instrumentation.  fchkp-* flags are used to
1246 control instrumentation.  Currently available for C, C++ and ObjC.
1248 fchkp-check-incomplete-type
1249 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1)
1250 Generate pointer bounds checks for variables with incomplete type.
1252 fchkp-zero-input-bounds-for-main
1253 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0)
1254 Use zero bounds for all incoming arguments in 'main' function.  It helps when
1255 instrumented binaries are used with legacy libs.
1257 fchkp-first-field-has-own-bounds
1258 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds)
1259 Forces Pointer Bounds Checker to use narrowed bounds for address of the first
1260 field in the structure.  By default pointer to the first field has the same
1261 bounds as pointer to the whole structure.
1263 fchkp-narrow-bounds
1264 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1)
1265 Control how Pointer Bounds Checker handle pointers to object fields.  When
1266 narrowing is on, field bounds are used.  Otherwise full object bounds are used.
1268 fchkp-narrow-to-innermost-array
1269 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray)
1270 Forces Pointer Bounds Checker to use bounds of the innermost arrays in case of
1271 nested static arrays access.  By default outermost array is used.
1273 fchkp-flexible-struct-trailing-arrays
1274 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_flexible_struct_trailing_arrays)
1275 Forces Pointer Bounds Checker to treat all trailing arrays in structures as
1276 possibly flexible.  By default only arrays fields with zero length or that are
1277 marked with attribute bnd_variable_size are treated as flexible.
1279 fchkp-optimize
1280 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1)
1281 Allow Pointer Bounds Checker optimizations.  By default allowed
1282 on optimization levels >0.
1284 fchkp-use-fast-string-functions
1285 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0)
1286 Allow to use *_nobnd versions of string functions by Pointer Bounds Checker.
1288 fchkp-use-nochk-string-functions
1289 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0)
1290 Allow to use *_nochk versions of string functions by Pointer Bounds Checker.
1292 fchkp-use-static-bounds
1293 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1)
1294 Use statically initialized variable for vars bounds instead of
1295 generating them each time it is required.
1297 fchkp-use-static-const-bounds
1298 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1)
1299 Use statically initialized variable for constant bounds instead of
1300 generating them each time it is required.
1302 fchkp-treat-zero-dynamic-size-as-infinite
1303 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0)
1304 With this option zero size obtained dynamically for objects with
1305 incomplete type will be treated as infinite.
1307 fchkp-check-read
1308 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1)
1309 Generate checks for all read accesses to memory.
1311 fchkp-check-write
1312 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1)
1313 Generate checks for all write accesses to memory.
1315 fchkp-store-bounds
1316 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1)
1317 Generate bounds stores for pointer writes.
1319 fchkp-instrument-calls
1320 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1)
1321 Generate bounds passing for calls.
1323 fchkp-instrument-marked-only
1324 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0)
1325 Instrument only functions marked with bnd_instrument attribute.
1327 fchkp-use-wrappers
1328 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1)
1329 Transform instrumented builtin calls into calls to wrappers.
1331 static-libmpx
1332 Driver
1334 static-libmpxwrappers
1335 Driver
1337 fcilkplus Undocumented
1338 C ObjC C++ ObjC++ LTO Report Var(flag_cilkplus) Init(0)
1339 Deprecated in GCC 8.  This switch has no effect.
1341 fconcepts
1342 C++ ObjC++ Var(flag_concepts)
1343 Enable support for C++ concepts.
1345 fcond-mismatch
1346 C ObjC C++ ObjC++
1347 Allow the arguments of the '?' operator to have different types.
1349 fconserve-space
1350 C++ ObjC++ Var(flag_conserve_space)
1351 Does nothing.  Preserved for backward compatibility.
1353 fconstant-string-class=
1354 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1355 -fconst-string-class=<name>     Use class <name> for constant strings.
1357 fconstexpr-depth=
1358 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1359 -fconstexpr-depth=<number>      Specify maximum constexpr recursion depth.
1361 fconstexpr-loop-limit=
1362 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1363 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1365 fdebug-cpp
1366 C ObjC C++ ObjC++
1367 Emit debug annotations during preprocessing.
1369 fdeduce-init-list
1370 C++ ObjC++ Var(flag_deduce_init_list) Init(0)
1371 -fdeduce-init-list      enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list.
1373 fdeclone-ctor-dtor
1374 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1375 Factor complex constructors and destructors to favor space over speed.
1377 fdefault-inline
1378 C++ ObjC++ Ignore
1379 Does nothing.  Preserved for backward compatibility.
1381 fdiagnostics-show-template-tree
1382 C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1383 Print hierarchical comparisons when template types are mismatched.
1385 fdirectives-only
1386 C ObjC C++ ObjC++
1387 Preprocess directives only.
1389 fdollars-in-identifiers
1390 C ObjC C++ ObjC++
1391 Permit '$' as an identifier character.
1393 fmacro-prefix-map=
1394 C ObjC C++ ObjC++ Joined RejectNegative
1395 -fmacro-prefix-map=<old>=<new> Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE().
1397 fdump-ada-spec
1398 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1399 Write all declarations as Ada code transitively.
1401 fdump-ada-spec-slim
1402 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1403 Write all declarations as Ada code for the given file only.
1405 felide-constructors
1406 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1408 felide-type
1409 C++ ObjC++ Var(flag_elide_type) Init(1)
1410 -fno-elide-type Do not elide common elements in template comparisons.
1412 fenforce-eh-specs
1413 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1414 Generate code to check exception specifications.
1416 fenum-int-equiv
1417 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1419 fexec-charset=
1420 C ObjC C++ ObjC++ Joined RejectNegative
1421 -fexec-charset=<cset>   Convert all strings and character constants to character set <cset>.
1423 fextended-identifiers
1424 C ObjC C++ ObjC++
1425 Permit universal character names (\\u and \\U) in identifiers.
1427 finput-charset=
1428 C ObjC C++ ObjC++ Joined RejectNegative
1429 -finput-charset=<cset>  Specify the default character set for source files.
1431 fextern-tls-init
1432 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1433 Support dynamic initialization of thread-local variables in a different translation unit.
1435 fexternal-templates
1436 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1438 ffor-scope
1439 C++ ObjC++ Var(flag_new_for_scope) Init(1)
1440 Scope of for-init-statement variables is local to the loop.
1442 ffreestanding
1443 C ObjC C++ ObjC++
1444 Do not assume that standard C libraries and \"main\" exist.
1446 fgnu-keywords
1447 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1448 Recognize GNU-defined keywords.
1450 fgnu-runtime
1451 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1452 Generate code for GNU runtime environment.
1454 fgnu89-inline
1455 C ObjC Var(flag_gnu89_inline) Init(-1)
1456 Use traditional GNU semantics for inline functions.
1458 fguiding-decls
1459 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1461 fhandle-exceptions
1462 C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)})
1464 fhonor-std
1465 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1467 fhosted
1468 C ObjC
1469 Assume normal C execution environment.
1471 fhuge-objects
1472 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1473 No longer supported.
1475 fimplement-inlines
1476 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1477 Export functions even if they can be inlined.
1479 fimplicit-inline-templates
1480 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1481 Emit implicit instantiations of inline templates.
1483 fimplicit-templates
1484 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1485 Emit implicit instantiations of templates.
1487 fnew-inheriting-ctors
1488 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1489 Implement C++17 inheriting constructor semantics.
1491 ffriend-injection
1492 C++ ObjC++ Var(flag_friend_injection)
1493 Inject friend functions into enclosing namespace.
1495 fkeep-inline-dllexport
1496 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1497 Don't emit dllexported inline functions unless needed.
1499 flabels-ok
1500 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1502 flax-vector-conversions
1503 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1504 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1506 fms-extensions
1507 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1508 Don't warn about uses of Microsoft extensions.
1510 fmudflap
1511 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1513 fmudflapth
1514 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1516 fmudflapir
1517 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1519 fname-mangling-version-
1520 C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
1522 fnew-abi
1523 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1525 fnew-ttp-matching
1526 C++ ObjC++ Var(flag_new_ttp)
1527 Implement resolution of DR 150 for matching of template template arguments.
1529 fnext-runtime
1530 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
1531 Generate code for NeXT (Apple Mac OS X) runtime environment.
1533 fnil-receivers
1534 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
1535 Assume that receivers of Objective-C messages may be nil.
1537 flocal-ivars
1538 ObjC ObjC++ Var(flag_local_ivars) Init(1)
1539 Allow access to instance variables as if they were local declarations within instance method implementations.
1541 fivar-visibility=
1542 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
1543 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
1545 Enum
1546 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1548 EnumValue
1549 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1551 EnumValue
1552 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1554 EnumValue
1555 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1557 EnumValue
1558 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1560 fnonansi-builtins
1561 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
1563 fnonnull-objects
1564 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1566 fnothrow-opt
1567 C++ ObjC++ Optimization Var(flag_nothrow_opt)
1568 Treat a throw() exception specification as noexcept to improve code size.
1570 fobjc-abi-version=
1571 ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
1572 Specify which ABI to use for Objective-C family code and meta-data generation.
1574 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1575 ; to initialize any non-POD ivars in Objective-C++ classes.
1576 fobjc-call-cxx-cdtors
1577 ObjC++ Var(flag_objc_call_cxx_cdtors)
1578 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
1580 fobjc-direct-dispatch
1581 ObjC ObjC++ Var(flag_objc_direct_dispatch)
1582 Allow fast jumps to the message dispatcher.
1584 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
1585 ; @try, etc.) in source code.
1586 fobjc-exceptions
1587 ObjC ObjC++ Var(flag_objc_exceptions)
1588 Enable Objective-C exception and synchronization syntax.
1590 fobjc-gc
1591 ObjC ObjC++ LTO Var(flag_objc_gc)
1592 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
1594 fobjc-nilcheck
1595 ObjC ObjC++ Var(flag_objc_nilcheck,1)
1596 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1598 ; Nonzero means that we generate NeXT setjmp based exceptions.
1599 fobjc-sjlj-exceptions
1600 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
1601 Enable Objective-C setjmp exception handling runtime.
1603 fobjc-std=objc1
1604 ObjC ObjC++ Var(flag_objc1_only)
1605 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
1607 fopenacc
1608 C ObjC C++ ObjC++ LTO Var(flag_openacc)
1609 Enable OpenACC.
1611 fopenacc-dim=
1612 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1613 Specify default OpenACC compute dimensions.
1615 fopenmp
1616 C ObjC C++ ObjC++ LTO Var(flag_openmp)
1617 Enable OpenMP (implies -frecursive in Fortran).
1619 fopenmp-simd
1620 C ObjC C++ ObjC++ Var(flag_openmp_simd)
1621 Enable OpenMP's SIMD directives.
1623 foperator-names
1624 C++ ObjC++
1625 Recognize C++ keywords like \"compl\" and \"xor\".
1627 foptional-diags
1628 C++ ObjC++ Ignore
1629 Does nothing.  Preserved for backward compatibility.
1631 fpch-deps
1632 C ObjC C++ ObjC++
1634 fpch-preprocess
1635 C ObjC C++ ObjC++
1636 Look for and use PCH files even when preprocessing.
1638 fpermissive
1639 C++ ObjC++ Var(flag_permissive)
1640 Downgrade conformance errors to warnings.
1642 fplan9-extensions
1643 C ObjC Var(flag_plan9_extensions)
1644 Enable Plan 9 language extensions.
1646 fpreprocessed
1647 C ObjC C++ ObjC++
1648 Treat the input file as already preprocessed.
1650 ftrack-macro-expansion
1651 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1652 ; converted into ftrack-macro-expansion=
1654 ftrack-macro-expansion=
1655 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1656 -ftrack-macro-expansion=<0|1|2>  Track locations of tokens coming from macro expansion and display them in error messages.
1658 fpretty-templates
1659 C++ ObjC++ Var(flag_pretty_templates) Init(1)
1660 -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments.
1662 fprintf-return-value
1663 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
1664 Treat known sprintf return values as constants.
1666 freplace-objc-classes
1667 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
1668 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
1670 frepo
1671 C++ ObjC++
1672 Enable automatic template instantiation.
1674 frtti
1675 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
1676 Generate run time type descriptor information.
1678 fshort-enums
1679 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
1680 Use the narrowest integer type possible for enumeration types.
1682 fshort-wchar
1683 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
1684 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
1686 fsigned-bitfields
1687 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
1688 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
1690 fsigned-char
1691 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
1692 Make \"char\" signed by default.
1694 fsized-deallocation
1695 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
1696 Enable C++14 sized deallocation support.
1698 fsquangle
1699 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1701 fsso-struct=
1702 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
1703 -fsso-struct=[big-endian|little-endian|native]  Set the default scalar storage order.
1705 Enum
1706 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
1708 EnumValue
1709 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
1711 EnumValue
1712 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
1714 EnumValue
1715 Enum(sso_struct) String(native) Value(SSO_NATIVE)
1717 fstats
1718 C++ ObjC++ Var(flag_detailed_statistics)
1719 Display statistics accumulated during compilation.
1721 fstrict-enums
1722 C++ ObjC++ Optimization Var(flag_strict_enums)
1723 Assume that values of enumeration type are always within the minimum range of that type.
1725 fstrict-prototype
1726 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1728 fstrong-eval-order
1729 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
1730 Follow the C++17 evaluation order requirements for assignment expressions,
1731 shift, member function calls, etc.
1733 fstrong-eval-order=
1734 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
1735 Follow the C++17 evaluation order requirements for assignment expressions,
1736 shift, member function calls, etc.
1738 Enum
1739 Name(strong_eval_order) Type(int)
1741 EnumValue
1742 Enum(strong_eval_order) String(none) Value(0)
1744 EnumValue
1745 Enum(strong_eval_order) String(some) Value(1)
1747 EnumValue
1748 Enum(strong_eval_order) String(all) Value(2)
1750 ftabstop=
1751 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1752 -ftabstop=<number>      Distance between tab stops for column reporting.
1754 ftemplate-backtrace-limit=
1755 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
1756 Set the maximum number of template instantiation notes for a single warning or error.
1758 ftemplate-depth-
1759 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
1761 ftemplate-depth=
1762 C++ ObjC++ Joined RejectNegative UInteger
1763 -ftemplate-depth=<number>       Specify maximum template instantiation depth.
1765 fthis-is-variable
1766 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1768 fthreadsafe-statics
1769 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
1770 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
1772 funsigned-bitfields
1773 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
1774 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
1776 funsigned-char
1777 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
1778 Make \"char\" unsigned by default.
1780 fuse-cxa-atexit
1781 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
1782 Use __cxa_atexit to register destructors.
1784 fuse-cxa-get-exception-ptr
1785 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
1786 Use __cxa_get_exception_ptr in exception handling.
1788 fvisibility-inlines-hidden
1789 C++ ObjC++
1790 Marks all inlined functions and methods as having hidden visibility.
1792 fvisibility-ms-compat
1793 C++ ObjC++ Var(flag_visibility_ms_compat)
1794 Changes visibility to match Microsoft Visual Studio by default.
1796 fvtable-gc
1797 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1798 No longer supported.
1800 fvtable-thunks
1801 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1802 No longer supported.
1804 fweak
1805 C++ ObjC++ Var(flag_weak) Init(1)
1806 Emit common-like symbols as weak symbols.
1808 fwide-exec-charset=
1809 C ObjC C++ ObjC++ Joined RejectNegative
1810 -fwide-exec-charset=<cset>      Convert all wide strings and character constants to character set <cset>.
1812 fworking-directory
1813 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
1814 Generate a #line directive pointing at the current working directory.
1816 fxref
1817 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1818 No longer supported.
1820 fzero-link
1821 ObjC ObjC++ Var(flag_zero_link)
1822 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
1824 gen-decls
1825 ObjC ObjC++ Driver Var(flag_gen_declaration) RejectNegative
1826 Dump declarations to a .decl file.
1828 femit-struct-debug-baseonly
1829 C ObjC C++ ObjC++
1830 -femit-struct-debug-baseonly    Aggressive reduced debug info for structs.
1832 femit-struct-debug-reduced
1833 C ObjC C++ ObjC++
1834 -femit-struct-debug-reduced     Conservative reduced debug info for structs.
1836 femit-struct-debug-detailed=
1837 C ObjC C++ ObjC++ Joined
1838 -femit-struct-debug-detailed=<spec-list>        Detailed reduced debug info for structs.
1840 fext-numeric-literals
1841 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
1842 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
1843 number literal rather than a user-defined number literal.
1845 idirafter
1846 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1847 -idirafter <dir>        Add <dir> to the end of the system include path.
1849 imacros
1850 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1851 -imacros <file> Accept definition of macros in <file>.
1853 imultilib
1854 C ObjC C++ ObjC++ Joined Separate
1855 -imultilib <dir>        Set <dir> to be the multilib include subdirectory.
1857 include
1858 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1859 -include <file> Include the contents of <file> before other files.
1861 iprefix
1862 C ObjC C++ ObjC++ Joined Separate
1863 -iprefix <path> Specify <path> as a prefix for next two options.
1865 isysroot
1866 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1867 -isysroot <dir> Set <dir> to be the system root directory.
1869 isystem
1870 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1871 -isystem <dir>  Add <dir> to the start of the system include path.
1873 iquote
1874 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1875 -iquote <dir>   Add <dir> to the end of the quote include path.
1877 iwithprefix
1878 C ObjC C++ ObjC++ Joined Separate
1879 -iwithprefix <dir>      Add <dir> to the end of the system include path.
1881 iwithprefixbefore
1882 C ObjC C++ ObjC++ Joined Separate
1883 -iwithprefixbefore <dir>        Add <dir> to the end of the main include path.
1885 lang-asm
1886 C Undocumented RejectDriver
1888 no-integrated-cpp
1889 Driver
1891 nostdinc
1892 C ObjC C++ ObjC++
1893 Do not search standard system include directories (those specified with -isystem will still be used).
1895 nostdinc++
1896 C++ ObjC++
1897 Do not search standard system include directories for C++.
1900 C ObjC C++ ObjC++ Joined Separate
1901 ; Documented in common.opt
1903 pedantic
1904 C ObjC C++ ObjC++ Alias(Wpedantic)
1905 ; Documented in common.opt
1907 print-objc-runtime-info
1908 ObjC ObjC++
1909 Generate C header of platform-specific features.
1911 remap
1912 C ObjC C++ ObjC++
1913 Remap file names when including files.
1915 std=c++98
1916 C++ ObjC++
1917 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1919 std=c++03
1920 C++ ObjC++ Alias(std=c++98)
1921 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1923 std=c++11
1924 C++ ObjC++
1925 Conform to the ISO 2011 C++ standard.
1927 std=c++0x
1928 C++ ObjC++ Alias(std=c++11) Undocumented
1929 Deprecated in favor of -std=c++11.
1931 std=c++1y
1932 C++ ObjC++ Alias(std=c++14) Undocumented
1933 Deprecated in favor of -std=c++14.
1935 std=c++14
1936 C++ ObjC++
1937 Conform to the ISO 2014 C++ standard.
1939 std=c++1z
1940 C++ ObjC++ Alias(std=c++17) Undocumented
1941 Deprecated in favor of -std=c++17.
1943 std=c++17
1944 C++ ObjC++
1945 Conform to the ISO 2017 C++ standard.
1947 std=c++2a
1948 C++ ObjC++
1949 Conform to the ISO 2020(?) C++ draft standard (experimental and incomplete support).
1951 std=c11
1952 C ObjC
1953 Conform to the ISO 2011 C standard.
1955 std=c1x
1956 C ObjC Alias(std=c11)
1957 Deprecated in favor of -std=c11.
1959 std=c17
1960 C ObjC
1961 Conform to the ISO 2017 C standard (expected to be published in 2018).
1963 std=c18
1964 C ObjC Alias(std=c17)
1965 Conform to the ISO 2017 C standard (expected to be published in 2018).
1967 std=c89
1968 C ObjC Alias(std=c90)
1969 Conform to the ISO 1990 C standard.
1971 std=c90
1972 C ObjC
1973 Conform to the ISO 1990 C standard.
1975 std=c99
1976 C ObjC
1977 Conform to the ISO 1999 C standard.
1979 std=c9x
1980 C ObjC Alias(std=c99)
1981 Deprecated in favor of -std=c99.
1983 std=gnu++98
1984 C++ ObjC++
1985 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1986 corrigendum with GNU extensions.
1988 std=gnu++03
1989 C++ ObjC++ Alias(std=gnu++98)
1990 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1991 corrigendum with GNU extensions.
1993 std=gnu++11
1994 C++ ObjC++
1995 Conform to the ISO 2011 C++ standard with GNU extensions.
1997 std=gnu++0x
1998 C++ ObjC++ Alias(std=gnu++11) Undocumented
1999 Deprecated in favor of -std=gnu++11.
2001 std=gnu++1y
2002 C++ ObjC++ Alias(std=gnu++14) Undocumented
2003 Deprecated in favor of -std=gnu++14.
2005 std=gnu++14
2006 C++ ObjC++
2007 Conform to the ISO 2014 C++ standard with GNU extensions.
2009 std=gnu++1z
2010 C++ ObjC++ Alias(std=gnu++17) Undocumented
2011 Deprecated in favor of -std=gnu++17.
2013 std=gnu++17
2014 C++ ObjC++
2015 Conform to the ISO 2017 C++ standard with GNU extensions.
2017 std=gnu++2a
2018 C++ ObjC++
2019 Conform to the ISO 2020(?) C++ draft standard with GNU extensions (experimental and incomplete support).
2021 std=gnu11
2022 C ObjC
2023 Conform to the ISO 2011 C standard with GNU extensions.
2025 std=gnu1x
2026 C ObjC Alias(std=gnu11)
2027 Deprecated in favor of -std=gnu11.
2029 std=gnu17
2030 C ObjC
2031 Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions.
2033 std=gnu18
2034 C ObjC Alias(std=gnu17)
2035 Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions.
2037 std=gnu89
2038 C ObjC Alias(std=gnu90)
2039 Conform to the ISO 1990 C standard with GNU extensions.
2041 std=gnu90
2042 C ObjC
2043 Conform to the ISO 1990 C standard with GNU extensions.
2045 std=gnu99
2046 C ObjC
2047 Conform to the ISO 1999 C standard with GNU extensions.
2049 std=gnu9x
2050 C ObjC Alias(std=gnu99)
2051 Deprecated in favor of -std=gnu99.
2053 std=iso9899:1990
2054 C ObjC Alias(std=c90)
2055 Conform to the ISO 1990 C standard.
2057 std=iso9899:199409
2058 C ObjC
2059 Conform to the ISO 1990 C standard as amended in 1994.
2061 std=iso9899:1999
2062 C ObjC Alias(std=c99)
2063 Conform to the ISO 1999 C standard.
2065 std=iso9899:199x
2066 C ObjC Alias(std=c99)
2067 Deprecated in favor of -std=iso9899:1999.
2069 std=iso9899:2011
2070 C ObjC Alias(std=c11)
2071 Conform to the ISO 2011 C standard.
2073 std=iso9899:2017
2074 C ObjC Alias(std=c17)
2075 Conform to the ISO 2017 C standard (expected to be published in 2018).
2077 std=iso9899:2018
2078 C ObjC Alias(std=c17)
2079 Conform to the ISO 2017 C standard (expected to be published in 2018).
2081 traditional
2082 Driver
2084 traditional-cpp
2085 C ObjC C++ ObjC++
2086 Enable traditional preprocessing.
2088 trigraphs
2089 C ObjC C++ ObjC++
2090 -trigraphs      Support ISO C trigraphs.
2092 undef
2093 C ObjC C++ ObjC++ Var(flag_undef)
2094 Do not predefine system-specific and GCC-specific macros.
2097 C ObjC C++ ObjC++
2098 ; Documented in common.opt
2101 C ObjC C++ ObjC++
2102 ; Documented in common.opt
2104 ; This comment is to ensure we retain the blank line above.