; Options for the C, ObjC, C++ and ObjC++ front ends.
; Copyright (C) 2003 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 2, or (at your option) any later
; version.
; 
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
; for more details.
; 
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING.  If not, write to the Free
; Software Foundation, 59 Temple Place - Suite 330, Boston, MA
; 02111-1307, USA.


; This file is processed by the script opts.sh.  It is a database of
; command line options, with each record separated by a blank line,
; and each field appearing on its own line.  The first field is the
; command-line switch with the leading "-" removed.  All options
; beginning with "f" or "W" are implicitly assumed to take a "no-"
; form; this form should not be listed.  If you do not want this
; negative form and you want it to be automatically rejected, add
; RejectNegative to the second field.

; The second field is a space-separated list of which parts of the
; compiler recognize the switch, as declared by "Language" entries.
; If the switch takes an argument, then you should also specify
; "Joined" and/or "Separate" to indicate where the argument can
; appear.  If a Joined argument can legitimately be omitted, specify
; "JoinedOrMissing" instead of "Joined".  If the argument to a switch
; is a non-negative integer, you can specify "UInteger" and the switch
; decoder will convert the argument for you, or complain to the user
; if the argument is invalid.

; The third field is the help text to output with --help.  This is
; automatically line-wrapped on output.  Normally the switch is output
; automatically, with the help text on the right hand side of the
; output.  However, if the help text contains a tab character, the
; text to the left of the tab is output instead of the switch, and the
; text to its right forms the help.  This is useful for elaborating on
; what type of argument a switch takes, for example.  If the second
; field contains "Undocumented" then nothing is output with --help.
; Only do this with good reason like the switch being internal between
; the driver and the front end - it is not an excuse to leave a switch
; undocumented.

; Comments can appear on their own line anwhere in the file, preceded
; by a semicolon.  Whitespace is permitted before the semicolon.

; For each switch XXX below, an enumeration constant is created by the
; script opts.sh spelt OPT_XXX, but with all non-alphanumeric
; characters replaced with an underscore.

; Please try to keep this file in ASCII collating order.

Language
C

Language
ObjC

Language
C++

Language
ObjC++

-output-pch=
C ObjC C++ ObjC++ Joined Separate

A
C ObjC C++ ObjC++ Joined Separate
-A<question>=<answer>	Assert the <answer> to <question>.  Putting '-' before <question> disables the <answer> to <question>

C
C ObjC C++ ObjC++
Do not discard comments

CC
C ObjC C++ ObjC++
Do not discard comments in macro expansions

D
C ObjC C++ ObjC++ Joined Separate
-D<macro>[=<val>]	Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1

E
C ObjC C++ ObjC++ Undocumented

H
C ObjC C++ ObjC++
Print the name of header files as they are used

I
C ObjC C++ ObjC++ Joined Separate
-I <dir>	Add <dir> to the end of the main include path.  -I- gives more include path control; see info documentation

M
C ObjC C++ ObjC++
Generate make dependencies

MD
C ObjC C++ ObjC++ Separate
Generate make dependencies and compile

MF
C ObjC C++ ObjC++ Joined Separate
-MF <file>	Write dependency output to the given file

MG
C ObjC C++ ObjC++
Treat missing header files as generated files

MM
C ObjC C++ ObjC++
Like -M but ignore system header files

MMD
C ObjC C++ ObjC++ Separate
Like -MD but ignore system header files

MP
C ObjC C++ ObjC++
Generate phony targets for all headers

MQ
C ObjC C++ ObjC++ Joined Separate
-MQ <target>	Add a MAKE-quoted target

MT
C ObjC C++ ObjC++ Joined Separate
-MT <target>	Add an unquoted target

P
C ObjC C++ ObjC++
Do not generate #line directives

U
C ObjC C++ ObjC++ Joined Separate
-U<macro>	Undefine <macro>

Wabi
C++ ObjC++

Wall
C ObjC C++ ObjC++
Enable most warning messages

Wbad-function-cast
C ObjC
Warn about casting functions to incompatible types

Wcast-qual
C ObjC C++ ObjC++
Warn about casts which discard qualifiers

Wchar-subscripts
C ObjC C++ ObjC++
Warn about subscripts whose type is \"char\"

Wcomment
C ObjC C++ ObjC++
Warn about possibly nested block comments, and C++ comments spanning more than one physical line

Wcomments
C ObjC C++ ObjC++
Synonym for -Wcomment

Wconversion
C ObjC C++ ObjC++
Warn about possibly confusing type conversions

Wctor-dtor-privacy
C++ ObjC++
Warn when all constructors and destructors are private

Wdeclaration-after-statement
C ObjC
Warn when a declaration is found after a statement

Wdeprecated
C++ ObjC++
Warn about deprecated compiler features

Wdiv-by-zero
C ObjC
Warn about compile-time integer division by zero

Weffc++
C++ ObjC++
Warn about violations of Effective C++ style rules

Wendif-labels
C ObjC C++ ObjC++
Warn about stray tokens after #elif and #endif

Werror
C ObjC C++ ObjC++
; Documented in common.opt

Werror-implicit-function-declaration
C ObjC RejectNegative
Make implicit function declarations an error

Wfloat-equal
C ObjC C++ ObjC++
Warn if testing floating point numbers for equality

Wformat
C ObjC C++ ObjC++
Warn about printf/scanf/strftime/strfmon format string anomalies

Wformat-extra-args
C ObjC C++ ObjC++
Warn if passing too many arguments to a function for its format string

Wformat-nonliteral
C ObjC C++ ObjC++
Warn about format strings that are not literals

Wformat-security
C ObjC C++ ObjC++
Warn about possible security problems with format functions

Wformat-y2k
C ObjC C++ ObjC++
Warn about strftime formats yielding 2-digit years

Wformat-zero-length
C ObjC

Wformat=
C ObjC C++ ObjC++ Joined

Winit-self
C ObjC C++ ObjC++
Warn about variables which are initialized to themselves.

Wimplicit
C ObjC C++ ObjC++

Wimplicit-function-declaration
C ObjC
Warn about implicit function declarations

Wimplicit-int
C ObjC
Warn when a declaration does not specify a type

Wimport
C ObjC C++ ObjC++
Deprecated.  This switch has no effect.

Winvalid-offsetof
C++ ObjC++
Warn about invalid uses of the \"offsetof\" macro

Winvalid-pch
C ObjC C++ ObjC++
Warn about PCH files that are found but not used

Wlong-long
C ObjC C++ ObjC++
Do not warn about using \"long long\" when -pedantic

Wmain
C ObjC
Warn about suspicious declarations of \"main\"

Wmissing-braces
C ObjC C++ ObjC++
Warn about possibly missing braces around initializers

Wmissing-declarations
C ObjC
Warn about global functions without previous declarations

Wmissing-format-attribute
C ObjC C++ ObjC++
Warn about functions which might be candidates for format attributes

Wmissing-prototypes
C ObjC
Warn about global functions without prototypes

Wmultichar
C ObjC C++ ObjC++
Warn about use of multi-character character constants

Wnested-externs
C ObjC
Warn about \"extern\" declarations not at file scope

Wnon-template-friend
C++ ObjC++
Warn when non-templatized friend functions are declared within a template

Wnon-virtual-dtor
C++ ObjC++
Warn about non-virtual destructors

Wnonnull
C ObjC

Wold-style-cast
C++ ObjC++
Warn if a C-style cast is used in a program

Wold-style-definition
C ObjC
Warn if an old-style parameter definition is used

Woverloaded-virtual
C++ ObjC++
Warn about overloaded virtual function names

Wparentheses
C ObjC C++ ObjC++
Warn about possibly missing parentheses

Wpmf-conversions
C++ ObjC++
Warn when converting the type of pointers to member functions

Wpointer-arith
C ObjC C++ ObjC++
Warn about function pointer arithmetic

Wprotocol
ObjC ObjC++
Warn if inherited methods are unimplemented

Wredundant-decls
C ObjC C++ ObjC++
Warn about multiple declarations of the same object

Wreorder
C++ ObjC++
Warn when the compiler reorders code

Wreturn-type
C ObjC C++ ObjC++
Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)

Wselector
ObjC ObjC++
Warn if a selector has multiple methods

Wsequence-point
C ObjC
Warn about possible violations of sequence point rules

Wsign-compare
C ObjC C++ ObjC++
Warn about signed-unsigned comparisons

Wsign-promo
C++ ObjC++
Warn when overload promotes from unsigned to signed

Wstrict-prototypes
C ObjC
Warn about unprototyped function declarations

Wsynth
C++ ObjC++
Warn when synthesis behavior differs from Cfront

Wsystem-headers
C ObjC C++ ObjC++
Do not suppress warnings from system headers

Wtraditional
C ObjC
Warn about features not present in traditional C

Wtrigraphs
C ObjC C++ ObjC++
Warn if trigraphs are encountered that might affect the meaning of the program

Wundeclared-selector
ObjC ObjC++

Wundef
C ObjC C++ ObjC++
Warn if an undefined macro is used in an #if directive

Wunknown-pragmas
C ObjC C++ ObjC++
Warn about unrecognized pragmas

Wunused-macros
C ObjC C++ ObjC++
Warn about macros defined in the main file that are not used

Wwrite-strings
C ObjC C++ ObjC++
Give strings the type \"array of char\"

ansi
C ObjC C++ ObjC++
A synonym for -std=c89.  In a future version of GCC it will become synonymous with -std=c99 instead

d
C ObjC C++ ObjC++ Joined
; Documented in common.opt.  FIXME - what about -dI, -dD, -dN and -dD?

faccess-control
C++ ObjC++
Enforce class member access control semantics

fall-virtual
C++ ObjC++

falt-external-templates
C++ ObjC++
Change when template instances are emitted

fasm
C ObjC C++ ObjC++
Recognize the \"asm\" keyword

fbuiltin
C ObjC C++ ObjC++
Recognize built-in functions

fbuiltin-
C ObjC C++ ObjC++ Joined

fcheck-new
C++ ObjC++
Check the return value of new

fcond-mismatch
C ObjC C++ ObjC++
Allow the arguments of the '?' operator to have different types

fconserve-space
C++ ObjC++
Reduce the size of object files

fconst-strings
C++ ObjC++
Make string literals \"const char[]\" not \"char[]\"

fconstant-string-class=
ObjC ObjC++ Joined
-fconst-string-class=<name>	Use class <name> for constant strings

fdefault-inline
C++ ObjC++
Inline member functions by default

fdollars-in-identifiers
C ObjC C++ ObjC++
Permit '$' as an identifier character

fdump-
C ObjC C++ ObjC++ Joined RejectNegative
-fdump-<type>	Dump various compiler internals to a file

felide-constructors
C++ ObjC++

fenforce-eh-specs
C++ ObjC++
Generate code to check exception specifications

fenum-int-equiv
C++ ObjC++

fexec-charset=
C ObjC C++ ObjC++ Joined RejectNegative
-fexec-charset=<cset>	Convert all strings and character constants to character set <cset>

finput-charset=
C ObjC C++ ObjC++ Joined RejectNegative
-finput-charset=<cset>      Specify the default character set for source files.


fexternal-templates
C++ ObjC++

ffixed-form
C ObjC

ffixed-line-length-
C ObjC Joined

ffor-scope
C++ ObjC++
Scope of for-init-statement variables is local to the loop

ffreestanding
C ObjC
Do not assume that standard C libraries and \"main\" exist

fgnu-keywords
C++ ObjC++
Recognize GNU-defined keywords

fgnu-runtime
ObjC ObjC++
Generate code for GNU runtime environment

fguiding-decls
C++ ObjC++

fhandle-exceptions
C++ ObjC++

fhonor-std
C++ ObjC++

fhosted
C ObjC
Assume normal C execution environment

fhuge-objects
C++ ObjC++
Enable support for huge objects

fimplement-inlines
C++ ObjC++
Export functions even if they can be inlined

fimplicit-inline-templates
C++ ObjC++
Emit implicit instantiations of inline templates

fimplicit-templates
C++ ObjC++
Emit implicit instantiations of templates

flabels-ok
C++ ObjC++

fms-extensions
C ObjC C++ ObjC++
Don't warn about uses of Microsoft extensions

fname-mangling-version-
C++ ObjC++ Joined

fnew-abi
C++ ObjC++

fnext-runtime
ObjC ObjC++
Generate code for NeXT (Apple Mac OS X) runtime environment

fnil-receivers
ObjC ObjC++
Assume that receivers of Objective-C messages may be nil

fnonansi-builtins
C++ ObjC++

fnonnull-objects
C++ ObjC++

fobjc-exceptions
ObjC ObjC++
Enable Objective-C exception and synchronization syntax

foperator-names
C++ ObjC++
Recognize C++ kewords like \"compl\" and \"xor\"

foptional-diags
C++ ObjC++
Enable optional diagnostics

fpch-deps
C ObjC C++ ObjC++

fpermissive
C++ ObjC++
Downgrade conformance errors to warnings

fpreprocessed
C ObjC C++ ObjC++
Treat the input file as already preprocessed

freplace-objc-classes
ObjC ObjC++
Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime

frepo
C++ ObjC++
Enable automatic template instantiation

frtti
C++ ObjC++
Generate run time type descriptor information

fshort-double
C ObjC C++ ObjC++
Use the same size for double as for float

fshort-enums
C ObjC C++ ObjC++
Use the narrowest integer type possible for enumeration types

fshort-wchar
C ObjC C++ ObjC++
Force the underlying type for \"wchar_t\" to be \"unsigned short\"

fshow-column
C ObjC C++ ObjC++

fsigned-bitfields
C ObjC C++ ObjC++
When \"signed\" or \"unsigned\" is not given make the bitfield signed

fsigned-char
C ObjC C++ ObjC++
Make \"char\" signed by default

fsquangle
C++ ObjC++

fstats
C++ ObjC++
Display statistics accumulated during compilation

fstrict-prototype
C++ ObjC++

ftabstop=
C ObjC C++ ObjC++ Joined RejectNegative UInteger
-ftabstop=<number>	Distance between tab stops for column reporting

ftemplate-depth-
C++ ObjC++ Joined RejectNegative UInteger 
-ftemplate-depth-<number>	Specify maximum template instantiation depth

fthis-is-variable
C++ ObjC++

funsigned-bitfields
C ObjC C++ ObjC++
When \"signed\" or \"unsigned\" is not given make the bitfield unsigned

funsigned-char
C ObjC C++ ObjC++
Make \"char\" unsigned by default

fuse-cxa-atexit
C++ ObjC++
Use __cxa_atexit to register destructors

fvtable-gc
C++ ObjC++
Discard unused virtual functions

fvtable-thunks
C++ ObjC++
Implement vtables using thunks

fweak
C++ ObjC++
Emit common-like symbols as weak symbols

fwide-exec-charset=
C ObjC C++ ObjC++ Joined RejectNegative
-fwide-exec-charset=<cset>	Convert all wide strings and character constants to character set <cset>

fworking-directory
C ObjC C++ ObjC++
Generate a #line directive pointing at the current working directory

fxref
C++ ObjC++
Emit cross referencing information

fzero-link
ObjC ObjC++
Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode

gen-decls
ObjC ObjC++
Dump declarations to a .decl file

idirafter
C ObjC C++ ObjC++ Joined Separate
-idirafter <dir>	Add <dir> to the end of the system include path

imacros
C ObjC C++ ObjC++ Joined Separate
-imacros <file>	Accept definition of macros in <file>

include
C ObjC C++ ObjC++ Joined Separate
-include <file>	Include the contents of <file> before other files

iprefix
C ObjC C++ ObjC++ Joined Separate
-iprefix <path>	Specify <path> as a prefix for next two options

isysroot
C ObjC C++ ObjC++ Joined Separate
-isysroot <dir>	Set <dir> to be the system root directory

isystem
C ObjC C++ ObjC++ Joined Separate
-isystem <dir>	Add <dir> to the start of the system include path

iwithprefix
C ObjC C++ ObjC++ Joined Separate
-iwithprefix <dir>	Add <dir> to the end of the system include path

iwithprefixbefore
C ObjC C++ ObjC++ Joined Separate
-iwithprefixbefore <dir>	Add <dir> to the end of the main include path

lang-asm
C Undocumented

lang-objc
C ObjC C++ ObjC++ Undocumented

nostdinc
C ObjC C++ ObjC++
Do not search standard system include directories (those specified with -isystem will still be used)

nostdinc++
C++ ObjC++
Do not search standard system include directories for C++

o
C ObjC C++ ObjC++ Joined Separate
; Documented in common.opt

pedantic
C ObjC C++ ObjC++
; Documented in common.opt

pedantic-errors
C ObjC C++ ObjC++
; Documented in common.opt

print-objc-runtime-info
ObjC ObjC++
Generate C header of platform-specific features

remap
C ObjC C++ ObjC++
Remap file names when including files

std=c++98
C++ ObjC++
Conform to the ISO 1998 C++ standard

std=c89
C ObjC
Conform to the ISO 1990 C standard

std=c99
C ObjC
Conform to the ISO 1999 C standard

std=c9x
C ObjC
Deprecated in favor of -std=c99

std=gnu++98
C++ ObjC++
Conform to the ISO 1998 C++ standard with GNU extensions

std=gnu89
C ObjC
Conform to the ISO 1990 C standard with GNU extensions

std=gnu99
C ObjC
Conform to the ISO 1999 C standard with GNU extensions

std=gnu9x
C ObjC
Deprecated in favor of -std=gnu99

std=iso9899:1990
C ObjC
Deprecated in favor of -std=c89

std=iso9899:199409
C ObjC
Conform to the ISO 1990 C standard as amended in 1994

std=iso9899:1999
C ObjC
Deprecated in favor of -std=c99

std=iso9899:199x
C ObjC
Deprecated in favor of -std=c99

traditional-cpp
C ObjC C++ ObjC++
Enable traditional preprocessing

trigraphs
C ObjC C++ ObjC++
-trigraphs	Support ISO C trigraphs

undef
C ObjC C++ ObjC++
Do not predefine system-specific and GCC-specific macros

v
C ObjC C++ ObjC++
Enable verbose output

w
C ObjC C++ ObjC++
; Documented in common.opt

; This comment is to ensure we retain the blank line above.
