]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/c-family/c.opt
d857dfc379295f699f68038a7208cdd1f458473b
[thirdparty/gcc.git] / gcc / c-family / c.opt
1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003-2017 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++ Joined 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 MP
240 C ObjC C++ ObjC++
241 Generate phony targets for all headers.
242
243 MQ
244 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
245 -MQ <target> Add a MAKE-quoted target.
246
247 MT
248 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
249 -MT <target> Add an unquoted target.
250
251 P
252 C ObjC C++ ObjC++
253 Do not generate #line directives.
254
255 U
256 C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
257 -U<macro> Undefine <macro>.
258
259 Wabi
260 C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
261 Warn about things that will change when compiling with an ABI-compliant compiler.
262
263 Wabi=
264 C ObjC C++ ObjC++ LTO Joined RejectNegative UInteger Warning
265 Warn about things that change between the current -fabi-version and the specified version.
266
267 Wabi-tag
268 C++ ObjC++ Var(warn_abi_tag) Warning
269 Warn if a subobject has an abi_tag attribute that the complete object type does not have.
270
271 Wpsabi
272 C ObjC C++ ObjC++ LTO Var(warn_psabi) Init(1) Warning Undocumented LangEnabledBy(C ObjC C++ ObjC++,Wabi)
273
274 Waddress
275 C ObjC C++ ObjC++ Var(warn_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
276 Warn about suspicious uses of memory addresses.
277
278 Enum
279 Name(warn_aligned_new_level) Type(int) UnknownError(argument %qs to %<-Waligned-new%> not recognized)
280
281 EnumValue
282 Enum(warn_aligned_new_level) String(none) Value(0)
283
284 EnumValue
285 Enum(warn_aligned_new_level) String(global) Value(1)
286
287 EnumValue
288 Enum(warn_aligned_new_level) String(all) Value(2)
289
290 Waligned-new
291 C++ ObjC++ Alias(Waligned-new=,global,none)
292 Warn about 'new' of type with extended alignment without -faligned-new.
293
294 Waligned-new=
295 C++ ObjC++ Var(warn_aligned_new) Enum(warn_aligned_new_level) Joined RejectNegative Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
296 -Waligned-new=[none|global|all] Warn even if 'new' uses a class member allocation function.
297
298 Wall
299 C ObjC C++ ObjC++ Warning
300 Enable most warning messages.
301
302 Walloca
303 C ObjC C++ ObjC++ Var(warn_alloca) Warning
304 Warn on any use of alloca.
305
306 Walloc-size-larger-than=
307 C ObjC C++ ObjC++ Var(warn_alloc_size_limit) Warning Joined LangEnabledBy(C ObjC C++ ObjC++,Wall)
308 -Walloc-size-larger-than=<bytes> Warn for calls to allocation functions that
309 attempt to allocate objects larger than the specified number of bytes.
310
311 Walloc-zero
312 C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
313 -Walloc-zero Warn for calls to allocation functions that specify zero bytes.
314
315 Walloca-larger-than=
316 C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined RejectNegative UInteger
317 -Walloca-larger-than=<number> Warn on unbounded uses of
318 alloca, and on bounded uses of alloca whose bound can be larger than
319 <number> bytes.
320
321 Warray-bounds
322 LangEnabledBy(C ObjC C++ ObjC++,Wall)
323 ; in common.opt
324
325 Warray-bounds=
326 LangEnabledBy(C ObjC C++ ObjC++,Wall,1,0)
327 ; in common.opt
328
329 Wassign-intercept
330 ObjC ObjC++ Var(warn_assign_intercept) Warning
331 Warn whenever an Objective-C assignment is being intercepted by the garbage collector.
332
333 Wbad-function-cast
334 C ObjC Var(warn_bad_function_cast) Warning
335 Warn about casting functions to incompatible types.
336
337 Wbool-compare
338 C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
339 Warn about boolean expression compared with an integer value different from true/false.
340
341 Wbool-operation
342 C ObjC C++ ObjC++ Var(warn_bool_op) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
343 Warn about certain operations on boolean expressions.
344
345 Wframe-address
346 C ObjC C++ ObjC++ Var(warn_frame_address) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
347 Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
348
349 Wbuiltin-declaration-mismatch
350 C ObjC C++ ObjC++ Var(warn_builtin_declaraion_mismatch) Init(1) Warning
351 Warn when a built-in function is declared with the wrong signature.
352
353 Wbuiltin-macro-redefined
354 C ObjC C++ ObjC++ CPP(warn_builtin_macro_redefined) CppReason(CPP_W_BUILTIN_MACRO_REDEFINED) Var(cpp_warn_builtin_macro_redefined) Init(1) Warning
355 Warn when a built-in preprocessor macro is undefined or redefined.
356
357 Wc90-c99-compat
358 C ObjC CPP(cpp_warn_c90_c99_compat) CppReason(CPP_W_C90_C99_COMPAT) Var(warn_c90_c99_compat) Init(-1) Warning
359 Warn about features not present in ISO C90, but present in ISO C99.
360
361 Wc99-c11-compat
362 C ObjC Var(warn_c99_c11_compat) Init(-1) Warning
363 Warn about features not present in ISO C99, but present in ISO C11.
364
365 Wc++-compat
366 C ObjC Var(warn_cxx_compat) CPP(warn_cxx_operator_names) CppReason(CPP_W_CXX_OPERATOR_NAMES) Init(0) Warning
367 Warn about C constructs that are not in the common subset of C and C++.
368
369 Wc++0x-compat
370 C++ ObjC++ Warning Alias(Wc++11-compat) Undocumented
371
372 Wc++11-compat
373 C++ ObjC++ Var(warn_cxx11_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx11_compat) CppReason(CPP_W_CXX11_COMPAT)
374 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.
375
376 Wc++14-compat
377 C++ ObjC++ Var(warn_cxx14_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
378 Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.
379
380 Wc++1z-compat
381 C++ ObjC++ Warning Alias(Wc++17-compat) Undocumented
382
383 Wc++17-compat
384 C++ ObjC++ Var(warn_cxx17_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
385 Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.
386
387 Wcast-qual
388 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
389 Warn about casts which discard qualifiers.
390
391 Wcatch-value
392 C++ ObjC++ Warning Alias(Wcatch-value=, 1, 0)
393 Warn about catch handlers of non-reference type.
394
395 Wcatch-value=
396 C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0)
397 Warn about catch handlers of non-reference type.
398
399 Wchar-subscripts
400 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
401 Warn about subscripts whose type is \"char\".
402
403 Wchkp
404 C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
405 Warn about memory access errors found by Pointer Bounds Checker.
406
407 Wclobbered
408 C ObjC C++ ObjC++ Var(warn_clobbered) Warning EnabledBy(Wextra)
409 Warn about variables that might be changed by \"longjmp\" or \"vfork\".
410
411 Wcomment
412 C ObjC C++ ObjC++ CPP(warn_comments) CppReason(CPP_W_COMMENTS) Var(cpp_warn_comment) Init(0) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
413 Warn about possibly nested block comments, and C++ comments spanning more than one physical line.
414
415 Wcomments
416 C ObjC C++ ObjC++ Warning Alias(Wcomment)
417 Synonym for -Wcomment.
418
419 Wconditionally-supported
420 C++ ObjC++ Var(warn_conditionally_supported) Warning
421 Warn for conditionally-supported constructs.
422
423 Wconversion
424 C ObjC C++ ObjC++ Var(warn_conversion) Warning
425 Warn for implicit type conversions that may change a value.
426
427 Wconversion-null
428 C++ ObjC++ Var(warn_conversion_null) Init(1) Warning
429 Warn for converting NULL from/to a non-pointer type.
430
431 Wcpp
432 C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
433 ; Documented in common.opt
434
435 Wctor-dtor-privacy
436 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
437 Warn when all constructors and destructors are private.
438
439 Wdangling-else
440 C ObjC C++ ObjC++ Var(warn_dangling_else) Warning LangEnabledBy(C ObjC C++ ObjC++,Wparentheses)
441 Warn about dangling else.
442
443 Wdate-time
444 C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
445 Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
446
447 Wdeclaration-after-statement
448 C ObjC Var(warn_declaration_after_statement) Init(-1) Warning
449 Warn when a declaration is found after a statement.
450
451 Wdelete-incomplete
452 C++ ObjC++ Var(warn_delete_incomplete) Init(1) Warning
453 Warn when deleting a pointer to incomplete type.
454
455 Wdelete-non-virtual-dtor
456 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall || Weffc++)
457 Warn about deleting polymorphic objects with non-virtual destructors.
458
459 Wdeprecated
460 C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED) Var(warn_deprecated) Init(1) Warning
461 Warn if a deprecated compiler feature, class, method, or field is used.
462
463 Wdesignated-init
464 C ObjC Var(warn_designated_init) Init(1) Warning
465 Warn about positional initialization of structs requiring designated initializers.
466
467 Wdiscarded-array-qualifiers
468 C ObjC Var(warn_discarded_array_qualifiers) Init(1) Warning
469 Warn if qualifiers on arrays which are pointer targets are discarded.
470
471 Wdiscarded-qualifiers
472 C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
473 Warn if type qualifiers on pointers are discarded.
474
475 Wdiv-by-zero
476 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
477 Warn about compile-time integer division by zero.
478
479 Wduplicated-branches
480 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
481 Warn about duplicated branches in if-else statements.
482
483 Wduplicated-cond
484 C ObjC C++ ObjC++ Var(warn_duplicated_cond) Init(0) Warning
485 Warn about duplicated conditions in an if-else-if chain.
486
487 Weffc++
488 C++ ObjC++ Var(warn_ecpp) Warning
489 Warn about violations of Effective C++ style rules.
490
491 Wempty-body
492 C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
493 Warn about an empty body in an if or else statement.
494
495 Wendif-labels
496 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)
497 Warn about stray tokens after #else and #endif.
498
499 Wenum-compare
500 C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
501 Warn about comparison of different enum types.
502
503 Werror
504 C ObjC C++ ObjC++
505 ; Documented in common.opt
506
507 Werror-implicit-function-declaration
508 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
509 This switch is deprecated; use -Werror=implicit-function-declaration instead.
510
511 Wextra
512 C ObjC C++ ObjC++ Warning
513 ; in common.opt
514
515 Wextra-semi
516 C++ ObjC++ Var(warn_extra_semi) Warning
517 Warn about semicolon after in-class function definition.
518
519 Wfloat-conversion
520 C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
521 Warn for implicit type conversions that cause loss of floating point precision.
522
523 Wfloat-equal
524 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
525 Warn if testing floating point numbers for equality.
526
527 Wformat
528 C ObjC C++ ObjC++ Warning Alias(Wformat=, 1, 0)
529 Warn about printf/scanf/strftime/strfmon format string anomalies.
530
531 Wformat-contains-nul
532 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
533 Warn about format strings that contain NUL bytes.
534
535 Wformat-extra-args
536 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0)
537 Warn if passing too many arguments to a function for its format string.
538
539 Wformat-nonliteral
540 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
541 Warn about format strings that are not literals.
542
543 Wformat-overflow
544 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-overflow=, 1, 0) IntegerRange(0, 2)
545 Warn about function calls with format strings that write past the end
546 of the destination region. Same as -Wformat-overflow=1.
547
548 Wformat-security
549 C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
550 Warn about possible security problems with format functions.
551
552 Wformat-signedness
553 C ObjC C++ ObjC++ Var(warn_format_signedness) Warning
554 Warn about sign differences with format functions.
555
556 Wformat-truncation
557 C ObjC C++ LTO ObjC++ Warning Alias(Wformat-truncation=, 1, 0)
558 Warn about calls to snprintf and similar functions that truncate output.
559 Same as -Wformat-truncation=1.
560
561 Wformat-y2k
562 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 2, 0)
563 Warn about strftime formats yielding 2-digit years.
564
565 Wformat-zero-length
566 C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1, 0)
567 Warn about zero-length formats.
568
569 Wformat=
570 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
571 Warn about printf/scanf/strftime/strfmon format string anomalies.
572
573 Wformat-overflow=
574 C ObjC C++ LTO ObjC++ Joined RejectNegative UInteger Var(warn_format_overflow) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
575 Warn about function calls with format strings that write past the end
576 of the destination region.
577
578 Wformat-truncation=
579 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format_trunc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 1, 0) IntegerRange(0, 2)
580 Warn about calls to snprintf and similar functions that truncate output.
581
582 Wif-not-aligned
583 C ObjC C++ ObjC++ Var(warn_if_not_aligned) Init(1) Warning
584 Warn when the field in a struct is not aligned.
585
586 Wignored-qualifiers
587 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
588 Warn whenever type qualifiers are ignored.
589
590 Wignored-attributes
591 C C++ Var(warn_ignored_attributes) Init(1) Warning
592 Warn whenever attributes are ignored.
593
594 Wincompatible-pointer-types
595 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
596 Warn when there is a conversion between pointers that have incompatible types.
597
598 Winit-self
599 C ObjC C++ ObjC++ Var(warn_init_self) Warning LangEnabledBy(C++ ObjC++,Wall)
600 Warn about variables which are initialized to themselves.
601
602 Wimplicit
603 C ObjC Var(warn_implicit) Warning LangEnabledBy(C ObjC,Wall)
604 Warn about implicit declarations.
605
606 Wimplicit-fallthrough=
607 LangEnabledBy(C ObjC C++ ObjC++,Wextra,3,0)
608 ; in common.opt
609
610 Wdouble-promotion
611 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
612 Warn about implicit conversions from \"float\" to \"double\".
613
614 Wexpansion-to-defined
615 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)
616 Warn if \"defined\" is used outside #if.
617
618 Wimplicit-function-declaration
619 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
620 Warn about implicit function declarations.
621
622 Wimplicit-int
623 C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit)
624 Warn when a declaration does not specify a type.
625
626 Wimport
627 C ObjC C++ ObjC++ Undocumented Ignore
628
629 Winherited-variadic-ctor
630 C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
631 Warn about C++11 inheriting constructors when the base has a variadic constructor.
632
633 Wint-conversion
634 C ObjC Var(warn_int_conversion) Init(1) Warning
635 Warn about incompatible integer to pointer and pointer to integer conversions.
636
637 Wint-in-bool-context
638 C ObjC C++ ObjC++ Var(warn_int_in_bool_context) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
639 Warn for suspicious integer expressions in boolean context.
640
641 Wint-to-pointer-cast
642 C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
643 Warn when there is a cast to a pointer from an integer of a different size.
644
645 Winvalid-offsetof
646 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
647 Warn about invalid uses of the \"offsetof\" macro.
648
649 Winvalid-pch
650 C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
651 Warn about PCH files that are found but not used.
652
653 Wjump-misses-init
654 C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
655 Warn when a jump misses a variable initialization.
656
657 Wliteral-suffix
658 C++ ObjC++ CPP(warn_literal_suffix) CppReason(CPP_W_LITERAL_SUFFIX) Var(cpp_warn_literal_suffix) Init(1) Warning
659 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
660
661 Wlogical-op
662 C ObjC C++ ObjC++ Var(warn_logical_op) Init(0) Warning
663 Warn when a logical operator is suspiciously always evaluating to true or false.
664
665 Wlogical-not-parentheses
666 C ObjC C++ ObjC++ Var(warn_logical_not_paren) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
667 Warn when logical not is used on the left hand side operand of a comparison.
668
669 Wlong-long
670 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)
671 Do not warn about using \"long long\" when -pedantic.
672
673 Wmain
674 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
675 Warn about suspicious declarations of \"main\".
676
677 Wmain
678 LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
679 ;
680
681 Wmemset-transposed-args
682 C ObjC C++ ObjC++ Var(warn_memset_transposed_args) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
683 Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
684
685 Wmemset-elt-size
686 C ObjC C++ ObjC++ Var(warn_memset_elt_size) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
687 Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.
688
689 Wmisleading-indentation
690 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
691 Warn when the indentation of the code does not reflect the block structure.
692
693 Wmissing-braces
694 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
695 Warn about possibly missing braces around initializers.
696
697 Wmissing-declarations
698 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
699 Warn about global functions without previous declarations.
700
701 Wmissing-field-initializers
702 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Warning EnabledBy(Wextra)
703 Warn about missing fields in struct initializers.
704
705 Wmultistatement-macros
706 C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
707 Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
708
709 Wmultiple-inheritance
710 C++ ObjC++ Var(warn_multiple_inheritance) Warning
711 Warn on direct multiple inheritance.
712
713 Wnamespaces
714 C++ ObjC++ Var(warn_namespaces) Warning
715 Warn on namespace definition.
716
717 Wpacked-not-aligned
718 C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
719 Warn when fields in a struct with the packed attribute are misaligned.
720
721 Wsized-deallocation
722 C++ ObjC++ Var(warn_sized_deallocation) Warning EnabledBy(Wextra)
723 Warn about missing sized deallocation functions.
724
725 Wsizeof-pointer-div
726 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
727 Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
728
729 Wsizeof-pointer-memaccess
730 C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
731 Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
732
733 Wsizeof-array-argument
734 C ObjC C++ ObjC++ Var(warn_sizeof_array_argument) Warning Init(1)
735 Warn when sizeof is applied on a parameter declared as an array.
736
737 Wstringop-overflow
738 C ObjC C++ ObjC++ Warning Alias(Wstringop-overflow=, 2, 0)
739 Warn about buffer overflow in string manipulation functions like memcpy
740 and strcpy.
741
742 Wstringop-overflow=
743 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_stringop_overflow) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++, Wall, 2, 0) IntegerRange(0, 4)
744 Under the control of Object Size type, warn about buffer overflow in string
745 manipulation functions like memcpy and strcpy.
746
747 Wstringop-truncation
748 C ObjC C++ ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ ObjC++, Wall)
749 Warn about truncation in string manipulation functions like strncat and strncpy.
750
751 Wsuggest-attribute=format
752 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
753 Warn about functions which might be candidates for format attributes.
754
755 Wsuggest-override
756 C++ ObjC++ Var(warn_override) Warning
757 Suggest that the override keyword be used when the declaration of a virtual
758 function overrides another.
759
760 Wswitch
761 C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
762 Warn about enumerated switches, with no default, missing a case.
763
764 Wswitch-default
765 C ObjC C++ ObjC++ Var(warn_switch_default) Warning
766 Warn about enumerated switches missing a \"default:\" statement.
767
768 Wswitch-enum
769 C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
770 Warn about all enumerated switches missing a specific case.
771
772 Wswitch-bool
773 C ObjC C++ ObjC++ Var(warn_switch_bool) Warning Init(1)
774 Warn about switches with boolean controlling expression.
775
776 Wtemplates
777 C++ ObjC++ Var(warn_templates) Warning
778 Warn on primary template declaration.
779
780 Wmissing-format-attribute
781 C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
782 ;
783
784 Wmissing-include-dirs
785 C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) CppReason(CPP_W_MISSING_INCLUDE_DIRS) Var(cpp_warn_missing_include_dirs) Init(0) Warning
786 Warn about user-specified include directories that do not exist.
787
788 Wmissing-parameter-type
789 C ObjC Var(warn_missing_parameter_type) Warning EnabledBy(Wextra)
790 Warn about function parameters declared without a type specifier in K&R-style functions.
791
792 Wmissing-prototypes
793 C ObjC Var(warn_missing_prototypes) Warning
794 Warn about global functions without prototypes.
795
796 Wmudflap
797 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
798
799 Wmultichar
800 C ObjC C++ ObjC++ CPP(warn_multichar) CppReason(CPP_W_MULTICHAR) Var(cpp_warn_multichar) Init(0) Warning
801 Warn about use of multi-character character constants.
802
803 Wnarrowing
804 C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(-1) LangEnabledBy(C++ ObjC++,Wall || Wc++11-compat)
805 Warn about narrowing conversions within { } that are ill-formed in C++11.
806
807 Wnested-externs
808 C ObjC Var(warn_nested_externs) Warning
809 Warn about \"extern\" declarations not at file scope.
810
811 Wnoexcept
812 C++ ObjC++ Var(warn_noexcept) Warning
813 Warn when a noexcept expression evaluates to false even though the expression can't actually throw.
814
815 Wnoexcept-type
816 C++ ObjC++ Warning Var(warn_noexcept_type) LangEnabledBy(C++ ObjC++,Wabi || Wc++17-compat)
817 Warn if C++17 noexcept function type will change the mangled name of a symbol.
818
819 Wnon-template-friend
820 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
821 Warn when non-templatized friend functions are declared within a template.
822
823 Wclass-memaccess
824 C++ ObjC++ Var(warn_class_memaccess) Warning LangEnabledBy(C++ ObjC++, Wall)
825 Warn for unsafe raw memory writes to objects of class types.
826
827 Wnon-virtual-dtor
828 C++ ObjC++ Var(warn_nonvdtor) Warning LangEnabledBy(C++ ObjC++,Weffc++)
829 Warn about non-virtual destructors.
830
831 Wnonnull
832 C ObjC C++ ObjC++ Var(warn_nonnull) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=,warn_format >= 1,0)
833 Warn about NULL being passed to argument slots marked as requiring non-NULL.
834
835 Wnonnull
836 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
837 ;
838
839 Wnonnull-compare
840 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
841 ;
842
843 Wnormalized
844 C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
845 ;
846
847 Wnormalized=
848 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)
849 -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings.
850
851 ; Required for these enum values.
852 SourceInclude
853 cpplib.h
854
855 Enum
856 Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
857
858 EnumValue
859 Enum(cpp_normalize_level) String(none) Value(normalized_none)
860
861 EnumValue
862 Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
863
864 EnumValue
865 Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
866
867 EnumValue
868 Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
869
870 Wold-style-cast
871 C++ ObjC++ Var(warn_old_style_cast) Warning
872 Warn if a C-style cast is used in a program.
873
874 Wold-style-declaration
875 C ObjC Var(warn_old_style_declaration) Warning EnabledBy(Wextra)
876 Warn for obsolescent usage in a declaration.
877
878 Wold-style-definition
879 C ObjC Var(warn_old_style_definition) Warning
880 Warn if an old-style parameter definition is used.
881
882 Wopenmp-simd
883 C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
884 Warn if a simd directive is overridden by the vectorizer cost model.
885
886 Woverlength-strings
887 C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
888 Warn if a string is longer than the maximum portable length specified by the standard.
889
890 Woverloaded-virtual
891 C++ ObjC++ Var(warn_overloaded_virtual) Warning
892 Warn about overloaded virtual function names.
893
894 Woverride-init
895 C ObjC Var(warn_override_init) Warning EnabledBy(Wextra)
896 Warn about overriding initializers without side effects.
897
898 Woverride-init-side-effects
899 C ObjC Var(warn_override_init_side_effects) Init(1) Warning
900 Warn about overriding initializers with side effects.
901
902 Wpacked-bitfield-compat
903 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
904 Warn about packed bit-fields whose offset changed in GCC 4.4.
905
906 Wparentheses
907 C ObjC C++ ObjC++ Var(warn_parentheses) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
908 Warn about possibly missing parentheses.
909
910 Wpedantic
911 C ObjC C++ ObjC++ CPP(cpp_pedantic) CppReason(CPP_W_PEDANTIC) Warning
912 ; Documented in common.opt
913
914 Wpmf-conversions
915 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
916 Warn when converting the type of pointers to member functions.
917
918 Wpointer-arith
919 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
920 Warn about function pointer arithmetic.
921
922 Wpointer-sign
923 C ObjC Var(warn_pointer_sign) Warning LangEnabledBy(C ObjC,Wall || Wpedantic)
924 Warn when a pointer differs in signedness in an assignment.
925
926 Wpointer-compare
927 C ObjC C++ ObjC++ Var(warn_pointer_compare) Init(1) Warning
928 Warn when a pointer is compared with a zero character constant.
929
930 Wpointer-to-int-cast
931 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
932 Warn when a pointer is cast to an integer of a different size.
933
934 Wpragmas
935 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
936 Warn about misuses of pragmas.
937
938 Wproperty-assign-default
939 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
940 Warn if a property for an Objective-C object has no assign semantics specified.
941
942 Wprotocol
943 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
944 Warn if inherited methods are unimplemented.
945
946 Wplacement-new
947 C++ Warning Alias(Wplacement-new=, 1, 0)
948 Warn for placement new expressions with undefined behavior.
949
950 Wplacement-new=
951 C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
952 Warn for placement new expressions with undefined behavior.
953
954 Wredundant-decls
955 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
956 Warn about multiple declarations of the same object.
957
958 Wregister
959 C++ ObjC++ Var(warn_register) Warning
960 Warn about uses of register storage specifier.
961
962 Wreorder
963 C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
964 Warn when the compiler reorders code.
965
966 Wreturn-type
967 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Init(-1)
968 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
969
970 Wscalar-storage-order
971 C ObjC C++ ObjC++ Init(1) Warning
972 Warn on suspicious constructs involving reverse scalar storage order.
973
974 Wselector
975 ObjC ObjC++ Var(warn_selector) Warning
976 Warn if a selector has multiple methods.
977
978 Wsequence-point
979 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
980 Warn about possible violations of sequence point rules.
981
982 Wshadow-ivar
983 ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
984 Warn if a local declaration hides an instance variable.
985
986 Wshift-overflow
987 C ObjC C++ ObjC++ Warning Alias(Wshift-overflow=, 1, 0)
988 Warn if left shift of a signed value overflows.
989
990 Wshift-overflow=
991 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_shift_overflow) Init(-1) Warning IntegerRange(0, 2)
992 Warn if left shift of a signed value overflows.
993
994 Wshift-count-negative
995 C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
996 Warn if shift count is negative.
997
998 Wshift-count-overflow
999 C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
1000 Warn if shift count >= width of type.
1001
1002 Wshift-negative-value
1003 C ObjC C++ ObjC++ Var(warn_shift_negative_value) Init(-1) Warning
1004 Warn if left shifting a negative value.
1005
1006 Wsign-compare
1007 C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
1008 Warn about signed-unsigned comparisons.
1009
1010 Wsign-compare
1011 C ObjC C++ ObjC++ EnabledBy(Wextra)
1012 ;
1013
1014 Wsign-conversion
1015 C ObjC C++ ObjC++ Var(warn_sign_conversion) Warning LangEnabledBy(C ObjC,Wconversion)
1016 Warn for implicit type conversions between signed and unsigned integers.
1017
1018 Wsign-promo
1019 C++ ObjC++ Var(warn_sign_promo) Warning
1020 Warn when overload promotes from unsigned to signed.
1021
1022 Wstrict-null-sentinel
1023 C++ ObjC++ Warning Var(warn_strict_null_sentinel)
1024 Warn about uncasted NULL used as sentinel.
1025
1026 Wstrict-prototypes
1027 C ObjC Var(warn_strict_prototypes) Warning
1028 Warn about unprototyped function declarations.
1029
1030 Wstrict-aliasing=
1031 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 3, 0) IntegerRange(0, 3)
1032 ;
1033
1034 Wstrict-overflow=
1035 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
1036 ;
1037
1038 Wstrict-selector-match
1039 ObjC ObjC++ Var(warn_strict_selector_match) Warning
1040 Warn if type signatures of candidate methods do not match exactly.
1041
1042 Wsync-nand
1043 C C++ Var(warn_sync_nand) Init(1) Warning
1044 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
1045
1046 Wsynth
1047 C++ ObjC++ Var(warn_synth) Warning
1048 Deprecated. This switch has no effect.
1049
1050 Wsystem-headers
1051 C ObjC C++ ObjC++ Warning
1052 ; Documented in common.opt
1053
1054 Wtautological-compare
1055 C ObjC C++ ObjC++ Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1056 Warn if a comparison always evaluates to true or false.
1057
1058 Wterminate
1059 C++ ObjC++ Warning Var(warn_terminate) Init(1)
1060 Warn if a throw expression will always result in a call to terminate().
1061
1062 Wtraditional
1063 C ObjC CPP(cpp_warn_traditional) CppReason(CPP_W_TRADITIONAL) Var(warn_traditional) Init(0) Warning
1064 Warn about features not present in traditional C.
1065
1066 Wtraditional-conversion
1067 C ObjC Var(warn_traditional_conversion) Warning
1068 Warn of prototypes causing type conversions different from what would happen in the absence of prototype.
1069
1070 Wtrigraphs
1071 C ObjC C++ ObjC++ CPP(warn_trigraphs) CppReason(CPP_W_TRIGRAPHS) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1072 Warn if trigraphs are encountered that might affect the meaning of the program.
1073
1074 Wundeclared-selector
1075 ObjC ObjC++ Var(warn_undeclared_selector) Warning
1076 Warn about @selector()s without previously declared methods.
1077
1078 Wundef
1079 C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
1080 Warn if an undefined macro is used in an #if directive.
1081
1082 Wuninitialized
1083 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1084 ;
1085
1086 Wmaybe-uninitialized
1087 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1088 ;
1089
1090 Wunknown-pragmas
1091 C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
1092 Warn about unrecognized pragmas.
1093
1094 Wunsuffixed-float-constants
1095 C ObjC Var(warn_unsuffixed_float_constants) Warning
1096 Warn about unsuffixed float constants.
1097
1098 Wunused
1099 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
1100 ; documented in common.opt
1101
1102 Wunused-local-typedefs
1103 C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
1104 Warn when typedefs locally defined in a function are not used.
1105
1106 Wunused-macros
1107 C ObjC C++ ObjC++ CppReason(CPP_W_UNUSED_MACROS) Var(cpp_warn_unused_macros) Warning
1108 Warn about macros defined in the main file that are not used.
1109
1110 Wunused-result
1111 C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
1112 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.
1113
1114 Wunused-variable
1115 C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wunused)
1116 ; documented in common.opt
1117
1118 Wunused-const-variable
1119 C ObjC C++ ObjC++ Warning Alias(Wunused-const-variable=, 2, 0)
1120 Warn when a const variable is unused.
1121
1122 Wunused-const-variable=
1123 C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_unused_const_variable) Warning LangEnabledBy(C ObjC,Wunused-variable, 1, 0) IntegerRange(0, 2)
1124 Warn when a const variable is unused.
1125
1126 Wvariadic-macros
1127 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)
1128 Warn about using variadic macros.
1129
1130 Wvarargs
1131 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
1132 Warn about questionable usage of the macros used to retrieve variable arguments.
1133
1134 Wvla
1135 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
1136 Warn if a variable length array is used.
1137
1138 Wvla-larger-than=
1139 C ObjC C++ ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative UInteger
1140 -Wvla-larger-than=<number> Warn on unbounded uses of variable-length arrays, and
1141 on bounded uses of variable-length arrays whose bound can be
1142 larger than <number> bytes.
1143
1144 Wvolatile-register-var
1145 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
1146 Warn when a register variable is declared volatile.
1147
1148 Wvirtual-inheritance
1149 C++ ObjC++ Var(warn_virtual_inheritance) Warning
1150 Warn on direct virtual inheritance.
1151
1152 Wvirtual-move-assign
1153 C++ ObjC++ Var(warn_virtual_move_assign) Warning Init(1)
1154 Warn if a virtual base has a non-trivial move assignment operator.
1155
1156 Wwrite-strings
1157 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
1158 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.
1159
1160 Wzero-as-null-pointer-constant
1161 C++ ObjC++ Var(warn_zero_as_null_pointer_constant) Warning
1162 Warn when a literal '0' is used as null pointer.
1163
1164 Wuseless-cast
1165 C++ ObjC++ Var(warn_useless_cast) Warning
1166 Warn about useless casts.
1167
1168 Wsubobject-linkage
1169 C++ ObjC++ Var(warn_subobject_linkage) Warning Init(1)
1170 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.
1171
1172 Wduplicate-decl-specifier
1173 C ObjC Var(warn_duplicate_decl_specifier) Warning LangEnabledBy(C ObjC,Wall)
1174 Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.
1175
1176 Wrestrict
1177 C ObjC C++ ObjC++ Var(warn_restrict) Warning LangEnabledBy(C ObjC C++ ObjC++)
1178 Warn when an argument passed to a restrict-qualified parameter aliases with
1179 another argument.
1180
1181 ansi
1182 C ObjC C++ ObjC++
1183 A synonym for -std=c89 (for C) or -std=c++98 (for C++).
1184
1185 d
1186 C ObjC C++ ObjC++ Joined
1187 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
1188
1189 fabi-compat-version=
1190 C++ ObjC++ Joined RejectNegative UInteger Var(flag_abi_compat_version) Init(-1)
1191 The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.
1192
1193 faccess-control
1194 C++ ObjC++ Var(flag_access_control) Init(1)
1195 Enforce class member access control semantics.
1196
1197 fada-spec-parent=
1198 C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent)
1199 -fada-spec-parent=unit Dump Ada specs as child units of given parent.
1200
1201 faligned-new
1202 C++ ObjC++ Alias(faligned-new=,1,0)
1203 Support C++17 allocation of over-aligned types.
1204
1205 faligned-new=
1206 C++ ObjC++ Joined RejectNegative Var(aligned_new_threshold) UInteger Init(-1)
1207 -faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N.
1208
1209 fall-virtual
1210 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1211
1212 fallow-parameterless-variadic-functions
1213 C ObjC Var(flag_allow_parameterless_variadic_functions)
1214 Allow variadic functions without named parameter.
1215
1216 falt-external-templates
1217 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1218 No longer supported.
1219
1220 fasm
1221 C ObjC C++ ObjC++ Var(flag_no_asm, 0)
1222 Recognize the \"asm\" keyword.
1223
1224 ; Define extra predefined macros for use in libgcc.
1225 fbuilding-libgcc
1226 C ObjC C++ ObjC++ Undocumented Var(flag_building_libgcc)
1227
1228 fbuiltin
1229 C ObjC C++ ObjC++ Var(flag_no_builtin, 0)
1230 Recognize built-in functions.
1231
1232 fbuiltin-
1233 C ObjC C++ ObjC++ Joined
1234
1235 fcanonical-system-headers
1236 C ObjC C++ ObjC++
1237 Where shorter, use canonicalized paths to systems headers.
1238
1239 fcheck-pointer-bounds
1240 C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds)
1241 Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to
1242 control instrumentation. Currently available for C, C++ and ObjC.
1243
1244 fchkp-check-incomplete-type
1245 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1)
1246 Generate pointer bounds checks for variables with incomplete type.
1247
1248 fchkp-zero-input-bounds-for-main
1249 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0)
1250 Use zero bounds for all incoming arguments in 'main' function. It helps when
1251 instrumented binaries are used with legacy libs.
1252
1253 fchkp-first-field-has-own-bounds
1254 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds)
1255 Forces Pointer Bounds Checker to use narrowed bounds for address of the first
1256 field in the structure. By default pointer to the first field has the same
1257 bounds as pointer to the whole structure.
1258
1259 fchkp-narrow-bounds
1260 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1)
1261 Control how Pointer Bounds Checker handle pointers to object fields. When
1262 narrowing is on, field bounds are used. Otherwise full object bounds are used.
1263
1264 fchkp-narrow-to-innermost-array
1265 C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray)
1266 Forces Pointer Bounds Checker to use bounds of the innermost arrays in case of
1267 nested static arrays access. By default outermost array is used.
1268
1269 fchkp-flexible-struct-trailing-arrays
1270 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_flexible_struct_trailing_arrays)
1271 Forces Pointer Bounds Checker to treat all trailing arrays in structures as
1272 possibly flexible. By default only arrays fields with zero length or that are
1273 marked with attribute bnd_variable_size are treated as flexible.
1274
1275 fchkp-optimize
1276 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1)
1277 Allow Pointer Bounds Checker optimizations. By default allowed
1278 on optimization levels >0.
1279
1280 fchkp-use-fast-string-functions
1281 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0)
1282 Allow to use *_nobnd versions of string functions by Pointer Bounds Checker.
1283
1284 fchkp-use-nochk-string-functions
1285 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0)
1286 Allow to use *_nochk versions of string functions by Pointer Bounds Checker.
1287
1288 fchkp-use-static-bounds
1289 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1)
1290 Use statically initialized variable for vars bounds instead of
1291 generating them each time it is required.
1292
1293 fchkp-use-static-const-bounds
1294 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1)
1295 Use statically initialized variable for constant bounds instead of
1296 generating them each time it is required.
1297
1298 fchkp-treat-zero-dynamic-size-as-infinite
1299 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0)
1300 With this option zero size obtained dynamically for objects with
1301 incomplete type will be treated as infinite.
1302
1303 fchkp-check-read
1304 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1)
1305 Generate checks for all read accesses to memory.
1306
1307 fchkp-check-write
1308 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1)
1309 Generate checks for all write accesses to memory.
1310
1311 fchkp-store-bounds
1312 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1)
1313 Generate bounds stores for pointer writes.
1314
1315 fchkp-instrument-calls
1316 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1)
1317 Generate bounds passing for calls.
1318
1319 fchkp-instrument-marked-only
1320 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0)
1321 Instrument only functions marked with bnd_instrument attribute.
1322
1323 fchkp-use-wrappers
1324 C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1)
1325 Transform instrumented builtin calls into calls to wrappers.
1326
1327 static-libmpx
1328 Driver
1329
1330 static-libmpxwrappers
1331 Driver
1332
1333 fcilkplus
1334 C ObjC C++ ObjC++ LTO Report Var(flag_cilkplus) Init(0)
1335 Enable Cilk Plus.
1336
1337 fconcepts
1338 C++ ObjC++ Var(flag_concepts)
1339 Enable support for C++ concepts.
1340
1341 fcond-mismatch
1342 C ObjC C++ ObjC++
1343 Allow the arguments of the '?' operator to have different types.
1344
1345 fconserve-space
1346 C++ ObjC++ Var(flag_conserve_space)
1347 Does nothing. Preserved for backward compatibility.
1348
1349 fconstant-string-class=
1350 ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
1351 -fconst-string-class=<name> Use class <name> for constant strings.
1352
1353 fconstexpr-depth=
1354 C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
1355 -fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
1356
1357 fconstexpr-loop-limit=
1358 C++ ObjC++ Joined RejectNegative UInteger Var(constexpr_loop_limit) Init(262144)
1359 -fconstexpr-loop-limit=<number> Specify maximum constexpr loop iteration count.
1360
1361 fdebug-cpp
1362 C ObjC C++ ObjC++
1363 Emit debug annotations during preprocessing.
1364
1365 fdeduce-init-list
1366 C++ ObjC++ Var(flag_deduce_init_list) Init(0)
1367 -fdeduce-init-list enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list.
1368
1369 fdeclone-ctor-dtor
1370 C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1)
1371 Factor complex constructors and destructors to favor space over speed.
1372
1373 fdefault-inline
1374 C++ ObjC++ Ignore
1375 Does nothing. Preserved for backward compatibility.
1376
1377 fdiagnostics-show-template-tree
1378 C++ ObjC++ Var(flag_diagnostics_show_template_tree) Init(0)
1379 Print hierarchical comparisons when template types are mismatched.
1380
1381 fdirectives-only
1382 C ObjC C++ ObjC++
1383 Preprocess directives only.
1384
1385 fdollars-in-identifiers
1386 C ObjC C++ ObjC++
1387 Permit '$' as an identifier character.
1388
1389 fdump-ada-spec
1390 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
1391 Write all declarations as Ada code transitively.
1392
1393 fdump-ada-spec-slim
1394 C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
1395 Write all declarations as Ada code for the given file only.
1396
1397 felide-constructors
1398 C++ ObjC++ Var(flag_elide_constructors) Init(1)
1399
1400 felide-type
1401 C++ ObjC++ Var(flag_elide_type) Init(1)
1402 -fno-elide-type Do not elide common elements in template comparisons.
1403
1404 fenforce-eh-specs
1405 C++ ObjC++ Var(flag_enforce_eh_specs) Init(1)
1406 Generate code to check exception specifications.
1407
1408 fenum-int-equiv
1409 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1410
1411 fexec-charset=
1412 C ObjC C++ ObjC++ Joined RejectNegative
1413 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>.
1414
1415 fextended-identifiers
1416 C ObjC C++ ObjC++
1417 Permit universal character names (\\u and \\U) in identifiers.
1418
1419 finput-charset=
1420 C ObjC C++ ObjC++ Joined RejectNegative
1421 -finput-charset=<cset> Specify the default character set for source files.
1422
1423 fextern-tls-init
1424 C++ ObjC++ Var(flag_extern_tls_init) Init(-1)
1425 Support dynamic initialization of thread-local variables in a different translation unit.
1426
1427 fexternal-templates
1428 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1429
1430 ffor-scope
1431 C++ ObjC++ Var(flag_new_for_scope) Init(1)
1432 Scope of for-init-statement variables is local to the loop.
1433
1434 ffreestanding
1435 C ObjC C++ ObjC++
1436 Do not assume that standard C libraries and \"main\" exist.
1437
1438 fgnu-keywords
1439 C++ ObjC++ Var(flag_no_gnu_keywords, 0)
1440 Recognize GNU-defined keywords.
1441
1442 fgnu-runtime
1443 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
1444 Generate code for GNU runtime environment.
1445
1446 fgnu89-inline
1447 C ObjC Var(flag_gnu89_inline) Init(-1)
1448 Use traditional GNU semantics for inline functions.
1449
1450 fguiding-decls
1451 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1452
1453 fhandle-exceptions
1454 C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)})
1455
1456 fhonor-std
1457 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1458
1459 fhosted
1460 C ObjC
1461 Assume normal C execution environment.
1462
1463 fhuge-objects
1464 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1465 No longer supported.
1466
1467 fimplement-inlines
1468 C++ ObjC++ Var(flag_implement_inlines) Init(1)
1469 Export functions even if they can be inlined.
1470
1471 fimplicit-inline-templates
1472 C++ ObjC++ Var(flag_implicit_inline_templates) Init(1)
1473 Emit implicit instantiations of inline templates.
1474
1475 fimplicit-templates
1476 C++ ObjC++ Var(flag_implicit_templates) Init(1)
1477 Emit implicit instantiations of templates.
1478
1479 fnew-inheriting-ctors
1480 C++ ObjC++ Var(flag_new_inheriting_ctors) Init(1)
1481 Implement C++17 inheriting constructor semantics.
1482
1483 ffriend-injection
1484 C++ ObjC++ Var(flag_friend_injection)
1485 Inject friend functions into enclosing namespace.
1486
1487 fkeep-inline-dllexport
1488 C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
1489 Don't emit dllexported inline functions unless needed.
1490
1491 flabels-ok
1492 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1493
1494 flax-vector-conversions
1495 C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
1496 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
1497
1498 fms-extensions
1499 C ObjC C++ ObjC++ Var(flag_ms_extensions)
1500 Don't warn about uses of Microsoft extensions.
1501
1502 fmudflap
1503 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1504
1505 fmudflapth
1506 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1507
1508 fmudflapir
1509 C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1510
1511 fname-mangling-version-
1512 C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
1513
1514 fnew-abi
1515 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1516
1517 fnew-ttp-matching
1518 C++ ObjC++ Var(flag_new_ttp)
1519 Implement resolution of DR 150 for matching of template template arguments.
1520
1521 fnext-runtime
1522 ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
1523 Generate code for NeXT (Apple Mac OS X) runtime environment.
1524
1525 fnil-receivers
1526 ObjC ObjC++ Var(flag_nil_receivers) Init(1)
1527 Assume that receivers of Objective-C messages may be nil.
1528
1529 flocal-ivars
1530 ObjC ObjC++ Var(flag_local_ivars) Init(1)
1531 Allow access to instance variables as if they were local declarations within instance method implementations.
1532
1533 fivar-visibility=
1534 ObjC ObjC++ Joined RejectNegative Enum(ivar_visibility) Var(default_ivar_visibility) Init(IVAR_VISIBILITY_PROTECTED)
1535 -fvisibility=[private|protected|public|package] Set the default symbol visibility.
1536
1537 Enum
1538 Name(ivar_visibility) Type(enum ivar_visibility) UnknownError(unrecognized ivar visibility value %qs)
1539
1540 EnumValue
1541 Enum(ivar_visibility) String(private) Value(IVAR_VISIBILITY_PRIVATE)
1542
1543 EnumValue
1544 Enum(ivar_visibility) String(protected) Value(IVAR_VISIBILITY_PROTECTED)
1545
1546 EnumValue
1547 Enum(ivar_visibility) String(public) Value(IVAR_VISIBILITY_PUBLIC)
1548
1549 EnumValue
1550 Enum(ivar_visibility) String(package) Value(IVAR_VISIBILITY_PACKAGE)
1551
1552 fnonansi-builtins
1553 C++ ObjC++ Var(flag_no_nonansi_builtin, 0)
1554
1555 fnonnull-objects
1556 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1557
1558 fnothrow-opt
1559 C++ ObjC++ Optimization Var(flag_nothrow_opt)
1560 Treat a throw() exception specification as noexcept to improve code size.
1561
1562 fobjc-abi-version=
1563 ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
1564 Specify which ABI to use for Objective-C family code and meta-data generation.
1565
1566 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
1567 ; to initialize any non-POD ivars in Objective-C++ classes.
1568 fobjc-call-cxx-cdtors
1569 ObjC++ Var(flag_objc_call_cxx_cdtors)
1570 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.
1571
1572 fobjc-direct-dispatch
1573 ObjC ObjC++ Var(flag_objc_direct_dispatch)
1574 Allow fast jumps to the message dispatcher.
1575
1576 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
1577 ; @try, etc.) in source code.
1578 fobjc-exceptions
1579 ObjC ObjC++ Var(flag_objc_exceptions)
1580 Enable Objective-C exception and synchronization syntax.
1581
1582 fobjc-gc
1583 ObjC ObjC++ LTO Var(flag_objc_gc)
1584 Enable garbage collection (GC) in Objective-C/Objective-C++ programs.
1585
1586 fobjc-nilcheck
1587 ObjC ObjC++ Var(flag_objc_nilcheck,1)
1588 Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.
1589
1590 ; Nonzero means that we generate NeXT setjmp based exceptions.
1591 fobjc-sjlj-exceptions
1592 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
1593 Enable Objective-C setjmp exception handling runtime.
1594
1595 fobjc-std=objc1
1596 ObjC ObjC++ Var(flag_objc1_only)
1597 Conform to the Objective-C 1.0 language as implemented in GCC 4.0.
1598
1599 fopenacc
1600 C ObjC C++ ObjC++ LTO Var(flag_openacc)
1601 Enable OpenACC.
1602
1603 fopenacc-dim=
1604 C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
1605 Specify default OpenACC compute dimensions.
1606
1607 fopenmp
1608 C ObjC C++ ObjC++ LTO Var(flag_openmp)
1609 Enable OpenMP (implies -frecursive in Fortran).
1610
1611 fopenmp-simd
1612 C ObjC C++ ObjC++ Var(flag_openmp_simd)
1613 Enable OpenMP's SIMD directives.
1614
1615 foperator-names
1616 C++ ObjC++
1617 Recognize C++ keywords like \"compl\" and \"xor\".
1618
1619 foptional-diags
1620 C++ ObjC++ Ignore
1621 Does nothing. Preserved for backward compatibility.
1622
1623 fpch-deps
1624 C ObjC C++ ObjC++
1625
1626 fpch-preprocess
1627 C ObjC C++ ObjC++
1628 Look for and use PCH files even when preprocessing.
1629
1630 fpermissive
1631 C++ ObjC++ Var(flag_permissive)
1632 Downgrade conformance errors to warnings.
1633
1634 fplan9-extensions
1635 C ObjC Var(flag_plan9_extensions)
1636 Enable Plan 9 language extensions.
1637
1638 fpreprocessed
1639 C ObjC C++ ObjC++
1640 Treat the input file as already preprocessed.
1641
1642 ftrack-macro-expansion
1643 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1644 ; converted into ftrack-macro-expansion=
1645
1646 ftrack-macro-expansion=
1647 C ObjC C++ ObjC++ JoinedOrMissing RejectNegative UInteger
1648 -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages.
1649
1650 fpretty-templates
1651 C++ ObjC++ Var(flag_pretty_templates) Init(1)
1652 -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments.
1653
1654 fprintf-return-value
1655 C ObjC C++ ObjC++ LTO Optimization Var(flag_printf_return_value) Init(1)
1656 Treat known sprintf return values as constants.
1657
1658 freplace-objc-classes
1659 ObjC ObjC++ LTO Var(flag_replace_objc_classes)
1660 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime.
1661
1662 frepo
1663 C++ ObjC++
1664 Enable automatic template instantiation.
1665
1666 frtti
1667 C++ ObjC++ Optimization Var(flag_rtti) Init(1)
1668 Generate run time type descriptor information.
1669
1670 fshort-enums
1671 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_enums)
1672 Use the narrowest integer type possible for enumeration types.
1673
1674 fshort-wchar
1675 C ObjC C++ ObjC++ LTO Optimization Var(flag_short_wchar)
1676 Force the underlying type for \"wchar_t\" to be \"unsigned short\".
1677
1678 fsigned-bitfields
1679 C ObjC C++ ObjC++ Var(flag_signed_bitfields) Init(1)
1680 When \"signed\" or \"unsigned\" is not given make the bitfield signed.
1681
1682 fsigned-char
1683 C ObjC C++ ObjC++ LTO Var(flag_signed_char)
1684 Make \"char\" signed by default.
1685
1686 fsized-deallocation
1687 C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
1688 Enable C++14 sized deallocation support.
1689
1690 fsquangle
1691 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1692
1693 fsso-struct=
1694 C ObjC Joined RejectNegative Enum(sso_struct) Var(default_sso) Init(SSO_NATIVE)
1695 -fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order.
1696
1697 Enum
1698 Name(sso_struct) Type(enum scalar_storage_order_kind) UnknownError(unrecognized scalar storage order value %qs)
1699
1700 EnumValue
1701 Enum(sso_struct) String(big-endian) Value(SSO_BIG_ENDIAN)
1702
1703 EnumValue
1704 Enum(sso_struct) String(little-endian) Value(SSO_LITTLE_ENDIAN)
1705
1706 EnumValue
1707 Enum(sso_struct) String(native) Value(SSO_NATIVE)
1708
1709 fstats
1710 C++ ObjC++ Var(flag_detailed_statistics)
1711 Display statistics accumulated during compilation.
1712
1713 fstrict-enums
1714 C++ ObjC++ Optimization Var(flag_strict_enums)
1715 Assume that values of enumeration type are always within the minimum range of that type.
1716
1717 fstrict-prototype
1718 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1719
1720 fstrong-eval-order
1721 C++ ObjC++ Common Alias(fstrong-eval-order=, all, none)
1722 Follow the C++17 evaluation order requirements for assignment expressions,
1723 shift, member function calls, etc.
1724
1725 fstrong-eval-order=
1726 C++ ObjC++ Common Var(flag_strong_eval_order) Joined Enum(strong_eval_order) RejectNegative Init(-1)
1727 Follow the C++17 evaluation order requirements for assignment expressions,
1728 shift, member function calls, etc.
1729
1730 Enum
1731 Name(strong_eval_order) Type(int)
1732
1733 EnumValue
1734 Enum(strong_eval_order) String(none) Value(0)
1735
1736 EnumValue
1737 Enum(strong_eval_order) String(some) Value(1)
1738
1739 EnumValue
1740 Enum(strong_eval_order) String(all) Value(2)
1741
1742 ftabstop=
1743 C ObjC C++ ObjC++ Joined RejectNegative UInteger
1744 -ftabstop=<number> Distance between tab stops for column reporting.
1745
1746 ftemplate-backtrace-limit=
1747 C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
1748 Set the maximum number of template instantiation notes for a single warning or error.
1749
1750 ftemplate-depth-
1751 C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=)
1752
1753 ftemplate-depth=
1754 C++ ObjC++ Joined RejectNegative UInteger
1755 -ftemplate-depth=<number> Specify maximum template instantiation depth.
1756
1757 fthis-is-variable
1758 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1759
1760 fthreadsafe-statics
1761 C++ ObjC++ Optimization Var(flag_threadsafe_statics) Init(1)
1762 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics.
1763
1764 funsigned-bitfields
1765 C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
1766 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned.
1767
1768 funsigned-char
1769 C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
1770 Make \"char\" unsigned by default.
1771
1772 fuse-cxa-atexit
1773 C++ ObjC++ Var(flag_use_cxa_atexit) Init(DEFAULT_USE_CXA_ATEXIT)
1774 Use __cxa_atexit to register destructors.
1775
1776 fuse-cxa-get-exception-ptr
1777 C++ ObjC++ Var(flag_use_cxa_get_exception_ptr) Init(2)
1778 Use __cxa_get_exception_ptr in exception handling.
1779
1780 fvisibility-inlines-hidden
1781 C++ ObjC++
1782 Marks all inlined functions and methods as having hidden visibility.
1783
1784 fvisibility-ms-compat
1785 C++ ObjC++ Var(flag_visibility_ms_compat)
1786 Changes visibility to match Microsoft Visual Studio by default.
1787
1788 fvtable-gc
1789 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1790 No longer supported.
1791
1792 fvtable-thunks
1793 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1794 No longer supported.
1795
1796 fweak
1797 C++ ObjC++ Var(flag_weak) Init(1)
1798 Emit common-like symbols as weak symbols.
1799
1800 fwide-exec-charset=
1801 C ObjC C++ ObjC++ Joined RejectNegative
1802 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>.
1803
1804 fworking-directory
1805 C ObjC C++ ObjC++ Var(flag_working_directory) Init(-1)
1806 Generate a #line directive pointing at the current working directory.
1807
1808 fxref
1809 C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
1810 No longer supported.
1811
1812 fzero-link
1813 ObjC ObjC++ Var(flag_zero_link)
1814 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.
1815
1816 gen-decls
1817 ObjC ObjC++ Driver Var(flag_gen_declaration) RejectNegative
1818 Dump declarations to a .decl file.
1819
1820 femit-struct-debug-baseonly
1821 C ObjC C++ ObjC++
1822 -femit-struct-debug-baseonly Aggressive reduced debug info for structs.
1823
1824 femit-struct-debug-reduced
1825 C ObjC C++ ObjC++
1826 -femit-struct-debug-reduced Conservative reduced debug info for structs.
1827
1828 femit-struct-debug-detailed=
1829 C ObjC C++ ObjC++ Joined
1830 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs.
1831
1832 fext-numeric-literals
1833 C++ ObjC++ Var(flag_ext_numeric_literals) Init(1)
1834 Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding
1835 number literal rather than a user-defined number literal.
1836
1837 idirafter
1838 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1839 -idirafter <dir> Add <dir> to the end of the system include path.
1840
1841 imacros
1842 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1843 -imacros <file> Accept definition of macros in <file>.
1844
1845 imultilib
1846 C ObjC C++ ObjC++ Joined Separate
1847 -imultilib <dir> Set <dir> to be the multilib include subdirectory.
1848
1849 include
1850 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
1851 -include <file> Include the contents of <file> before other files.
1852
1853 iprefix
1854 C ObjC C++ ObjC++ Joined Separate
1855 -iprefix <path> Specify <path> as a prefix for next two options.
1856
1857 isysroot
1858 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1859 -isysroot <dir> Set <dir> to be the system root directory.
1860
1861 isystem
1862 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1863 -isystem <dir> Add <dir> to the start of the system include path.
1864
1865 iquote
1866 C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
1867 -iquote <dir> Add <dir> to the end of the quote include path.
1868
1869 iwithprefix
1870 C ObjC C++ ObjC++ Joined Separate
1871 -iwithprefix <dir> Add <dir> to the end of the system include path.
1872
1873 iwithprefixbefore
1874 C ObjC C++ ObjC++ Joined Separate
1875 -iwithprefixbefore <dir> Add <dir> to the end of the main include path.
1876
1877 lang-asm
1878 C Undocumented RejectDriver
1879
1880 no-integrated-cpp
1881 Driver
1882
1883 nostdinc
1884 C ObjC C++ ObjC++
1885 Do not search standard system include directories (those specified with -isystem will still be used).
1886
1887 nostdinc++
1888 C++ ObjC++
1889 Do not search standard system include directories for C++.
1890
1891 o
1892 C ObjC C++ ObjC++ Joined Separate
1893 ; Documented in common.opt
1894
1895 pedantic
1896 C ObjC C++ ObjC++ Alias(Wpedantic)
1897 ; Documented in common.opt
1898
1899 print-objc-runtime-info
1900 ObjC ObjC++
1901 Generate C header of platform-specific features.
1902
1903 remap
1904 C ObjC C++ ObjC++
1905 Remap file names when including files.
1906
1907 std=c++98
1908 C++ ObjC++
1909 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1910
1911 std=c++03
1912 C++ ObjC++ Alias(std=c++98)
1913 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.
1914
1915 std=c++11
1916 C++ ObjC++
1917 Conform to the ISO 2011 C++ standard.
1918
1919 std=c++0x
1920 C++ ObjC++ Alias(std=c++11) Undocumented
1921 Deprecated in favor of -std=c++11.
1922
1923 std=c++1y
1924 C++ ObjC++ Alias(std=c++14) Undocumented
1925 Deprecated in favor of -std=c++14.
1926
1927 std=c++14
1928 C++ ObjC++
1929 Conform to the ISO 2014 C++ standard.
1930
1931 std=c++1z
1932 C++ ObjC++ Alias(std=c++17) Undocumented
1933 Deprecated in favor of -std=c++17.
1934
1935 std=c++17
1936 C++ ObjC++
1937 Conform to the ISO 2017 C++ standard.
1938
1939 std=c++2a
1940 C++ ObjC++
1941 Conform to the ISO 2020(?) C++ draft standard (experimental and incomplete support).
1942
1943 std=c11
1944 C ObjC
1945 Conform to the ISO 2011 C standard.
1946
1947 std=c1x
1948 C ObjC Alias(std=c11)
1949 Deprecated in favor of -std=c11.
1950
1951 std=c17
1952 C ObjC
1953 Conform to the ISO 2017 C standard (expected to be published in 2018).
1954
1955 std=c18
1956 C ObjC Alias(std=c17)
1957 Conform to the ISO 2017 C standard (expected to be published in 2018).
1958
1959 std=c89
1960 C ObjC Alias(std=c90)
1961 Conform to the ISO 1990 C standard.
1962
1963 std=c90
1964 C ObjC
1965 Conform to the ISO 1990 C standard.
1966
1967 std=c99
1968 C ObjC
1969 Conform to the ISO 1999 C standard.
1970
1971 std=c9x
1972 C ObjC Alias(std=c99)
1973 Deprecated in favor of -std=c99.
1974
1975 std=gnu++98
1976 C++ ObjC++
1977 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1978 corrigendum with GNU extensions.
1979
1980 std=gnu++03
1981 C++ ObjC++ Alias(std=gnu++98)
1982 Conform to the ISO 1998 C++ standard revised by the 2003 technical
1983 corrigendum with GNU extensions.
1984
1985 std=gnu++11
1986 C++ ObjC++
1987 Conform to the ISO 2011 C++ standard with GNU extensions.
1988
1989 std=gnu++0x
1990 C++ ObjC++ Alias(std=gnu++11) Undocumented
1991 Deprecated in favor of -std=gnu++11.
1992
1993 std=gnu++1y
1994 C++ ObjC++ Alias(std=gnu++14) Undocumented
1995 Deprecated in favor of -std=gnu++14.
1996
1997 std=gnu++14
1998 C++ ObjC++
1999 Conform to the ISO 2014 C++ standard with GNU extensions.
2000
2001 std=gnu++1z
2002 C++ ObjC++ Alias(std=gnu++17) Undocumented
2003 Deprecated in favor of -std=gnu++17.
2004
2005 std=gnu++17
2006 C++ ObjC++
2007 Conform to the ISO 2017 C++ standard with GNU extensions.
2008
2009 std=gnu++2a
2010 C++ ObjC++
2011 Conform to the ISO 2020(?) C++ draft standard with GNU extensions (experimental and incomplete support).
2012
2013 std=gnu11
2014 C ObjC
2015 Conform to the ISO 2011 C standard with GNU extensions.
2016
2017 std=gnu1x
2018 C ObjC Alias(std=gnu11)
2019 Deprecated in favor of -std=gnu11.
2020
2021 std=gnu17
2022 C ObjC
2023 Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions.
2024
2025 std=gnu18
2026 C ObjC Alias(std=gnu17)
2027 Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions.
2028
2029 std=gnu89
2030 C ObjC Alias(std=gnu90)
2031 Conform to the ISO 1990 C standard with GNU extensions.
2032
2033 std=gnu90
2034 C ObjC
2035 Conform to the ISO 1990 C standard with GNU extensions.
2036
2037 std=gnu99
2038 C ObjC
2039 Conform to the ISO 1999 C standard with GNU extensions.
2040
2041 std=gnu9x
2042 C ObjC Alias(std=gnu99)
2043 Deprecated in favor of -std=gnu99.
2044
2045 std=iso9899:1990
2046 C ObjC Alias(std=c90)
2047 Conform to the ISO 1990 C standard.
2048
2049 std=iso9899:199409
2050 C ObjC
2051 Conform to the ISO 1990 C standard as amended in 1994.
2052
2053 std=iso9899:1999
2054 C ObjC Alias(std=c99)
2055 Conform to the ISO 1999 C standard.
2056
2057 std=iso9899:199x
2058 C ObjC Alias(std=c99)
2059 Deprecated in favor of -std=iso9899:1999.
2060
2061 std=iso9899:2011
2062 C ObjC Alias(std=c11)
2063 Conform to the ISO 2011 C standard.
2064
2065 std=iso9899:2017
2066 C ObjC Alias(std=c17)
2067 Conform to the ISO 2017 C standard (expected to be published in 2018).
2068
2069 std=iso9899:2018
2070 C ObjC Alias(std=c17)
2071 Conform to the ISO 2017 C standard (expected to be published in 2018).
2072
2073 traditional
2074 Driver
2075
2076 traditional-cpp
2077 C ObjC C++ ObjC++
2078 Enable traditional preprocessing.
2079
2080 trigraphs
2081 C ObjC C++ ObjC++
2082 -trigraphs Support ISO C trigraphs.
2083
2084 undef
2085 C ObjC C++ ObjC++ Var(flag_undef)
2086 Do not predefine system-specific and GCC-specific macros.
2087
2088 v
2089 C ObjC C++ ObjC++
2090 ; Documented in common.opt
2091
2092 w
2093 C ObjC C++ ObjC++
2094 ; Documented in common.opt
2095
2096 ; This comment is to ensure we retain the blank line above.