]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/c-family/c.opt
c++: reference cast, conversion fn [PR113141]
[thirdparty/gcc.git] / gcc / c-family / c.opt
1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2024 Free Software Foundation, Inc.
3 ;
4 ; This file is part of GCC.
5 ;
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.
10 ;
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.
15 ;
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/>.
19
20 ; See the GCC internals manual for a description of this file's format.
21
22 ; Please try to keep this file in ASCII collating order.
23
24 Language
25 C
26
27 Language
28 ObjC
29
30 Language
31 C++
32
33 Language
34 ObjC++
35
36 -all-warnings
37 C ObjC C++ ObjC++ Warning Alias(Wall)
38
39 -ansi
40 C ObjC C++ ObjC++ Alias(ansi)
41
42 -assert
43 C ObjC C++ ObjC++ Separate Alias(A) MissingArgError(assertion missing after %qs)
44
45 -assert=
46 C ObjC C++ ObjC++ Joined Alias(A) MissingArgError(assertion missing after %qs)
47
48 -comments
49 C ObjC C++ ObjC++ Alias(C)
50
51 -comments-in-macros
52 C ObjC C++ ObjC++ Alias(CC)
53
54 -define-macro
55 C ObjC C++ ObjC++ Separate Alias(D) MissingArgError(macro name missing after %qs)
56
57 -define-macro=
58 C ObjC C++ ObjC++ Joined Alias(D) MissingArgError(macro name missing after %qs)
59
60 -dependencies
61 C ObjC C++ ObjC++ Alias(M)
62
63 -dump
64 C ObjC C++ ObjC++ Separate Alias(d)
65
66 -dump=
67 C ObjC C++ ObjC++ Joined Alias(d)
68
69 -imacros
70 C ObjC C++ ObjC++ Separate Alias(imacros) MissingArgError(missing filename after %qs)
71
72 -imacros=
73 C ObjC C++ ObjC++ Joined Alias(imacros) MissingArgError(missing filename after %qs)
74
75 -include
76 C ObjC C++ ObjC++ Separate Alias(include) MissingArgError(missing filename after %qs)
77
78 -include=
79 C ObjC C++ ObjC++ Joined Alias(include) MissingArgError(missing filename after %qs)
80
81 -include-barrier
82 C ObjC C++ ObjC++ Alias(I, -)
83
84 -include-directory
85 C ObjC C++ ObjC++ Separate Alias(I) MissingArgError(missing path after %qs)
86
87 -include-directory=
88 C ObjC C++ ObjC++ Joined Alias(I) MissingArgError(missing path after %qs)
89
90 -include-directory-after
91 C ObjC C++ ObjC++ Separate Alias(idirafter) MissingArgError(missing path after %qs)
92
93 -include-directory-after=
94 C ObjC C++ ObjC++ Joined Alias(idirafter) MissingArgError(missing path after %qs)
95
96 -include-prefix
97 C ObjC C++ ObjC++ Separate Alias(iprefix)
98
99 -include-prefix=
100 C ObjC C++ ObjC++ JoinedOrMissing Alias(iprefix)
101
102 -include-with-prefix
103 C ObjC C++ ObjC++ Separate Alias(iwithprefix)
104
105 -include-with-prefix=
106 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
107
108 -include-with-prefix-after
109 C ObjC C++ ObjC++ Separate Alias(iwithprefix)
110
111 -include-with-prefix-after=
112 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefix)
113
114 -include-with-prefix-before
115 C ObjC C++ ObjC++ Separate Alias(iwithprefixbefore)
116
117 -include-with-prefix-before=
118 C ObjC C++ ObjC++ JoinedOrMissing Alias(iwithprefixbefore)
119
120 -no-integrated-cpp
121 Driver Alias(no-integrated-cpp)
122
123 -no-line-commands
124 C ObjC C++ ObjC++ Alias(P)
125
126 -no-standard-includes
127 C ObjC C++ ObjC++ Alias(nostdinc)
128
129 -no-warnings
130 C ObjC C++ ObjC++ Alias(w)
131
132 -output
133 C ObjC C++ ObjC++ Separate Alias(o)
134
135 -output=
136 C ObjC C++ ObjC++ Joined Alias(o)
137
138 -output-pch
139 C ObjC C++ ObjC++ Separate
140
141 -pedantic
142 C ObjC C++ ObjC++ Alias(pedantic)
143
144 -preprocess
145 C ObjC C++ ObjC++ Undocumented Alias(E)
146
147 -print-missing-file-dependencies
148 C ObjC C++ ObjC++ Alias(MG)
149
150 -trace-includes
151 C ObjC C++ ObjC++ Alias(H)
152
153 -traditional
154 Driver Alias(traditional)
155
156 -traditional-cpp
157 C ObjC C++ ObjC++ Alias(traditional-cpp)
158
159 -trigraphs
160 C ObjC C++ ObjC++ Alias(trigraphs)
161
162 -undefine-macro
163 C ObjC C++ ObjC++ Separate Alias(U) MissingArgError(macro name missing after %qs)
164
165 -undefine-macro=
166 C ObjC C++ ObjC++ Joined Alias(U) MissingArgError(macro name missing after %qs)
167
168 -user-dependencies
169 C ObjC C++ ObjC++ Alias(MM)
170
171 -verbose
172 Common C ObjC C++ ObjC++ Alias(v)
173
174 -write-dependencies
175 C ObjC C++ ObjC++ NoDriverArg Separate Alias(MD) MissingArgError(missing filename after %qs)
176
177 -write-user-dependencies
178 C ObjC C++ ObjC++ NoDriverArg Separate Alias(MMD) MissingArgError(missing filename after %qs)
179
180 A
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>.
183
184 C
185 C ObjC C++ ObjC++
186 Do not discard comments.
187
188 CC
189 C ObjC C++ ObjC++
190 Do not discard comments in macro expansions.
191
192 D
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.
195
196 E
197 C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only)
198
199 F
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.
202
203 fgimple
204 C Var(flag_gimple) Init(0)
205 Enable parsing GIMPLE.
206
207 H
208 C ObjC C++ ObjC++
209 Print the name of header files as they are used.
210
211 I
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.
214
215 M
216 C ObjC C++ ObjC++
217 Generate make dependencies.
218
219 MD
220 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
221 Generate make dependencies and compile.
222
223 MF
224 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
225 -MF <file> Write dependency output to the given file.
226
227 MG
228 C ObjC C++ ObjC++
229 Treat missing header files as generated files.
230
231 MM
232 C ObjC C++ ObjC++
233 Like -M but ignore system header files.
234
235 MMD
236 C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
237 Like -MD but ignore system header files.
238
239 Mmodules
240 C++
241 Generate C++ Module dependency information.
242
243 Mno-modules
244 C++
245 ; undocumented
246
247 MP
248 C ObjC C++ ObjC++
249 Generate phony targets for all headers.
250
251 MQ
252 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
253 -MQ <target> Add a target that may require quoting.
254
255 MT
256 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
257 -MT <target> Add a target that does not require quoting.
258
259 fdeps-format=
260 C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing format after %qs)
261 Structured format for output dependency information. Supported (\"p1689r5\").
262
263 fdeps-file=
264 C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing output path after %qs)
265 File for output dependency information.
266
267 fdeps-target=
268 C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing path after %qs)
269 -fdeps-target=obj.o Output file for the compile step.
270
271 P
272 C ObjC C++ ObjC++
273 Do not generate #line directives.
274
275 U
276 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
277 -U<macro> Undefine <macro>.
278
279 WNSObject-attribute
280 C ObjC C++ ObjC++ LTO Var(warn_nsobject_attribute) Warning Init(1)
281 Warn if the NSObject attribute is applied to a non-typedef.
282
283 Wabi
284 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
285 Warn about things that will change when compiling with an ABI-compliant compiler.
286
287 Wabi=
288 C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
289 Warn about things that change between the current -fabi-version and the specified version.
290
291 Wabi-tag
292 C++ ObjC++ Var(warn_abi_tag) Warning
293 Warn if a subobject has an abi_tag attribute that the complete object type does not have.
294
295 Wpsabi
296 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
297
298 Wabsolute-value
299 C ObjC Var(warn_absolute_value) Warning EnabledBy(Wextra)
300 Warn on suspicious calls of standard functions computing absolute values.
301
302 Waddress
303 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
304 Warn about suspicious uses of memory addresses.
305
306 Waddress-of-packed-member
307 C ObjC C++ ObjC++ Var(warn_address_of_packed_member) Init(1) Warning
308 Warn when the address of packed member of struct or union is taken.
309
310 Enum
311 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
312
313 EnumValue
314 Enum(warn_aligned_new_level) String(none) Value(0)
315
316 EnumValue
317 Enum(warn_aligned_new_level) String(global) Value(1)
318
319 EnumValue
320 Enum(warn_aligned_new_level) String(all) Value(2)
321
322 Waligned-new
323 C++ ObjC++ Alias(Waligned-new=,global,none)
324 Warn about 'new' of type with extended alignment without -faligned-new.
325
326 Waligned-new=
327 C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
328 -Waligned-new=[none|global|all] Warn even if 'new' uses a class member allocation function.
329
330 Wall
331 C ObjC C++ ObjC++ Warning
332 Enable most warning messages.
333
334 Walloca
335 C ObjC C++ ObjC++ Var(warn_alloca) Warning
336 Warn on any use of alloca.
337
338 Walloc-size
339 C ObjC C++ ObjC++ Var(warn_alloc_size) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
340 Warn when allocating insufficient storage for the target type of the assigned pointer.
341
342 Walloc-size-larger-than=
343 C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined Host_Wide_Int ByteSize Warning Init(HOST_WIDE_INT_MAX)
344 -Walloc-size-larger-than=<bytes> Warn for calls to allocation functions that
345 attempt to allocate objects larger than the specified number of bytes.
346
347 Wno-alloc-size-larger-than
348 C ObjC C++ LTO ObjC++ Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
349 Disable Walloc-size-larger-than= warning. Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.
350
351 Walloc-zero
352 C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
353 Warn for calls to allocation functions that specify zero bytes.
354
355 Walloca-larger-than=
356 C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
357 -Walloca-larger-than=<number> Warn on unbounded uses of
358 alloca, and on bounded uses of alloca whose bound can be larger than
359 <number> bytes.
360
361 Wno-alloca-larger-than
362 C ObjC C++ LTO ObjC++ Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
363 Disable Walloca-larger-than= warning. Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.
364
365 Warith-conversion
366 C ObjC C++ ObjC++ Var(warn_arith_conv) Warning
367 Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.
368
369 Warray-bounds=
370 LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
371 ; in common.opt
372
373 Warray-compare
374 C ObjC C++ ObjC++ Var(warn_array_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
375 Warn about comparisons between two operands of array type.
376
377 Warray-parameter
378 C ObjC C++ ObjC++ Warning Alias(Warray-parameter=, 2, 0)
379 Warn about mismatched declarations of array parameters and unsafe accesses to them.
380
381 Warray-parameter=
382 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_array_parameter) IntegerRange(0, 2) LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) Warning
383 Warn about mismatched declarations of array parameters and unsafe accesses to them.
384
385 Wassign-intercept
386 ObjC ObjC++ Var(warn_assign_intercept) Warning
387 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
388
389 Wbad-function-cast
390 C ObjC Var(warn_bad_function_cast) Warning
391 Warn about casting functions to incompatible types.
392
393 Wbidi-chars
394 C ObjC C++ ObjC++ Warning Alias(Wbidi-chars=,any,none)
395 ;
396
397 Wbidi-chars=
398 C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(cpp_warn_bidirectional) CppReason(CPP_W_BIDIRECTIONAL) Var(warn_bidirectional) Init(bidirectional_unpaired) Enum(cpp_bidirectional_level) EnumSet
399 -Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters.
400
401 ; Required for these enum values.
402 SourceInclude
403 cpplib.h
404
405 Enum
406 Name(cpp_bidirectional_level) Type(int) UnknownError(argument %qs to %<-Wbidi-chars%> not recognized)
407
408 EnumValue
409 Enum(cpp_bidirectional_level) String(none) Value(bidirectional_none) Set(1)
410
411 EnumValue
412 Enum(cpp_bidirectional_level) String(unpaired) Value(bidirectional_unpaired) Set(1)
413
414 EnumValue
415 Enum(cpp_bidirectional_level) String(any) Value(bidirectional_any) Set(1)
416
417 EnumValue
418 Enum(cpp_bidirectional_level) String(ucn) Value(bidirectional_ucn) Set(2)
419
420 Wbool-compare
421 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
422 Warn about boolean expression compared with an integer value different from true/false.
423
424 Wbool-operation
425 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
426 Warn about certain operations on boolean expressions.
427
428 Wbuiltin-declaration-mismatch
429 C ObjC C++ ObjC++ Var(warn_builtin_declaration_mismatch) Init(1) Warning
430 Warn when a built-in function is declared with the wrong signature.
431
432 Wbuiltin-macro-redefined
433 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
434 Warn when a built-in preprocessor macro is undefined or redefined.
435
436 Wc11-c23-compat
437 C ObjC CPP(cpp_warn_c11_c23_compat) CppReason(CPP_W_C11_C23_COMPAT) Var(warn_c11_c23_compat) Init(-1) Warning
438 Warn about features not present in ISO C11, but present in ISO C23.
439
440 Wc11-c2x-compat
441 C ObjC Alias(Wc11-c23-compat)
442 Deprecated in favor of -Wc11-c23-compat.
443
444 Wc90-c99-compat
445 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
446 Warn about features not present in ISO C90, but present in ISO C99.
447
448 Wc99-c11-compat
449 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
450 Warn about features not present in ISO C99, but present in ISO C11.
451
452 Wc++-compat
453 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
454 Warn about C constructs that are not in the common subset of C and C++.
455
456 Wc++0x-compat
457 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
458
459 Wc++11-compat
460 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
461 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
462
463 Wc++14-compat
464 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
465 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
466
467 Wc++1z-compat
468 C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
469
470 Wc++17-compat
471 C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
472 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
473
474 Wc++2a-compat
475 C++ ObjC++ Warning Alias(Wc++20-compat) Undocumented
476
477 Wc++20-compat
478 C++ ObjC++ Var(warn_cxx20_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx20_compat) CppReason(CPP_W_CXX20_COMPAT)
479 Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.
480
481 Wc++11-extensions
482 C++ ObjC++ Var(warn_cxx11_extensions) Warning Init(1)
483 Warn about C++11 constructs in code compiled with an older standard.
484
485 Wc++14-extensions
486 C++ ObjC++ Var(warn_cxx14_extensions) Warning Init(1)
487 Warn about C++14 constructs in code compiled with an older standard.
488
489 Wc++17-extensions
490 C++ ObjC++ Var(warn_cxx17_extensions) Warning Init(1)
491 Warn about C++17 constructs in code compiled with an older standard.
492
493 Wc++20-extensions
494 C++ ObjC++ Var(warn_cxx20_extensions) Warning Init(1)
495 Warn about C++20 constructs in code compiled with an older standard.
496
497 Wc++23-extensions
498 C++ ObjC++ Var(warn_cxx23_extensions) Warning Init(1)
499 Warn about C++23 constructs in code compiled with an older standard.
500
501 Wc++26-extensions
502 C++ ObjC++ Var(warn_cxx26_extensions) Warning Init(1)
503 Warn about C++26 constructs in code compiled with an older standard.
504
505 Wcalloc-transposed-args
506 C ObjC C++ ObjC++ Var(warn_calloc_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wextra)
507 Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter.
508
509 Wcast-function-type
510 C ObjC C++ ObjC++ Var(warn_cast_function_type) Warning EnabledBy(Wextra)
511 Warn about casts between incompatible function types.
512
513 Wcast-qual
514 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
515 Warn about casts which discard qualifiers.
516
517 Wcast-user-defined
518 C++ ObjC++ Var(warn_cast_user_defined) Warning Init(1)
519 Warn about a cast to reference type that does not use a related user-defined conversion function.
520
521 Wcatch-value
522 C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
523 Warn about catch handlers of non-reference type.
524
525 Wcatch-value=
526 C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0) IntegerRange(0, 3)
527 Warn about catch handlers of non-reference type.
528
529 Wchanges-meaning
530 C++ ObjC++ Var(warn_changes_meaning) Warning Init(1)
531 Complain about a name being declared as a class member after a previous use of the same name.
532
533 Wchar-subscripts
534 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
535 Warn about subscripts whose type is \"char\".
536
537 Wchkp
538 C ObjC C++ ObjC++ Warning WarnRemoved
539 Removed in GCC 9. This switch has no effect.
540
541 Wclass-conversion
542 C++ ObjC++ Var(warn_class_conversion) Init(1) Warning
543 Warn when a conversion function will never be called due to the type it converts to.
544
545 Wclass-memaccess
546 C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
547 Warn for unsafe raw memory writes to objects of class types.
548
549 Wclobbered
550 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
551 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
552
553 Wcomma-subscript
554 C++ ObjC++ Var(warn_comma_subscript) Warning
555 Warn about uses of a comma operator within a subscripting expression.
556
557 Wcomment
558 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
559 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
560
561 Wcomments
562 C ObjC C++ ObjC++ Warning Alias(Wcomment)
563 Synonym for -Wcomment.
564
565 Wconditionally-supported
566 C++ ObjC++ Var(warn_conditionally_supported) Warning
567 Warn for conditionally-supported constructs.
568
569 Wconversion
570 C ObjC C++ ObjC++ Var(warn_conversion) Warning
571 Warn for implicit type conversions that may change a value.
572
573 Wconversion-null
574 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
575 Warn for converting NULL from/to a non-pointer type.
576
577 Wcpp
578 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
579 ; Documented in common.opt
580
581 Wctad-maybe-unsupported
582 C++ ObjC++ Var(warn_ctad_maybe_unsupported) Warning
583 Warn when performing class template argument deduction on a type with no
584 deduction guides.
585
586 Wctor-dtor-privacy
587 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
588 Warn when all constructors and destructors are private.
589
590 Wdangling-else
591 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
592 Warn about dangling else.
593
594 Wdangling-pointer
595 C ObjC C++ LTO ObjC++ Alias(Wdangling-pointer=, 2, 0) Warning
596 Warn for uses of pointers to auto variables whose lifetime has ended.
597
598 Wdangling-pointer=
599 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_dangling_pointer) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) IntegerRange(0, 2)
600 Warn for uses of pointers to auto variables whose lifetime has ended.
601
602 Wdangling-reference
603 C++ ObjC++ Var(warn_dangling_reference) Warning LangEnabledBy(C++ ObjC++, Wall)
604 Warn when a reference is bound to a temporary whose lifetime has ended.
605
606 Wdate-time
607 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
608 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
609
610 Wdeclaration-after-statement
611 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
612 Warn when a declaration is found after a statement.
613
614 Wdeclaration-missing-parameter-type
615 C ObjC Var(warn_declaration_missing_parameter) Warning Init(1)
616 Warn for missing parameter types in function declarations.
617
618 Wdelete-incomplete
619 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
620 Warn when deleting a pointer to incomplete type.
621
622 Wdelete-non-virtual-dtor
623 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
624 Warn about deleting polymorphic objects with non-virtual destructors.
625
626 Wdeprecated
627 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED)
628 ; Documented in common.opt
629
630 Wdeprecated-copy
631 C++ ObjC++ Var(warn_deprecated_copy) Warning LangEnabledBy(C++ ObjC++, Wextra)
632 Mark implicitly-declared copy operations as deprecated if the class has a
633 user-provided copy operation.
634
635 Wdeprecated-copy-dtor
636 C++ ObjC++ Var(warn_deprecated_copy, 2) Warning
637 Mark implicitly-declared copy operations as deprecated if the class has a
638 user-provided copy operation or destructor.
639
640 Wdeprecated-enum-enum-conversion
641 C++ ObjC++ Var(warn_deprecated_enum_enum_conv) Warning
642 Warn about deprecated arithmetic conversions on operands of enumeration types.
643
644 Wdeprecated-enum-float-conversion
645 C++ ObjC++ Var(warn_deprecated_enum_float_conv) Warning
646 Warn about deprecated arithmetic conversions on operands where one is of enumeration
647 type and the other is of a floating-point type.
648
649 Wdesignated-init
650 C ObjC Var(warn_designated_init) Init(1) Warning
651 Warn about positional initialization of structs requiring designated initializers.
652
653 Wdiscarded-array-qualifiers
654 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
655 Warn if qualifiers on arrays which are pointer targets are discarded.
656
657 Wdiscarded-qualifiers
658 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
659 Warn if type qualifiers on pointers are discarded.
660
661 Wdiv-by-zero
662 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
663 Warn about compile-time integer division by zero.
664
665 Wdouble-promotion
666 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
667 Warn about implicit conversions from \"float\" to \"double\".
668
669 Wduplicate-decl-specifier
670 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
671 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
672
673 Wduplicated-branches
674 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
675 Warn about duplicated branches in if-else statements.
676
677 Wduplicated-cond
678 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
679 Warn about duplicated conditions in an if-else-if chain.
680
681 Weffc++
682 C++ ObjC++ Var(warn_ecpp) Warning
683 Warn about violations of Effective C++ style rules.
684
685 Welaborated-enum-base
686 C++ ObjC++ Var(warn_elaborated_enum_base) Warning Init(1)
687 Warn if an additional enum-base is used in an elaborated-type-specifier.
688
689 Wempty-body
690 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
691 Warn about an empty body in an if or else statement.
692
693 Wendif-labels
694 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)
695 Warn about stray tokens after #else and #endif.
696
697 Wenum-compare
698 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
699 Warn about comparison of different enum types.
700
701 Wenum-conversion
702 C ObjC C++ ObjC++ Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
703 Warn about implicit conversion of enum types.
704
705 Wenum-int-mismatch
706 C ObjC Var(warn_enum_int_mismatch) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
707 Warn about enum/integer type mismatches.
708
709 Werror
710 C ObjC C++ ObjC++
711 ; Documented in common.opt
712
713 Werror-implicit-function-declaration
714 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
715 This switch is deprecated; use -Werror=implicit-function-declaration instead.
716
717 Wexceptions
718 C++ ObjC++ Var(warn_exceptions) Init(1) Warning
719 Warn when an exception handler is shadowed by another handler.
720
721 Wexpansion-to-defined
722 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)
723 Warn if \"defined\" is used outside #if.
724
725 Wextra
726 C ObjC C++ ObjC++ Warning
727 ; in common.opt
728
729 Wextra-semi
730 C++ ObjC++ Var(warn_extra_semi) Warning
731 Warn about semicolon after in-class function definition.
732
733 Wflex-array-member-not-at-end
734 C C++ Var(warn_flex_array_member_not_at_end) Warning
735 Warn when a structure containing a C99 flexible array member as the last
736 field is not at the end of another structure.
737
738 Wfloat-conversion
739 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
740 Warn for implicit type conversions that cause loss of floating point precision.
741
742 Wfloat-equal
743 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
744 Warn if testing floating point numbers for equality.
745
746 Wformat
747 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
748 Warn about printf/scanf/strftime/strfmon format string anomalies.
749
750 Wformat-contains-nul
751 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
752 Warn about format strings that contain NUL bytes.
753
754 Wformat-diag
755 C ObjC C++ ObjC++ Var(warn_format_diag) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
756 Warn about GCC format strings with strings unsuitable for diagnostics.
757
758 Wformat-extra-args
759 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
760 Warn if passing too many arguments to a function for its format string.
761
762 Wformat-nonliteral
763 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
764 Warn about format strings that are not literals.
765
766 Wformat-overflow
767 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
768 Warn about function calls with format strings that write past the end
769 of the destination region. Same as -Wformat-overflow=1.
770
771 Wformat-overflow=
772 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)
773 Warn about function calls with format strings that write past the end
774 of the destination region.
775
776 Wformat-security
777 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
778 Warn about possible security problems with format functions.
779
780 Wformat-signedness
781 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
782 Warn about sign differences with format functions.
783
784 Wformat-truncation
785 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
786 Warn about calls to snprintf and similar functions that truncate output.
787 Same as -Wformat-truncation=1.
788
789 Wformat-truncation=
790 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)
791 Warn about calls to snprintf and similar functions that truncate output.
792
793 Wformat-y2k
794 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
795 Warn about strftime formats yielding 2-digit years.
796
797 Wformat-zero-length
798 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
799 Warn about zero-length formats.
800
801 Wformat=
802 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
803 Warn about printf/scanf/strftime/strfmon format string anomalies.
804
805 Wframe-address
806 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
807 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
808
809 Wglobal-module
810 C++ ObjC++ Var(warn_global_module) Warning Init(1)
811 Warn about the global module fragment not containing only preprocessing directives.
812
813 Wif-not-aligned
814 C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
815 Warn when the field in a struct is not aligned.
816
817 Wignored-qualifiers
818 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
819 Warn whenever type qualifiers are ignored.
820
821 Wignored-attributes
822 C C++ Var(warn_ignored_attributes) Init(1) Warning
823 Warn whenever attributes are ignored.
824
825 Wimplicit
826 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
827 Warn about implicit declarations.
828
829 Wimplicit-fallthrough=
830 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
831 ; in common.opt
832
833 Wimplicit-function-declaration
834 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
835 Warn about implicit function declarations.
836
837 Wimplicit-int
838 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
839 Warn when a declaration does not specify a type.
840
841 Wimport
842 C ObjC C++ ObjC++ Undocumented Ignore
843
844 Winaccessible-base
845 C++ ObjC++ Var(warn_inaccessible_base) Init(1) Warning
846 Warn when a base is inaccessible in derived due to ambiguity.
847
848 Wincompatible-pointer-types
849 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
850 Warn when there is a conversion between pointers that have incompatible types.
851
852 Winfinite-recursion
853 C ObjC C++ LTO ObjC++ Var(warn_infinite_recursion) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
854 Warn for infinitely recursive calls.
855
856 Winit-self
857 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
858 Warn about variables which are initialized to themselves.
859
860 Winit-list-lifetime
861 C++ ObjC++ Var(warn_init_list) Warning Init(1)
862 Warn about uses of std::initializer_list that can result in dangling pointers.
863
864 Winterference-size
865 C++ ObjC++ Var(warn_interference_size) Warning Init(1)
866 Warn about nonsensical values of --param destructive-interference-size or
867 constructive-interference-size.
868
869 Winherited-variadic-ctor
870 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
871 Warn about C++11 inheriting constructors when the base has a variadic constructor.
872
873 Wint-conversion
874 C ObjC Var(warn_int_conversion) Init(1) Warning
875 Warn about incompatible integer to pointer and pointer to integer conversions.
876
877 Wint-in-bool-context
878 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
879 Warn for suspicious integer expressions in boolean context.
880
881 Wint-to-pointer-cast
882 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
883 Warn when there is a cast to a pointer from an integer of a different size.
884
885 Winvalid-constexpr
886 C++ ObjC++ Var(warn_invalid_constexpr) Init(-1) Warning
887 Warn when a function never produces a constant expression.
888
889 Winvalid-offsetof
890 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
891 Warn about invalid uses of the \"offsetof\" macro.
892
893 Winvalid-pch
894 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
895 Warn about PCH files that are found but not used.
896
897 Winvalid-utf8
898 C ObjC C++ ObjC++ CPP(cpp_warn_invalid_utf8) CppReason(CPP_W_INVALID_UTF8) Var(warn_invalid_utf8) Init(0) Warning
899 Warn about invalid UTF-8 characters.
900
901 Wjump-misses-init
902 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
903 Warn when a jump misses a variable initialization.
904
905 Wliteral-suffix
906 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
907 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
908
909 Wlogical-not-parentheses
910 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
911 Warn when logical not is used on the left hand side operand of a comparison.
912
913 Wlogical-op
914 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
915 Warn when a logical operator is suspiciously always evaluating to true or false.
916
917 Wlong-long
918 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)
919 Do not warn about using \"long long\" when -pedantic.
920
921 Wmain
922 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
923 Warn about suspicious declarations of \"main\".
924
925 Wmain
926 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
927 ;
928
929 Wmaybe-uninitialized
930 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
931 ;
932
933 Wmemset-elt-size
934 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
935 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
936
937 Wmemset-transposed-args
938 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
939 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
940
941 Wmisleading-indentation
942 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
943 Warn when the indentation of the code does not reflect the block structure.
944
945 Wmismatched-dealloc
946 C ObjC C++ ObjC++ Var(warn_mismatched_alloc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
947 Warn for deallocation calls with arguments returned from mismatched allocation
948 functions.
949
950 Wmismatched-new-delete
951 C++ ObjC++ Var(warn_mismatched_new_delete) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
952 Warn for mismatches between calls to operator new or delete and the corresponding
953 call to the allocation or deallocation function.
954
955 Wmismatched-tags
956 C++ ObjC++ Var(warn_mismatched_tags) Warning
957 Warn when a class is redeclared or referenced using a mismatched class-key.
958
959 Wmissing-attributes
960 C ObjC C++ ObjC++ Var(warn_missing_attributes) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
961 Warn about declarations of entities that may be missing attributes
962 that related entities have been declared with.
963
964 Wmissing-braces
965 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
966 Warn about possibly missing braces around initializers.
967
968 Wmissing-declarations
969 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
970 Warn about global functions without previous declarations.
971
972 Wmissing-field-initializers
973 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
974 Warn about missing fields in struct initializers.
975
976 Wmissing-format-attribute
977 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
978 ;
979
980 Wmissing-include-dirs
981 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
982 Warn about user-specified include directories that do not exist.
983
984 Wmissing-parameter-type
985 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
986 Warn about function parameters declared without a type specifier in K&R-style functions.
987
988 Wmissing-prototypes
989 C ObjC Var(warn_missing_prototypes) Warning
990 Warn about global functions without prototypes.
991
992 Wmissing-requires
993 C++ ObjC++ Var(warn_missing_requires) Init(1) Warning
994 Warn about likely missing requires keyword.
995
996 Wmissing-template-keyword
997 C++ ObjC++ Var(warn_missing_template_keyword) Init(1) Warning
998 Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.
999
1000 Wmissing-variable-declarations
1001 C ObjC Var(warn_missing_variable_declarations) Warning
1002 Warn about global variables without previous declarations.
1003
1004 Wmudflap
1005 C ObjC C++ ObjC++ WarnRemoved
1006
1007 Wmultichar
1008 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
1009 Warn about use of multi-character character constants.
1010
1011 Wmultiple-inheritance
1012 C++ ObjC++ Var(warn_multiple_inheritance) Warning
1013 Warn on direct multiple inheritance.
1014
1015 Wmultistatement-macros
1016 C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1017 Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
1018
1019 Wnamespaces
1020 C++ ObjC++ Var(warn_namespaces) Warning
1021 Warn on namespace definition.
1022
1023 Wnarrowing
1024 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
1025 Warn about narrowing conversions within { } that are ill-formed in C++11.
1026
1027 Wnested-externs
1028 C ObjC Var(warn_nested_externs) Warning
1029 Warn about \"extern\" declarations not at file scope.
1030
1031 Wnoexcept
1032 C++ ObjC++ Var(warn_noexcept) Warning
1033 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
1034
1035 Wnoexcept-type
1036 C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
1037 Warn if C++17 noexcept function type will change the mangled name of a symbol.
1038
1039 Wnon-template-friend
1040 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
1041 Warn when non-templatized friend functions are declared within a template.
1042
1043 Wnon-virtual-dtor
1044 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
1045 Warn about non-virtual destructors.
1046
1047 Wnonnull
1048 C ObjC C++ LTO ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ LTO ObjC++,Wformat=,warn_format >= 1,0)
1049 Warn about NULL being passed to argument slots marked as requiring non-NULL.
1050
1051 Wnonnull
1052 C ObjC C++ LTO ObjC++ LangEnabledBy(C ObjC C++ LTO ObjC++,Wall)
1053 ;
1054
1055 Wnonnull-compare
1056 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1057 ;
1058
1059 Wnormalized
1060 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
1061 ;
1062
1063 Wnormalized=
1064 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)
1065 -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
1066
1067 ; Required for these enum values.
1068 SourceInclude
1069 cpplib.h
1070
1071 Enum
1072 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
1073
1074 EnumValue
1075 Enum(cpp_normalize_level) String(none) Value(normalized_none)
1076
1077 EnumValue
1078 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
1079
1080 EnumValue
1081 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
1082
1083 EnumValue
1084 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
1085
1086 Wobjc-root-class
1087 ObjC ObjC++ Var(warn_objc_root_class) Warning Init(1)
1088 Warn if a class interface has no superclass. Root classes may use an attribute
1089 to suppress this warning.
1090
1091 Wold-style-cast
1092 C++ ObjC++ Var(warn_old_style_cast) Warning
1093 Warn if a C-style cast is used in a program.
1094
1095 Wold-style-declaration
1096 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
1097 Warn for obsolescent usage in a declaration.
1098
1099 Wold-style-definition
1100 C ObjC Var(warn_old_style_definition) Init(-1) Warning
1101 Warn if an old-style parameter definition is used.
1102
1103 Wopenacc-parallelism
1104 C C++ Var(warn_openacc_parallelism) Warning
1105 Warn about potentially suboptimal choices related to OpenACC parallelism.
1106
1107 Wopenmp
1108 C ObjC C++ ObjC++ Warning Var(warn_openmp) Init(1)
1109 Warn about suspicious OpenMP code.
1110
1111 Wopenmp-simd
1112 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
1113 Warn if a simd directive is overridden by the vectorizer cost model.
1114
1115 Woverlength-strings
1116 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1117 Warn if a string is longer than the maximum portable length specified by the standard.
1118
1119 Woverloaded-virtual
1120 C++ ObjC++ Warning Alias(Woverloaded-virtual=,2,0)
1121 Warn about overloaded virtual function names.
1122
1123 Woverloaded-virtual=
1124 C++ ObjC++ Joined UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
1125 Warn about overloaded virtual function names.
1126
1127 Woverride-init
1128 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
1129 Warn about overriding initializers without side effects.
1130
1131 Woverride-init-side-effects
1132 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
1133 Warn about overriding initializers with side effects.
1134
1135 Wnrvo
1136 C++ ObjC++ Var(warn_nrvo)
1137 Warn if the named return value optimization is not performed although it is allowed.
1138
1139 Wpacked-bitfield-compat
1140 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
1141 Warn about packed bit-fields whose offset changed in GCC 4.4.
1142
1143 Wpacked-not-aligned
1144 C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1145 Warn when fields in a struct with the packed attribute are misaligned.
1146
1147 Wparentheses
1148 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1149 Warn about possibly missing parentheses.
1150
1151 Wpedantic
1152 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
1153 ; Documented in common.opt
1154
1155 Wpessimizing-move
1156 C++ ObjC++ Var(warn_pessimizing_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1157 Warn about calling std::move on a local object in a return statement preventing copy elision.
1158
1159 Wplacement-new
1160 C++ Warning Alias(Wplacement-new=, 1, 0)
1161 Warn for placement new expressions with undefined behavior.
1162
1163 Wplacement-new=
1164 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
1165 Warn for placement new expressions with undefined behavior.
1166
1167 Wpmf-conversions
1168 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
1169 Warn when converting the type of pointers to member functions.
1170
1171 Wpointer-arith
1172 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
1173 Warn about function pointer arithmetic.
1174
1175 Wpointer-sign
1176 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
1177 Warn when a pointer differs in signedness in an assignment.
1178
1179 Wpointer-compare
1180 C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
1181 Warn when a pointer is compared with a zero character constant.
1182
1183 Wpointer-to-int-cast
1184 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
1185 Warn when a pointer is cast to an integer of a different size.
1186
1187 Wpragmas
1188 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
1189 Warn about misuses of pragmas.
1190
1191 Wprio-ctor-dtor
1192 C ObjC C++ ObjC++ Var(warn_prio_ctor_dtor) Init(1) Warning
1193 Warn if constructor or destructors with priorities from 0 to 100 are used.
1194
1195 Wproperty-assign-default
1196 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
1197 Warn if a property for an Objective-C object has no assign semantics specified.
1198
1199 Wprotocol
1200 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
1201 Warn if inherited methods are unimplemented.
1202
1203 Wrange-loop-construct
1204 C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
1205 Warn when a range-based for-loop is creating unnecessary copies.
1206
1207 Wredundant-decls
1208 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
1209 Warn about multiple declarations of the same object.
1210
1211 Wredundant-move
1212 C++ ObjC++ Var(warn_redundant_move) Warning LangEnabledBy(C++ ObjC++,Wextra)
1213 Warn about redundant calls to std::move.
1214
1215 Wredundant-tags
1216 C++ ObjC++ Var(warn_redundant_tags) Warning
1217 Warn when a class or enumerated type is referenced using a redundant class-key.
1218
1219 Wregister
1220 C++ ObjC++ Var(warn_register) Warning
1221 Warn about uses of register storage specifier.
1222
1223 Wreorder
1224 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
1225 Warn when the compiler reorders code.
1226
1227 Wrestrict
1228 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall)
1229 Warn when an argument passed to a restrict-qualified parameter aliases with
1230 another argument.
1231
1232 Wreturn-mismatch
1233 C ObjC Var(warn_return_mismatch) Warning Init(1)
1234 Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void.
1235
1236 Wreturn-type
1237 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Init(-1)
1238 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
1239
1240 Wscalar-storage-order
1241 C ObjC C++ ObjC++ Var(warn_scalar_storage_order) Init(1) Warning
1242 Warn on suspicious constructs involving reverse scalar storage order.
1243
1244 Wselector
1245 ObjC ObjC++ Var(warn_selector) Warning
1246 Warn if a selector has multiple methods.
1247
1248 Wself-move
1249 C++ ObjC++ Var(warn_self_move) Warning LangEnabledBy(C++ ObjC++, Wall)
1250 Warn when a value is moved to itself with std::move.
1251
1252 Wsequence-point
1253 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1254 Warn about possible violations of sequence point rules.
1255
1256 Wshadow-ivar
1257 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
1258 Warn if a local declaration hides an instance variable.
1259
1260 Wshift-overflow
1261 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
1262 Warn if left shift of a signed value overflows.
1263
1264 Wshift-overflow=
1265 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
1266 Warn if left shift of a signed value overflows.
1267
1268 Wshift-count-negative
1269 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
1270 Warn if shift count is negative.
1271
1272 Wshift-count-overflow
1273 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
1274 Warn if shift count >= width of type.
1275
1276 Wshift-negative-value
1277 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
1278 Warn if left shifting a negative value.
1279
1280 Wsign-compare
1281 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
1282 Warn about signed-unsigned comparisons.
1283
1284 Wsign-compare
1285 C ObjC C++ ObjC++ EnabledBy(Wextra)
1286 ;
1287
1288 Wsign-conversion
1289 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
1290 Warn for implicit type conversions between signed and unsigned integers.
1291
1292 Wsign-promo
1293 C++ ObjC++ Var(warn_sign_promo) Warning
1294 Warn when overload promotes from unsigned to signed.
1295
1296 Wsized-deallocation
1297 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
1298 Warn about missing sized deallocation functions.
1299
1300 Wsizeof-array-div
1301 C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1302 Warn about divisions of two sizeof operators when the first one is applied
1303 to an array and the divisor does not equal the size of the array element.
1304
1305 Wsizeof-array-argument
1306 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
1307 Warn when sizeof is applied on a parameter declared as an array.
1308
1309 Wsizeof-pointer-div
1310 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1311 Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
1312
1313 Wsizeof-pointer-memaccess
1314 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1315 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
1316
1317 Wstrict-aliasing=
1318 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
1319 ;
1320
1321 Wstrict-flex-arrays
1322 C C++ Var(warn_strict_flex_arrays) Warning
1323 Warn about inproper usages of flexible array members
1324 according to the level of -fstrict-flex-arrays.
1325
1326 Wstrict-null-sentinel
1327 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
1328 Warn about uncasted NULL used as sentinel.
1329
1330 Wstrict-overflow=
1331 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
1332 ;
1333
1334 Wstrict-prototypes
1335 C ObjC Var(warn_strict_prototypes) Warning
1336 Warn about unprototyped function declarations.
1337
1338 Wstrict-selector-match
1339 ObjC ObjC++ Var(warn_strict_selector_match) Warning
1340 Warn if type signatures of candidate methods do not match exactly.
1341
1342 Wstring-compare
1343 C ObjC C++ LTO ObjC++ Warning Var(warn_string_compare) Warning LangEnabledBy(C ObjC C++ ObjC++, Wextra)
1344 Warn about calls to strcmp and strncmp used in equality expressions that
1345 are necessarily true or false due to the length of one and size of the other
1346 argument.
1347
1348 Wstringop-overflow
1349 C ObjC C++ LTO ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
1350 Warn about buffer overflow in string manipulation functions like memcpy
1351 and strcpy.
1352
1353 Wstringop-overflow=
1354 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)
1355 Under the control of Object Size type, warn about buffer overflow in string
1356 manipulation functions like memcpy and strcpy.
1357
1358 Wstringop-overread
1359 C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
1360 Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
1361
1362 Wstringop-truncation
1363 C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
1364 Warn about truncation in string manipulation functions like strncat and strncpy.
1365
1366 Wsubobject-linkage
1367 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1368 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.
1369
1370 Wsuggest-attribute=format
1371 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
1372 Warn about functions which might be candidates for format attributes.
1373
1374 Wsuggest-override
1375 C++ ObjC++ Var(warn_override) Warning
1376 Suggest that the override keyword be used when the declaration of a virtual
1377 function overrides another.
1378
1379 Wswitch
1380 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1381 Warn about enumerated switches, with no default, missing a case.
1382
1383 Wswitch-default
1384 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
1385 Warn about enumerated switches missing a \"default:\" statement.
1386
1387 Wswitch-enum
1388 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
1389 Warn about all enumerated switches missing a specific case.
1390
1391 Wswitch-bool
1392 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
1393 Warn about switches with boolean controlling expression.
1394
1395 Wswitch-outside-range
1396 C ObjC C++ ObjC++ Var(warn_switch_outside_range) Warning Init(1)
1397 Warn about switch values that are outside of the switch's type range.
1398
1399 Wsync-nand
1400 C C++ Var(warn_sync_nand) Init(1) Warning
1401 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
1402
1403 Wsynth
1404 C++ ObjC++ Var(warn_synth) Warning
1405 Deprecated. This switch has no effect.
1406
1407 Wsystem-headers
1408 C ObjC C++ ObjC++ Warning
1409 ; Documented in common.opt
1410
1411 Wtemplates
1412 C++ ObjC++ Var(warn_templates) Warning
1413 Warn on primary template declaration.
1414
1415 Wtautological-compare
1416 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1417 Warn if a comparison always evaluates to true or false.
1418
1419 Wtemplate-id-cdtor
1420 C++ ObjC++ Var(warn_template_id_cdtor) Warning
1421 Warn about simple-template-id in a constructor or destructor.
1422
1423 Wterminate
1424 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1425 Warn if a throw expression will always result in a call to terminate().
1426
1427 Wtraditional
1428 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1429 Warn about features not present in traditional C.
1430
1431 Wtraditional-conversion
1432 C ObjC Var(warn_traditional_conversion) Warning
1433 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1434
1435 Wtrigraphs
1436 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1437 Warn if trigraphs are encountered that might affect the meaning of the program.
1438
1439 Wundeclared-selector
1440 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1441 Warn about @selector()s without previously declared methods.
1442
1443 Wundef
1444 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1445 Warn if an undefined macro is used in an #if directive.
1446
1447 Wunicode
1448 C ObjC C++ ObjC++ CPP(cpp_warn_unicode) CppReason(CPP_W_UNICODE) Var(warn_unicode) Init(1) Warning
1449 Warn about invalid forms of delimited or named escape sequences.
1450
1451 Wuninitialized
1452 C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
1453 ;
1454
1455 Wunknown-pragmas
1456 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1457 Warn about unrecognized pragmas.
1458
1459 Wunsuffixed-float-constants
1460 C ObjC Var(warn_unsuffixed_float_constants) Warning
1461 Warn about unsuffixed float constants.
1462
1463 Wunused
1464 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1465 ; documented in common.opt
1466
1467 Wunused-const-variable
1468 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1469 Warn when a const variable is unused.
1470
1471 Wunused-const-variable=
1472 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
1473 Warn when a const variable is unused.
1474
1475 Wunused-local-typedefs
1476 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1477 Warn when typedefs locally defined in a function are not used.
1478
1479 Wunused-macros
1480 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1481 Warn about macros defined in the main file that are not used.
1482
1483 Wunused-result
1484 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1485 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1486
1487 Wunused-variable
1488 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1489 ; documented in common.opt
1490
1491 ; Defining this option here in addition to common.opt is necessary
1492 ; in order for the default -Wall setting of -Wuse-after-free=2 to take
1493 ; effect.
1494
1495 Wuse-after-free=
1496 LangEnabledBy(C ObjC C++ LTO ObjC++, Wall,2,0)
1497 ; in common.opt
1498
1499 Wuseless-cast
1500 C ObjC C++ ObjC++ Var(warn_useless_cast) Warning
1501 Warn about useless casts.
1502
1503 Wvariadic-macros
1504 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)
1505 Warn about using variadic macros.
1506
1507 Wvarargs
1508 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1509 Warn about questionable usage of the macros used to retrieve variable arguments.
1510
1511 Wvexing-parse
1512 C++ ObjC++ Warning Var(warn_vexing_parse) Init(1)
1513 Warn about the most vexing parse syntactic ambiguity.
1514
1515 Wvirtual-move-assign
1516 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1517 Warn if a virtual base has a non-trivial move assignment operator.
1518
1519 Wvla
1520 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1521 Warn if a variable length array is used.
1522
1523 Wvla-larger-than=
1524 C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
1525 -Wvla-larger-than=<number> Warn on unbounded uses of variable-length
1526 arrays, and on bounded uses of variable-length arrays whose bound can be
1527 larger than <number> bytes.
1528
1529 Wno-vla-larger-than
1530 C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
1531 Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
1532
1533 Wvla-parameter
1534 C ObjC C++ ObjC++ Var(warn_vla_parameter) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1535 Warn about mismatched declarations of VLA parameters.
1536
1537 Wvolatile
1538 C++ ObjC++ Var(warn_volatile) Warning
1539 Warn about deprecated uses of volatile qualifier.
1540
1541 Wvolatile-register-var
1542 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1543 Warn when a register variable is declared volatile.
1544
1545 Wvirtual-inheritance
1546 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1547 Warn on direct virtual inheritance.
1548
1549 Wwrite-strings
1550 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1551 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.
1552
1553 Wxor-used-as-pow
1554 C ObjC C++ ObjC++ Var(warn_xor_used_as_pow) Warning Init(1)
1555 Warn about xor operators where it appears the user meant exponentiation.
1556
1557 Wzero-as-null-pointer-constant
1558 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1559 Warn when a literal '0' is used as null pointer.
1560
1561 Wzero-length-bounds
1562 C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1563 Warn about accesses to interior zero-length array members.
1564
1565 ansi
1566 C ObjC C++ ObjC++
1567 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1568
1569 d
1570 C ObjC C++ ObjC++ Joined
1571 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
1572
1573 fabi-compat-version=
1574 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1575 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1576
1577 faccess-control
1578 C++ ObjC++ Var(flag_access_control) Init(1)
1579 Enforce class member access control semantics.
1580
1581 fada-spec-parent=
1582 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1583 -fada-spec-parent=unit Dump Ada specs as child units of given parent.
1584
1585 faligned-new
1586 C++ ObjC++ Alias(faligned-new=,1,0)
1587 Support C++17 allocation of over-aligned types.
1588
1589 faligned-new=
1590 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1591 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1592
1593 fall-virtual
1594 C++ ObjC++ WarnRemoved
1595
1596 fallow-parameterless-variadic-functions
1597 C ObjC Ignore
1598 Does nothing. Preserved for backward compatibility.
1599
1600 falt-external-templates
1601 C++ ObjC++ WarnRemoved
1602 No longer supported.
1603
1604 fasm
1605 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1606 Recognize the \"asm\" keyword.
1607
1608 ; Define extra predefined macros for use in libgcc.
1609 fbuilding-libgcc
1610 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1611
1612 fbuiltin
1613 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1614 Recognize built-in functions.
1615
1616 fbuiltin-
1617 C ObjC C++ ObjC++ Joined
1618
1619 fcanonical-system-headers
1620 C ObjC C++ ObjC++
1621 Where shorter, use canonicalized paths to systems headers.
1622
1623 fchar8_t
1624 C++ ObjC++ Var(flag_char8_t) Init(-1)
1625 Enable the char8_t fundamental type and use it as the type for UTF-8 string
1626 and character literals.
1627
1628 fcheck-pointer-bounds
1629 C ObjC C++ ObjC++ LTO WarnRemoved
1630 Removed in GCC 9. This switch has no effect.
1631
1632 fchkp-check-incomplete-type
1633 C ObjC C++ ObjC++ LTO WarnRemoved
1634 Removed in GCC 9. This switch has no effect.
1635
1636 fchkp-zero-input-bounds-for-main
1637 C ObjC C++ ObjC++ LTO WarnRemoved
1638 Removed in GCC 9. This switch has no effect.
1639
1640 fchkp-first-field-has-own-bounds
1641 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1642 Removed in GCC 9. This switch has no effect.
1643
1644 fchkp-narrow-bounds
1645 C ObjC C++ ObjC++ LTO WarnRemoved
1646 Removed in GCC 9. This switch has no effect.
1647
1648 fchkp-narrow-to-innermost-array
1649 C ObjC C++ ObjC++ LTO WarnRemoved RejectNegative
1650 Removed in GCC 9. This switch has no effect.
1651
1652 fchkp-flexible-struct-trailing-arrays
1653 C ObjC C++ ObjC++ LTO WarnRemoved
1654 Removed in GCC 9. This switch has no effect.
1655
1656 fchkp-optimize
1657 C ObjC C++ ObjC++ LTO WarnRemoved
1658
1659 fchkp-use-fast-string-functions
1660 C ObjC C++ ObjC++ LTO WarnRemoved
1661 Removed in GCC 9. This switch has no effect.
1662
1663 fchkp-use-nochk-string-functions
1664 C ObjC C++ ObjC++ LTO WarnRemoved
1665 Removed in GCC 9. This switch has no effect.
1666
1667 fchkp-use-static-bounds
1668 C ObjC C++ ObjC++ LTO WarnRemoved
1669 Removed in GCC 9. This switch has no effect.
1670
1671 fchkp-use-static-const-bounds
1672 C ObjC C++ ObjC++ LTO WarnRemoved
1673 Removed in GCC 9. This switch has no effect.
1674
1675 fchkp-treat-zero-dynamic-size-as-infinite
1676 C ObjC C++ ObjC++ LTO WarnRemoved
1677 Removed in GCC 9. This switch has no effect.
1678
1679 fchkp-check-read
1680 C ObjC C++ ObjC++ LTO WarnRemoved
1681 Removed in GCC 9. This switch has no effect.
1682
1683 fchkp-check-write
1684 C ObjC C++ ObjC++ LTO WarnRemoved
1685 Removed in GCC 9. This switch has no effect.
1686
1687 fchkp-store-bounds
1688 C ObjC C++ ObjC++ LTO WarnRemoved
1689 Removed in GCC 9. This switch has no effect.
1690
1691 fchkp-instrument-calls
1692 C ObjC C++ ObjC++ LTO WarnRemoved
1693 Removed in GCC 9. This switch has no effect.
1694
1695 fchkp-instrument-marked-only
1696 C ObjC C++ ObjC++ LTO WarnRemoved
1697 Removed in GCC 9. This switch has no effect.
1698
1699 fchkp-use-wrappers
1700 C ObjC C++ ObjC++ LTO WarnRemoved
1701 Removed in GCC 9. This switch has no effect.
1702
1703 static-libmpx
1704 Driver WarnRemoved
1705 Removed in GCC 9. This switch has no effect.
1706
1707 static-libmpxwrappers
1708 Driver WarnRemoved
1709 Removed in GCC 9. This switch has no effect.
1710
1711 fcilkplus
1712 C ObjC C++ ObjC++ LTO Undocumented Ignore
1713 Removed in GCC 8. This switch has no effect.
1714
1715 fconcepts
1716 C++ ObjC++ Var(flag_concepts)
1717 Enable support for C++ concepts.
1718
1719 fconcepts-ts
1720 C++ ObjC++ Var(flag_concepts_ts) Init(0)
1721 Enable certain features present in the Concepts TS.
1722
1723 fconcepts-diagnostics-depth=
1724 C++ ObjC++ Joined RejectNegative UInteger Var(concepts_diagnostics_max_depth) Init(1)
1725 Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure.
1726
1727 fcond-mismatch
1728 C ObjC C++ ObjC++
1729 Allow the arguments of the '?' operator to have different types.
1730
1731 fconserve-space
1732 C++ ObjC++ Ignore
1733 Does nothing. Preserved for backward compatibility.
1734
1735 fconstant-string-class=
1736 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1737 -fconst-string-class=<name> Use class <name> for constant strings.
1738
1739 fconstexpr-depth=
1740 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1741 -fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
1742
1743 fconstexpr-cache-depth=
1744 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_cache_depth) Init(8)
1745 -fconstexpr-cache-depth=<number> Specify maximum constexpr recursion cache depth.
1746
1747 fconstexpr-fp-except
1748 C++ ObjC++ Var(flag_constexpr_fp_except) Init(0)
1749 Allow IEC559 floating point exceptions in constant expressions.
1750
1751 fconstexpr-loop-limit=
1752 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1753 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1754
1755 fconstexpr-ops-limit=
1756 C++ ObjC++ Joined RejectNegative Host_Wide_Int Var(constexpr_ops_limit) Init(33554432)
1757 -fconstexpr-ops-limit=<number> Specify maximum number of constexpr operations during a single constexpr evaluation.
1758
1759 fcontracts
1760 C++ ObjC++ Var(flag_contracts) Init(0)
1761 Enable certain features present in drafts of C++ Contracts.
1762
1763 Enum
1764 Name(on_off) Type(int) UnknownError(argument %qs must be either %<on%> or %<off%>)
1765
1766 EnumValue
1767 Enum(on_off) String(off) Value(0)
1768
1769 EnumValue
1770 Enum(on_off) String(on) Value(1)
1771
1772 fcontract-assumption-mode=
1773 C++ Joined RejectNegative
1774 -fcontract-assumption-mode=[on|off] Enable or disable treating axiom level contracts as assumptions (default on).
1775
1776 fcontract-build-level=
1777 C++ Joined RejectNegative
1778 -fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for.
1779
1780 fcontract-strict-declarations=
1781 C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative
1782 -fcontract-strict-declarations=[on|off] Enable or disable warnings on generalized redeclaration of functions with contracts (default off).
1783
1784 fcontract-mode=
1785 C++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative
1786 -fcontract-mode=[on|off] Enable or disable all contract facilities (default on).
1787
1788 fcontract-continuation-mode=
1789 C++ Joined RejectNegative
1790 -fcontract-continuation-mode=[on|off] Enable or disable contract continuation mode (default off).
1791
1792 fcontract-role=
1793 C++ Joined RejectNegative
1794 -fcontract-role=<name>:<semantics> Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume).
1795
1796 fcontract-semantic=
1797 C++ Joined RejectNegative
1798 -fcontract-semantic=<level>:<semantic> Specify the concrete semantics for level.
1799
1800 fcoroutines
1801 C++ LTO Var(flag_coroutines)
1802 Enable C++ coroutines (experimental).
1803
1804 fdebug-cpp
1805 C ObjC C++ ObjC++
1806 Emit debug annotations during preprocessing.
1807
1808 fdeduce-init-list
1809 C++ ObjC++ Ignore
1810 Does nothing. Preserved for backward compatibility.
1811
1812 fdeclone-ctor-dtor
1813 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1814 Factor complex constructors and destructors to favor space over speed.
1815
1816 fdefault-inline
1817 C++ ObjC++ Ignore
1818 Does nothing. Preserved for backward compatibility.
1819
1820 fdiagnostics-show-template-tree
1821 C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1822 Print hierarchical comparisons when template types are mismatched.
1823
1824 fdiagnostics-all-candidates
1825 C++ ObjC++ Var(flag_diagnostics_all_candidates)
1826 Note all candidates during overload resolution failure.
1827
1828 fdirectives-only
1829 C ObjC C++ ObjC++
1830 Preprocess directives only.
1831
1832 fdollars-in-identifiers
1833 C ObjC C++ ObjC++
1834 Permit '$' as an identifier character.
1835
1836 fmacro-prefix-map=
1837 C ObjC C++ ObjC++ Joined RejectNegative
1838 -fmacro-prefix-map=<old>=<new> Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE().
1839
1840 fdump-ada-spec
1841 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1842 Write all declarations as Ada code transitively.
1843
1844 fdump-ada-spec-slim
1845 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1846 Write all declarations as Ada code for the given file only.
1847
1848 felide-constructors
1849 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1850
1851 felide-type
1852 C++ ObjC++ Var(flag_elide_type) Init(1)
1853 Do not elide common elements in template comparisons.
1854
1855 fenforce-eh-specs
1856 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1857 Generate code to check exception specifications.
1858
1859 fenum-int-equiv
1860 C++ ObjC++ WarnRemoved
1861
1862 fexec-charset=
1863 C ObjC C++ ObjC++ Joined RejectNegative
1864 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
1865
1866 fextended-identifiers
1867 C ObjC C++ ObjC++
1868 Permit universal character names (\\u and \\U) in identifiers.
1869
1870 finput-charset=
1871 C ObjC C++ ObjC++ Joined RejectNegative
1872 -finput-charset=<cset> Specify the default character set for source files.
1873
1874 fextern-tls-init
1875 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1876 Support dynamic initialization of thread-local variables in a different translation unit.
1877
1878 fexternal-templates
1879 C++ ObjC++ WarnRemoved
1880
1881 ffold-simple-inlines
1882 C++ ObjC++ Optimization Var(flag_fold_simple_inlines)
1883 Fold calls to simple inline functions.
1884
1885 ffor-scope
1886 C++ ObjC++ WarnRemoved
1887
1888 ffreestanding
1889 C ObjC C++ ObjC++
1890 Do not assume that standard C libraries and \"main\" exist.
1891
1892 fgnu-keywords
1893 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1894 Recognize GNU-defined keywords.
1895
1896 fgnu-runtime
1897 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1898 Generate code for GNU runtime environment.
1899
1900 fgnu89-inline
1901 C ObjC Var(flag_gnu89_inline) Init(-1)
1902 Use traditional GNU semantics for inline functions.
1903
1904 fguiding-decls
1905 C++ ObjC++ WarnRemoved
1906
1907 fhandle-exceptions
1908 C++ ObjC++ Optimization Alias(fexceptions) Warn({%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)})
1909
1910 fhonor-std
1911 C++ ObjC++ WarnRemoved
1912
1913 fhosted
1914 C ObjC
1915 Assume normal C execution environment.
1916
1917 fhuge-objects
1918 C++ ObjC++ WarnRemoved
1919 No longer supported.
1920
1921 fimmediate-escalation
1922 C++ ObjC++ Var(flag_immediate_escalation) Init(1)
1923 Implement P2564 for consteval propagation.
1924
1925 fimplement-inlines
1926 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1927 Export functions even if they can be inlined.
1928
1929 fimplicit-constexpr
1930 C++ ObjC++ Var(flag_implicit_constexpr)
1931 Make inline functions constexpr by default.
1932
1933 fimplicit-inline-templates
1934 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1935 Emit implicit instantiations of inline templates.
1936
1937 fimplicit-templates
1938 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1939 Emit implicit instantiations of templates.
1940
1941 fnew-inheriting-ctors
1942 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1943 Implement C++17 inheriting constructor semantics.
1944
1945 ffriend-injection
1946 C++ ObjC++ WarnRemoved
1947
1948 fkeep-inline-dllexport
1949 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1950 Don't emit dllexported inline functions unless needed.
1951
1952 flabels-ok
1953 C++ ObjC++ WarnRemoved
1954
1955 flax-vector-conversions
1956 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1957 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1958
1959 fmodules-ts
1960 C++ ObjC++ Var(flag_modules) Integer Init(0)
1961 Enable C++ modules-ts (experimental).
1962
1963 fno-modules
1964 C++ ObjC++ Undocumented RejectNegative Var(flag_modules,0) Integer
1965 ;; undocumented
1966
1967 fmodule-header
1968 C++ ObjC RejectNegative Var(flag_header_unit,0) Integer
1969 Enable C++ header module (experimental).
1970
1971 fmodule-header=
1972 C++ ObjC++ Joined RejectNegative Undocumented
1973
1974 fmodule-implicit-inline
1975 C++ ObjC++ Var(flag_module_implicit_inline,0) Integer
1976 Member functions defined within their class are inline in module purview.
1977
1978 fmodule-only
1979 C++ ObjC RejectNegative Var(flag_module_only) Integer
1980 Only emit Compiled Module Interface.
1981
1982 fmodule-mapper=
1983 C++ ObjC++ Joined RejectNegative MissingArgError(missing mapper)
1984 Mapper for module to CMI files.
1985
1986 fmodule-lazy
1987 C++ ObjC++ Var(flag_module_lazy) Init(1)
1988 Enable lazy module importing.
1989
1990 fmodule-version-ignore
1991 C++ ObjC Var(flag_module_version_ignore) Integer
1992 ; undocumented, Very dangerous, but occasionally useful
1993
1994 Winvalid-imported-macros
1995 C++ ObjC++ Var(warn_imported_macros) Warning
1996 Warn about macros that have conflicting header units definitions.
1997
1998 Wcompare-distinct-pointer-types
1999 C ObjC Var(warn_compare_distinct_pointer_types) Warning Init(1)
2000 Warn if pointers of distinct types are compared without a cast.
2001
2002 flang-info-include-translate
2003 C++ Var(note_include_translate_yes)
2004 Note #include directives translated to import declarations.
2005
2006 flang-info-include-translate-not
2007 C++ Var(note_include_translate_no)
2008 Note #include directives not translated to import declarations, and not known to be textual.
2009
2010 flang-info-include-translate=
2011 C++ Joined RejectNegative MissingArgError(missing header name)
2012 Note a #include translation of a specific header.
2013
2014 flang-info-module-cmi
2015 C++ Var(note_module_cmi_yes)
2016 Note Compiled Module Interface pathnames.
2017
2018 flang-info-module-cmi=
2019 C++ Joined RejectNegative MissingArgError(missing module name)
2020 Note Compiled Module Interface pathname of a specific module or header-unit.
2021
2022 fmax-include-depth=
2023 C ObjC C++ ObjC++ Joined RejectNegative UInteger
2024 fmax-include-depth=<number> Set the maximum depth of the nested #include.
2025
2026 fms-extensions
2027 C ObjC C++ ObjC++ Var(flag_ms_extensions)
2028 Don't warn about uses of Microsoft extensions.
2029
2030 fmudflap
2031 C ObjC C++ ObjC++ WarnRemoved
2032
2033 fmudflapth
2034 C ObjC C++ ObjC++ WarnRemoved
2035
2036 fmudflapir
2037 C ObjC C++ ObjC++ WarnRemoved
2038
2039 fname-mangling-version-
2040 C++ ObjC++ Joined WarnRemoved
2041
2042 fnew-abi
2043 C++ ObjC++ WarnRemoved
2044
2045 fnew-ttp-matching
2046 C++ ObjC++ Var(flag_new_ttp)
2047 Implement resolution of DR 150 for matching of template template arguments.
2048
2049 fnext-runtime
2050 ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime)
2051 Generate code for NeXT (Apple macOS) runtime environment.
2052
2053 fnil-receivers
2054 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
2055 Assume that receivers of Objective-C messages may be nil.
2056
2057 flocal-ivars
2058 ObjC ObjC++ Var(flag_local_ivars) Init(1)
2059 Allow access to instance variables as if they were local declarations within instance method implementations.
2060
2061 fivar-visibility=
2062 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
2063 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
2064
2065 Enum
2066 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
2067
2068 EnumValue
2069 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
2070
2071 EnumValue
2072 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
2073
2074 EnumValue
2075 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
2076
2077 EnumValue
2078 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
2079
2080 fnonansi-builtins
2081 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
2082
2083 fnonnull-objects
2084 C++ ObjC++ WarnRemoved
2085
2086 fnothrow-opt
2087 C++ ObjC++ Optimization Var(flag_nothrow_opt)
2088 Treat a throw() exception specification as noexcept to improve code size.
2089
2090 fobjc-abi-version=
2091 ObjC ObjC++ LTO Joined RejectNegative UInteger Var(flag_objc_abi)
2092 Specify which ABI to use for Objective-C family code and meta-data generation.
2093
2094 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
2095 ; to initialize any non-POD ivars in Objective-C++ classes.
2096 fobjc-call-cxx-cdtors
2097 ObjC++ Var(flag_objc_call_cxx_cdtors)
2098 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
2099
2100 fobjc-direct-dispatch
2101 ObjC ObjC++ Var(flag_objc_direct_dispatch)
2102 Allow fast jumps to the message dispatcher.
2103
2104 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
2105 ; @try, etc.) in source code.
2106 fobjc-exceptions
2107 ObjC ObjC++ Var(flag_objc_exceptions)
2108 Enable Objective-C exception and synchronization syntax.
2109
2110 fobjc-gc
2111 ObjC ObjC++ LTO Var(flag_objc_gc)
2112 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
2113
2114 fobjc-nilcheck
2115 ObjC ObjC++ Var(flag_objc_nilcheck,1)
2116 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
2117
2118 ; Nonzero means that we generate NeXT setjmp based exceptions.
2119 fobjc-sjlj-exceptions
2120 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
2121 Enable Objective-C setjmp exception handling runtime.
2122
2123 fobjc-std=objc1
2124 ObjC ObjC++ Var(flag_objc1_only)
2125 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
2126
2127 fopenacc
2128 C ObjC C++ ObjC++ LTO Var(flag_openacc)
2129 Enable OpenACC.
2130
2131 fopenacc-dim=
2132 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
2133 Specify default OpenACC compute dimensions.
2134
2135 fopenmp
2136 C ObjC C++ ObjC++ LTO Var(flag_openmp)
2137 Enable OpenMP (implies -frecursive in Fortran).
2138
2139 fopenmp-simd
2140 C ObjC C++ ObjC++ Var(flag_openmp_simd)
2141 Enable OpenMP's SIMD directives.
2142
2143 foperator-names
2144 C++ ObjC++
2145 Recognize C++ keywords like \"compl\" and \"xor\".
2146
2147 foptional-diags
2148 C++ ObjC++ Ignore
2149 Does nothing. Preserved for backward compatibility.
2150
2151 fpch-deps
2152 C ObjC C++ ObjC++
2153
2154 fpch-preprocess
2155 C ObjC C++ ObjC++
2156 Look for and use PCH files even when preprocessing.
2157
2158 fpermissive
2159 C ObjC C++ ObjC++ Var(flag_permissive)
2160 Downgrade conformance errors to warnings.
2161
2162 fplan9-extensions
2163 C ObjC Var(flag_plan9_extensions)
2164 Enable Plan 9 language extensions.
2165
2166 fpreprocessed
2167 C ObjC C++ ObjC++
2168 Treat the input file as already preprocessed.
2169
2170 ftrack-macro-expansion
2171 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
2172 ; converted into ftrack-macro-expansion=
2173
2174 ftrack-macro-expansion=
2175 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
2176 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
2177
2178 fpretty-templates
2179 C++ ObjC++ Var(flag_pretty_templates) Init(1)
2180 Do not pretty-print template specializations as the template signature followed by the arguments.
2181
2182 fprintf-return-value
2183 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
2184 Treat known sprintf return values as constants.
2185
2186 freplace-objc-classes
2187 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
2188 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
2189
2190 frepo
2191 C++ ObjC++ WarnRemoved
2192 Removed in GCC 10. This switch has no effect.
2193
2194 frtti
2195 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
2196 Generate run time type descriptor information.
2197
2198 fshort-enums
2199 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
2200 Use the narrowest integer type possible for enumeration types.
2201
2202 fshort-wchar
2203 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
2204 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
2205
2206 fsigned-bitfields
2207 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
2208 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
2209
2210 fsigned-char
2211 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
2212 Make \"char\" signed by default.
2213
2214 fsized-deallocation
2215 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
2216 Enable C++14 sized deallocation support.
2217
2218 fstrict-flex-arrays
2219 C C++ Common Alias(fstrict-flex-arrays=,3,0)
2220
2221 fstrict-flex-arrays=
2222 C C++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3)
2223 -fstrict-flex-arrays=<level> Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members.
2224
2225 fsquangle
2226 C++ ObjC++ WarnRemoved
2227
2228 fsso-struct=
2229 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
2230 -fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order.
2231
2232 Enum
2233 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
2234
2235 EnumValue
2236 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
2237
2238 EnumValue
2239 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
2240
2241 EnumValue
2242 Enum(sso_struct) String(native) Value(SSO_NATIVE)
2243
2244 fstats
2245 C++ ObjC++ Var(flag_detailed_statistics)
2246 Display statistics accumulated during compilation.
2247
2248 fstrict-enums
2249 C++ ObjC++ Optimization Var(flag_strict_enums)
2250 Assume that values of enumeration type are always within the minimum range of that type.
2251
2252 fstrict-prototype
2253 C++ ObjC++ WarnRemoved
2254
2255 fstrong-eval-order
2256 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
2257 Follow the C++17 evaluation order requirements for assignment expressions,
2258 shift, member function calls, etc.
2259
2260 fstrong-eval-order=
2261 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
2262 Follow the C++17 evaluation order requirements for assignment expressions,
2263 shift, member function calls, etc.
2264
2265 Enum
2266 Name(strong_eval_order) Type(int)
2267
2268 EnumValue
2269 Enum(strong_eval_order) String(none) Value(0)
2270
2271 EnumValue
2272 Enum(strong_eval_order) String(some) Value(1)
2273
2274 EnumValue
2275 Enum(strong_eval_order) String(all) Value(2)
2276
2277 ftemplate-backtrace-limit=
2278 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
2279 Set the maximum number of template instantiation notes for a single warning or error.
2280
2281 ftemplate-depth-
2282 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
2283
2284 ftemplate-depth=
2285 C++ ObjC++ Joined RejectNegative UInteger
2286 -ftemplate-depth=<number> Specify maximum template instantiation depth.
2287
2288 fthis-is-variable
2289 C++ ObjC++ WarnRemoved
2290
2291 fthreadsafe-statics
2292 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
2293 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
2294
2295 funsigned-bitfields
2296 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
2297 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
2298
2299 funsigned-char
2300 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
2301 Make \"char\" unsigned by default.
2302
2303 fuse-cxa-atexit
2304 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
2305 Use __cxa_atexit to register destructors.
2306
2307 fuse-cxa-get-exception-ptr
2308 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
2309 Use __cxa_get_exception_ptr in exception handling.
2310
2311 fvisibility-inlines-hidden
2312 C++ ObjC++
2313 Marks all inlined functions and methods as having hidden visibility.
2314
2315 fvisibility-ms-compat
2316 C++ ObjC++ Var(flag_visibility_ms_compat)
2317 Changes visibility to match Microsoft Visual Studio by default.
2318
2319 fvtable-gc
2320 C++ ObjC++ WarnRemoved
2321 No longer supported.
2322
2323 fvtable-thunks
2324 C++ ObjC++ WarnRemoved
2325 No longer supported.
2326
2327 fweak
2328 C++ ObjC++ Var(flag_weak) Init(1)
2329 Emit common-like symbols as weak symbols.
2330
2331 fwide-exec-charset=
2332 C ObjC C++ ObjC++ Joined RejectNegative
2333 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
2334
2335 fworking-directory
2336 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
2337 Generate a #line directive pointing at the current working directory.
2338
2339 fxref
2340 C++ ObjC++ WarnRemoved
2341 No longer supported.
2342
2343 fzero-link
2344 ObjC ObjC++ Var(flag_zero_link)
2345 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
2346
2347 gen-decls
2348 ObjC ObjC++ Driver Var(flag_gen_declaration) RejectNegative
2349 Dump declarations to a .decl file.
2350
2351 femit-struct-debug-baseonly
2352 C ObjC C++ ObjC++
2353 -femit-struct-debug-baseonly Aggressive reduced debug info for structs.
2354
2355 femit-struct-debug-reduced
2356 C ObjC C++ ObjC++
2357 -femit-struct-debug-reduced Conservative reduced debug info for structs.
2358
2359 femit-struct-debug-detailed=
2360 C ObjC C++ ObjC++ Joined
2361 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
2362
2363 fext-numeric-literals
2364 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
2365 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
2366 number literal rather than a user-defined number literal.
2367
2368 idirafter
2369 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2370 -idirafter <dir> Add <dir> to the end of the system include path.
2371
2372 imacros
2373 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2374 -imacros <file> Accept definition of macros in <file>.
2375
2376 imultilib
2377 C ObjC C++ ObjC++ Joined Separate
2378 -imultilib <dir> Set <dir> to be the multilib include subdirectory.
2379
2380 include
2381 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
2382 -include <file> Include the contents of <file> before other files.
2383
2384 iprefix
2385 C ObjC C++ ObjC++ Joined Separate
2386 -iprefix <path> Specify <path> as a prefix for next two options.
2387
2388 isysroot
2389 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2390 -isysroot <dir> Set <dir> to be the system root directory.
2391
2392 isystem
2393 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2394 -isystem <dir> Add <dir> to the start of the system include path.
2395
2396 iquote
2397 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
2398 -iquote <dir> Add <dir> to the end of the quote include path.
2399
2400 iwithprefix
2401 C ObjC C++ ObjC++ Joined Separate
2402 -iwithprefix <dir> Add <dir> to the end of the system include path.
2403
2404 iwithprefixbefore
2405 C ObjC C++ ObjC++ Joined Separate
2406 -iwithprefixbefore <dir> Add <dir> to the end of the main include path.
2407
2408 lang-asm
2409 C Undocumented RejectDriver
2410
2411 no-integrated-cpp
2412 Driver
2413
2414 nostdinc
2415 C ObjC C++ ObjC++
2416 Do not search standard system include directories (those specified with -isystem will still be used).
2417
2418 nostdinc++
2419 C++ ObjC++
2420 Do not search standard system include directories for C++.
2421
2422 o
2423 C ObjC C++ ObjC++ Joined Separate
2424 ; Documented in common.opt
2425
2426 pedantic
2427 C ObjC C++ ObjC++ Alias(Wpedantic)
2428 ; Documented in common.opt
2429
2430 print-objc-runtime-info
2431 ObjC ObjC++
2432 Generate C header of platform-specific features.
2433
2434 remap
2435 C ObjC C++ ObjC++
2436 Remap file names when including files.
2437
2438 std=c++98
2439 C++ ObjC++
2440 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2441
2442 std=c++03
2443 C++ ObjC++ Alias(std=c++98)
2444 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
2445
2446 std=c++11
2447 C++ ObjC++
2448 Conform to the ISO 2011 C++ standard.
2449
2450 std=c++0x
2451 C++ ObjC++ Alias(std=c++11) Undocumented
2452 Deprecated in favor of -std=c++11.
2453
2454 std=c++1y
2455 C++ ObjC++ Alias(std=c++14) Undocumented
2456 Deprecated in favor of -std=c++14.
2457
2458 std=c++14
2459 C++ ObjC++
2460 Conform to the ISO 2014 C++ standard.
2461
2462 std=c++1z
2463 C++ ObjC++ Alias(std=c++17) Undocumented
2464 Deprecated in favor of -std=c++17.
2465
2466 std=c++17
2467 C++ ObjC++
2468 Conform to the ISO 2017 C++ standard.
2469
2470 std=c++2a
2471 C++ ObjC++ Alias(std=c++20) Undocumented
2472 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2473
2474 std=c++20
2475 C++ ObjC++
2476 Conform to the ISO 2020 C++ standard (experimental and incomplete support).
2477
2478 std=c++2b
2479 C++ ObjC++ Alias(std=c++23) Undocumented
2480 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2481
2482 std=c++23
2483 C++ ObjC++
2484 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
2485
2486 std=c++2c
2487 C++ ObjC++ Alias(std=c++26)
2488 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
2489
2490 std=c++26
2491 C++ ObjC++ Undocumented
2492 Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).
2493
2494 std=c11
2495 C ObjC
2496 Conform to the ISO 2011 C standard.
2497
2498 std=c1x
2499 C ObjC Alias(std=c11)
2500 Deprecated in favor of -std=c11.
2501
2502 std=c17
2503 C ObjC
2504 Conform to the ISO 2017 C standard (published in 2018).
2505
2506 std=c18
2507 C ObjC Alias(std=c17)
2508 Conform to the ISO 2017 C standard (published in 2018).
2509
2510 std=c23
2511 C ObjC
2512 Conform to the ISO 2023 C standard draft (expected to be published in 2024) (experimental and incomplete support).
2513
2514 std=c2x
2515 C ObjC Alias(std=c23)
2516 Deprecated in favor of -std=c23.
2517
2518 std=c89
2519 C ObjC Alias(std=c90)
2520 Conform to the ISO 1990 C standard.
2521
2522 std=c90
2523 C ObjC
2524 Conform to the ISO 1990 C standard.
2525
2526 std=c99
2527 C ObjC
2528 Conform to the ISO 1999 C standard.
2529
2530 std=c9x
2531 C ObjC Alias(std=c99)
2532 Deprecated in favor of -std=c99.
2533
2534 std=gnu++98
2535 C++ ObjC++
2536 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2537 corrigendum with GNU extensions.
2538
2539 std=gnu++03
2540 C++ ObjC++ Alias(std=gnu++98)
2541 Conform to the ISO 1998 C++ standard revised by the 2003 technical
2542 corrigendum with GNU extensions.
2543
2544 std=gnu++11
2545 C++ ObjC++
2546 Conform to the ISO 2011 C++ standard with GNU extensions.
2547
2548 std=gnu++0x
2549 C++ ObjC++ Alias(std=gnu++11) Undocumented
2550 Deprecated in favor of -std=gnu++11.
2551
2552 std=gnu++1y
2553 C++ ObjC++ Alias(std=gnu++14) Undocumented
2554 Deprecated in favor of -std=gnu++14.
2555
2556 std=gnu++14
2557 C++ ObjC++
2558 Conform to the ISO 2014 C++ standard with GNU extensions.
2559
2560 std=gnu++1z
2561 C++ ObjC++ Alias(std=gnu++17) Undocumented
2562 Deprecated in favor of -std=gnu++17.
2563
2564 std=gnu++17
2565 C++ ObjC++
2566 Conform to the ISO 2017 C++ standard with GNU extensions.
2567
2568 std=gnu++2a
2569 C++ ObjC++ Alias(std=gnu++20) Undocumented
2570 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2571
2572 std=gnu++20
2573 C++ ObjC++
2574 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
2575
2576 std=gnu++2b
2577 C++ ObjC++ Alias(std=gnu++23) Undocumented
2578 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2579
2580 std=gnu++23
2581 C++ ObjC++
2582 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
2583
2584 std=gnu++2c
2585 C++ ObjC++ Alias(std=gnu++26)
2586 Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).
2587
2588 std=gnu++26
2589 C++ ObjC++ Undocumented
2590 Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).
2591
2592 std=gnu11
2593 C ObjC
2594 Conform to the ISO 2011 C standard with GNU extensions.
2595
2596 std=gnu1x
2597 C ObjC Alias(std=gnu11)
2598 Deprecated in favor of -std=gnu11.
2599
2600 std=gnu17
2601 C ObjC
2602 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2603
2604 std=gnu18
2605 C ObjC Alias(std=gnu17)
2606 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.
2607
2608 std=gnu23
2609 C ObjC
2610 Conform to the ISO 2023 C standard draft (expected to be published in 2024) with GNU extensions (experimental and incomplete support).
2611
2612 std=gnu2x
2613 C ObjC Alias(std=gnu23)
2614 Deprecated in favor of -std=gnu23.
2615
2616 std=gnu89
2617 C ObjC Alias(std=gnu90)
2618 Conform to the ISO 1990 C standard with GNU extensions.
2619
2620 std=gnu90
2621 C ObjC
2622 Conform to the ISO 1990 C standard with GNU extensions.
2623
2624 std=gnu99
2625 C ObjC
2626 Conform to the ISO 1999 C standard with GNU extensions.
2627
2628 std=gnu9x
2629 C ObjC Alias(std=gnu99)
2630 Deprecated in favor of -std=gnu99.
2631
2632 std=iso9899:1990
2633 C ObjC Alias(std=c90)
2634 Conform to the ISO 1990 C standard.
2635
2636 std=iso9899:199409
2637 C ObjC
2638 Conform to the ISO 1990 C standard as amended in 1994.
2639
2640 std=iso9899:1999
2641 C ObjC Alias(std=c99)
2642 Conform to the ISO 1999 C standard.
2643
2644 std=iso9899:199x
2645 C ObjC Alias(std=c99)
2646 Deprecated in favor of -std=iso9899:1999.
2647
2648 std=iso9899:2011
2649 C ObjC Alias(std=c11)
2650 Conform to the ISO 2011 C standard.
2651
2652 std=iso9899:2017
2653 C ObjC Alias(std=c17)
2654 Conform to the ISO 2017 C standard (published in 2018).
2655
2656 std=iso9899:2018
2657 C ObjC Alias(std=c17)
2658 Conform to the ISO 2017 C standard (published in 2018).
2659
2660 std=iso9899:2024
2661 C ObjC Alias(std=c23)
2662 Conform to the ISO 2023 C standard draft (expected to be published in 2024) (experimental and incomplete support).
2663
2664 stdlib=
2665 Driver C++ ObjC++ Common Condition(ENABLE_STDLIB_OPTION) Var(flag_stdlib_kind) Joined Enum(stdlib_kind) RejectNegative Init(1)
2666 -stdlib=[libstdc++|libc++] The standard library to be used for C++ headers
2667 and runtime.
2668
2669 Enum
2670 Name(stdlib_kind) Type(int)
2671
2672 EnumValue
2673 Enum(stdlib_kind) String(libstdc++) Value(1)
2674
2675 EnumValue
2676 Enum(stdlib_kind) String(libc++) Value(2)
2677
2678 traditional
2679 Driver
2680
2681 traditional-cpp
2682 C ObjC C++ ObjC++
2683 Enable traditional preprocessing.
2684
2685 trigraphs
2686 C ObjC C++ ObjC++
2687 -trigraphs Support ISO C trigraphs.
2688
2689 undef
2690 C ObjC C++ ObjC++ Var(flag_undef)
2691 Do not predefine system-specific and GCC-specific macros.
2692
2693 v
2694 C ObjC C++ ObjC++
2695 ; Documented in common.opt
2696
2697 w
2698 C ObjC C++ ObjC++
2699 ; Documented in common.opt
2700
2701 ; This comment is to ensure we retain the blank line above.