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 3, 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 COPYING3. If not see
18 ; <http://www.gnu.org/licenses/>.
20 ; See the GCC internals manual for a description of this file's format.
22 ; Please try to keep this file in ASCII collating order.
37 C ObjC C++ ObjC++ Joined Separate
40 C ObjC C++ ObjC++ Joined Separate
41 -A<question>=<answer> Assert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>
45 Do not discard comments
49 Do not discard comments in macro expansions
52 C ObjC C++ ObjC++ Joined Separate
53 -D<macro>[=<val>] Define a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1
56 C ObjC C++ ObjC++ Undocumented
59 C ObjC C++ ObjC++ Joined Separate
60 -F <dir> Add <dir> to the end of the main framework include path
64 Print the name of header files as they are used
67 C ObjC C++ ObjC++ Joined Separate
68 -I <dir> Add <dir> to the end of the main include path
72 Generate make dependencies
75 C ObjC C++ ObjC++ Separate
76 Generate make dependencies and compile
79 C ObjC C++ ObjC++ Joined Separate
80 -MF <file> Write dependency output to the given file
84 Treat missing header files as generated files
88 Like -M but ignore system header files
91 C ObjC C++ ObjC++ Separate
92 Like -MD but ignore system header files
96 Generate phony targets for all headers
99 C ObjC C++ ObjC++ Joined Separate
100 -MQ <target> Add a MAKE-quoted target
103 C ObjC C++ ObjC++ Joined Separate
104 -MT <target> Add an unquoted target
108 Do not generate #line directives
111 C ObjC C++ ObjC++ Joined Separate
112 -U<macro> Undefine <macro>
115 C ObjC C++ ObjC++ Var(warn_abi) Warning
116 Warn about things that will change when compiling with an ABI-compliant compiler
119 C ObjC C++ ObjC++ Var(warn_psabi) Init(1) Undocumented
122 C ObjC C++ ObjC++ Var(warn_address) Warning
123 Warn about suspicious uses of memory addresses
126 C ObjC C++ ObjC++ Warning
127 Enable most warning messages
130 ObjC ObjC++ Var(warn_assign_intercept) Warning
131 Warn whenever an Objective-C assignment is being intercepted by the garbage collector
134 C ObjC Var(warn_bad_function_cast) Warning
135 Warn about casting functions to incompatible types
137 Wbuiltin-macro-redefined
138 C ObjC C++ ObjC++ Warning
139 Warn when a built-in preprocessor macro is undefined or redefined
142 C ObjC Var(warn_cxx_compat) Warning
143 Warn about C constructs that are not in the common subset of C and C++
146 C++ ObjC++ Var(warn_cxx0x_compat) Warning
147 Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x
150 C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
151 Warn about casts which discard qualifiers
154 C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning
155 Warn about subscripts whose type is \"char\"
158 C ObjC C++ ObjC++ Var(warn_clobbered) Init(-1) Warning
159 Warn about variables that might be changed by \"longjmp\" or \"vfork\"
162 C ObjC C++ ObjC++ Warning
163 Warn about possibly nested block comments, and C++ comments spanning more than one physical line
166 C ObjC C++ ObjC++ Warning
167 Synonym for -Wcomment
170 C ObjC C++ ObjC++ Var(warn_conversion) Warning
171 Warn for implicit type conversions that may change a value
174 C ObjC C++ ObjC++ Var(warn_sign_conversion) Init(-1)
175 Warn for implicit type conversions between signed and unsigned integers
178 C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
179 Warn when all constructors and destructors are private
181 Wdeclaration-after-statement
182 C ObjC Var(warn_declaration_after_statement) Warning
183 Warn when a declaration is found after a statement
186 C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning
187 Warn about deprecated compiler features
190 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
191 Warn about compile-time integer division by zero
194 C++ ObjC++ Var(warn_ecpp) Warning
195 Warn about violations of Effective C++ style rules
198 C ObjC C++ ObjC++ Var(warn_empty_body) Init(-1) Warning
199 Warn about an empty body in an if or else statement
202 C ObjC C++ ObjC++ Warning
203 Warn about stray tokens after #elif and #endif
206 C++ ObjC++ Var(warn_enum_compare) Init(1) Warning
207 Warn about comparison of different enum types
211 ; Documented in common.opt
213 Werror-implicit-function-declaration
214 C ObjC RejectNegative Warning
215 This switch is deprecated; use -Werror=implicit-function-declaration instead
218 C ObjC C++ ObjC++ Var(warn_float_equal) Warning
219 Warn if testing floating point numbers for equality
222 C ObjC C++ ObjC++ Warning
223 Warn about printf/scanf/strftime/strfmon format string anomalies
226 C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning
227 Warn if passing too many arguments to a function for its format string
230 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
231 Warn about format strings that are not literals
234 C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning
235 Warn about format strings that contain NUL bytes
238 C ObjC C++ ObjC++ Var(warn_format_security) Warning
239 Warn about possible security problems with format functions
242 C ObjC C++ ObjC++ Var(warn_format_y2k) Warning
243 Warn about strftime formats yielding 2-digit years
246 C ObjC Var(warn_format_zero_length) Warning
247 Warn about zero-length formats
250 C ObjC C++ ObjC++ Joined Warning
253 C C++ Var(warn_ignored_qualifiers) Init(-1) Warning
254 Warn whenever type qualifiers are ignored.
257 C ObjC C++ ObjC++ Var(warn_init_self) Warning
258 Warn about variables which are initialized to themselves
261 C ObjC C++ ObjC++ Warning
263 Wimplicit-function-declaration
264 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning
265 Warn about implicit function declarations
268 C ObjC Var(warn_implicit_int) Warning
269 Warn when a declaration does not specify a type
272 C ObjC C++ ObjC++ Undocumented
275 C ObjC Var(warn_int_to_pointer_cast) Init(1) Warning
276 Warn when there is a cast to a pointer from an integer of a different size
279 C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
280 Warn about invalid uses of the \"offsetof\" macro
283 C ObjC C++ ObjC++ Warning
284 Warn about PCH files that are found but not used
287 C ObjC C++ ObjC++ Var(warn_long_long) Init(1) Warning
288 Do not warn about using \"long long\" when -pedantic
291 C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning
292 Warn about suspicious declarations of \"main\"
295 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning
296 Warn about possibly missing braces around initializers
298 Wmissing-declarations
299 C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
300 Warn about global functions without previous declarations
302 Wmissing-field-initializers
303 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Init(-1) Warning
304 Warn about missing fields in struct initializers
306 Wmissing-format-attribute
307 C ObjC C++ ObjC++ Var(warn_missing_format_attribute) Warning
308 Warn about functions which might be candidates for format attributes
310 Wmissing-include-dirs
311 C ObjC C++ ObjC++ Warning
312 Warn about user-specified include directories that do not exist
314 Wmissing-parameter-type
315 C ObjC Var(warn_missing_parameter_type) Init(-1) Warning
316 Warn about function parameters declared without a type specifier in K&R-style functions
319 C ObjC Var(warn_missing_prototypes) Warning
320 Warn about global functions without prototypes
323 C ObjC C++ ObjC++ Warning
324 Warn about use of multi-character character constants
327 C ObjC Var(warn_nested_externs) Warning
328 Warn about \"extern\" declarations not at file scope
331 C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
332 Warn when non-templatized friend functions are declared within a template
335 C++ ObjC++ Var(warn_nonvdtor) Warning
336 Warn about non-virtual destructors
339 C ObjC Var(warn_nonnull) Warning
340 Warn about NULL being passed to argument slots marked as requiring non-NULL
343 C ObjC C++ ObjC++ Joined Warning
344 -Wnormalized=<id|nfc|nfkc> Warn about non-normalised Unicode strings
347 C++ ObjC++ Var(warn_old_style_cast) Warning
348 Warn if a C-style cast is used in a program
350 Wold-style-declaration
351 C ObjC Var(warn_old_style_declaration) Init(-1) Warning
352 Warn for obsolescent usage in a declaration
354 Wold-style-definition
355 C ObjC Var(warn_old_style_definition) Warning
356 Warn if an old-style parameter definition is used
359 C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1) Warning
360 Warn if a string is longer than the maximum portable length specified by the standard
363 C++ ObjC++ Var(warn_overloaded_virtual) Warning
364 Warn about overloaded virtual function names
367 C ObjC Var(warn_override_init) Init(-1) Warning
368 Warn about overriding initializers without side effects
370 Wpacked-bitfield-compat
371 C ObjC C++ ObjC++ Var(warn_packed_bitfield_compat) Init(-1) Warning
372 Warn about packed bit-fields whose offset changed in GCC 4.4
375 C ObjC C++ ObjC++ Var(warn_parentheses) Warning
376 Warn about possibly missing parentheses
379 C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
380 Warn when converting the type of pointers to member functions
383 C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning
384 Warn about function pointer arithmetic
387 C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
388 Warn when a pointer is cast to an integer of a different size
391 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
392 Warn about misuses of pragmas
395 ObjC ObjC++ Var(warn_protocol) Init(1) Warning
396 Warn if inherited methods are unimplemented
399 C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
400 Warn about multiple declarations of the same object
403 C++ ObjC++ Var(warn_reorder) Warning
404 Warn when the compiler reorders code
407 C ObjC C++ ObjC++ Var(warn_return_type) Warning
408 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
411 ObjC ObjC++ Var(warn_selector) Warning
412 Warn if a selector has multiple methods
415 C ObjC C++ ObjC++ Var(warn_sequence_point) Warning
416 Warn about possible violations of sequence point rules
419 C ObjC C++ ObjC++ Var(warn_sign_compare) Init(-1) Warning
420 Warn about signed-unsigned comparisons
423 C++ ObjC++ Var(warn_sign_promo) Warning
424 Warn when overload promotes from unsigned to signed
426 Wstrict-null-sentinel
428 Warn about uncasted NULL used as sentinel
431 C ObjC Var(warn_strict_prototypes) Warning
432 Warn about unprototyped function declarations
434 Wstrict-selector-match
435 ObjC ObjC++ Var(warn_strict_selector_match) Warning
436 Warn if type signatures of candidate methods do not match exactly
439 C C++ Var(warn_sync_nand) Init(1) Warning
440 Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used
443 C++ ObjC++ Var(warn_synth) Warning
444 Deprecated. This switch has no effect
447 C ObjC C++ ObjC++ Warning
448 Do not suppress warnings from system headers
451 C ObjC Var(warn_traditional) Warning
452 Warn about features not present in traditional C
454 Wtraditional-conversion
455 C ObjC Var(warn_traditional_conversion) Warning
456 Warn of prototypes causing type conversions different from what would happen in the absence of prototype
459 C ObjC C++ ObjC++ Warning
460 Warn if trigraphs are encountered that might affect the meaning of the program
463 ObjC ObjC++ Var(warn_undeclared_selector) Warning
464 Warn about @selector()s without previously declared methods
467 C ObjC C++ ObjC++ Warning
468 Warn if an undefined macro is used in an #if directive
471 C ObjC C++ ObjC++ Warning
472 Warn about unrecognized pragmas
475 C ObjC C++ ObjC++ Warning
476 Warn about macros defined in the main file that are not used
479 C ObjC C++ ObjC++ Warning
480 Do not warn about using variadic macros when -pedantic
483 C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
484 Warn if a variable length array is used
486 Wvolatile-register-var
487 C ObjC C++ ObjC++ Var(warn_volatile_register_var) Warning
488 Warn when a register variable is declared volatile
491 C ObjC C++ ObjC++ Var(warn_write_strings) Warning
492 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.
495 C ObjC Var(warn_pointer_sign) Init(-1) Warning
496 Warn when a pointer differs in signedness in an assignment
500 A synonym for -std=c89 (for C) or -std=c++98 (for C++)
503 C ObjC C++ ObjC++ Joined
504 ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
508 Enforce class member access control semantics
513 falt-external-templates
515 Change when template instances are emitted
519 Recognize the \"asm\" keyword
523 Recognize built-in functions
526 C ObjC C++ ObjC++ Joined
530 Check the return value of new
534 Allow the arguments of the '?' operator to have different types
538 Reduce the size of object files
540 fconstant-string-class=
542 -fconst-string-class=<name> Use class <name> for constant strings
546 Inline member functions by default
550 Preprocess directives only.
552 fdollars-in-identifiers
554 Permit '$' as an identifier character
561 Generate code to check exception specifications
567 C ObjC C++ ObjC++ Joined RejectNegative
568 -fexec-charset=<cset> Convert all strings and character constants to character set <cset>
570 fextended-identifiers
572 Permit universal character names (\\u and \\U) in identifiers
575 C ObjC C++ ObjC++ Joined RejectNegative
576 -finput-charset=<cset> Specify the default character set for source files
584 Scope of for-init-statement variables is local to the loop
588 Do not assume that standard C libraries and \"main\" exist
592 Recognize GNU-defined keywords
596 Generate code for GNU runtime environment
599 C ObjC Var(flag_gnu89_inline) Init(-1)
600 Use traditional GNU semantics for inline functions
606 C++ ObjC++ Optimization
613 Assume normal C execution environment
617 Enable support for huge objects
621 Export functions even if they can be inlined
623 fimplicit-inline-templates
625 Emit implicit instantiations of inline templates
629 Emit implicit instantiations of templates
632 C++ ObjC++ Var(flag_friend_injection)
633 Inject friend functions into enclosing namespace
638 flax-vector-conversions
640 Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
644 Don't warn about uses of Microsoft extensions
646 fname-mangling-version-
654 Generate code for NeXT (Apple Mac OS X) runtime environment
658 Assume that receivers of Objective-C messages may be nil
666 ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
667 ; to initialize any non-POD ivars in Objective-C++ classes.
668 fobjc-call-cxx-cdtors
669 ObjC++ Var(flag_objc_call_cxx_cdtors)
670 Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed
672 fobjc-direct-dispatch
673 ObjC ObjC++ Var(flag_objc_direct_dispatch)
674 Allow fast jumps to the message dispatcher
676 ; Nonzero means that we will allow new ObjC exception syntax (@throw,
677 ; @try, etc.) in source code.
679 ObjC ObjC++ Var(flag_objc_exceptions)
680 Enable Objective-C exception and synchronization syntax
683 ObjC ObjC++ Var(flag_objc_gc)
684 Enable garbage collection (GC) in Objective-C/Objective-C++ programs
686 ; Nonzero means that we generate NeXT setjmp based exceptions.
687 fobjc-sjlj-exceptions
688 ObjC ObjC++ Var(flag_objc_sjlj_exceptions) Init(-1)
689 Enable Objective-C setjmp exception handling runtime
692 C ObjC C++ ObjC++ Var(flag_openmp)
697 Recognize C++ keywords like \"compl\" and \"xor\"
701 Enable optional diagnostics
708 Look for and use PCH files even when preprocessing
712 Downgrade conformance errors to warnings
716 Treat the input file as already preprocessed
718 freplace-objc-classes
720 Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
724 Enable automatic template instantiation
727 C++ ObjC++ Optimization
728 Generate run time type descriptor information
731 C ObjC C++ ObjC++ Optimization
732 Use the same size for double as for float
735 C ObjC C++ ObjC++ Optimization
736 Use the narrowest integer type possible for enumeration types
739 C ObjC C++ ObjC++ Optimization
740 Force the underlying type for \"wchar_t\" to be \"unsigned short\"
744 When \"signed\" or \"unsigned\" is not given make the bitfield signed
748 Make \"char\" signed by default
755 Display statistics accumulated during compilation
761 C ObjC C++ ObjC++ Joined RejectNegative UInteger
762 -ftabstop=<number> Distance between tab stops for column reporting
765 C++ ObjC++ Joined RejectNegative UInteger
766 -ftemplate-depth-<number> Specify maximum template instantiation depth
772 C++ ObjC++ Optimization
773 -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics
777 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
781 Make \"char\" unsigned by default
785 Use __cxa_atexit to register destructors
787 fuse-cxa-get-exception-ptr
789 Use __cxa_get_exception_ptr in exception handling
791 fvisibility-inlines-hidden
793 Marks all inlined methods as having hidden visibility
795 fvisibility-ms-compat
796 C++ ObjC++ Var(flag_visibility_ms_compat)
797 Changes visibility to match Microsoft Visual Studio by default
801 Discard unused virtual functions
805 Implement vtables using thunks
809 Emit common-like symbols as weak symbols
812 C ObjC C++ ObjC++ Joined RejectNegative
813 -fwide-exec-charset=<cset> Convert all wide strings and character constants to character set <cset>
817 Generate a #line directive pointing at the current working directory
821 Emit cross referencing information
825 Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode
829 Dump declarations to a .decl file
831 femit-struct-debug-baseonly
833 -femit-struct-debug-baseonly Aggressive reduced debug info for structs
835 femit-struct-debug-reduced
837 -femit-struct-debug-reduced Conservative reduced debug info for structs
839 femit-struct-debug-detailed=
840 C ObjC C++ ObjC++ Joined
841 -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs
844 C ObjC C++ ObjC++ Joined Separate
845 -idirafter <dir> Add <dir> to the end of the system include path
848 C ObjC C++ ObjC++ Joined Separate
849 -imacros <file> Accept definition of macros in <file>
852 C ObjC C++ ObjC++ Joined Separate
853 -imultilib <dir> Set <dir> to be the multilib include subdirectory
856 C ObjC C++ ObjC++ Joined Separate
857 -include <file> Include the contents of <file> before other files
860 C ObjC C++ ObjC++ Joined Separate
861 -iprefix <path> Specify <path> as a prefix for next two options
864 C ObjC C++ ObjC++ Joined Separate
865 -isysroot <dir> Set <dir> to be the system root directory
868 C ObjC C++ ObjC++ Joined Separate
869 -isystem <dir> Add <dir> to the start of the system include path
872 C ObjC C++ ObjC++ Joined Separate
873 -iquote <dir> Add <dir> to the end of the quote include path
876 C ObjC C++ ObjC++ Joined Separate
877 -iwithprefix <dir> Add <dir> to the end of the system include path
880 C ObjC C++ ObjC++ Joined Separate
881 -iwithprefixbefore <dir> Add <dir> to the end of the main include path
887 C ObjC C++ ObjC++ Undocumented
891 Do not search standard system include directories (those specified with -isystem will still be used)
895 Do not search standard system include directories for C++
898 C ObjC C++ ObjC++ Joined Separate
899 ; Documented in common.opt
903 ; Documented in common.opt
907 ; Documented in common.opt
909 print-objc-runtime-info
911 Generate C header of platform-specific features
915 Print a checksum of the executable for PCH validity checking, and stop
919 Remap file names when including files
923 Conform to the ISO 1998 C++ standard
927 Conform to the ISO 1998 C++ standard, with extensions that are likely to
928 become a part of the upcoming ISO C++ standard, dubbed C++0x. Note that the
929 extensions enabled by this mode are experimental and may be removed in
930 future releases of GCC.
934 Conform to the ISO 1990 C standard
938 Conform to the ISO 1999 C standard
942 Deprecated in favor of -std=c99
946 Conform to the ISO 1998 C++ standard with GNU extensions
950 Conform to the ISO 1998 C++ standard, with GNU extensions and
951 extensions that are likely to become a part of the upcoming ISO C++
952 standard, dubbed C++0x. Note that the extensions enabled by this mode
953 are experimental and may be removed in future releases of GCC.
957 Conform to the ISO 1990 C standard with GNU extensions
961 Conform to the ISO 1999 C standard with GNU extensions
965 Deprecated in favor of -std=gnu99
969 Conform to the ISO 1990 C standard
973 Conform to the ISO 1990 C standard as amended in 1994
977 Conform to the ISO 1999 C standard
981 Deprecated in favor of -std=iso9899:1999
985 Enable traditional preprocessing
989 -trigraphs Support ISO C trigraphs
993 Do not predefine system-specific and GCC-specific macros
996 Common C ObjC C++ ObjC++
997 Enable verbose output
1001 ; Documented in common.opt
1003 ; This comment is to ensure we retain the blank line above.