1 ; Options for the C, ObjC, C++ and ObjC++ front ends.
2 ; Copyright (C) 2003, 2004, 2005, 2006 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++ Warning
121 Enable most warning messages
124 ObjC ObjC++ Var(warn_assign_intercept) Warning
125 Warn whenever an Objective-C assignment is being intercepted by the garbage collector
128 C ObjC Var(warn_bad_function_cast) Warning
129 Warn about casting functions to incompatible types
132 C Var(warn_cxx_compat) Warning
133 Warn about C constructs that are not in the common subset of C and C++
136 C++ ObjC++ Var(warn_cxx0x_compat)
137 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x
140 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
141 Warn about casts which discard qualifiers
144 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning
145 Warn about subscripts whose type is \"char\"
148 C ObjC C++ ObjC++ Var(warn_clobbered) Init(-1) Warning
149 Warn about variables that might be changed by \"longjmp\" or \"vfork\"
152 C ObjC C++ ObjC++ Warning
153 Warn about possibly nested block comments, and C++ comments spanning more than one physical line
156 C ObjC C++ ObjC++ Warning
157 Synonym for -Wcomment
160 C ObjC C++ ObjC++ Var(warn_conversion) Warning
161 Warn for implicit type conversions that may change a value
164 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
165 Warn when all constructors and destructors are private
167 Wdeclaration-after-statement
168 C ObjC Var(warn_declaration_after_statement) Warning
169 Warn when a declaration is found after a statement
172 C++ ObjC++ Var(warn_deprecated) Init(1) Warning
173 Warn about deprecated compiler features
176 C ObjC C++ Var(warn_div_by_zero) Init(1) Warning
177 Warn about compile-time integer division by zero
180 C++ ObjC++ Var(warn_ecpp) Warning
181 Warn about violations of Effective C++ style rules
184 C ObjC C++ ObjC++ Var(warn_empty_body) Init(-1) Warning
185 Warn about an empty body in an if or else statement
188 C ObjC C++ ObjC++ Warning
189 Warn about stray tokens after #elif and #endif
193 ; Documented in common.opt
195 Werror-implicit-function-declaration
196 C ObjC RejectNegative Warning
197 This switch is deprecated; use -Werror=implicit-function-declaration instead
200 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
201 Warn if testing floating point numbers for equality
204 C ObjC C++ ObjC++ Warning
205 Warn about printf/scanf/strftime/strfmon format string anomalies
208 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning
209 Warn if passing too many arguments to a function for its format string
212 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
213 Warn about format strings that are not literals
216 C ObjC C++ ObjC++ Var(warn_format_security) Warning
217 Warn about possible security problems with format functions
220 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning
221 Warn about strftime formats yielding 2-digit years
224 C ObjC Var(warn_format_zero_length) Warning
225 Warn about zero-length formats
228 C ObjC C++ ObjC++ Joined Warning
231 C ObjC C++ ObjC++ Var(warn_init_self) Warning
232 Warn about variables which are initialized to themselves
235 C ObjC C++ ObjC++ Warning
237 Wimplicit-function-declaration
238 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning
239 Warn about implicit function declarations
242 C ObjC Var(warn_implicit_int) Warning
243 Warn when a declaration does not specify a type
247 Deprecated. This switch has no effect
250 C ObjC Var(warn_int_to_pointer_cast) Init(1) Warning
251 Warn when there is a cast to a pointer from an integer of a different size
254 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
255 Warn about invalid uses of the \"offsetof\" macro
258 C ObjC C++ ObjC++ Warning
259 Warn about PCH files that are found but not used
262 C ObjC C++ ObjC++ Var(warn_long_long) Init(1) Warning
263 Do not warn about using \"long long\" when -pedantic
267 Warn about suspicious declarations of \"main\"
270 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning
271 Warn about possibly missing braces around initializers
273 Wmissing-declarations
274 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
275 Warn about global functions without previous declarations
277 Wmissing-field-initializers
278 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Init(-1) Warning
279 Warn about missing fields in struct initializers
281 Wmissing-format-attribute
282 C ObjC C++ ObjC++ Var(warn_missing_format_attribute) Warning
283 Warn about functions which might be candidates for format attributes
285 Wmissing-include-dirs
286 C ObjC C++ ObjC++ Warning
287 Warn about user-specified include directories that do not exist
289 Wmissing-parameter-type
290 C ObjC Var(warn_missing_parameter_type) Init(-1) Warning
291 Warn about function parameters declared without a type specifier in K&R-style functions
294 C ObjC Var(warn_missing_prototypes) Warning
295 Warn about global functions without prototypes
298 C ObjC C++ ObjC++ Warning
299 Warn about use of multi-character character constants
302 C ObjC Var(warn_nested_externs) Warning
303 Warn about \"extern\" declarations not at file scope
306 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
307 Warn when non-templatized friend functions are declared within a template
310 C++ ObjC++ Var(warn_nonvdtor) Warning
311 Warn about non-virtual destructors
314 C ObjC Var(warn_nonnull) Warning
315 Warn about NULL being passed to argument slots marked as requiring non-NULL
318 C ObjC C++ ObjC++ Joined Warning
319 -Wnormalized=<id|nfc|nfkc> Warn about non-normalised Unicode strings
322 C++ ObjC++ Var(warn_old_style_cast) Warning
323 Warn if a C-style cast is used in a program
325 Wold-style-declaration
326 C ObjC Var(warn_old_style_declaration) Init(-1) Warning
327 Warn for obsolescent usage in a declaration
329 Wold-style-definition
330 C ObjC Var(warn_old_style_definition) Warning
331 Warn if an old-style parameter definition is used
334 C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1) Warning
335 Warn if a string is longer than the maximum portable length specified by the standard
338 C++ ObjC++ Var(warn_overloaded_virtual) Warning
339 Warn about overloaded virtual function names
342 C ObjC Var(warn_override_init) Init(-1) Warning
343 Warn about overriding initializers without side effects
346 C ObjC C++ ObjC++ Var(warn_parentheses) Warning
347 Warn about possibly missing parentheses
350 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
351 Warn when converting the type of pointers to member functions
354 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning
355 Warn about function pointer arithmetic
358 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
359 Warn when a pointer is cast to an integer of a different size
362 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
363 Warn about misuses of pragmas
366 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
367 Warn if inherited methods are unimplemented
370 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
371 Warn about multiple declarations of the same object
374 C++ ObjC++ Var(warn_reorder) Warning
375 Warn when the compiler reorders code
378 C ObjC C++ ObjC++ Var(warn_return_type) Warning
379 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
382 ObjC ObjC++ Var(warn_selector) Warning
383 Warn if a selector has multiple methods
386 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning
387 Warn about possible violations of sequence point rules
390 C ObjC C++ ObjC++ Var(warn_sign_compare) Init(-1) Warning
391 Warn about signed-unsigned comparisons
394 C++ ObjC++ Var(warn_sign_promo) Warning
395 Warn when overload promotes from unsigned to signed
397 Wstrict-null-sentinel
399 Warn about uncasted NULL used as sentinel
402 C ObjC Var(warn_strict_prototypes) Warning
403 Warn about unprototyped function declarations
405 Wstrict-selector-match
406 ObjC ObjC++ Var(warn_strict_selector_match) Warning
407 Warn if type signatures of candidate methods do not match exactly
410 C++ ObjC++ Var(warn_synth) Warning
411 Warn when synthesis behavior differs from Cfront
414 C ObjC C++ ObjC++ Warning
415 Do not suppress warnings from system headers
418 C ObjC Var(warn_traditional) Warning
419 Warn about features not present in traditional C
421 Wtraditional-conversion
422 C ObjC Var(warn_traditional_conversion) Warning
423 Warn of prototypes causing type conversions different from what would happen in the absence of prototype
426 C ObjC C++ ObjC++ Warning
427 Warn if trigraphs are encountered that might affect the meaning of the program
430 ObjC ObjC++ Var(warn_undeclared_selector) Warning
431 Warn about @selector()s without previously declared methods
434 C ObjC C++ ObjC++ Warning
435 Warn if an undefined macro is used in an #if directive
438 C ObjC C++ ObjC++ Warning
439 Warn about unrecognized pragmas
442 C ObjC C++ ObjC++ Warning
443 Warn about macros defined in the main file that are not used
446 C ObjC C++ ObjC++ Warning
447 Do not warn about using variadic macros when -pedantic
450 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
451 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.
454 C ObjC Var(warn_pointer_sign) Init(-1) Warning
455 Warn when a pointer differs in signedness in an assignment
459 A synonym for -std=c89 (for C) or -std=c++98 (for C++)
462 C ObjC C++ ObjC++ Joined
463 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
467 Enforce class member access control semantics
472 falt-external-templates
474 Change when template instances are emitted
478 Recognize the \"asm\" keyword
482 Recognize built-in functions
485 C ObjC C++ ObjC++ Joined
489 Check the return value of new
493 Allow the arguments of the '?' operator to have different types
497 Reduce the size of object files
499 fconstant-string-class=
501 -fconst-string-class=<name> Use class <name> for constant strings
505 Inline member functions by default
507 fdollars-in-identifiers
509 Permit '$' as an identifier character
516 Generate code to check exception specifications
522 C ObjC C++ ObjC++ Joined RejectNegative
523 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>
525 fextended-identifiers
527 Permit universal character names (\\u and \\U) in identifiers
530 C ObjC C++ ObjC++ Joined RejectNegative
531 -finput-charset=<cset> Specify the default character set for source files
539 Scope of for-init-statement variables is local to the loop
543 Do not assume that standard C libraries and \"main\" exist
547 Recognize GNU-defined keywords
551 Generate code for GNU runtime environment
557 C++ ObjC++ Optimization
564 Assume normal C execution environment
568 Enable support for huge objects
572 Export functions even if they can be inlined
574 fimplicit-inline-templates
576 Emit implicit instantiations of inline templates
580 Emit implicit instantiations of templates
583 C++ Var(flag_friend_injection)
584 Inject friend functions into enclosing namespace
589 flax-vector-conversions
591 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
595 Don't warn about uses of Microsoft extensions
597 fname-mangling-version-
605 Generate code for NeXT (Apple Mac OS X) runtime environment
609 Assume that receivers of Objective-C messages may be nil
617 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
618 ; to initialize any non-POD ivars in Objective-C++ classes.
619 fobjc-call-cxx-cdtors
620 ObjC++ Var(flag_objc_call_cxx_cdtors)
621 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed
623 fobjc-direct-dispatch
624 ObjC ObjC++ Var(flag_objc_direct_dispatch)
625 Allow fast jumps to the message dispatcher
627 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
628 ; @try, etc.) in source code.
630 ObjC ObjC++ Var(flag_objc_exceptions)
631 Enable Objective-C exception and synchronization syntax
634 ObjC ObjC++ Var(flag_objc_gc)
635 Enable garbage collection (GC) in Objective-C/Objective-C++ programs
637 ; Nonzero means that we generate NeXT setjmp based exceptions.
638 fobjc-sjlj-exceptions
639 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
640 Enable Objective-C setjmp exception handling runtime
643 C ObjC C++ ObjC++ Var(flag_openmp)
648 Recognize C++ kewords like \"compl\" and \"xor\"
652 Enable optional diagnostics
659 Look for and use PCH files even when preprocessing
663 Downgrade conformance errors to warnings
667 Treat the input file as already preprocessed
669 freplace-objc-classes
671 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
675 Enable automatic template instantiation
678 C++ ObjC++ Optimization
679 Generate run time type descriptor information
682 C ObjC C++ ObjC++ Optimization
683 Use the same size for double as for float
686 C ObjC C++ ObjC++ Optimization
687 Use the narrowest integer type possible for enumeration types
690 C ObjC C++ ObjC++ Optimization
691 Force the underlying type for \"wchar_t\" to be \"unsigned short\"
695 When \"signed\" or \"unsigned\" is not given make the bitfield signed
699 Make \"char\" signed by default
706 Display statistics accumulated during compilation
712 C ObjC C++ ObjC++ Joined RejectNegative UInteger
713 -ftabstop=<number> Distance between tab stops for column reporting
716 C++ ObjC++ Joined RejectNegative UInteger
717 -ftemplate-depth-<number> Specify maximum template instantiation depth
723 C++ ObjC++ Optimization
724 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics
728 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
732 Make \"char\" unsigned by default
736 Use __cxa_atexit to register destructors
738 fuse-cxa-get-exception-ptr
740 Use __cxa_get_exception_ptr in exception handling
742 fvisibility-inlines-hidden
744 Marks all inlined methods as having hidden visibility
748 Discard unused virtual functions
752 Implement vtables using thunks
756 Emit common-like symbols as weak symbols
759 C ObjC C++ ObjC++ Joined RejectNegative
760 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>
764 Generate a #line directive pointing at the current working directory
768 Emit cross referencing information
772 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode
776 Dump declarations to a .decl file
779 C ObjC C++ ObjC++ Joined Separate
780 -idirafter <dir> Add <dir> to the end of the system include path
783 C ObjC C++ ObjC++ Joined Separate
784 -imacros <file> Accept definition of macros in <file>
787 C ObjC C++ ObjC++ Joined Separate
788 -imultilib <dir> Set <dir> to be the multilib include subdirectory
791 C ObjC C++ ObjC++ Joined Separate
792 -include <file> Include the contents of <file> before other files
795 C ObjC C++ ObjC++ Joined Separate
796 -iprefix <path> Specify <path> as a prefix for next two options
799 C ObjC C++ ObjC++ Joined Separate
800 -isysroot <dir> Set <dir> to be the system root directory
803 C ObjC C++ ObjC++ Joined Separate
804 -isystem <dir> Add <dir> to the start of the system include path
807 C ObjC C++ ObjC++ Joined Separate
808 -iquote <dir> Add <dir> to the end of the quote include path
811 C ObjC C++ ObjC++ Joined Separate
812 -iwithprefix <dir> Add <dir> to the end of the system include path
815 C ObjC C++ ObjC++ Joined Separate
816 -iwithprefixbefore <dir> Add <dir> to the end of the main include path
825 C ObjC C++ ObjC++ Undocumented
829 Do not search standard system include directories (those specified with -isystem will still be used)
833 Do not search standard system include directories for C++
836 C ObjC C++ ObjC++ Joined Separate
837 ; Documented in common.opt
841 ; Documented in common.opt
845 ; Documented in common.opt
847 print-objc-runtime-info
849 Generate C header of platform-specific features
853 Print a checksum of the executable for PCH validity checking, and stop
857 Remap file names when including files
861 Conform to the ISO 1998 C++ standard
865 Conform to the ISO 1998 C++ standard, with extensions that are likely to
866 become a part of the upcoming ISO C++ standard, dubbed C++0x. Note that the
867 extensions enabled by this mode are experimental and may be removed in
868 future releases of GCC.
872 Conform to the ISO 1990 C standard
876 Conform to the ISO 1999 C standard
880 Deprecated in favor of -std=c99
884 Conform to the ISO 1998 C++ standard with GNU extensions
888 Conform to the ISO 1998 C++ standard, with GNU extensions and
889 extensions that are likely to become a part of the upcoming ISO C++
890 standard, dubbed C++0x. Note that the extensions enabled by this mode
891 are experimental and may be removed in future releases of GCC.
895 Conform to the ISO 1990 C standard with GNU extensions
899 Conform to the ISO 1999 C standard with GNU extensions
903 Deprecated in favor of -std=gnu99
907 Conform to the ISO 1990 C standard
911 Conform to the ISO 1990 C standard as amended in 1994
915 Conform to the ISO 1999 C standard
919 Deprecated in favor of -std=iso9899:1999
923 Enable traditional preprocessing
927 -trigraphs Support ISO C trigraphs
931 Do not predefine system-specific and GCC-specific macros
935 Enable verbose output
939 ; Documented in common.opt
941 ; This comment is to ensure we retain the blank line above.