* MAINTAINERS: Add self as a profile feedback maintainer.
[official-gcc.git] / gcc / c.opt
blob32e600b637d7c6327a72bc72a3468ab71f2d99f9
1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003, 2004 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.  "Var(name,set)" creates an integer
40 ; variable "name".  The variable is declared and initialized to value
41 ; given by "Init(value)" (or zero if this property is not defined).
42 ; When the option is passed to compiler, this variable is set to "set"
43 ; if value passed through the flag is nonzero, !"set" if value is zero,
44 ; or to value if "set" is omitted.  If "VarExists"  is specified, the
45 ; declaration for the variable is not created.  If "Report" is specified,
46 ; the flag is output with -fverbose-asm.
48 ; The third field is the help text to output with --help.  This is
49 ; automatically line-wrapped on output.  Normally the switch is output
50 ; automatically, with the help text on the right hand side of the
51 ; output.  However, if the help text contains a tab character, the
52 ; text to the left of the tab is output instead of the switch, and the
53 ; text to its right forms the help.  This is useful for elaborating on
54 ; what type of argument a switch takes, for example.  If the second
55 ; field contains "Undocumented" then nothing is output with --help.
56 ; Only do this with good reason like the switch being internal between
57 ; the driver and the front end - it is not an excuse to leave a switch
58 ; undocumented.
60 ; Comments can appear on their own line anwhere in the file, preceded
61 ; by a semicolon.  Whitespace is permitted before the semicolon.
63 ; For each switch XXX below, an enumeration constant is created by the
64 ; script opts.sh spelt OPT_XXX, but with all non-alphanumeric
65 ; characters replaced with an underscore.
67 ; Please try to keep this file in ASCII collating order.
69 Language
72 Language
73 ObjC
75 Language
76 C++
78 Language
79 ObjC++
81 -output-pch=
82 C ObjC C++ ObjC++ Joined Separate
85 C ObjC C++ ObjC++ Joined Separate
86 -A<question>=<answer>   Assert the <answer> to <question>.  Putting '-' before <question> disables the <answer> to <question>
89 C ObjC C++ ObjC++
90 Do not discard comments
93 C ObjC C++ ObjC++
94 Do not discard comments in macro expansions
97 C ObjC C++ ObjC++ Joined Separate
98 -D<macro>[=<val>]       Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1
101 C ObjC C++ ObjC++ Undocumented
104 C ObjC C++ ObjC++ Joined Separate
105 -F <dir>        Add <dir> to the end of the main framework include path  
108 C ObjC C++ ObjC++
109 Print the name of header files as they are used
112 C ObjC C++ ObjC++ Joined Separate
113 -I <dir>        Add <dir> to the end of the main include path
116 C ObjC C++ ObjC++
117 Generate make dependencies
120 C ObjC C++ ObjC++ Separate
121 Generate make dependencies and compile
124 C ObjC C++ ObjC++ Joined Separate
125 -MF <file>      Write dependency output to the given file
128 C ObjC C++ ObjC++
129 Treat missing header files as generated files
132 C ObjC C++ ObjC++
133 Like -M but ignore system header files
136 C ObjC C++ ObjC++ Separate
137 Like -MD but ignore system header files
140 C ObjC C++ ObjC++
141 Generate phony targets for all headers
144 C ObjC C++ ObjC++ Joined Separate
145 -MQ <target>    Add a MAKE-quoted target
148 C ObjC C++ ObjC++ Joined Separate
149 -MT <target>    Add an unquoted target
152 C ObjC C++ ObjC++
153 Do not generate #line directives
156 C ObjC C++ ObjC++ Joined Separate
157 -U<macro>       Undefine <macro>
159 Wabi
160 C++ ObjC++ Var(warn_abi)
161 Warn about things that will change when compiling with an ABI-compliant compiler
163 Wall
164 C ObjC C++ ObjC++
165 Enable most warning messages
167 Wbad-function-cast
168 C ObjC Var(warn_bad_function_cast)
169 Warn about casting functions to incompatible types
171 Wcast-qual
172 C ObjC C++ ObjC++ Var(warn_cast_qual)
173 Warn about casts which discard qualifiers
175 Wchar-subscripts
176 C ObjC C++ ObjC++ Var(warn_char_subscripts)
177 Warn about subscripts whose type is \"char\"
179 Wcomment
180 C ObjC C++ ObjC++
181 Warn about possibly nested block comments, and C++ comments spanning more than one physical line
183 Wcomments
184 C ObjC C++ ObjC++
185 Synonym for -Wcomment
187 Wconversion
188 C ObjC C++ ObjC++ Var(warn_conversion)
189 Warn about possibly confusing type conversions
191 Wctor-dtor-privacy
192 C++ ObjC++ Var(warn_ctor_dtor_privacy)
193 Warn when all constructors and destructors are private
195 Wdeclaration-after-statement
196 C ObjC Var(warn_declaration_after_statement)
197 Warn when a declaration is found after a statement
199 Wdeprecated
200 C++ ObjC++ Var(warn_deprecated) Init(1)
201 Warn about deprecated compiler features
203 Wdiv-by-zero
204 C ObjC Var(warn_div_by_zero) Init(1)
205 Warn about compile-time integer division by zero
207 Weffc++
208 C++ ObjC++ Var(warn_ecpp)
209 Warn about violations of Effective C++ style rules
211 Wendif-labels
212 C ObjC C++ ObjC++
213 Warn about stray tokens after #elif and #endif
215 Werror
216 C ObjC C++ ObjC++
217 ; Documented in common.opt
219 Werror-implicit-function-declaration
220 C ObjC RejectNegative
221 Make implicit function declarations an error
223 Wfloat-equal
224 C ObjC C++ ObjC++ Var(warn_float_equal)
225 Warn if testing floating point numbers for equality
227 Wformat
228 C ObjC C++ ObjC++
229 Warn about printf/scanf/strftime/strfmon format string anomalies
231 Wformat-extra-args
232 C ObjC C++ ObjC++ Var(warn_format_extra_args)
233 Warn if passing too many arguments to a function for its format string
235 Wformat-nonliteral
236 C ObjC C++ ObjC++ Var(warn_format_nonliteral)
237 Warn about format strings that are not literals
239 Wformat-security
240 C ObjC C++ ObjC++ Var(warn_format_security)
241 Warn about possible security problems with format functions
243 Wformat-y2k
244 C ObjC C++ ObjC++ Var(warn_format_y2k)
245 Warn about strftime formats yielding 2-digit years
247 Wformat-zero-length
248 C ObjC Var(warn_format_zero_length)
249 Warn about zero-length formats
251 Wformat=
252 C ObjC C++ ObjC++ Joined
254 Winit-self
255 C ObjC C++ ObjC++ Var(warn_init_self)
256 Warn about variables which are initialized to themselves.
258 Wimplicit
259 C ObjC C++ ObjC++
261 Wimplicit-function-declaration
262 C ObjC Var(mesg_implicit_function_declaration) Init(-1)
263 Warn about implicit function declarations
265 Wimplicit-int
266 C ObjC Var(warn_implicit_int)
267 Warn when a declaration does not specify a type
269 Wimport
270 C ObjC C++ ObjC++
271 Deprecated.  This switch has no effect.
273 Winvalid-offsetof
274 C++ ObjC++ Var(warn_invalid_offsetof) Init(1)
275 Warn about invalid uses of the \"offsetof\" macro
277 Winvalid-pch
278 C ObjC C++ ObjC++
279 Warn about PCH files that are found but not used
281 Wlong-long
282 C ObjC C++ ObjC++ Var(warn_long_long) Init(1)
283 Do not warn about using \"long long\" when -pedantic
285 Wmain
286 C ObjC
287 Warn about suspicious declarations of \"main\"
289 Wmissing-braces
290 C ObjC C++ ObjC++ Var(warn_missing_braces)
291 Warn about possibly missing braces around initializers
293 Wmissing-declarations
294 C ObjC Var(warn_missing_declarations)
295 Warn about global functions without previous declarations
297 Wmissing-format-attribute
298 C ObjC C++ ObjC++ Var(warn_missing_format_attribute)
299 Warn about functions which might be candidates for format attributes
301 Wmissing-include-dirs
302 C ObjC C++ ObjC++
303 Warn about user-specified include directories that do not exist
305 Wmissing-prototypes
306 C ObjC Var(warn_missing_prototypes)
307 Warn about global functions without prototypes
309 Wmultichar
310 C ObjC C++ ObjC++
311 Warn about use of multi-character character constants
313 Wnested-externs
314 C ObjC Var(warn_nested_externs)
315 Warn about \"extern\" declarations not at file scope
317 Wnon-template-friend
318 C++ ObjC++ Var(warn_nontemplate_friend) Init(1)
319 Warn when non-templatized friend functions are declared within a template
321 Wnon-virtual-dtor
322 C++ ObjC++ Var(warn_nonvdtor)
323 Warn about non-virtual destructors
325 Wnonnull
326 C ObjC Var(warn_nonnull)
327 Warn about NULL being passed to argument slots marked as requiring non-NULL
329 Wold-style-cast
330 C++ ObjC++ Var(warn_old_style_cast)
331 Warn if a C-style cast is used in a program
333 Wold-style-definition
334 C ObjC Var(warn_old_style_definition)
335 Warn if an old-style parameter definition is used
337 Woverloaded-virtual
338 C++ ObjC++ Var(warn_overloaded_virtual)
339 Warn about overloaded virtual function names
341 Wparentheses
342 C ObjC C++ ObjC++ Var(warn_parentheses)
343 Warn about possibly missing parentheses
345 Wpmf-conversions
346 C++ ObjC++ Var(warn_pmf2ptr) Init(1)
347 Warn when converting the type of pointers to member functions
349 Wpointer-arith
350 C ObjC C++ ObjC++ Var(warn_pointer_arith)
351 Warn about function pointer arithmetic
353 Wprotocol
354 ObjC ObjC++ Var(warn_protocol) Init(1)
355 Warn if inherited methods are unimplemented
357 Wredundant-decls
358 C ObjC C++ ObjC++ Var(warn_redundant_decls)
359 Warn about multiple declarations of the same object
361 Wreorder
362 C++ ObjC++ Var(warn_reorder)
363 Warn when the compiler reorders code
365 Wreturn-type
366 C ObjC C++ ObjC++
367 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
369 Wselector
370 ObjC ObjC++ Var(warn_selector)
371 Warn if a selector has multiple methods
373 Wsequence-point
374 C ObjC C++ ObjC++ Var(warn_sequence_point)
375 Warn about possible violations of sequence point rules
377 Wsign-compare
378 C ObjC C++ ObjC++ Var(warn_sign_compare) Init(-1)
379 Warn about signed-unsigned comparisons
381 Wsign-promo
382 C++ ObjC++ Var(warn_sign_promo)
383 Warn when overload promotes from unsigned to signed
385 Wstrict-prototypes
386 C ObjC Var(warn_strict_prototypes)
387 Warn about unprototyped function declarations
389 Wsynth
390 C++ ObjC++ Var(warn_synth)
391 Warn when synthesis behavior differs from Cfront
393 Wsystem-headers
394 C ObjC C++ ObjC++
395 Do not suppress warnings from system headers
397 Wtraditional
398 C ObjC Var(warn_traditional)
399 Warn about features not present in traditional C
401 Wtrigraphs
402 C ObjC C++ ObjC++
403 Warn if trigraphs are encountered that might affect the meaning of the program
405 Wundeclared-selector
406 ObjC ObjC++ Var(warn_undeclared_selector)
407 Warn about @selector()s without previously declared methods
409 Wundef
410 C ObjC C++ ObjC++
411 Warn if an undefined macro is used in an #if directive
413 Wunknown-pragmas
414 C ObjC C++ ObjC++
415 Warn about unrecognized pragmas
417 Wunused-macros
418 C ObjC C++ ObjC++
419 Warn about macros defined in the main file that are not used
421 Wvariadic-macros
422 C ObjC C++ ObjC++
423 Do not warn about using variadic macros when -pedantic
425 Wwrite-strings
426 C ObjC C++ ObjC++
427 Give strings the type \"array of char\"
429 ansi
430 C ObjC C++ ObjC++
431 A synonym for -std=c89.  In a future version of GCC it will become synonymous with -std=c99 instead
434 C ObjC C++ ObjC++ Joined
435 ; Documented in common.opt.  FIXME - what about -dI, -dD, -dN and -dD?
437 faccess-control
438 C++ ObjC++
439 Enforce class member access control semantics
441 fall-virtual
442 C++ ObjC++
444 falt-external-templates
445 C++ ObjC++
446 Change when template instances are emitted
448 fasm
449 C ObjC C++ ObjC++
450 Recognize the \"asm\" keyword
452 fbuiltin
453 C ObjC C++ ObjC++
454 Recognize built-in functions
456 fbuiltin-
457 C ObjC C++ ObjC++ Joined
459 fcheck-new
460 C++ ObjC++
461 Check the return value of new
463 fcond-mismatch
464 C ObjC C++ ObjC++
465 Allow the arguments of the '?' operator to have different types
467 fconserve-space
468 C++ ObjC++
469 Reduce the size of object files
471 fconst-strings
472 C++ ObjC++
473 Make string literals \"const char[]\" not \"char[]\"
475 fconstant-string-class=
476 ObjC ObjC++ Joined
477 -fconst-string-class=<name>     Use class <name> for constant strings
479 fdefault-inline
480 C++ ObjC++
481 Inline member functions by default
483 fdollars-in-identifiers
484 C ObjC C++ ObjC++
485 Permit '$' as an identifier character
487 felide-constructors
488 C++ ObjC++
490 fenforce-eh-specs
491 C++ ObjC++
492 Generate code to check exception specifications
494 fenum-int-equiv
495 C++ ObjC++
497 fexec-charset=
498 C ObjC C++ ObjC++ Joined RejectNegative
499 -fexec-charset=<cset>   Convert all strings and character constants to character set <cset>
501 finput-charset=
502 C ObjC C++ ObjC++ Joined RejectNegative
503 -finput-charset=<cset>      Specify the default character set for source files.
506 fexternal-templates
507 C++ ObjC++
509 ffixed-form
510 C ObjC
512 ffixed-line-length-
513 C ObjC Joined
515 ffor-scope
516 C++ ObjC++
517 Scope of for-init-statement variables is local to the loop
519 ffreestanding
520 C ObjC
521 Do not assume that standard C libraries and \"main\" exist
523 fgnu-keywords
524 C++ ObjC++
525 Recognize GNU-defined keywords
527 fgnu-runtime
528 ObjC ObjC++
529 Generate code for GNU runtime environment
531 fguiding-decls
532 C++ ObjC++
534 fhandle-exceptions
535 C++ ObjC++
537 fhonor-std
538 C++ ObjC++
540 fhosted
541 C ObjC
542 Assume normal C execution environment
544 fhuge-objects
545 C++ ObjC++
546 Enable support for huge objects
548 fimplement-inlines
549 C++ ObjC++
550 Export functions even if they can be inlined
552 fimplicit-inline-templates
553 C++ ObjC++
554 Emit implicit instantiations of inline templates
556 fimplicit-templates
557 C++ ObjC++
558 Emit implicit instantiations of templates
560 flabels-ok
561 C++ ObjC++
563 fms-extensions
564 C ObjC C++ ObjC++
565 Don't warn about uses of Microsoft extensions
567 fname-mangling-version-
568 C++ ObjC++ Joined
570 fnew-abi
571 C++ ObjC++
573 fnext-runtime
574 ObjC ObjC++
575 Generate code for NeXT (Apple Mac OS X) runtime environment
577 fnil-receivers
578 ObjC ObjC++
579 Assume that receivers of Objective-C messages may be nil
581 fnonansi-builtins
582 C++ ObjC++
584 fnonnull-objects
585 C++ ObjC++
587 fobjc-exceptions
588 ObjC ObjC++
589 Enable Objective-C exception and synchronization syntax
591 fobjc-sjlj-exceptions
592 ObjC ObjC++
593 Enable Objective-C setjmp exception handling runtime
595 foperator-names
596 C++ ObjC++
597 Recognize C++ kewords like \"compl\" and \"xor\"
599 foptional-diags
600 C++ ObjC++
601 Enable optional diagnostics
603 fpch-deps
604 C ObjC C++ ObjC++
606 fpch-preprocess
607 C ObjC C++ ObjC++
608 Look for and use PCH files even when preprocessing
610 fpermissive
611 C++ ObjC++
612 Downgrade conformance errors to warnings
614 fpreprocessed
615 C ObjC C++ ObjC++
616 Treat the input file as already preprocessed
618 freplace-objc-classes
619 ObjC ObjC++
620 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
622 frepo
623 C++ ObjC++
624 Enable automatic template instantiation
626 frtti
627 C++ ObjC++
628 Generate run time type descriptor information
630 fshort-double
631 C ObjC C++ ObjC++
632 Use the same size for double as for float
634 fshort-enums
635 C ObjC C++ ObjC++
636 Use the narrowest integer type possible for enumeration types
638 fshort-wchar
639 C ObjC C++ ObjC++
640 Force the underlying type for \"wchar_t\" to be \"unsigned short\"
642 fshow-column
643 C ObjC C++ ObjC++
645 fsigned-bitfields
646 C ObjC C++ ObjC++
647 When \"signed\" or \"unsigned\" is not given make the bitfield signed
649 fsigned-char
650 C ObjC C++ ObjC++
651 Make \"char\" signed by default
653 fsquangle
654 C++ ObjC++
656 fstats
657 C++ ObjC++
658 Display statistics accumulated during compilation
660 fstrict-prototype
661 C++ ObjC++
663 ftabstop=
664 C ObjC C++ ObjC++ Joined RejectNegative UInteger
665 -ftabstop=<number>      Distance between tab stops for column reporting
667 ftemplate-depth-
668 C++ ObjC++ Joined RejectNegative UInteger 
669 -ftemplate-depth-<number>       Specify maximum template instantiation depth
671 fthis-is-variable
672 C++ ObjC++
674 funsigned-bitfields
675 C ObjC C++ ObjC++
676 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
678 funsigned-char
679 C ObjC C++ ObjC++
680 Make \"char\" unsigned by default
682 fuse-cxa-atexit
683 C++ ObjC++
684 Use __cxa_atexit to register destructors
686 fvtable-gc
687 C++ ObjC++
688 Discard unused virtual functions
690 fvtable-thunks
691 C++ ObjC++
692 Implement vtables using thunks
694 fweak
695 C++ ObjC++
696 Emit common-like symbols as weak symbols
698 fwide-exec-charset=
699 C ObjC C++ ObjC++ Joined RejectNegative
700 -fwide-exec-charset=<cset>      Convert all wide strings and character constants to character set <cset>
702 fworking-directory
703 C ObjC C++ ObjC++
704 Generate a #line directive pointing at the current working directory
706 fxref
707 C++ ObjC++
708 Emit cross referencing information
710 fzero-link
711 ObjC ObjC++
712 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode
714 gen-decls
715 ObjC ObjC++
716 Dump declarations to a .decl file
718 idirafter
719 C ObjC C++ ObjC++ Joined Separate
720 -idirafter <dir>        Add <dir> to the end of the system include path
722 imacros
723 C ObjC C++ ObjC++ Joined Separate
724 -imacros <file> Accept definition of macros in <file>
726 include
727 C ObjC C++ ObjC++ Joined Separate
728 -include <file> Include the contents of <file> before other files
730 iprefix
731 C ObjC C++ ObjC++ Joined Separate
732 -iprefix <path> Specify <path> as a prefix for next two options
734 isysroot
735 C ObjC C++ ObjC++ Joined Separate
736 -isysroot <dir> Set <dir> to be the system root directory
738 isystem
739 C ObjC C++ ObjC++ Joined Separate
740 -isystem <dir>  Add <dir> to the start of the system include path
742 iquote
743 C ObjC C++ ObjC++ Joined Separate
744 -iquote <dir>   Add <dir> to the end of the quote include path
746 iwithprefix
747 C ObjC C++ ObjC++ Joined Separate
748 -iwithprefix <dir>      Add <dir> to the end of the system include path
750 iwithprefixbefore
751 C ObjC C++ ObjC++ Joined Separate
752 -iwithprefixbefore <dir>        Add <dir> to the end of the main include path
754 lang-asm
755 C Undocumented
757 lang-objc
758 C ObjC C++ ObjC++ Undocumented
760 nostdinc
761 C ObjC C++ ObjC++
762 Do not search standard system include directories (those specified with -isystem will still be used)
764 nostdinc++
765 C++ ObjC++
766 Do not search standard system include directories for C++
769 C ObjC C++ ObjC++ Joined Separate
770 ; Documented in common.opt
772 pedantic
773 C ObjC C++ ObjC++
774 ; Documented in common.opt
776 pedantic-errors
777 C ObjC C++ ObjC++
778 ; Documented in common.opt
780 print-objc-runtime-info
781 ObjC ObjC++
782 Generate C header of platform-specific features
784 remap
785 C ObjC C++ ObjC++
786 Remap file names when including files
788 std=c++98
789 C++ ObjC++
790 Conform to the ISO 1998 C++ standard
792 std=c89
793 C ObjC
794 Conform to the ISO 1990 C standard
796 std=c99
797 C ObjC
798 Conform to the ISO 1999 C standard
800 std=c9x
801 C ObjC
802 Deprecated in favor of -std=c99
804 std=gnu++98
805 C++ ObjC++
806 Conform to the ISO 1998 C++ standard with GNU extensions
808 std=gnu89
809 C ObjC
810 Conform to the ISO 1990 C standard with GNU extensions
812 std=gnu99
813 C ObjC
814 Conform to the ISO 1999 C standard with GNU extensions
816 std=gnu9x
817 C ObjC
818 Deprecated in favor of -std=gnu99
820 std=iso9899:1990
821 C ObjC
822 Deprecated in favor of -std=c89
824 std=iso9899:199409
825 C ObjC
826 Conform to the ISO 1990 C standard as amended in 1994
828 std=iso9899:1999
829 C ObjC
830 Deprecated in favor of -std=c99
832 std=iso9899:199x
833 C ObjC
834 Deprecated in favor of -std=c99
836 traditional-cpp
837 C ObjC C++ ObjC++
838 Enable traditional preprocessing
840 trigraphs
841 C ObjC C++ ObjC++
842 -trigraphs      Support ISO C trigraphs
844 undef
845 C ObjC C++ ObjC++
846 Do not predefine system-specific and GCC-specific macros
849 C ObjC C++ ObjC++
850 Enable verbose output
853 C ObjC C++ ObjC++
854 ; Documented in common.opt
856 ; This comment is to ensure we retain the blank line above.