PR c++/8795
[official-gcc.git] / gcc / c.opt
blobbfe81aa3d8f67bf9905b43e05c0913a38d0de55b
1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003 Free Software Foundation, Inc.
4 ; This file is part of GCC.
6 ; GCC is free software; you can redistribute it and/or modify it under
7 ; the terms of the GNU General Public License as published by the Free
8 ; Software Foundation; either version 2, 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 COPYING.  If not, write to the Free
18 ; Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19 ; 02111-1307, USA.
22 ; This file is processed by the script opts.sh.  It is a database of
23 ; command line options, with each record separated by a blank line,
24 ; and each field appearing on its own line.  The first field is the
25 ; command-line switch with the leading "-" removed.  All options
26 ; beginning with "f" or "W" are implicitly assumed to take a "no-"
27 ; form; this form should not be listed.  If you do not want this
28 ; negative form and you want it to be automatically rejected, add
29 ; RejectNegative to the second field.
31 ; The second field is a space-separated list of which parts of the
32 ; compiler recognize the switch, as declared by "Language" entries.
33 ; If the switch takes an argument, then you should also specify
34 ; "Joined" and/or "Separate" to indicate where the argument can
35 ; appear.  If a Joined argument can legitimately be omitted, specify
36 ; "JoinedOrMissing" instead of "Joined".  If the argument to a switch
37 ; is a non-negative integer, you can specify "UInteger" and the switch
38 ; decoder will convert the argument for you, or complain to the user
39 ; if the argument is invalid.
41 ; The third field is the help text to output with --help.  This is
42 ; automatically line-wrapped on output.  Normally the switch is output
43 ; automatically, with the help text on the right hand side of the
44 ; output.  However, if the help text contains a tab character, the
45 ; text to the left of the tab is output instead of the switch, and the
46 ; text to its right forms the help.  This is useful for elaborating on
47 ; what type of argument a switch takes, for example.  If the second
48 ; field contains "Undocumented" then nothing is output with --help.
49 ; Only do this with good reason like the switch being internal between
50 ; the driver and the front end - it is not an excuse to leave a switch
51 ; undocumented.
53 ; Comments can appear on their own line anwhere in the file, preceded
54 ; by a semicolon.  Whitespace is permitted before the semicolon.
56 ; For each switch XXX below, an enumeration constant is created by the
57 ; script opts.sh spelt OPT_XXX, but with all non-alphanumeric
58 ; characters replaced with an underscore.
60 ; Please try to keep this file in ASCII collating order.
62 Language
65 Language
66 ObjC
68 Language
69 C++
71 Language
72 ObjC++
74 -output-pch=
75 C ObjC C++ ObjC++ Joined Separate
78 C ObjC C++ ObjC++ Joined Separate
79 -A<question>=<answer>   Assert the <answer> to <question>.  Putting '-' before <question> disables the <answer> to <question>
82 C ObjC C++ ObjC++
83 Do not discard comments
86 C ObjC C++ ObjC++
87 Do not discard comments in macro expansions
90 C ObjC C++ ObjC++ Joined Separate
91 -D<macro>[=<val>]       Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1
94 C ObjC C++ ObjC++ Undocumented
97 C ObjC C++ ObjC++
98 Print the name of header files as they are used
101 C ObjC C++ ObjC++ Joined Separate
102 -I <dir>        Add <dir> to the end of the main include path.  -I- gives more include path control; see info documentation
105 C ObjC C++ ObjC++
106 Generate make dependencies
109 C ObjC C++ ObjC++ Separate
110 Generate make dependencies and compile
113 C ObjC C++ ObjC++ Joined Separate
114 -MF <file>      Write dependency output to the given file
117 C ObjC C++ ObjC++
118 Treat missing header files as generated files
121 C ObjC C++ ObjC++
122 Like -M but ignore system header files
125 C ObjC C++ ObjC++ Separate
126 Like -MD but ignore system header files
129 C ObjC C++ ObjC++
130 Generate phony targets for all headers
133 C ObjC C++ ObjC++ Joined Separate
134 -MQ <target>    Add a MAKE-quoted target
137 C ObjC C++ ObjC++ Joined Separate
138 -MT <target>    Add an unquoted target
141 C ObjC C++ ObjC++
142 Do not generate #line directives
145 C ObjC C++ ObjC++ Joined Separate
146 -U<macro>       Undefine <macro>
148 Wabi
149 C++ ObjC++
151 Wall
152 C ObjC C++ ObjC++
153 Enable most warning messages
155 Wbad-function-cast
156 C ObjC
157 Warn about casting functions to incompatible types
159 Wcast-qual
160 C ObjC C++ ObjC++
161 Warn about casts which discard qualifiers
163 Wchar-subscripts
164 C ObjC C++ ObjC++
165 Warn about subscripts whose type is \"char\"
167 Wcomment
168 C ObjC C++ ObjC++
169 Warn about possibly nested block comments, and C++ comments spanning more than one physical line
171 Wcomments
172 C ObjC C++ ObjC++
173 Synonym for -Wcomment
175 Wconversion
176 C ObjC C++ ObjC++
177 Warn about possibly confusing type conversions
179 Wctor-dtor-privacy
180 C++ ObjC++
181 Warn when all constructors and destructors are private
183 Wdeclaration-after-statement
184 C ObjC
185 Warn when a declaration is found after a statement
187 Wdeprecated
188 C++ ObjC++
189 Warn about deprecated compiler features
191 Wdiv-by-zero
192 C ObjC
193 Warn about compile-time integer division by zero
195 Weffc++
196 C++ ObjC++
197 Warn about violations of Effective C++ style rules
199 Wendif-labels
200 C ObjC C++ ObjC++
201 Warn about stray tokens after #elif and #endif
203 Werror
204 C ObjC C++ ObjC++
205 ; Documented in common.opt
207 Werror-implicit-function-declaration
208 C ObjC RejectNegative
209 Make implicit function declarations an error
211 Wfloat-equal
212 C ObjC C++ ObjC++
213 Warn if testing floating point numbers for equality
215 Wformat
216 C ObjC C++ ObjC++
217 Warn about printf/scanf/strftime/strfmon format string anomalies
219 Wformat-extra-args
220 C ObjC C++ ObjC++
221 Warn if passing too many arguments to a function for its format string
223 Wformat-nonliteral
224 C ObjC C++ ObjC++
225 Warn about format strings that are not literals
227 Wformat-security
228 C ObjC C++ ObjC++
229 Warn about possible security problems with format functions
231 Wformat-y2k
232 C ObjC C++ ObjC++
233 Warn about strftime formats yielding 2-digit years
235 Wformat-zero-length
236 C ObjC
238 Wformat=
239 C ObjC C++ ObjC++ Joined
241 Winit-self
242 C ObjC C++ ObjC++
243 Warn about variables which are initialized to themselves.
245 Wimplicit
246 C ObjC C++ ObjC++
248 Wimplicit-function-declaration
249 C ObjC
250 Warn about implicit function declarations
252 Wimplicit-int
253 C ObjC
254 Warn when a declaration does not specify a type
256 Wimport
257 C ObjC C++ ObjC++
258 Deprecated.  This switch has no effect.
260 Winvalid-offsetof
261 C++ ObjC++
262 Warn about invalid uses of the \"offsetof\" macro
264 Winvalid-pch
265 C ObjC C++ ObjC++
266 Warn about PCH files that are found but not used
268 Wlong-long
269 C ObjC C++ ObjC++
270 Do not warn about using \"long long\" when -pedantic
272 Wmain
273 C ObjC
274 Warn about suspicious declarations of \"main\"
276 Wmissing-braces
277 C ObjC C++ ObjC++
278 Warn about possibly missing braces around initializers
280 Wmissing-declarations
281 C ObjC
282 Warn about global functions without previous declarations
284 Wmissing-format-attribute
285 C ObjC C++ ObjC++
286 Warn about functions which might be candidates for format attributes
288 Wmissing-prototypes
289 C ObjC
290 Warn about global functions without prototypes
292 Wmultichar
293 C ObjC C++ ObjC++
294 Warn about use of multi-character character constants
296 Wnested-externs
297 C ObjC
298 Warn about \"extern\" declarations not at file scope
300 Wnon-template-friend
301 C++ ObjC++
302 Warn when non-templatized friend functions are declared within a template
304 Wnon-virtual-dtor
305 C++ ObjC++
306 Warn about non-virtual destructors
308 Wnonnull
309 C ObjC
311 Wold-style-cast
312 C++ ObjC++
313 Warn if a C-style cast is used in a program
315 Woverloaded-virtual
316 C++ ObjC++
317 Warn about overloaded virtual function names
319 Wparentheses
320 C ObjC C++ ObjC++
321 Warn about possibly missing parentheses
323 Wpmf-conversions
324 C++ ObjC++
325 Warn when converting the type of pointers to member functions
327 Wpointer-arith
328 C ObjC C++ ObjC++
329 Warn about function pointer arithmetic
331 Wprotocol
332 ObjC ObjC++
333 Warn if inherited methods are unimplemented
335 Wredundant-decls
336 C ObjC C++ ObjC++
337 Warn about multiple declarations of the same object
339 Wreorder
340 C++ ObjC++
341 Warn when the compiler reorders code
343 Wreturn-type
344 C ObjC C++ ObjC++
345 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
347 Wselector
348 ObjC ObjC++
349 Warn if a selector has multiple methods
351 Wsequence-point
352 C ObjC
353 Warn about possible violations of sequence point rules
355 Wsign-compare
356 C ObjC C++ ObjC++
357 Warn about signed-unsigned comparisons
359 Wsign-promo
360 C++ ObjC++
361 Warn when overload promotes from unsigned to signed
363 Wstrict-prototypes
364 C ObjC
365 Warn about unprototyped function declarations
367 Wsynth
368 C++ ObjC++
369 Warn when synthesis behavior differs from Cfront
371 Wsystem-headers
372 C ObjC C++ ObjC++
373 Do not suppress warnings from system headers
375 Wtraditional
376 C ObjC
377 Warn about features not present in traditional C
379 Wtrigraphs
380 C ObjC C++ ObjC++
381 Warn if trigraphs are encountered that might affect the meaning of the program
383 Wundeclared-selector
384 ObjC ObjC++
386 Wundef
387 C ObjC C++ ObjC++
388 Warn if an undefined macro is used in an #if directive
390 Wunknown-pragmas
391 C ObjC C++ ObjC++
392 Warn about unrecognized pragmas
394 Wunused-macros
395 C ObjC C++ ObjC++
396 Warn about macros defined in the main file that are not used
398 Wwrite-strings
399 C ObjC C++ ObjC++
400 Give strings the type \"array of char\"
402 ansi
403 C ObjC C++ ObjC++
404 A synonym for -std=c89.  In a future version of GCC it will become synonymous with -std=c99 instead
407 C ObjC C++ ObjC++ Joined
408 ; Documented in common.opt.  FIXME - what about -dI, -dD, -dN and -dD?
410 fabi-version=
411 C++ ObjC++ Joined UInteger
413 faccess-control
414 C++ ObjC++
415 Enforce class member access control semantics
417 fall-virtual
418 C++ ObjC++
420 falt-external-templates
421 C++ ObjC++
422 Change when template instances are emitted
424 fasm
425 C ObjC C++ ObjC++
426 Recognize the \"asm\" keyword
428 fbuiltin
429 C ObjC C++ ObjC++
430 Recognize built-in functions
432 fbuiltin-
433 C ObjC C++ ObjC++ Joined
435 fcheck-new
436 C++ ObjC++
437 Check the return value of new
439 fcond-mismatch
440 C ObjC C++ ObjC++
441 Allow the arguments of the '?' operator to have different types
443 fconserve-space
444 C++ ObjC++
445 Reduce the size of object files
447 fconst-strings
448 C++ ObjC++
449 Make string literals \"const char[]\" not \"char[]\"
451 fconstant-string-class=
452 ObjC ObjC++ Joined
453 -fconst-string-class=<name>     Use class <name> for constant strings
455 fdefault-inline
456 C++ ObjC++
457 Inline member functions by default
459 fdollars-in-identifiers
460 C ObjC C++ ObjC++
461 Permit '$' as an identifier character
463 fdump-
464 C ObjC C++ ObjC++ Joined RejectNegative
465 -fdump-<type>   Dump various compiler internals to a file
467 felide-constructors
468 C++ ObjC++
470 fenforce-eh-specs
471 C++ ObjC++
472 Generate code to check exception specifications
474 fenum-int-equiv
475 C++ ObjC++
477 fexec-charset=
478 C ObjC C++ ObjC++ Joined RejectNegative
479 -fexec-charset=<cset>   Convert all strings and character constants to character set <cset>
481 fexternal-templates
482 C++ ObjC++
484 ffixed-form
485 C ObjC
487 ffixed-line-length-
488 C ObjC Joined
490 ffor-scope
491 C++ ObjC++
492 Scope of for-init-statement variables is local to the loop
494 ffreestanding
495 C ObjC
496 Do not assume that standard C libraries and \"main\" exist
498 fgnu-keywords
499 C++ ObjC++
500 Recognize GNU-defined keywords
502 fgnu-runtime
503 ObjC ObjC++
504 Generate code for GNU runtime environment
506 fguiding-decls
507 C++ ObjC++
509 fhandle-exceptions
510 C++ ObjC++
512 fhonor-std
513 C++ ObjC++
515 fhosted
516 C ObjC
517 Assume normal C execution environment
519 fhuge-objects
520 C++ ObjC++
521 Enable support for huge objects
523 fimplement-inlines
524 C++ ObjC++
525 Export functions even if they can be inlined
527 fimplicit-inline-templates
528 C++ ObjC++
529 Emit implicit instantiations of inline templates
531 fimplicit-templates
532 C++ ObjC++
533 Emit implicit instantiations of templates
535 flabels-ok
536 C++ ObjC++
538 fms-extensions
539 C ObjC C++ ObjC++
540 Don't warn about uses of Microsoft extensions
542 fname-mangling-version-
543 C++ ObjC++ Joined
545 fnew-abi
546 C++ ObjC++
548 fnext-runtime
549 ObjC ObjC++
550 Generate code for NeXT runtime environment
552 fnonansi-builtins
553 C++ ObjC++
555 fnonnull-objects
556 C++ ObjC++
558 foperator-names
559 C++ ObjC++
560 Recognize C++ kewords like \"compl\" and \"xor\"
562 foptional-diags
563 C++ ObjC++
564 Enable optional diagnostics
566 fpch-deps
567 C ObjC C++ ObjC++
569 fpermissive
570 C++ ObjC++
571 Downgrade conformance errors to warnings
573 fpreprocessed
574 C ObjC C++ ObjC++
575 Treat the input file as already preprocessed
577 frepo
578 C++ ObjC++
579 Enable automatic template instantiation
581 frtti
582 C++ ObjC++
583 Generate run time type descriptor information
585 fshort-double
586 C ObjC C++ ObjC++
587 Use the same size for double as for float
589 fshort-enums
590 C ObjC C++ ObjC++
591 Use the narrowest integer type possible for enumeration types
593 fshort-wchar
594 C ObjC C++ ObjC++
595 Force the underlying type for \"wchar_t\" to be \"unsigned short\"
597 fshow-column
598 C ObjC C++ ObjC++
600 fsigned-bitfields
601 C ObjC C++ ObjC++
602 When \"signed\" or \"unsigned\" is not given make the bitfield signed
604 fsigned-char
605 C ObjC C++ ObjC++
606 Make \"char\" signed by default
608 fsquangle
609 C++ ObjC++
611 fstats
612 C++ ObjC++
613 Display statistics accumulated during compilation
615 fstrict-prototype
616 C++ ObjC++
618 ftabstop=
619 C ObjC C++ ObjC++ Joined RejectNegative UInteger
620 -ftabstop=<number>      Distance between tab stops for column reporting
622 ftemplate-depth-
623 C++ ObjC++ Joined RejectNegative UInteger 
624 -ftemplate-depth-<number>       Specify maximum template instantiation depth
626 fthis-is-variable
627 C++ ObjC++
629 funsigned-bitfields
630 C ObjC C++ ObjC++
631 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
633 funsigned-char
634 C ObjC C++ ObjC++
635 Make \"char\" unsigned by default
637 fuse-cxa-atexit
638 C++ ObjC++
639 Use __cxa_atexit to register destructors
641 fvtable-gc
642 C++ ObjC++
643 Discard unused virtual functions
645 fvtable-thunks
646 C++ ObjC++
647 Implement vtables using thunks
649 fweak
650 C++ ObjC++
651 Emit common-like symbols as weak symbols
653 fwide-exec-charset=
654 C ObjC C++ ObjC++ Joined RejectNegative
655 -fwide-exec-charset=<cset>      Convert all wide strings and character constants to character set <cset>
657 fworking-directory
658 C ObjC C++ ObjC++
659 Generate a #line directive pointing at the current working directory
661 fxref
662 C++ ObjC++
663 Emit cross referencing information
665 gen-decls
666 ObjC ObjC++
667 Dump declarations to a .decl file
669 idirafter
670 C ObjC C++ ObjC++ Joined Separate
671 -idirafter <dir>        Add <dir> to the end of the system include path
673 imacros
674 C ObjC C++ ObjC++ Joined Separate
675 -imacros <file> Accept definition of macros in <file>
677 include
678 C ObjC C++ ObjC++ Joined Separate
679 -include <file> Include the contents of <file> before other files
681 iprefix
682 C ObjC C++ ObjC++ Joined Separate
683 -iprefix <path> Specify <path> as a prefix for next two options
685 isysroot
686 C ObjC C++ ObjC++ Joined Separate
687 -isysroot <dir> Set <dir> to be the system root directory
689 isystem
690 C ObjC C++ ObjC++ Joined Separate
691 -isystem <dir>  Add <dir> to the start of the system include path
693 iwithprefix
694 C ObjC C++ ObjC++ Joined Separate
695 -iwithprefix <dir>      Add <dir> to the end of the system include path
697 iwithprefixbefore
698 C ObjC C++ ObjC++ Joined Separate
699 -iwithprefixbefore <dir>        Add <dir> to the end of the main include path
701 lang-asm
702 C Undocumented
704 lang-objc
705 C ObjC C++ ObjC++ Undocumented
707 nostdinc
708 C ObjC C++ ObjC++
709 Do not search standard system include directories (those specified with -isystem will still be used)
711 nostdinc++
712 C++ ObjC++
713 Do not search standard system include directories for C++
716 C ObjC C++ ObjC++ Joined Separate
717 ; Documented in common.opt
719 pedantic
720 C ObjC C++ ObjC++
721 ; Documented in common.opt
723 pedantic-errors
724 C ObjC C++ ObjC++
725 ; Documented in common.opt
727 print-objc-runtime-info
728 ObjC ObjC++
729 Generate C header of platform-specific features
731 remap
732 C ObjC C++ ObjC++
733 Remap file names when including files
735 std=c++98
736 C++ ObjC++
737 Conform to the ISO 1998 C++ standard
739 std=c89
740 C ObjC
741 Conform to the ISO 1990 C standard
743 std=c99
744 C ObjC
745 Conform to the ISO 1999 C standard
747 std=c9x
748 C ObjC
749 Deprecated in favor of -std=c99
751 std=gnu++98
752 C++ ObjC++
753 Conform to the ISO 1998 C++ standard with GNU extensions
755 std=gnu89
756 C ObjC
757 Conform to the ISO 1990 C standard with GNU extensions
759 std=gnu99
760 C ObjC
761 Conform to the ISO 1999 C standard with GNU extensions
763 std=gnu9x
764 C ObjC
765 Deprecated in favor of -std=gnu99
767 std=iso9899:1990
768 C ObjC
769 Deprecated in favor of -std=c89
771 std=iso9899:199409
772 C ObjC
773 Conform to the ISO 1990 C standard as amended in 1994
775 std=iso9899:1999
776 C ObjC
777 Deprecated in favor of -std=c99
779 std=iso9899:199x
780 C ObjC
781 Deprecated in favor of -std=c99
783 traditional-cpp
784 C ObjC C++ ObjC++
785 Enable traditional preprocessing
787 trigraphs
788 C ObjC C++ ObjC++
789 -trigraphs      Support ISO C trigraphs
791 undef
792 C ObjC C++ ObjC++
793 Do not predefine system-specific and GCC-specific macros
796 C ObjC C++ ObjC++
797 Enable verbose output
800 C ObjC C++ ObjC++
801 ; Documented in common.opt
803 ; This comment is to ensure we retain the blank line above.