1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003, 2004, 2005, 2006, 2007 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
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
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, 51 Franklin Street, Fifth Floor, Boston, MA
21 ; See the GCC internals manual for a description of this file's format.
23 ; Please try to keep this file in ASCII collating order.
38 C ObjC C++ ObjC++ Joined Separate
41 C ObjC C++ ObjC++ Joined Separate
42 -A<question>=<answer> Assert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>
46 Do not discard comments
50 Do not discard comments in macro expansions
53 C ObjC C++ ObjC++ Joined Separate
54 -D<macro>[=<val>] Define a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1
57 C ObjC C++ ObjC++ Undocumented
60 C ObjC C++ ObjC++ Joined Separate
61 -F <dir> Add <dir> to the end of the main framework include path
65 Print the name of header files as they are used
68 C ObjC C++ ObjC++ Joined Separate
69 -I <dir> Add <dir> to the end of the main include path
73 Generate make dependencies
76 C ObjC C++ ObjC++ Separate
77 Generate make dependencies and compile
80 C ObjC C++ ObjC++ Joined Separate
81 -MF <file> Write dependency output to the given file
85 Treat missing header files as generated files
89 Like -M but ignore system header files
92 C ObjC C++ ObjC++ Separate
93 Like -MD but ignore system header files
97 Generate phony targets for all headers
100 C ObjC C++ ObjC++ Joined Separate
101 -MQ <target> Add a MAKE-quoted target
104 C ObjC C++ ObjC++ Joined Separate
105 -MT <target> Add an unquoted target
109 Do not generate #line directives
112 C ObjC C++ ObjC++ Joined Separate
113 -U<macro> Undefine <macro>
116 C++ ObjC++ Var(warn_abi) Warning
117 Warn about things that will change when compiling with an ABI-compliant compiler
120 C ObjC C++ ObjC++ Var(warn_address) Warning
121 Warn about suspicious uses of memory addresses
124 C ObjC C++ ObjC++ Warning
125 Enable most warning messages
128 ObjC ObjC++ Var(warn_assign_intercept) Warning
129 Warn whenever an Objective-C assignment is being intercepted by the garbage collector
132 C ObjC Var(warn_bad_function_cast) Warning
133 Warn about casting functions to incompatible types
136 C ObjC Var(warn_cxx_compat) Warning
137 Warn about C constructs that are not in the common subset of C and C++
140 C++ ObjC++ Var(warn_cxx0x_compat) Warning
141 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x
144 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
145 Warn about casts which discard qualifiers
148 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning
149 Warn about subscripts whose type is \"char\"
152 C ObjC C++ ObjC++ Var(warn_clobbered) Init(-1) Warning
153 Warn about variables that might be changed by \"longjmp\" or \"vfork\"
156 C ObjC C++ ObjC++ Warning
157 Warn about possibly nested block comments, and C++ comments spanning more than one physical line
160 C ObjC C++ ObjC++ Warning
161 Synonym for -Wcomment
164 C ObjC C++ ObjC++ Var(warn_conversion) Warning
165 Warn for implicit type conversions that may change a value
168 C ObjC C++ ObjC++ Var(warn_sign_conversion) Init(-1)
169 Warn for implicit type conversions between signed and unsigned integers
172 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
173 Warn when all constructors and destructors are private
175 Wdeclaration-after-statement
176 C ObjC Var(warn_declaration_after_statement) Warning
177 Warn when a declaration is found after a statement
180 C++ ObjC++ Var(warn_deprecated) Init(1) Warning
181 Warn about deprecated compiler features
184 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
185 Warn about compile-time integer division by zero
188 C++ ObjC++ Var(warn_ecpp) Warning
189 Warn about violations of Effective C++ style rules
192 C ObjC C++ ObjC++ Var(warn_empty_body) Init(-1) Warning
193 Warn about an empty body in an if or else statement
196 C ObjC C++ ObjC++ Warning
197 Warn about stray tokens after #elif and #endif
201 ; Documented in common.opt
203 Werror-implicit-function-declaration
204 C ObjC RejectNegative Warning
205 This switch is deprecated; use -Werror=implicit-function-declaration instead
208 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
209 Warn if testing floating point numbers for equality
212 C ObjC C++ ObjC++ Warning
213 Warn about printf/scanf/strftime/strfmon format string anomalies
216 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning
217 Warn if passing too many arguments to a function for its format string
220 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
221 Warn about format strings that are not literals
224 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning
225 Warn about format strings that contain NUL bytes
228 C ObjC C++ ObjC++ Var(warn_format_security) Warning
229 Warn about possible security problems with format functions
232 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning
233 Warn about strftime formats yielding 2-digit years
236 C ObjC Var(warn_format_zero_length) Warning
237 Warn about zero-length formats
240 C ObjC C++ ObjC++ Joined Warning
243 C ObjC C++ ObjC++ Var(warn_init_self) Warning
244 Warn about variables which are initialized to themselves
247 C ObjC C++ ObjC++ Warning
249 Wimplicit-function-declaration
250 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning
251 Warn about implicit function declarations
254 C ObjC Var(warn_implicit_int) Warning
255 Warn when a declaration does not specify a type
259 Deprecated. This switch has no effect
262 C ObjC Var(warn_int_to_pointer_cast) Init(1) Warning
263 Warn when there is a cast to a pointer from an integer of a different size
266 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
267 Warn about invalid uses of the \"offsetof\" macro
270 C ObjC C++ ObjC++ Warning
271 Warn about PCH files that are found but not used
274 C ObjC C++ ObjC++ Var(warn_long_long) Init(1) Warning
275 Do not warn about using \"long long\" when -pedantic
278 C ObjC C++ ObjC++ Warning
279 Warn about suspicious declarations of \"main\"
282 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning
283 Warn about possibly missing braces around initializers
285 Wmissing-declarations
286 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
287 Warn about global functions without previous declarations
289 Wmissing-field-initializers
290 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Init(-1) Warning
291 Warn about missing fields in struct initializers
293 Wmissing-format-attribute
294 C ObjC C++ ObjC++ Var(warn_missing_format_attribute) Warning
295 Warn about functions which might be candidates for format attributes
297 Wmissing-include-dirs
298 C ObjC C++ ObjC++ Warning
299 Warn about user-specified include directories that do not exist
301 Wmissing-parameter-type
302 C ObjC Var(warn_missing_parameter_type) Init(-1) Warning
303 Warn about function parameters declared without a type specifier in K&R-style functions
306 C ObjC Var(warn_missing_prototypes) Warning
307 Warn about global functions without prototypes
310 C ObjC C++ ObjC++ Warning
311 Warn about use of multi-character character constants
314 C ObjC Var(warn_nested_externs) Warning
315 Warn about \"extern\" declarations not at file scope
318 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
319 Warn when non-templatized friend functions are declared within a template
322 C++ ObjC++ Var(warn_nonvdtor) Warning
323 Warn about non-virtual destructors
326 C ObjC Var(warn_nonnull) Warning
327 Warn about NULL being passed to argument slots marked as requiring non-NULL
330 C ObjC C++ ObjC++ Joined Warning
331 -Wnormalized=<id|nfc|nfkc> Warn about non-normalised Unicode strings
334 C++ ObjC++ Var(warn_old_style_cast) Warning
335 Warn if a C-style cast is used in a program
337 Wold-style-declaration
338 C ObjC Var(warn_old_style_declaration) Init(-1) Warning
339 Warn for obsolescent usage in a declaration
341 Wold-style-definition
342 C ObjC Var(warn_old_style_definition) Warning
343 Warn if an old-style parameter definition is used
346 C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1) Warning
347 Warn if a string is longer than the maximum portable length specified by the standard
350 C++ ObjC++ Var(warn_overloaded_virtual) Warning
351 Warn about overloaded virtual function names
354 C ObjC Var(warn_override_init) Init(-1) Warning
355 Warn about overriding initializers without side effects
358 C ObjC C++ ObjC++ Var(warn_parentheses) Warning
359 Warn about possibly missing parentheses
362 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
363 Warn when converting the type of pointers to member functions
366 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning
367 Warn about function pointer arithmetic
370 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
371 Warn when a pointer is cast to an integer of a different size
374 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
375 Warn about misuses of pragmas
378 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
379 Warn if inherited methods are unimplemented
382 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
383 Warn about multiple declarations of the same object
386 C++ ObjC++ Var(warn_reorder) Warning
387 Warn when the compiler reorders code
390 C ObjC C++ ObjC++ Var(warn_return_type) Warning
391 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
394 ObjC ObjC++ Var(warn_selector) Warning
395 Warn if a selector has multiple methods
398 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning
399 Warn about possible violations of sequence point rules
402 C ObjC C++ ObjC++ Var(warn_sign_compare) Init(-1) Warning
403 Warn about signed-unsigned comparisons
406 C++ ObjC++ Var(warn_sign_promo) Warning
407 Warn when overload promotes from unsigned to signed
409 Wstrict-null-sentinel
411 Warn about uncasted NULL used as sentinel
414 C ObjC Var(warn_strict_prototypes) Warning
415 Warn about unprototyped function declarations
417 Wstrict-selector-match
418 ObjC ObjC++ Var(warn_strict_selector_match) Warning
419 Warn if type signatures of candidate methods do not match exactly
422 C++ ObjC++ Var(warn_synth) Warning
423 Warn when synthesis behavior differs from Cfront
426 C ObjC C++ ObjC++ Warning
427 Do not suppress warnings from system headers
430 C ObjC Var(warn_traditional) Warning
431 Warn about features not present in traditional C
433 Wtraditional-conversion
434 C ObjC Var(warn_traditional_conversion) Warning
435 Warn of prototypes causing type conversions different from what would happen in the absence of prototype
438 C ObjC C++ ObjC++ Warning
439 Warn if trigraphs are encountered that might affect the meaning of the program
442 ObjC ObjC++ Var(warn_undeclared_selector) Warning
443 Warn about @selector()s without previously declared methods
446 C ObjC C++ ObjC++ Warning
447 Warn if an undefined macro is used in an #if directive
450 C ObjC C++ ObjC++ Warning
451 Warn about unrecognized pragmas
454 C ObjC C++ ObjC++ Warning
455 Warn about macros defined in the main file that are not used
458 C ObjC C++ ObjC++ Warning
459 Do not warn about using variadic macros when -pedantic
462 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
463 Warn if a variable length array is used
466 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
467 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.
470 C ObjC Var(warn_pointer_sign) Init(-1) Warning
471 Warn when a pointer differs in signedness in an assignment
475 A synonym for -std=c89 (for C) or -std=c++98 (for C++)
478 C ObjC C++ ObjC++ Joined
479 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
483 Enforce class member access control semantics
488 falt-external-templates
490 Change when template instances are emitted
494 Recognize the \"asm\" keyword
498 Recognize built-in functions
501 C ObjC C++ ObjC++ Joined
505 Check the return value of new
509 Allow the arguments of the '?' operator to have different types
513 Reduce the size of object files
515 fconstant-string-class=
517 -fconst-string-class=<name> Use class <name> for constant strings
521 Inline member functions by default
523 fdollars-in-identifiers
525 Permit '$' as an identifier character
532 Generate code to check exception specifications
538 C ObjC C++ ObjC++ Joined RejectNegative
539 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>
541 fextended-identifiers
543 Permit universal character names (\\u and \\U) in identifiers
546 C ObjC C++ ObjC++ Joined RejectNegative
547 -finput-charset=<cset> Specify the default character set for source files
555 Scope of for-init-statement variables is local to the loop
559 Do not assume that standard C libraries and \"main\" exist
563 Recognize GNU-defined keywords
567 Generate code for GNU runtime environment
570 C ObjC Var(flag_gnu89_inline) Init(-1)
571 Use traditional GNU semantics for inline functions
577 C++ ObjC++ Optimization
584 Assume normal C execution environment
588 Enable support for huge objects
592 Export functions even if they can be inlined
594 fimplicit-inline-templates
596 Emit implicit instantiations of inline templates
600 Emit implicit instantiations of templates
603 C++ ObjC++ Var(flag_friend_injection)
604 Inject friend functions into enclosing namespace
609 flax-vector-conversions
611 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
615 Don't warn about uses of Microsoft extensions
617 fname-mangling-version-
625 Generate code for NeXT (Apple Mac OS X) runtime environment
629 Assume that receivers of Objective-C messages may be nil
637 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
638 ; to initialize any non-POD ivars in Objective-C++ classes.
639 fobjc-call-cxx-cdtors
640 ObjC++ Var(flag_objc_call_cxx_cdtors)
641 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed
643 fobjc-direct-dispatch
644 ObjC ObjC++ Var(flag_objc_direct_dispatch)
645 Allow fast jumps to the message dispatcher
647 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
648 ; @try, etc.) in source code.
650 ObjC ObjC++ Var(flag_objc_exceptions)
651 Enable Objective-C exception and synchronization syntax
654 ObjC ObjC++ Var(flag_objc_gc)
655 Enable garbage collection (GC) in Objective-C/Objective-C++ programs
657 ; Nonzero means that we generate NeXT setjmp based exceptions.
658 fobjc-sjlj-exceptions
659 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
660 Enable Objective-C setjmp exception handling runtime
663 C ObjC C++ ObjC++ Var(flag_openmp)
668 Recognize C++ kewords like \"compl\" and \"xor\"
672 Enable optional diagnostics
679 Look for and use PCH files even when preprocessing
683 Downgrade conformance errors to warnings
687 Treat the input file as already preprocessed
689 freplace-objc-classes
691 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
695 Enable automatic template instantiation
698 C++ ObjC++ Optimization
699 Generate run time type descriptor information
702 C ObjC C++ ObjC++ Optimization
703 Use the same size for double as for float
706 C ObjC C++ ObjC++ Optimization
707 Use the narrowest integer type possible for enumeration types
710 C ObjC C++ ObjC++ Optimization
711 Force the underlying type for \"wchar_t\" to be \"unsigned short\"
715 When \"signed\" or \"unsigned\" is not given make the bitfield signed
719 Make \"char\" signed by default
726 Display statistics accumulated during compilation
732 C ObjC C++ ObjC++ Joined RejectNegative UInteger
733 -ftabstop=<number> Distance between tab stops for column reporting
736 C++ ObjC++ Joined RejectNegative UInteger
737 -ftemplate-depth-<number> Specify maximum template instantiation depth
743 C++ ObjC++ Optimization
744 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics
748 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
752 Make \"char\" unsigned by default
756 Use __cxa_atexit to register destructors
758 fuse-cxa-get-exception-ptr
760 Use __cxa_get_exception_ptr in exception handling
762 fvisibility-inlines-hidden
764 Marks all inlined methods as having hidden visibility
768 Discard unused virtual functions
772 Implement vtables using thunks
776 Emit common-like symbols as weak symbols
779 C ObjC C++ ObjC++ Joined RejectNegative
780 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>
784 Generate a #line directive pointing at the current working directory
788 Emit cross referencing information
792 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode
796 Dump declarations to a .decl file
798 femit-struct-debug-baseonly
800 -femit-struct-debug-baseonly Aggressive reduced debug info for structs
802 femit-struct-debug-reduced
804 -femit-struct-debug-reduced Conservative reduced debug info for structs
806 femit-struct-debug-detailed=
807 C ObjC C++ ObjC++ Joined
808 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs
811 C ObjC C++ ObjC++ Joined Separate
812 -idirafter <dir> Add <dir> to the end of the system include path
815 C ObjC C++ ObjC++ Joined Separate
816 -imacros <file> Accept definition of macros in <file>
819 C ObjC C++ ObjC++ Joined Separate
820 -imultilib <dir> Set <dir> to be the multilib include subdirectory
823 C ObjC C++ ObjC++ Joined Separate
824 -include <file> Include the contents of <file> before other files
827 C ObjC C++ ObjC++ Joined Separate
828 -iprefix <path> Specify <path> as a prefix for next two options
831 C ObjC C++ ObjC++ Joined Separate
832 -isysroot <dir> Set <dir> to be the system root directory
835 C ObjC C++ ObjC++ Joined Separate
836 -isystem <dir> Add <dir> to the start of the system include path
839 C ObjC C++ ObjC++ Joined Separate
840 -iquote <dir> Add <dir> to the end of the quote include path
843 C ObjC C++ ObjC++ Joined Separate
844 -iwithprefix <dir> Add <dir> to the end of the system include path
847 C ObjC C++ ObjC++ Joined Separate
848 -iwithprefixbefore <dir> Add <dir> to the end of the main include path
857 C ObjC C++ ObjC++ Undocumented
861 Do not search standard system include directories (those specified with -isystem will still be used)
865 Do not search standard system include directories for C++
868 C ObjC C++ ObjC++ Joined Separate
869 ; Documented in common.opt
873 ; Documented in common.opt
877 ; Documented in common.opt
879 print-objc-runtime-info
881 Generate C header of platform-specific features
885 Print a checksum of the executable for PCH validity checking, and stop
889 Remap file names when including files
893 Conform to the ISO 1998 C++ standard
897 Conform to the ISO 1998 C++ standard, with extensions that are likely to
898 become a part of the upcoming ISO C++ standard, dubbed C++0x. Note that the
899 extensions enabled by this mode are experimental and may be removed in
900 future releases of GCC.
904 Conform to the ISO 1990 C standard
908 Conform to the ISO 1999 C standard
912 Deprecated in favor of -std=c99
916 Conform to the ISO 1998 C++ standard with GNU extensions
920 Conform to the ISO 1998 C++ standard, with GNU extensions and
921 extensions that are likely to become a part of the upcoming ISO C++
922 standard, dubbed C++0x. Note that the extensions enabled by this mode
923 are experimental and may be removed in future releases of GCC.
927 Conform to the ISO 1990 C standard with GNU extensions
931 Conform to the ISO 1999 C standard with GNU extensions
935 Deprecated in favor of -std=gnu99
939 Conform to the ISO 1990 C standard
943 Conform to the ISO 1990 C standard as amended in 1994
947 Conform to the ISO 1999 C standard
951 Deprecated in favor of -std=iso9899:1999
955 Enable traditional preprocessing
959 -trigraphs Support ISO C trigraphs
963 Do not predefine system-specific and GCC-specific macros
967 Enable verbose output
971 ; Documented in common.opt
973 ; This comment is to ensure we retain the blank line above.