invoke.texi (Overall Options): Document --help=.
* doc/invoke.texi (Overall Options): Document --help=. * gcc.c (target_help_flag): Rename to print_subprocess_flag. (cc1_options): Pass --help= on to cc1. (display_help): Add description of --help=. (process_command): Add code to handle --help=. Allow translated --help and --target-help switches to be passed on to compiler sub-process. (main): Remove unused if statement. * opts.c (columns): Remove. (LEFT_COLUMN): Define. (wrap_help): Add columns argument. (print_filtered_help): Change parameters to be an include bitmask, an exclude bitmask, an any bitmask and the column width. Move the code to display the params list here. Add code to display the status of options rather than their descriptions if the quiet flag is not active. (print_specific_help): Change parameters to be an include bitmask, an exclude bitmask and an any bitmask. Move code to look up the column width here. Decide upon the title for an options listing. (common_handle_options): Add code to handle --help=. Adapt code for --help and --target-help to use the revised form of the print_specific_help function. (print_help): Delete. (print_param_help): Delete. (print_switch): Delete. * opts.h (cl_lang_count): Add prototype. (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS, CL_MAX_OPTION_CLASS): New defines. * optc-gen.awk: Add construction of cl_lang_count. * c.opt: Add Warning attribute to warning options and Optimization attribute to optimization options. * common.opt: Likewise. Add --help=. Add -fhelp and -ftarget-help as aliases for the transformed --help and --target-help options. * opt-functions.awk: Add code to handle Warning and Optimization attributes. From-SVN: r121849
This commit is contained in:
parent
dfcbeaa576
commit
c662432e8c
@ -1,3 +1,43 @@
|
||||
2007-02-12 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* doc/invoke.texi (Overall Options): Document --help=.
|
||||
* gcc.c (target_help_flag): Rename to print_subprocess_flag.
|
||||
(cc1_options): Pass --help= on to cc1.
|
||||
(display_help): Add description of --help=.
|
||||
(process_command): Add code to handle --help=. Allow translated
|
||||
--help and --target-help switches to be passed on to compiler
|
||||
sub-process.
|
||||
(main): Remove unused if statement.
|
||||
* opts.c (columns): Remove.
|
||||
(LEFT_COLUMN): Define.
|
||||
(wrap_help): Add columns argument.
|
||||
(print_filtered_help): Change parameters to be an include bitmask,
|
||||
an exclude bitmask, an any bitmask and the column width. Move the
|
||||
code to display the params list here. Add code to display the
|
||||
status of options rather than their descriptions if the quiet flag
|
||||
is not active.
|
||||
(print_specific_help): Change parameters to be an include bitmask,
|
||||
an exclude bitmask and an any bitmask. Move code to look up the
|
||||
column width here. Decide upon the title for an options listing.
|
||||
(common_handle_options): Add code to handle --help=. Adapt code
|
||||
for --help and --target-help to use the revised form of the
|
||||
print_specific_help function.
|
||||
(print_help): Delete.
|
||||
(print_param_help): Delete.
|
||||
(print_switch): Delete.
|
||||
* opts.h (cl_lang_count): Add prototype.
|
||||
(CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
|
||||
CL_MAX_OPTION_CLASS): New defines.
|
||||
* optc-gen.awk: Add construction of cl_lang_count.
|
||||
* c.opt: Add Warning attribute to warning options and Optimization
|
||||
attribute to optimization options.
|
||||
* common.opt: Likewise.
|
||||
Add --help=.
|
||||
Add -fhelp and -ftarget-help as aliases for the transformed --help
|
||||
and --target-help options.
|
||||
* opt-functions.awk: Add code to handle Warning and Optimization
|
||||
attributes.
|
||||
|
||||
2007-02-12 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/alpha/constraints.md: New file.
|
||||
|
178
gcc/c.opt
178
gcc/c.opt
@ -113,23 +113,23 @@ C ObjC C++ ObjC++ Joined Separate
|
||||
-U<macro> Undefine <macro>
|
||||
|
||||
Wabi
|
||||
C++ ObjC++ Var(warn_abi)
|
||||
C++ ObjC++ Var(warn_abi) Warning
|
||||
Warn about things that will change when compiling with an ABI-compliant compiler
|
||||
|
||||
Wall
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Enable most warning messages
|
||||
|
||||
Wassign-intercept
|
||||
ObjC ObjC++ Var(warn_assign_intercept)
|
||||
ObjC ObjC++ Var(warn_assign_intercept) Warning
|
||||
Warn whenever an Objective-C assignment is being intercepted by the garbage collector
|
||||
|
||||
Wbad-function-cast
|
||||
C ObjC Var(warn_bad_function_cast)
|
||||
C ObjC Var(warn_bad_function_cast) Warning
|
||||
Warn about casting functions to incompatible types
|
||||
|
||||
Wc++-compat
|
||||
C Var(warn_cxx_compat)
|
||||
C Var(warn_cxx_compat) Warning
|
||||
Warn about C constructs that are not in the common subset of C and C++
|
||||
|
||||
Wc++0x-compat
|
||||
@ -137,55 +137,55 @@ C++ ObjC++ Var(warn_cxx0x_compat)
|
||||
Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x
|
||||
|
||||
Wcast-qual
|
||||
C ObjC C++ ObjC++ Var(warn_cast_qual)
|
||||
C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
|
||||
Warn about casts which discard qualifiers
|
||||
|
||||
Wchar-subscripts
|
||||
C ObjC C++ ObjC++ Var(warn_char_subscripts)
|
||||
C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning
|
||||
Warn about subscripts whose type is \"char\"
|
||||
|
||||
Wclobbered
|
||||
C ObjC C++ ObjC++ Var(warn_clobbered) Init(-1)
|
||||
C ObjC C++ ObjC++ Var(warn_clobbered) Init(-1) Warning
|
||||
Warn about variables that might be changed by \"longjmp\" or \"vfork\"
|
||||
|
||||
Wcomment
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about possibly nested block comments, and C++ comments spanning more than one physical line
|
||||
|
||||
Wcomments
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Synonym for -Wcomment
|
||||
|
||||
Wconversion
|
||||
C ObjC C++ ObjC++ Var(warn_conversion)
|
||||
C ObjC C++ ObjC++ Var(warn_conversion) Warning
|
||||
Warn for implicit type conversions that may change a value
|
||||
|
||||
Wctor-dtor-privacy
|
||||
C++ ObjC++ Var(warn_ctor_dtor_privacy)
|
||||
C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
|
||||
Warn when all constructors and destructors are private
|
||||
|
||||
Wdeclaration-after-statement
|
||||
C ObjC Var(warn_declaration_after_statement)
|
||||
C ObjC Var(warn_declaration_after_statement) Warning
|
||||
Warn when a declaration is found after a statement
|
||||
|
||||
Wdeprecated
|
||||
C++ ObjC++ Var(warn_deprecated) Init(1)
|
||||
C++ ObjC++ Var(warn_deprecated) Init(1) Warning
|
||||
Warn about deprecated compiler features
|
||||
|
||||
Wdiv-by-zero
|
||||
C ObjC C++ Var(warn_div_by_zero) Init(1)
|
||||
C ObjC C++ Var(warn_div_by_zero) Init(1) Warning
|
||||
Warn about compile-time integer division by zero
|
||||
|
||||
Weffc++
|
||||
C++ ObjC++ Var(warn_ecpp)
|
||||
C++ ObjC++ Var(warn_ecpp) Warning
|
||||
Warn about violations of Effective C++ style rules
|
||||
|
||||
Wempty-body
|
||||
C ObjC C++ ObjC++ Var(warn_empty_body) Init(-1)
|
||||
C ObjC C++ ObjC++ Var(warn_empty_body) Init(-1) Warning
|
||||
Warn about an empty body in an if or else statement
|
||||
|
||||
Wendif-labels
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about stray tokens after #elif and #endif
|
||||
|
||||
Werror
|
||||
@ -193,53 +193,53 @@ C ObjC C++ ObjC++
|
||||
; Documented in common.opt
|
||||
|
||||
Werror-implicit-function-declaration
|
||||
C ObjC RejectNegative
|
||||
C ObjC RejectNegative Warning
|
||||
Make implicit function declarations an error
|
||||
|
||||
Wfloat-equal
|
||||
C ObjC C++ ObjC++ Var(warn_float_equal)
|
||||
C ObjC C++ ObjC++ Var(warn_float_equal) Warning
|
||||
Warn if testing floating point numbers for equality
|
||||
|
||||
Wformat
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about printf/scanf/strftime/strfmon format string anomalies
|
||||
|
||||
Wformat-extra-args
|
||||
C ObjC C++ ObjC++ Var(warn_format_extra_args)
|
||||
C ObjC C++ ObjC++ Var(warn_format_extra_args) Warning
|
||||
Warn if passing too many arguments to a function for its format string
|
||||
|
||||
Wformat-nonliteral
|
||||
C ObjC C++ ObjC++ Var(warn_format_nonliteral)
|
||||
C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
|
||||
Warn about format strings that are not literals
|
||||
|
||||
Wformat-security
|
||||
C ObjC C++ ObjC++ Var(warn_format_security)
|
||||
C ObjC C++ ObjC++ Var(warn_format_security) Warning
|
||||
Warn about possible security problems with format functions
|
||||
|
||||
Wformat-y2k
|
||||
C ObjC C++ ObjC++ Var(warn_format_y2k)
|
||||
C ObjC C++ ObjC++ Var(warn_format_y2k) Warning
|
||||
Warn about strftime formats yielding 2-digit years
|
||||
|
||||
Wformat-zero-length
|
||||
C ObjC Var(warn_format_zero_length)
|
||||
C ObjC Var(warn_format_zero_length) Warning
|
||||
Warn about zero-length formats
|
||||
|
||||
Wformat=
|
||||
C ObjC C++ ObjC++ Joined
|
||||
C ObjC C++ ObjC++ Joined Warning
|
||||
|
||||
Winit-self
|
||||
C ObjC C++ ObjC++ Var(warn_init_self)
|
||||
C ObjC C++ ObjC++ Var(warn_init_self) Warning
|
||||
Warn about variables which are initialized to themselves
|
||||
|
||||
Wimplicit
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
|
||||
Wimplicit-function-declaration
|
||||
C ObjC Var(mesg_implicit_function_declaration) Init(-1)
|
||||
C ObjC Var(mesg_implicit_function_declaration) Init(-1) Warning
|
||||
Warn about implicit function declarations
|
||||
|
||||
Wimplicit-int
|
||||
C ObjC Var(warn_implicit_int)
|
||||
C ObjC Var(warn_implicit_int) Warning
|
||||
Warn when a declaration does not specify a type
|
||||
|
||||
Wimport
|
||||
@ -247,211 +247,211 @@ C ObjC C++ ObjC++
|
||||
Deprecated. This switch has no effect
|
||||
|
||||
Wint-to-pointer-cast
|
||||
C ObjC Var(warn_int_to_pointer_cast) Init(1)
|
||||
C ObjC Var(warn_int_to_pointer_cast) Init(1) Warning
|
||||
Warn when there is a cast to a pointer from an integer of a different size
|
||||
|
||||
Winvalid-offsetof
|
||||
C++ ObjC++ Var(warn_invalid_offsetof) Init(1)
|
||||
C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
|
||||
Warn about invalid uses of the \"offsetof\" macro
|
||||
|
||||
Winvalid-pch
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about PCH files that are found but not used
|
||||
|
||||
Wlong-long
|
||||
C ObjC C++ ObjC++ Var(warn_long_long) Init(1)
|
||||
C ObjC C++ ObjC++ Var(warn_long_long) Init(1) Warning
|
||||
Do not warn about using \"long long\" when -pedantic
|
||||
|
||||
Wmain
|
||||
C ObjC
|
||||
C ObjC Warning
|
||||
Warn about suspicious declarations of \"main\"
|
||||
|
||||
Wmissing-braces
|
||||
C ObjC C++ ObjC++ Var(warn_missing_braces)
|
||||
C ObjC C++ ObjC++ Var(warn_missing_braces) Warning
|
||||
Warn about possibly missing braces around initializers
|
||||
|
||||
Wmissing-declarations
|
||||
C ObjC C++ ObjC++ Var(warn_missing_declarations)
|
||||
C ObjC C++ ObjC++ Var(warn_missing_declarations) Warning
|
||||
Warn about global functions without previous declarations
|
||||
|
||||
Wmissing-field-initializers
|
||||
C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Init(-1)
|
||||
C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Init(-1) Warning
|
||||
Warn about missing fields in struct initializers
|
||||
|
||||
Wmissing-format-attribute
|
||||
C ObjC C++ ObjC++ Var(warn_missing_format_attribute)
|
||||
C ObjC C++ ObjC++ Var(warn_missing_format_attribute) Warning
|
||||
Warn about functions which might be candidates for format attributes
|
||||
|
||||
Wmissing-include-dirs
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about user-specified include directories that do not exist
|
||||
|
||||
Wmissing-parameter-type
|
||||
C ObjC Var(warn_missing_parameter_type) Init(-1)
|
||||
C ObjC Var(warn_missing_parameter_type) Init(-1) Warning
|
||||
Warn about function parameters declared without a type specifier in K&R-style functions
|
||||
|
||||
Wmissing-prototypes
|
||||
C ObjC Var(warn_missing_prototypes)
|
||||
C ObjC Var(warn_missing_prototypes) Warning
|
||||
Warn about global functions without prototypes
|
||||
|
||||
Wmultichar
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about use of multi-character character constants
|
||||
|
||||
Wnested-externs
|
||||
C ObjC Var(warn_nested_externs)
|
||||
C ObjC Var(warn_nested_externs) Warning
|
||||
Warn about \"extern\" declarations not at file scope
|
||||
|
||||
Wnon-template-friend
|
||||
C++ ObjC++ Var(warn_nontemplate_friend) Init(1)
|
||||
C++ ObjC++ Var(warn_nontemplate_friend) Init(1) Warning
|
||||
Warn when non-templatized friend functions are declared within a template
|
||||
|
||||
Wnon-virtual-dtor
|
||||
C++ ObjC++ Var(warn_nonvdtor)
|
||||
C++ ObjC++ Var(warn_nonvdtor) Warning
|
||||
Warn about non-virtual destructors
|
||||
|
||||
Wnonnull
|
||||
C ObjC Var(warn_nonnull)
|
||||
C ObjC Var(warn_nonnull) Warning
|
||||
Warn about NULL being passed to argument slots marked as requiring non-NULL
|
||||
|
||||
Wnormalized=
|
||||
C ObjC C++ ObjC++ Joined
|
||||
C ObjC C++ ObjC++ Joined Warning
|
||||
-Wnormalized=<id|nfc|nfkc> Warn about non-normalised Unicode strings
|
||||
|
||||
Wold-style-cast
|
||||
C++ ObjC++ Var(warn_old_style_cast)
|
||||
C++ ObjC++ Var(warn_old_style_cast) Warning
|
||||
Warn if a C-style cast is used in a program
|
||||
|
||||
Wold-style-declaration
|
||||
C ObjC Var(warn_old_style_declaration) Init(-1)
|
||||
C ObjC Var(warn_old_style_declaration) Init(-1) Warning
|
||||
Warn for obsolescent usage in a declaration
|
||||
|
||||
Wold-style-definition
|
||||
C ObjC Var(warn_old_style_definition)
|
||||
C ObjC Var(warn_old_style_definition) Warning
|
||||
Warn if an old-style parameter definition is used
|
||||
|
||||
Woverlength-strings
|
||||
C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1)
|
||||
C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1) Warning
|
||||
Warn if a string is longer than the maximum portable length specified by the standard
|
||||
|
||||
Woverloaded-virtual
|
||||
C++ ObjC++ Var(warn_overloaded_virtual)
|
||||
C++ ObjC++ Var(warn_overloaded_virtual) Warning
|
||||
Warn about overloaded virtual function names
|
||||
|
||||
Woverride-init
|
||||
C ObjC Var(warn_override_init) Init(-1)
|
||||
C ObjC Var(warn_override_init) Init(-1) Warning
|
||||
Warn about overriding initializers without side effects
|
||||
|
||||
Wparentheses
|
||||
C ObjC C++ ObjC++ Var(warn_parentheses)
|
||||
C ObjC C++ ObjC++ Var(warn_parentheses) Warning
|
||||
Warn about possibly missing parentheses
|
||||
|
||||
Wpmf-conversions
|
||||
C++ ObjC++ Var(warn_pmf2ptr) Init(1)
|
||||
C++ ObjC++ Var(warn_pmf2ptr) Init(1) Warning
|
||||
Warn when converting the type of pointers to member functions
|
||||
|
||||
Wpointer-arith
|
||||
C ObjC C++ ObjC++ Var(warn_pointer_arith)
|
||||
C ObjC C++ ObjC++ Var(warn_pointer_arith) Warning
|
||||
Warn about function pointer arithmetic
|
||||
|
||||
Wpointer-to-int-cast
|
||||
C ObjC Var(warn_pointer_to_int_cast) Init(1)
|
||||
C ObjC Var(warn_pointer_to_int_cast) Init(1) Warning
|
||||
Warn when a pointer is cast to an integer of a different size
|
||||
|
||||
Wpragmas
|
||||
C ObjC C++ ObjC++ Var(warn_pragmas) Init(1)
|
||||
C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
|
||||
Warn about misuses of pragmas
|
||||
|
||||
Wprotocol
|
||||
ObjC ObjC++ Var(warn_protocol) Init(1)
|
||||
ObjC ObjC++ Var(warn_protocol) Init(1) Warning
|
||||
Warn if inherited methods are unimplemented
|
||||
|
||||
Wredundant-decls
|
||||
C ObjC C++ ObjC++ Var(warn_redundant_decls)
|
||||
C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
|
||||
Warn about multiple declarations of the same object
|
||||
|
||||
Wreorder
|
||||
C++ ObjC++ Var(warn_reorder)
|
||||
C++ ObjC++ Var(warn_reorder) Warning
|
||||
Warn when the compiler reorders code
|
||||
|
||||
Wreturn-type
|
||||
C ObjC C++ ObjC++ Var(warn_return_type)
|
||||
C ObjC C++ ObjC++ Var(warn_return_type) Warning
|
||||
Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
|
||||
|
||||
Wselector
|
||||
ObjC ObjC++ Var(warn_selector)
|
||||
ObjC ObjC++ Var(warn_selector) Warning
|
||||
Warn if a selector has multiple methods
|
||||
|
||||
Wsequence-point
|
||||
C ObjC C++ ObjC++ Var(warn_sequence_point)
|
||||
C ObjC C++ ObjC++ Var(warn_sequence_point) Warning
|
||||
Warn about possible violations of sequence point rules
|
||||
|
||||
Wsign-compare
|
||||
C ObjC C++ ObjC++ Var(warn_sign_compare) Init(-1)
|
||||
C ObjC C++ ObjC++ Var(warn_sign_compare) Init(-1) Warning
|
||||
Warn about signed-unsigned comparisons
|
||||
|
||||
Wsign-promo
|
||||
C++ ObjC++ Var(warn_sign_promo)
|
||||
C++ ObjC++ Var(warn_sign_promo) Warning
|
||||
Warn when overload promotes from unsigned to signed
|
||||
|
||||
Wstrict-null-sentinel
|
||||
C++ ObjC++
|
||||
C++ ObjC++ Warning
|
||||
Warn about uncasted NULL used as sentinel
|
||||
|
||||
Wstrict-prototypes
|
||||
C ObjC Var(warn_strict_prototypes)
|
||||
C ObjC Var(warn_strict_prototypes) Warning
|
||||
Warn about unprototyped function declarations
|
||||
|
||||
Wstrict-selector-match
|
||||
ObjC ObjC++ Var(warn_strict_selector_match)
|
||||
ObjC ObjC++ Var(warn_strict_selector_match) Warning
|
||||
Warn if type signatures of candidate methods do not match exactly
|
||||
|
||||
Wsynth
|
||||
C++ ObjC++ Var(warn_synth)
|
||||
C++ ObjC++ Var(warn_synth) Warning
|
||||
Warn when synthesis behavior differs from Cfront
|
||||
|
||||
Wsystem-headers
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Do not suppress warnings from system headers
|
||||
|
||||
Wtraditional
|
||||
C ObjC Var(warn_traditional)
|
||||
C ObjC Var(warn_traditional) Warning
|
||||
Warn about features not present in traditional C
|
||||
|
||||
Wtraditional-conversion
|
||||
C ObjC Var(warn_traditional_conversion)
|
||||
C ObjC Var(warn_traditional_conversion) Warning
|
||||
Warn of prototypes causing type conversions different from what would happen in the absence of prototype
|
||||
|
||||
Wtrigraphs
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn if trigraphs are encountered that might affect the meaning of the program
|
||||
|
||||
Wundeclared-selector
|
||||
ObjC ObjC++ Var(warn_undeclared_selector)
|
||||
ObjC ObjC++ Var(warn_undeclared_selector) Warning
|
||||
Warn about @selector()s without previously declared methods
|
||||
|
||||
Wundef
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn if an undefined macro is used in an #if directive
|
||||
|
||||
Wunknown-pragmas
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about unrecognized pragmas
|
||||
|
||||
Wunused-macros
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about macros defined in the main file that are not used
|
||||
|
||||
Wvariadic-macros
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Do not warn about using variadic macros when -pedantic
|
||||
|
||||
Wwrite-strings
|
||||
C ObjC C++ ObjC++ Var(warn_write_strings)
|
||||
C ObjC C++ ObjC++ Var(warn_write_strings) Warning
|
||||
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.
|
||||
|
||||
Wpointer-sign
|
||||
C ObjC Var(warn_pointer_sign) Init(-1)
|
||||
C ObjC Var(warn_pointer_sign) Init(-1) Warning
|
||||
Warn when a pointer differs in signedness in an assignment
|
||||
|
||||
ansi
|
||||
@ -554,7 +554,7 @@ fguiding-decls
|
||||
C++ ObjC++
|
||||
|
||||
fhandle-exceptions
|
||||
C++ ObjC++
|
||||
C++ ObjC++ Optimization
|
||||
|
||||
fhonor-std
|
||||
C++ ObjC++
|
||||
@ -675,19 +675,19 @@ C++ ObjC++
|
||||
Enable automatic template instantiation
|
||||
|
||||
frtti
|
||||
C++ ObjC++
|
||||
C++ ObjC++ Optimization
|
||||
Generate run time type descriptor information
|
||||
|
||||
fshort-double
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Optimization
|
||||
Use the same size for double as for float
|
||||
|
||||
fshort-enums
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Optimization
|
||||
Use the narrowest integer type possible for enumeration types
|
||||
|
||||
fshort-wchar
|
||||
C ObjC C++ ObjC++
|
||||
C ObjC C++ ObjC++ Optimization
|
||||
Force the underlying type for \"wchar_t\" to be \"unsigned short\"
|
||||
|
||||
fsigned-bitfields
|
||||
@ -720,7 +720,7 @@ fthis-is-variable
|
||||
C++ ObjC++
|
||||
|
||||
fthreadsafe-statics
|
||||
C++ ObjC++
|
||||
C++ ObjC++ Optimization
|
||||
-fno-threadsafe-statics Do not generate thread-safe code for initializing local statics
|
||||
|
||||
funsigned-bitfields
|
||||
|
343
gcc/common.opt
343
gcc/common.opt
@ -27,12 +27,29 @@
|
||||
Common
|
||||
Display this information
|
||||
|
||||
-param
|
||||
Common Separate
|
||||
--param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
|
||||
-help=
|
||||
Common Report Joined
|
||||
--help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params
|
||||
|
||||
-target-help
|
||||
Common
|
||||
Alias for --help=target
|
||||
|
||||
;; The following three entries are to work around the gcc driver
|
||||
;; program's insatiable desire to turn options starting with a
|
||||
;; double dash (--) into options starting with a dash f (-f).
|
||||
fhelp
|
||||
Common
|
||||
|
||||
fhelp=
|
||||
Common Joined
|
||||
|
||||
ftarget-help
|
||||
Common
|
||||
|
||||
-param
|
||||
Common Separate
|
||||
--param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
|
||||
|
||||
-version
|
||||
Common
|
||||
@ -54,11 +71,11 @@ Common RejectNegative
|
||||
This switch is deprecated; use -Wextra instead
|
||||
|
||||
Waggregate-return
|
||||
Common Var(warn_aggregate_return)
|
||||
Common Var(warn_aggregate_return) Warning
|
||||
Warn about returning structures, unions or arrays
|
||||
|
||||
Walways-true
|
||||
Common Var(warn_always_true)
|
||||
Common Var(warn_always_true) Warning
|
||||
Warn about comparisons that always evaluate to true
|
||||
|
||||
Warray-bounds
|
||||
@ -66,19 +83,19 @@ Common Var(warn_array_bounds)
|
||||
Warn if an array is accessed out of bounds
|
||||
|
||||
Wattributes
|
||||
Common Var(warn_attributes) Init(1)
|
||||
Common Var(warn_attributes) Init(1) Warning
|
||||
Warn about inappropriate attribute usage
|
||||
|
||||
Wcast-align
|
||||
Common Var(warn_cast_align)
|
||||
Common Var(warn_cast_align) Warning
|
||||
Warn about pointer casts which increase alignment
|
||||
|
||||
Wdeprecated-declarations
|
||||
Common Var(warn_deprecated_decl) Init(1)
|
||||
Common Var(warn_deprecated_decl) Init(1) Warning
|
||||
Warn about uses of __attribute__((deprecated)) declarations
|
||||
|
||||
Wdisabled-optimization
|
||||
Common Var(warn_disabled_optimization)
|
||||
Common Var(warn_disabled_optimization) Warning
|
||||
Warn when an optimization pass is disabled
|
||||
|
||||
Werror
|
||||
@ -90,7 +107,7 @@ Common Joined
|
||||
Treat specified warning as error
|
||||
|
||||
Wextra
|
||||
Common
|
||||
Common Warning
|
||||
Print extra (possibly unwanted) warnings
|
||||
|
||||
Wfatal-errors
|
||||
@ -98,103 +115,103 @@ Common Var(flag_fatal_errors)
|
||||
Exit on the first error occurred
|
||||
|
||||
Winline
|
||||
Common Var(warn_inline)
|
||||
Common Var(warn_inline) Warning
|
||||
Warn when an inlined function cannot be inlined
|
||||
|
||||
Wlarger-than-
|
||||
Common RejectNegative Joined UInteger
|
||||
Common RejectNegative Joined UInteger Warning
|
||||
-Wlarger-than-<number> Warn if an object is larger than <number> bytes
|
||||
|
||||
Wunsafe-loop-optimizations
|
||||
Common Var(warn_unsafe_loop_optimizations)
|
||||
Common Var(warn_unsafe_loop_optimizations) Warning
|
||||
Warn if the loop cannot be optimized due to nontrivial assumptions.
|
||||
|
||||
Wmissing-noreturn
|
||||
Common Var(warn_missing_noreturn)
|
||||
Common Var(warn_missing_noreturn) Warning
|
||||
Warn about functions which might be candidates for __attribute__((noreturn))
|
||||
|
||||
Woverflow
|
||||
Common Var(warn_overflow) Init(1)
|
||||
Common Var(warn_overflow) Init(1) Warning
|
||||
Warn about overflow in arithmetic expressions
|
||||
|
||||
Wpacked
|
||||
Common Var(warn_packed)
|
||||
Common Var(warn_packed) Warning
|
||||
Warn when the packed attribute has no effect on struct layout
|
||||
|
||||
Wpadded
|
||||
Common Var(warn_padded)
|
||||
Common Var(warn_padded) Warning
|
||||
Warn when padding is required to align structure members
|
||||
|
||||
Wshadow
|
||||
Common Var(warn_shadow)
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one local variable shadows another
|
||||
|
||||
Wstack-protector
|
||||
Common Var(warn_stack_protect)
|
||||
Common Var(warn_stack_protect) Warning
|
||||
Warn when not issuing stack smashing protection for some reason
|
||||
|
||||
Wstrict-aliasing
|
||||
Common
|
||||
Common Warning
|
||||
Warn about code which might break strict aliasing rules
|
||||
|
||||
Wstrict-aliasing=
|
||||
Common Joined UInteger
|
||||
Common Joined UInteger Warning
|
||||
Warn about code which might break strict aliasing rules
|
||||
|
||||
Wstring-literal-comparison
|
||||
Common Var(warn_string_literal_comparison)
|
||||
Common Var(warn_string_literal_comparison) Warning
|
||||
Warn about comparisons to constant string literals
|
||||
|
||||
Wswitch
|
||||
Common Var(warn_switch)
|
||||
Common Var(warn_switch) Warning
|
||||
Warn about enumerated switches, with no default, missing a case
|
||||
|
||||
Wswitch-default
|
||||
Common Var(warn_switch_default)
|
||||
Common Var(warn_switch_default) Warning
|
||||
Warn about enumerated switches missing a \"default:\" statement
|
||||
|
||||
Wswitch-enum
|
||||
Common Var(warn_switch_enum)
|
||||
Common Var(warn_switch_enum) Warning
|
||||
Warn about all enumerated switches missing a specific case
|
||||
|
||||
Wsystem-headers
|
||||
Common Var(warn_system_headers)
|
||||
Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers
|
||||
|
||||
Wuninitialized
|
||||
Common Var(warn_uninitialized)
|
||||
Common Var(warn_uninitialized) Warning
|
||||
Warn about uninitialized automatic variables
|
||||
|
||||
Wunreachable-code
|
||||
Common Var(warn_notreached)
|
||||
Common Var(warn_notreached) Warning
|
||||
Warn about code that will never be executed
|
||||
|
||||
Wunused
|
||||
Common
|
||||
Common Warning
|
||||
Enable all -Wunused- warnings
|
||||
|
||||
Wunused-function
|
||||
Common Var(warn_unused_function)
|
||||
Common Var(warn_unused_function) Warning
|
||||
Warn when a function is unused
|
||||
|
||||
Wunused-label
|
||||
Common Var(warn_unused_label)
|
||||
Common Var(warn_unused_label) Warning
|
||||
Warn when a label is unused
|
||||
|
||||
Wunused-parameter
|
||||
Common Var(warn_unused_parameter)
|
||||
Common Var(warn_unused_parameter) Warning
|
||||
Warn when a function parameter is unused
|
||||
|
||||
Wunused-value
|
||||
Common Var(warn_unused_value)
|
||||
Common Var(warn_unused_value) Warning
|
||||
Warn when an expression value is unused
|
||||
|
||||
Wunused-variable
|
||||
Common Var(warn_unused_variable)
|
||||
Common Var(warn_unused_variable) Warning
|
||||
Warn when a variable is unused
|
||||
|
||||
Wvolatile-register-var
|
||||
Common Var(warn_register_var)
|
||||
Common Var(warn_register_var) Warning
|
||||
Warn when a register variable is declared volatile
|
||||
|
||||
Wcoverage-mismatch
|
||||
@ -244,21 +261,21 @@ falign-functions=
|
||||
Common RejectNegative Joined UInteger
|
||||
|
||||
falign-jumps
|
||||
Common Report Var(align_jumps,0)
|
||||
Common Report Var(align_jumps,0) Optimization
|
||||
Align labels which are only reached by jumping
|
||||
|
||||
falign-jumps=
|
||||
Common RejectNegative Joined UInteger
|
||||
|
||||
falign-labels
|
||||
Common Report Var(align_labels,0)
|
||||
Common Report Var(align_labels,0) Optimization
|
||||
Align all labels
|
||||
|
||||
falign-labels=
|
||||
Common RejectNegative Joined UInteger
|
||||
|
||||
falign-loops
|
||||
Common Report Var(align_loops)
|
||||
Common Report Var(align_loops) Optimization
|
||||
Align the start of loops
|
||||
|
||||
falign-loops=
|
||||
@ -273,23 +290,23 @@ Common RejectNegative Joined UInteger
|
||||
; 3 if pointer arguments may not alias anything. True in Fortran.
|
||||
; Set by the front end.
|
||||
fargument-alias
|
||||
Common Report Var(flag_argument_noalias,0)
|
||||
Common Report Var(flag_argument_noalias,0) Optimization
|
||||
Specify that arguments may alias each other and globals
|
||||
|
||||
fargument-noalias
|
||||
Common Report Var(flag_argument_noalias,1) VarExists
|
||||
Common Report Var(flag_argument_noalias,1) VarExists Optimization
|
||||
Assume arguments may alias globals but not each other
|
||||
|
||||
fargument-noalias-global
|
||||
Common Report Var(flag_argument_noalias,2) VarExists
|
||||
Common Report Var(flag_argument_noalias,2) VarExists Optimization
|
||||
Assume arguments alias neither each other nor globals
|
||||
|
||||
fargument-noalias-anything
|
||||
Common Report Var(flag_argument_noalias,3) VarExists
|
||||
Common Report Var(flag_argument_noalias,3) VarExists Optimization
|
||||
Assume arguments alias no other storage
|
||||
|
||||
fasynchronous-unwind-tables
|
||||
Common Report Var(flag_asynchronous_unwind_tables)
|
||||
Common Report Var(flag_asynchronous_unwind_tables) Optimization
|
||||
Generate unwind tables that are exact at each instruction boundary
|
||||
|
||||
; -fcheck-bounds causes gcc to generate array bounds checks.
|
||||
@ -301,23 +318,23 @@ Common Report Var(flag_bounds_check)
|
||||
Generate code to check bounds before indexing arrays
|
||||
|
||||
fbranch-count-reg
|
||||
Common Report Var(flag_branch_on_count_reg) Init(1)
|
||||
Common Report Var(flag_branch_on_count_reg) Init(1) Optimization
|
||||
Replace add, compare, branch with branch on count register
|
||||
|
||||
fbranch-probabilities
|
||||
Common Report Var(flag_branch_probabilities)
|
||||
Common Report Var(flag_branch_probabilities) Optimization
|
||||
Use profiling information for branch probabilities
|
||||
|
||||
fbranch-target-load-optimize
|
||||
Common Report Var(flag_branch_target_load_optimize)
|
||||
Common Report Var(flag_branch_target_load_optimize) Optimization
|
||||
Perform branch target load optimization before prologue / epilogue threading
|
||||
|
||||
fbranch-target-load-optimize2
|
||||
Common Report Var(flag_branch_target_load_optimize2)
|
||||
Common Report Var(flag_branch_target_load_optimize2) Optimization
|
||||
Perform branch target load optimization after prologue / epilogue threading
|
||||
|
||||
fbtr-bb-exclusive
|
||||
Common Report Var(flag_btr_bb_exclusive)
|
||||
Common Report Var(flag_btr_bb_exclusive) Optimization
|
||||
Restrict target load migration not to re-use registers in any basic block
|
||||
|
||||
fcall-saved-
|
||||
@ -332,49 +349,49 @@ Common Joined RejectNegative
|
||||
; be saved across function calls, if that produces overall better code.
|
||||
; Optional now, so people can test it.
|
||||
fcaller-saves
|
||||
Common Report Var(flag_caller_saves)
|
||||
Common Report Var(flag_caller_saves) Optimization
|
||||
Save registers around function calls
|
||||
|
||||
fcommon
|
||||
Common Report Var(flag_no_common,0)
|
||||
Common Report Var(flag_no_common,0) Optimization
|
||||
Do not put uninitialized globals in the common section
|
||||
|
||||
fcprop-registers
|
||||
Common Report Var(flag_cprop_registers)
|
||||
Common Report Var(flag_cprop_registers) Optimization
|
||||
Perform a register copy-propagation optimization pass
|
||||
|
||||
fcrossjumping
|
||||
Common Report Var(flag_crossjumping)
|
||||
Common Report Var(flag_crossjumping) Optimization
|
||||
Perform cross-jumping optimization
|
||||
|
||||
fcse-follow-jumps
|
||||
Common Report Var(flag_cse_follow_jumps)
|
||||
Common Report Var(flag_cse_follow_jumps) Optimization
|
||||
When running CSE, follow jumps to their targets
|
||||
|
||||
fcse-skip-blocks
|
||||
Common Report Var(flag_cse_skip_blocks)
|
||||
Common Report Var(flag_cse_skip_blocks) Optimization
|
||||
When running CSE, follow conditional jumps
|
||||
|
||||
fcx-limited-range
|
||||
Common Report Var(flag_cx_limited_range)
|
||||
Common Report Var(flag_cx_limited_range) Optimization
|
||||
Omit range reduction step when performing complex division
|
||||
|
||||
fdata-sections
|
||||
Common Report Var(flag_data_sections)
|
||||
Common Report Var(flag_data_sections) Optimization
|
||||
Place data items into their own section
|
||||
|
||||
; Nonzero for -fdefer-pop: don't pop args after each function call
|
||||
; instead save them up to pop many calls' args with one insns.
|
||||
fdefer-pop
|
||||
Common Report Var(flag_defer_pop)
|
||||
Common Report Var(flag_defer_pop) Optimization
|
||||
Defer popping functions args from stack until later
|
||||
|
||||
fdelayed-branch
|
||||
Common Report Var(flag_delayed_branch)
|
||||
Common Report Var(flag_delayed_branch) Optimization
|
||||
Attempt to fill delay slots of branch instructions
|
||||
|
||||
fdelete-null-pointer-checks
|
||||
Common Report Var(flag_delete_null_pointer_checks)
|
||||
Common Report Var(flag_delete_null_pointer_checks) Optimization
|
||||
Delete useless null pointer checks
|
||||
|
||||
fdiagnostics-show-location=
|
||||
@ -398,7 +415,7 @@ Common Report Var(flag_dump_unnumbered) VarExists
|
||||
Suppress output of instruction numbers, line number notes and addresses in debugging dumps
|
||||
|
||||
fearly-inlining
|
||||
Common Report Var(flag_early_inlining) Init(1)
|
||||
Common Report Var(flag_early_inlining) Init(1) Optimization
|
||||
Perform early inlining
|
||||
|
||||
feliminate-dwarf2-dups
|
||||
@ -418,18 +435,18 @@ Common Report Var(flag_emit_class_debug_always) Init(1)
|
||||
Do not suppress C++ class debug information.
|
||||
|
||||
fexceptions
|
||||
Common Report Var(flag_exceptions)
|
||||
Common Report Var(flag_exceptions) Optimization
|
||||
Enable exception handling
|
||||
|
||||
fexpensive-optimizations
|
||||
Common Report Var(flag_expensive_optimizations)
|
||||
Common Report Var(flag_expensive_optimizations) Optimization
|
||||
Perform a number of minor, expensive optimizations
|
||||
|
||||
ffast-math
|
||||
Common
|
||||
|
||||
ffinite-math-only
|
||||
Common Report Var(flag_finite_math_only)
|
||||
Common Report Var(flag_finite_math_only) Optimization
|
||||
Assume no NaNs or infinities are generated
|
||||
|
||||
ffixed-
|
||||
@ -437,16 +454,16 @@ Common Joined RejectNegative
|
||||
-ffixed-<register> Mark <register> as being unavailable to the compiler
|
||||
|
||||
ffloat-store
|
||||
Common Report Var(flag_float_store)
|
||||
Common Report Var(flag_float_store) Optimization
|
||||
Don't allocate floats and doubles in extended-precision registers
|
||||
|
||||
; Nonzero for -fforce-addr: load memory address into a register before
|
||||
; reference to memory. This makes better cse but slower compilation.
|
||||
fforce-addr
|
||||
Common Report Var(flag_force_addr)
|
||||
Common Report Var(flag_force_addr) Optimization
|
||||
Copy memory address constants into registers before use
|
||||
|
||||
fforward-propagate
|
||||
fforward-propagate Optimization
|
||||
Common Report Var(flag_forward_propagate)
|
||||
Perform a forward propagation pass on RTL
|
||||
|
||||
@ -462,29 +479,29 @@ Common Report Var(flag_function_sections)
|
||||
Place each function into its own section
|
||||
|
||||
fgcse
|
||||
Common Report Var(flag_gcse)
|
||||
Common Report Var(flag_gcse) Optimization
|
||||
Perform global common subexpression elimination
|
||||
|
||||
fgcse-lm
|
||||
Common Report Var(flag_gcse_lm) Init(1)
|
||||
Common Report Var(flag_gcse_lm) Init(1) Optimization
|
||||
Perform enhanced load motion during global common subexpression elimination
|
||||
|
||||
fgcse-sm
|
||||
Common Report Var(flag_gcse_sm) Init(0)
|
||||
Common Report Var(flag_gcse_sm) Init(0) Optimization
|
||||
Perform store motion after global common subexpression elimination
|
||||
|
||||
fgcse-las
|
||||
Common Report Var(flag_gcse_las) Init(0)
|
||||
Common Report Var(flag_gcse_las) Init(0) Optimization
|
||||
Perform redundant load after store elimination in global common subexpression
|
||||
elimination
|
||||
|
||||
fgcse-after-reload
|
||||
Common Report Var(flag_gcse_after_reload)
|
||||
Common Report Var(flag_gcse_after_reload) Optimization
|
||||
Perform global common subexpression elimination after register allocation
|
||||
has finished
|
||||
|
||||
fguess-branch-probability
|
||||
Common Report Var(flag_guess_branch_prob)
|
||||
Common Report Var(flag_guess_branch_prob) Optimization
|
||||
Enable guessing of branch probabilities
|
||||
|
||||
; Nonzero means ignore `#ident' directives. 0 means handle them.
|
||||
@ -496,11 +513,11 @@ Common Report Var(flag_no_ident,0)
|
||||
Process #ident directives
|
||||
|
||||
fif-conversion
|
||||
Common Report Var(flag_if_conversion)
|
||||
Common Report Var(flag_if_conversion) Optimization
|
||||
Perform conversion of conditional jumps to branchless equivalents
|
||||
|
||||
fif-conversion2
|
||||
Common Report Var(flag_if_conversion2)
|
||||
Common Report Var(flag_if_conversion2) Optimization
|
||||
Perform conversion of conditional jumps to conditional execution
|
||||
|
||||
; -finhibit-size-directive inhibits output of .size for ELF.
|
||||
@ -521,11 +538,11 @@ Common Report Var(flag_no_inline,0) Init(2)
|
||||
Pay attention to the \"inline\" keyword
|
||||
|
||||
finline-functions
|
||||
Common Report Var(flag_inline_functions)
|
||||
Common Report Var(flag_inline_functions) Optimization
|
||||
Integrate simple functions into their callers
|
||||
|
||||
finline-functions-called-once
|
||||
Common Report Var(flag_inline_functions_called_once) Init(1)
|
||||
Common Report Var(flag_inline_functions_called_once) Init(1) Optimization
|
||||
Integrate functions called once into their callers
|
||||
|
||||
finline-limit-
|
||||
@ -540,31 +557,31 @@ Common Report Var(flag_instrument_function_entry_exit)
|
||||
Instrument function entry and exit with profiling calls
|
||||
|
||||
fipa-cp
|
||||
Common Report Var(flag_ipa_cp)
|
||||
Common Report Var(flag_ipa_cp) Optimization
|
||||
Perform Interprocedural constant propagation
|
||||
|
||||
fipa-pure-const
|
||||
Common Report Var(flag_ipa_pure_const) Init(0)
|
||||
Common Report Var(flag_ipa_pure_const) Init(0) Optimization
|
||||
Discover pure and const functions
|
||||
|
||||
fipa-pta
|
||||
Common Report Var(flag_ipa_pta) Init(0)
|
||||
Common Report Var(flag_ipa_pta) Init(0) Optimization
|
||||
Perform interprocedural points-to analysis
|
||||
|
||||
fipa-reference
|
||||
Common Report Var(flag_ipa_reference) Init(0)
|
||||
Common Report Var(flag_ipa_reference) Init(0) Optimization
|
||||
Discover readonly and non addressable static variables
|
||||
|
||||
fipa-type-escape
|
||||
Common Report Var(flag_ipa_type_escape) Init(0)
|
||||
Common Report Var(flag_ipa_type_escape) Init(0) Optimization
|
||||
Type based escape and alias analysis
|
||||
|
||||
fivopts
|
||||
Common Report Var(flag_ivopts) Init(1)
|
||||
Common Report Var(flag_ivopts) Init(1) Optimization
|
||||
Optimize induction variables on trees
|
||||
|
||||
fjump-tables
|
||||
Common Var(flag_jump_tables) Init(1)
|
||||
Common Var(flag_jump_tables) Init(1) Optimization
|
||||
Use jump tables for sufficiently large switch statements
|
||||
|
||||
fkeep-inline-functions
|
||||
@ -595,11 +612,11 @@ Report on permanent memory allocation
|
||||
; string constants and constants from constant pool, if 2 also constant
|
||||
; variables.
|
||||
fmerge-all-constants
|
||||
Common Report Var(flag_merge_constants,2) Init(1)
|
||||
Common Report Var(flag_merge_constants,2) Init(1) Optimization
|
||||
Attempt to merge identical constants and constant variables
|
||||
|
||||
fmerge-constants
|
||||
Common Report Var(flag_merge_constants,1) VarExists
|
||||
Common Report Var(flag_merge_constants,1) VarExists Optimization
|
||||
Attempt to merge identical constants across compilation units
|
||||
|
||||
fmessage-length=
|
||||
@ -607,11 +624,11 @@ Common RejectNegative Joined UInteger
|
||||
-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
|
||||
|
||||
fmodulo-sched
|
||||
Common Report Var(flag_modulo_sched)
|
||||
Common Report Var(flag_modulo_sched) Optimization
|
||||
Perform SMS based modulo scheduling before the first scheduling pass
|
||||
|
||||
fmove-loop-invariants
|
||||
Common Report Var(flag_move_loop_invariants) Init(1)
|
||||
Common Report Var(flag_move_loop_invariants) Init(1) Optimization
|
||||
Move loop invariant computations out of loops
|
||||
|
||||
fmudflap
|
||||
@ -627,23 +644,23 @@ Common RejectNegative Report Var(flag_mudflap_ignore_reads)
|
||||
Ignore read operations when inserting mudflap instrumentation
|
||||
|
||||
freschedule-modulo-scheduled-loops
|
||||
Common Report Var(flag_resched_modulo_sched)
|
||||
Common Report Var(flag_resched_modulo_sched) Optimization
|
||||
Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
|
||||
|
||||
fnon-call-exceptions
|
||||
Common Report Var(flag_non_call_exceptions)
|
||||
Common Report Var(flag_non_call_exceptions) Optimization
|
||||
Support synchronous non-call exceptions
|
||||
|
||||
fomit-frame-pointer
|
||||
Common Report Var(flag_omit_frame_pointer)
|
||||
Common Report Var(flag_omit_frame_pointer) Optimization
|
||||
When possible do not generate stack frames
|
||||
|
||||
foptimize-register-move
|
||||
Common Report Var(flag_regmove)
|
||||
Common Report Var(flag_regmove) Optimization
|
||||
Do the full register move optimization pass
|
||||
|
||||
foptimize-sibling-calls
|
||||
Common Report Var(flag_optimize_sibling_calls)
|
||||
Common Report Var(flag_optimize_sibling_calls) Optimization
|
||||
Optimize sibling and tail recursive calls
|
||||
|
||||
fpre-ipa-mem-report
|
||||
@ -655,11 +672,11 @@ Common Report Var(post_ipa_mem_report)
|
||||
Report on memory allocation before interprocedural optimization
|
||||
|
||||
fpack-struct
|
||||
Common Report Var(flag_pack_struct)
|
||||
Common Report Var(flag_pack_struct) Optimization
|
||||
Pack structure members together without holes
|
||||
|
||||
fpack-struct=
|
||||
Common RejectNegative Joined UInteger
|
||||
Common RejectNegative Joined UInteger Optimization
|
||||
-fpack-struct=<number> Set initial maximum structure member alignment
|
||||
|
||||
fpcc-struct-return
|
||||
@ -667,15 +684,15 @@ Common Report Var(flag_pcc_struct_return,1) VarExists
|
||||
Return small aggregates in memory, not registers
|
||||
|
||||
fpeel-loops
|
||||
Common Report Var(flag_peel_loops)
|
||||
Common Report Var(flag_peel_loops) Optimization
|
||||
Perform loop peeling
|
||||
|
||||
fpeephole
|
||||
Common Report Var(flag_no_peephole,0)
|
||||
Common Report Var(flag_no_peephole,0) Optimization
|
||||
Enable machine specific peephole optimizations
|
||||
|
||||
fpeephole2
|
||||
Common Report Var(flag_peephole2)
|
||||
Common Report Var(flag_peephole2) Optimization
|
||||
Enable an RTL peephole pass before sched2
|
||||
|
||||
fPIC
|
||||
@ -695,7 +712,7 @@ Common Report Var(flag_pie,1) VarExists
|
||||
Generate position-independent code for executables if possible (small mode)
|
||||
|
||||
fprefetch-loop-arrays
|
||||
Common Report Var(flag_prefetch_loop_arrays)
|
||||
Common Report Var(flag_prefetch_loop_arrays) Optimization
|
||||
Generate prefetch instructions, if available, for arrays in loops
|
||||
|
||||
fprofile
|
||||
@ -736,31 +753,31 @@ Common Report Var(flag_record_gcc_switches)
|
||||
Record gcc command line switches in the object file.
|
||||
|
||||
freg-struct-return
|
||||
Common Report Var(flag_pcc_struct_return,0) VarExists
|
||||
Common Report Var(flag_pcc_struct_return,0) VarExists Optimization
|
||||
Return small aggregates in registers
|
||||
|
||||
fregmove
|
||||
Common Report Var(flag_regmove)
|
||||
Common Report Var(flag_regmove) Optimization
|
||||
Enables a register move optimization
|
||||
|
||||
frename-registers
|
||||
Common Report Var(flag_rename_registers) Init(2)
|
||||
Common Report Var(flag_rename_registers) Init(2) Optimization
|
||||
Perform a register renaming optimization pass
|
||||
|
||||
freorder-blocks
|
||||
Common Report Var(flag_reorder_blocks)
|
||||
Common Report Var(flag_reorder_blocks) Optimization
|
||||
Reorder basic blocks to improve code placement
|
||||
|
||||
freorder-blocks-and-partition
|
||||
Common Report Var(flag_reorder_blocks_and_partition)
|
||||
Common Report Var(flag_reorder_blocks_and_partition) Optimization
|
||||
Reorder basic blocks and partition into hot and cold sections
|
||||
|
||||
freorder-functions
|
||||
Common Report Var(flag_reorder_functions)
|
||||
Common Report Var(flag_reorder_functions) Optimization
|
||||
Reorder functions to improve code placement
|
||||
|
||||
frerun-cse-after-loop
|
||||
Common Report Var(flag_rerun_cse_after_loop) Init(2)
|
||||
Common Report Var(flag_rerun_cse_after_loop) Init(2) Optimization
|
||||
Add a common subexpression elimination pass after loop optimizations
|
||||
|
||||
frerun-loop-opt
|
||||
@ -768,23 +785,23 @@ Common
|
||||
Does nothing. Preserved for backward compatibility.
|
||||
|
||||
frounding-math
|
||||
Common Report Var(flag_rounding_math)
|
||||
Common Report Var(flag_rounding_math) Optimization
|
||||
Disable optimizations that assume default FP rounding behavior
|
||||
|
||||
fsched-interblock
|
||||
Common Report Var(flag_schedule_interblock) Init(1)
|
||||
Common Report Var(flag_schedule_interblock) Init(1) Optimization
|
||||
Enable scheduling across basic blocks
|
||||
|
||||
fsched-spec
|
||||
Common Report Var(flag_schedule_speculative) Init(1)
|
||||
Common Report Var(flag_schedule_speculative) Init(1) Optimization
|
||||
Allow speculative motion of non-loads
|
||||
|
||||
fsched-spec-load
|
||||
Common Report Var(flag_schedule_speculative_load)
|
||||
Common Report Var(flag_schedule_speculative_load) Optimization
|
||||
Allow speculative motion of some loads
|
||||
|
||||
fsched-spec-load-dangerous
|
||||
Common Report Var(flag_schedule_speculative_load_dangerous)
|
||||
Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
|
||||
Allow speculative motion of more loads
|
||||
|
||||
fsched-verbose=
|
||||
@ -792,25 +809,25 @@ Common RejectNegative Joined
|
||||
-fsched-verbose=<number> Set the verbosity level of the scheduler
|
||||
|
||||
fsched2-use-superblocks
|
||||
Common Report Var(flag_sched2_use_superblocks)
|
||||
Common Report Var(flag_sched2_use_superblocks) Optimization
|
||||
If scheduling post reload, do superblock scheduling
|
||||
|
||||
fsched2-use-traces
|
||||
Common Report Var(flag_sched2_use_traces)
|
||||
Common Report Var(flag_sched2_use_traces) Optimization
|
||||
If scheduling post reload, do trace scheduling
|
||||
|
||||
fschedule-insns
|
||||
Common Report Var(flag_schedule_insns)
|
||||
Common Report Var(flag_schedule_insns) Optimization
|
||||
Reschedule instructions before register allocation
|
||||
|
||||
fschedule-insns2
|
||||
Common Report Var(flag_schedule_insns_after_reload)
|
||||
Common Report Var(flag_schedule_insns_after_reload) Optimization
|
||||
Reschedule instructions after register allocation
|
||||
|
||||
; sched_stalled_insns means that insns can be moved prematurely from the queue
|
||||
; of stalled insns into the ready list.
|
||||
fsched-stalled-insns
|
||||
Common Report Var(flag_sched_stalled_insns)
|
||||
Common Report Var(flag_sched_stalled_insns) Optimization
|
||||
Allow premature scheduling of queued insns
|
||||
|
||||
fsched-stalled-insns=
|
||||
@ -822,7 +839,7 @@ Common RejectNegative Joined UInteger
|
||||
; premature removal from the queue of stalled insns into the ready list (has
|
||||
; an effect only if the flag 'sched_stalled_insns' is set).
|
||||
fsched-stalled-insns-dep
|
||||
Common Report Var(flag_sched_stalled_insns_dep,1) Init(1)
|
||||
Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization
|
||||
Set dependence distance checking in premature scheduling of queued insns
|
||||
|
||||
fsched-stalled-insns-dep=
|
||||
@ -830,11 +847,11 @@ Common RejectNegative Joined UInteger
|
||||
-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
|
||||
|
||||
fsection-anchors
|
||||
Common Report Var(flag_section_anchors)
|
||||
Common Report Var(flag_section_anchors) Optimization
|
||||
Access data in the same section from shared anchor points
|
||||
|
||||
frtl-abstract-sequences
|
||||
Common Report Var(flag_rtl_seqabstr)
|
||||
Common Report Var(flag_rtl_seqabstr) Optimization
|
||||
Perform sequence abstraction optimization on RTL
|
||||
|
||||
fsee
|
||||
@ -846,7 +863,7 @@ Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(1)
|
||||
Show column numbers in diagnostics, when available. Default on
|
||||
|
||||
fsignaling-nans
|
||||
Common Report Var(flag_signaling_nans)
|
||||
Common Report Var(flag_signaling_nans) Optimization
|
||||
Disable optimizations observable by IEEE signaling NaNs
|
||||
|
||||
fsigned-zeros
|
||||
@ -854,11 +871,11 @@ Common Report Var(flag_signed_zeros) Init(1)
|
||||
Disable floating point optimizations that ignore the IEEE signedness of zero
|
||||
|
||||
fsingle-precision-constant
|
||||
Common Report Var(flag_single_precision_constant)
|
||||
Common Report Var(flag_single_precision_constant) Optimization
|
||||
Convert floating point constants to single precision constants
|
||||
|
||||
fsplit-ivs-in-unroller
|
||||
Common Report Var(flag_split_ivs_in_unroller) Init(1)
|
||||
Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
|
||||
Split lifetimes of induction variables when loops are unrolled
|
||||
|
||||
fsplit-wide-types
|
||||
@ -866,7 +883,7 @@ Common Report Var(flag_split_wide_types)
|
||||
Split wide types into independent registers
|
||||
|
||||
fvariable-expansion-in-unroller
|
||||
Common Report Var(flag_variable_expansion_in_unroller)
|
||||
Common Report Var(flag_variable_expansion_in_unroller) Optimization
|
||||
Apply variable expansion when loops are unrolled
|
||||
|
||||
; Emit code to probe the stack, to help detect stack overflow; also
|
||||
@ -903,7 +920,7 @@ Does nothing. Preserved for backward compatibility.
|
||||
; types do not alias expressions of certain other types. Only used
|
||||
; if alias analysis (in general) is enabled.
|
||||
fstrict-aliasing
|
||||
Common Report Var(flag_strict_aliasing)
|
||||
Common Report Var(flag_strict_aliasing) Optimization
|
||||
Assume strict aliasing rules apply
|
||||
|
||||
fstrict-overflow
|
||||
@ -919,7 +936,7 @@ Common Report Var(flag_test_coverage)
|
||||
Create data files needed by \"gcov\"
|
||||
|
||||
fthread-jumps
|
||||
Common Report Var(flag_thread_jumps)
|
||||
Common Report Var(flag_thread_jumps) Optimization
|
||||
Perform jump threading optimizations
|
||||
|
||||
ftime-report
|
||||
@ -931,7 +948,7 @@ Common Joined RejectNegative
|
||||
-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
|
||||
|
||||
ftoplevel-reorder
|
||||
Common Report Var(flag_toplevel_reorder) Init(1)
|
||||
Common Report Var(flag_toplevel_reorder) Init(1) Optimization
|
||||
Reorder top level functions, variables, and asms
|
||||
|
||||
ftracer
|
||||
@ -942,110 +959,114 @@ Perform superblock formation via tail duplication
|
||||
; (user-visible) trap. This is the case, for example, in nonstop
|
||||
; IEEE 754 arithmetic.
|
||||
ftrapping-math
|
||||
Common Report Var(flag_trapping_math) Init(1)
|
||||
Common Report Var(flag_trapping_math) Init(1) Optimization
|
||||
Assume floating-point operations can trap
|
||||
|
||||
ftrapv
|
||||
Common Report Var(flag_trapv)
|
||||
Common Report Var(flag_trapv) Optimization
|
||||
Trap for signed overflow in addition, subtraction and multiplication
|
||||
|
||||
ftree-ccp
|
||||
Common Report Var(flag_tree_ccp)
|
||||
Common Report Var(flag_tree_ccp) Optimization
|
||||
Enable SSA-CCP optimization on trees
|
||||
|
||||
ftree-store-ccp
|
||||
Common Report Var(flag_tree_store_ccp)
|
||||
Common Report Var(flag_tree_store_ccp) Optimization
|
||||
Enable SSA-CCP optimization for stores and loads
|
||||
|
||||
ftree-ch
|
||||
Common Report Var(flag_tree_ch)
|
||||
Common Report Var(flag_tree_ch) Optimization
|
||||
Enable loop header copying on trees
|
||||
|
||||
ftree-copyrename
|
||||
Common Report Var(flag_tree_copyrename)
|
||||
Common Report Var(flag_tree_copyrename) Optimization
|
||||
Replace SSA temporaries with better names in copies
|
||||
|
||||
ftree-copy-prop
|
||||
Common Report Var(flag_tree_copy_prop)
|
||||
Common Report Var(flag_tree_copy_prop) Optimization
|
||||
Enable copy propagation on trees
|
||||
|
||||
ftree-store-copy-prop
|
||||
Common Report Var(flag_tree_store_copy_prop)
|
||||
Common Report Var(flag_tree_store_copy_prop) Optimization
|
||||
Enable copy propagation for stores and loads
|
||||
|
||||
ftree-dce
|
||||
Common Report Var(flag_tree_dce)
|
||||
Common Report Var(flag_tree_dce) Optimization
|
||||
Enable SSA dead code elimination optimization on trees
|
||||
|
||||
ftree-dominator-opts
|
||||
Common Report Var(flag_tree_dom)
|
||||
Common Report Var(flag_tree_dom) Optimization
|
||||
Enable dominator optimizations
|
||||
|
||||
ftree-dse
|
||||
Common Report Var(flag_tree_dse)
|
||||
Common Report Var(flag_tree_dse) Optimization
|
||||
Enable dead store elimination
|
||||
|
||||
ftree-fre
|
||||
Common Report Var(flag_tree_fre)
|
||||
Common Report Var(flag_tree_fre) Optimization
|
||||
Enable Full Redundancy Elimination (FRE) on trees
|
||||
|
||||
ftree-loop-im
|
||||
Common Report Var(flag_tree_loop_im) Init(1)
|
||||
Common Report Var(flag_tree_loop_im) Init(1) Optimization
|
||||
Enable loop invariant motion on trees
|
||||
|
||||
ftree-loop-linear
|
||||
Common Report Var(flag_tree_loop_linear)
|
||||
Common Report Var(flag_tree_loop_linear) Optimization
|
||||
Enable linear loop transforms on trees
|
||||
|
||||
ftree-loop-ivcanon
|
||||
Common Report Var(flag_tree_loop_ivcanon) Init(1)
|
||||
Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
|
||||
Create canonical induction variables in loops
|
||||
|
||||
ftree-loop-optimize
|
||||
Common Report Var(flag_tree_loop_optimize) Init(1)
|
||||
Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
|
||||
Enable loop optimizations on tree level
|
||||
|
||||
ftree-pre
|
||||
Common Report Var(flag_tree_pre)
|
||||
Common Report Var(flag_tree_pre) Optimization
|
||||
Enable SSA-PRE optimization on trees
|
||||
|
||||
ftree-salias
|
||||
Common Report Var(flag_tree_salias)
|
||||
Common Report Var(flag_tree_salias) Optimization
|
||||
Perform structural alias analysis
|
||||
|
||||
ftree-sink
|
||||
Common Report Var(flag_tree_sink)
|
||||
Common Report Var(flag_tree_sink) Optimization
|
||||
Enable SSA code sinking on trees
|
||||
|
||||
ftree-sra
|
||||
Common Report Var(flag_tree_sra)
|
||||
Common Report Var(flag_tree_sra) Optimization
|
||||
Perform scalar replacement of aggregates
|
||||
|
||||
ftree-ter
|
||||
Common Report Var(flag_tree_ter)
|
||||
Common Report Var(flag_tree_ter) Optimization
|
||||
Replace temporary expressions in the SSA->normal pass
|
||||
|
||||
ftree-lrs
|
||||
Common Report Var(flag_tree_live_range_split) Optimization
|
||||
Perform live range splitting during the SSA->normal pass
|
||||
|
||||
ftree-vrp
|
||||
Common Report Var(flag_tree_vrp) Init(0)
|
||||
Common Report Var(flag_tree_vrp) Init(0) Optimization
|
||||
Perform Value Range Propagation on trees
|
||||
|
||||
funit-at-a-time
|
||||
Common Report Var(flag_unit_at_a_time)
|
||||
Common Report Var(flag_unit_at_a_time) Optimization
|
||||
Compile whole compilation unit at a time
|
||||
|
||||
funroll-loops
|
||||
Common Report Var(flag_unroll_loops)
|
||||
Common Report Var(flag_unroll_loops) Optimization
|
||||
Perform loop unrolling when iteration count is known
|
||||
|
||||
funroll-all-loops
|
||||
Common Report Var(flag_unroll_all_loops)
|
||||
Common Report Var(flag_unroll_all_loops) Optimization
|
||||
Perform loop unrolling for all loops
|
||||
|
||||
; Nonzero means that loop optimizer may assume that the induction variables
|
||||
; that control loops do not overflow and that the loops with nontrivial
|
||||
; exit condition are not infinite
|
||||
funsafe-loop-optimizations
|
||||
Common Report Var(flag_unsafe_loop_optimizations)
|
||||
Common Report Var(flag_unsafe_loop_optimizations) Optimization
|
||||
Allow loop optimizations to assume that the loops behave in normal way
|
||||
|
||||
; Nonzero means that unsafe floating-point math optimizations are allowed
|
||||
@ -1053,27 +1074,27 @@ Allow loop optimizations to assume that the loops behave in normal way
|
||||
; are allowed to assume that their arguments and results are "normal"
|
||||
; (e.g., nonnegative for SQRT).
|
||||
funsafe-math-optimizations
|
||||
Common Report Var(flag_unsafe_math_optimizations)
|
||||
Common Report Var(flag_unsafe_math_optimizations) Optimization
|
||||
Allow math optimizations that may violate IEEE or ISO standards
|
||||
|
||||
funswitch-loops
|
||||
Common Report Var(flag_unswitch_loops)
|
||||
Common Report Var(flag_unswitch_loops) Optimization
|
||||
Perform loop unswitching
|
||||
|
||||
funwind-tables
|
||||
Common Report Var(flag_unwind_tables)
|
||||
Common Report Var(flag_unwind_tables) Optimization
|
||||
Just generate unwind tables for exception handling
|
||||
|
||||
fvar-tracking
|
||||
Common Report Var(flag_var_tracking) VarExists
|
||||
Common Report Var(flag_var_tracking) VarExists Optimization
|
||||
Perform variable tracking
|
||||
|
||||
ftree-vectorize
|
||||
Common Report Var(flag_tree_vectorize)
|
||||
Common Report Var(flag_tree_vectorize) Optimization
|
||||
Enable loop vectorization on trees
|
||||
|
||||
ftree-vect-loop-version
|
||||
Common Report Var(flag_tree_vect_loop_version) Init(1)
|
||||
Common Report Var(flag_tree_vect_loop_version) Init(1) Optimization
|
||||
Enable loop versioning when doing loop vectorization on trees
|
||||
|
||||
ftree-vectorizer-verbose=
|
||||
@ -1100,19 +1121,19 @@ Common Joined RejectNegative
|
||||
|
||||
|
||||
fvpt
|
||||
Common Report Var(flag_value_profile_transformations)
|
||||
Common Report Var(flag_value_profile_transformations) Optimization
|
||||
Use expression value profiles in optimizations
|
||||
|
||||
fweb
|
||||
Common Report Var(flag_web) Init(2)
|
||||
Common Report Var(flag_web) Init(2) Optimization
|
||||
Construct webs and split unrelated uses of single variable
|
||||
|
||||
fwhole-program
|
||||
Common Report Var(flag_whole_program) Init(0)
|
||||
Common Report Var(flag_whole_program) Init(0) Optimization
|
||||
Perform whole program optimizations
|
||||
|
||||
fwrapv
|
||||
Common Report Var(flag_wrapv)
|
||||
Common Report Var(flag_wrapv) Optimization
|
||||
Assume signed arithmetic overflow wraps around
|
||||
|
||||
fzero-initialized-in-bss
|
||||
|
@ -160,8 +160,9 @@ in the following sections.
|
||||
@table @emph
|
||||
@item Overall Options
|
||||
@xref{Overall Options,,Options Controlling the Kind of Output}.
|
||||
@gccoptlist{-c -S -E -o @var{file} -combine -pipe -pass-exit-codes @gol
|
||||
-x @var{language} -v -### --help --target-help --version @@@var{file}}
|
||||
@gccoptlist{-c -S -E -o @var{file} -combine -pipe -pass-exit-codes @gol
|
||||
-x @var{language} -v -### --help@r{[}=@var{class}@r{]} --target-help @gol
|
||||
--version @@@var{file}}
|
||||
|
||||
@item C Language Options
|
||||
@xref{C Dialect Options,,Options Controlling C Dialect}.
|
||||
@ -1078,15 +1079,123 @@ Print (on the standard output) a description of the command line options
|
||||
understood by @command{gcc}. If the @option{-v} option is also specified
|
||||
then @option{--help} will also be passed on to the various processes
|
||||
invoked by @command{gcc}, so that they can display the command line options
|
||||
they accept. If the @option{-Wextra} option is also specified then command
|
||||
line options which have no documentation associated with them will also
|
||||
be displayed.
|
||||
they accept. If the @option{-Wextra} option has also been specified
|
||||
(prior to the @option{--help} option), then command line options which
|
||||
have no documentation associated with them will also be displayed.
|
||||
|
||||
@item --target-help
|
||||
@opindex target-help
|
||||
Print (on the standard output) a description of target specific command
|
||||
Print (on the standard output) a description of target-specific command
|
||||
line options for each tool.
|
||||
|
||||
@item --help=@var{class}@r{[},@var{qualifier}@r{]}
|
||||
Print (on the standard output) a description of the command line
|
||||
options understood by the compiler that fit into a specific class.
|
||||
The class can be one of @var{optimizers}, @var{warnings}, @var{target}
|
||||
or @var{params}:
|
||||
|
||||
@table @gcctabopt
|
||||
@item @var{optimizers}
|
||||
This will display all of the optimization options supported by the
|
||||
compiler.
|
||||
|
||||
@item @var{warnings}
|
||||
This will display all of the options controlling warning messages
|
||||
produced by the compiler.
|
||||
|
||||
@item @var{target}
|
||||
This will display target-specific options. Unlike the
|
||||
@option{--target-help} option however, target-specific options of the
|
||||
linker and assembler will not be displayed. This is because those
|
||||
tools do not currently support the extended @option{--help=} syntax.
|
||||
|
||||
@item @var{params}
|
||||
This will display the values recognized by the @option{--param}
|
||||
option.
|
||||
@end table
|
||||
|
||||
It is possible to further refine the output of the @option{--help=}
|
||||
option by adding a comma separated list of qualifiers after the
|
||||
class. These can be any from the following list:
|
||||
|
||||
@table @gcctabopt
|
||||
@item undocumented
|
||||
Display only those options which are undocumented.
|
||||
|
||||
@item joined
|
||||
Display options which take an argument that appears after an equal
|
||||
sign in the same continuous piece of text, such as:
|
||||
@samp{--help=target}.
|
||||
|
||||
@item separate
|
||||
Display options which take an argument that appears as a separate word
|
||||
following the original option, such as: @samp{-o output-file}.
|
||||
@end table
|
||||
|
||||
Thus for example to display all the undocumented target-specific
|
||||
switches supported by the compiler the following can be used:
|
||||
|
||||
@smallexample
|
||||
--help=target,undocumented
|
||||
@end smallexample
|
||||
|
||||
The sense of a qualifier can be inverted by prefixing it with the
|
||||
@var{^} character, so for example to display all binary warning
|
||||
options (i.e. ones that are either on or off and that do not take an
|
||||
argument), which have a description the following can be used:
|
||||
|
||||
@smallexample
|
||||
--help=warnings,^joined,^undocumented
|
||||
@end smallexample
|
||||
|
||||
A class can also be used as a qualifier, although this usually
|
||||
restricts the output by so much that there is nothing to display. One
|
||||
case where it does work however is when one of the classes is
|
||||
@var{target}. So for example to display all the target-specific
|
||||
optimization options the following can be used:
|
||||
|
||||
@smallexample
|
||||
--help=target,optimizers
|
||||
@end smallexample
|
||||
|
||||
The @option{--help=} option can be repeated on the command line. Each
|
||||
successive use will display its requested class of options, skipping
|
||||
those that have already been displayed.
|
||||
|
||||
If the @option{-Q} option appears on the command line before the
|
||||
@option{--help=} option, then the descriptive text displayed by
|
||||
@option{--help=} is changed. Instead of describing the displayed
|
||||
options, an indication is given as to whether the option is enabled,
|
||||
disabled or set to a specific value (assuming that the compiler
|
||||
knows this at the point where the @option{--help=} option is used).
|
||||
|
||||
Here is a truncated example from the ARM port of @command{gcc}:
|
||||
|
||||
@smallexample
|
||||
% gcc -Q -mabi=2 --help=target -c
|
||||
The following options are target specific:
|
||||
-mabi= 2
|
||||
-mabort-on-noreturn [disabled]
|
||||
-mapcs [disabled]
|
||||
@end smallexample
|
||||
|
||||
The output is sensitive to the effects of previous command line
|
||||
options, so for example it is possible to find out which optimizations
|
||||
are enabled at @option{-O2} by using:
|
||||
|
||||
@smallexample
|
||||
-O2 --help=optimizers
|
||||
@end smallexample
|
||||
|
||||
Alternatively you can discover which binary optimizations are enabled
|
||||
by @option{-O3} by using:
|
||||
|
||||
@smallexample
|
||||
gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
|
||||
gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
|
||||
diff /tmp/O2-opts /tmp/O3-opts | grep enabled
|
||||
@end smallexample
|
||||
|
||||
@item --version
|
||||
@opindex version
|
||||
Display the version number and copyrights of the invoked GCC@.
|
||||
@ -2754,7 +2863,7 @@ if a variable may be clobbered by a @code{setjmp} call.
|
||||
|
||||
These warnings are possible only in optimizing compilation,
|
||||
because they require data flow information that is computed only
|
||||
when optimizing. If you do not specify @option{-O}, you will not get
|
||||
when optimizing. If you do not specify @option{-O}, you will not get
|
||||
these warnings. Instead, GCC will issue a warning about @option{-Wuninitialized}
|
||||
requiring @option{-O}.
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2007-02-12 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* lang.opt: Add Warning attribute to warning options.
|
||||
|
||||
2007-02-11 Daniel Franke <franke.daniel@gmail.com>
|
||||
|
||||
* intrinsic.texi (HOSTNM): Fix typographical error in syntax.
|
||||
|
@ -1,5 +1,5 @@
|
||||
; Options for the Fortran 95 front end.
|
||||
; Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
; Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
;
|
||||
; This file is part of GCC.
|
||||
;
|
||||
@ -38,43 +38,43 @@ Fortran
|
||||
; Documented in C
|
||||
|
||||
Waliasing
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about possible aliasing of dummy arguments
|
||||
|
||||
Wampersand
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about missing ampersand in continued character constants
|
||||
|
||||
Wcharacter-truncation
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about truncated character expressions
|
||||
|
||||
Wconversion
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about implicit conversion
|
||||
|
||||
Wimplicit-interface
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about calls with implicit interface
|
||||
|
||||
Wline-truncation
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about truncated source lines
|
||||
|
||||
Wnonstd-intrinsics
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about usage of non-standard intrinsics
|
||||
|
||||
Wsurprising
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about \"suspicious\" constructs
|
||||
|
||||
Wtabs
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Permit nonconforming uses of the tab character
|
||||
|
||||
Wunderflow
|
||||
Fortran
|
||||
Fortran Warning
|
||||
Warn about underflow of numerical constant expressions
|
||||
|
||||
fall-intrinsics
|
||||
|
64
gcc/gcc.c
64
gcc/gcc.c
@ -1,7 +1,7 @@
|
||||
/* Compiler driver program that can handle many languages.
|
||||
Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
Inc.
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
@ -179,9 +179,9 @@ static int verbose_flag;
|
||||
shell scripts to capture the driver-generated command line. */
|
||||
static int verbose_only_flag;
|
||||
|
||||
/* Flag indicating to print target specific command line options. */
|
||||
/* Flag indicating how to print command line options of sub-processes. */
|
||||
|
||||
static int target_help_flag;
|
||||
static int print_subprocess_help;
|
||||
|
||||
/* Flag indicating whether we should report subprocess execution times
|
||||
(if this is supported by the system - see pexecute.c). */
|
||||
@ -805,6 +805,7 @@ static const char *cc1_options =
|
||||
%{v:-version} %{pg:-p} %{p} %{f*} %{undef}\
|
||||
%{Qn:-fno-ident} %{--help:--help}\
|
||||
%{--target-help:--target-help}\
|
||||
%{--help=*:--help=%(VALUE)}\
|
||||
%{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
|
||||
%{fsyntax-only:-o %j} %{-param*}\
|
||||
%{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\
|
||||
@ -1492,7 +1493,7 @@ static const char *const standard_exec_prefix_2 = "/usr/lib/gcc/";
|
||||
static const char *md_exec_prefix = MD_EXEC_PREFIX;
|
||||
static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
|
||||
static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1;
|
||||
static const char *const standard_startfile_prefix_1
|
||||
static const char *const standard_startfile_prefix_1
|
||||
= STANDARD_STARTFILE_PREFIX_1;
|
||||
static const char *const standard_startfile_prefix_2
|
||||
= STANDARD_STARTFILE_PREFIX_2;
|
||||
@ -3174,6 +3175,8 @@ display_help (void)
|
||||
fputs (_(" -pass-exit-codes Exit with highest error code from a phase\n"), stdout);
|
||||
fputs (_(" --help Display this information\n"), stdout);
|
||||
fputs (_(" --target-help Display target specific command line options\n"), stdout);
|
||||
fputs (_(" --help={target|optimizers|warnings|undocumented|params}[,{[^]joined|[^]separate}]\n"), stdout);
|
||||
fputs (_(" Display specific types of command line options\n"), stdout);
|
||||
if (! verbose_flag)
|
||||
fputs (_(" (Use '-v --help' to display command line options of sub-processes)\n"), stdout);
|
||||
fputs (_(" -dumpspecs Display all of the built in spec strings\n"), stdout);
|
||||
@ -3589,10 +3592,19 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
|
||||
add_assembler_option ("--help", 6);
|
||||
add_linker_option ("--help", 6);
|
||||
}
|
||||
else if (strncmp (argv[i], "-fhelp=", 7) == 0)
|
||||
{
|
||||
/* translate_options () has turned --help into -fhelp. */
|
||||
print_subprocess_help = 2;
|
||||
|
||||
/* We will be passing a dummy file on to the sub-processes. */
|
||||
n_infiles++;
|
||||
n_switches++;
|
||||
}
|
||||
else if (strcmp (argv[i], "-ftarget-help") == 0)
|
||||
{
|
||||
/* translate_options() has turned --target-help into -ftarget-help. */
|
||||
target_help_flag = 1;
|
||||
print_subprocess_help = 1;
|
||||
|
||||
/* We will be passing a dummy file on to the sub-processes. */
|
||||
n_infiles++;
|
||||
@ -4074,10 +4086,6 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
|
||||
;
|
||||
else if (! strcmp (argv[i], "-print-multi-os-directory"))
|
||||
;
|
||||
else if (! strcmp (argv[i], "-ftarget-help"))
|
||||
;
|
||||
else if (! strcmp (argv[i], "-fhelp"))
|
||||
;
|
||||
else if (! strncmp (argv[i], "--sysroot=", strlen ("--sysroot=")))
|
||||
{
|
||||
target_system_root = argv[i] + strlen ("--sysroot=");
|
||||
@ -4243,34 +4251,14 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
|
||||
error ("warning: '-x %s' after last input file has no effect", spec_lang);
|
||||
|
||||
/* Ensure we only invoke each subprocess once. */
|
||||
if (target_help_flag || print_help_list)
|
||||
if (print_subprocess_help || print_help_list)
|
||||
{
|
||||
n_infiles = 1;
|
||||
|
||||
/* Create a dummy input file, so that we can pass --target-help on to
|
||||
the various sub-processes. */
|
||||
/* Create a dummy input file, so that we can pass
|
||||
the help option on to the various sub-processes. */
|
||||
infiles[0].language = "c";
|
||||
infiles[0].name = "help-dummy";
|
||||
|
||||
if (target_help_flag)
|
||||
{
|
||||
switches[n_switches].part1 = "--target-help";
|
||||
switches[n_switches].args = 0;
|
||||
switches[n_switches].live_cond = SWITCH_OK;
|
||||
switches[n_switches].validated = 0;
|
||||
|
||||
n_switches++;
|
||||
}
|
||||
|
||||
if (print_help_list)
|
||||
{
|
||||
switches[n_switches].part1 = "--help";
|
||||
switches[n_switches].args = 0;
|
||||
switches[n_switches].live_cond = SWITCH_OK;
|
||||
switches[n_switches].validated = 0;
|
||||
|
||||
n_switches++;
|
||||
}
|
||||
}
|
||||
|
||||
switches[n_switches].part1 = 0;
|
||||
@ -6421,16 +6409,6 @@ main (int argc, char **argv)
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (target_help_flag)
|
||||
{
|
||||
/* Print if any target specific options. */
|
||||
|
||||
/* We do not exit here. Instead we have created a fake input file
|
||||
called 'target-dummy' which needs to be compiled, and we pass this
|
||||
on to the various sub-processes, along with the --target-help
|
||||
switch. */
|
||||
}
|
||||
|
||||
if (print_help_list)
|
||||
{
|
||||
display_help ();
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2003,2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
|
||||
# Contributed by Kelley Cook, June 2004.
|
||||
# Original code from Neil Booth, May 2003.
|
||||
#
|
||||
@ -77,6 +77,8 @@ function switch_flags (flags)
|
||||
test_flag("RejectNegative", flags, " | CL_REJECT_NEGATIVE") \
|
||||
test_flag("UInteger", flags, " | CL_UINTEGER") \
|
||||
test_flag("Undocumented", flags, " | CL_UNDOCUMENTED") \
|
||||
test_flag("Warning", flags, " | CL_WARNING") \
|
||||
test_flag("Optimization", flags, " | CL_OPTIMIZATION") \
|
||||
test_flag("Report", flags, " | CL_REPORT")
|
||||
sub( "^0 \\| ", "", result )
|
||||
return result
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2003,2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
|
||||
# Contributed by Kelley Cook, June 2004.
|
||||
# Original code from Neil Booth, May 2003.
|
||||
#
|
||||
@ -119,6 +119,7 @@ for (i = 0; i < n_langs; i++) {
|
||||
|
||||
print " 0\n};\n"
|
||||
print "const unsigned int cl_options_count = N_OPTS;\n"
|
||||
print "const unsigned int cl_lang_count = " n_langs ";\n"
|
||||
|
||||
print "const struct cl_option cl_options[] =\n{"
|
||||
|
||||
|
656
gcc/opts.c
656
gcc/opts.c
@ -83,15 +83,12 @@ enum symbol_visibility default_visibility = VISIBILITY_DEFAULT;
|
||||
|
||||
/* Disable unit-at-a-time for frontends that might be still broken in this
|
||||
respect. */
|
||||
|
||||
|
||||
bool no_unit_at_a_time_default;
|
||||
|
||||
/* Global visibility options. */
|
||||
struct visibility_flags visibility_options;
|
||||
|
||||
/* Columns of --help display. */
|
||||
static unsigned int columns = 80;
|
||||
|
||||
/* What to print when a switch has no documentation. */
|
||||
static const char undocumented_msg[] = N_("This switch lacks documentation");
|
||||
|
||||
@ -115,12 +112,6 @@ static char *write_langs (unsigned int lang_mask);
|
||||
static void complain_wrong_lang (const char *, const struct cl_option *,
|
||||
unsigned int lang_mask);
|
||||
static void handle_options (unsigned int, const char **, unsigned int);
|
||||
static void wrap_help (const char *help, const char *item, unsigned int);
|
||||
static void print_target_help (void);
|
||||
static void print_help (void);
|
||||
static void print_param_help (void);
|
||||
static void print_filtered_help (unsigned int);
|
||||
static unsigned int print_switch (const char *text, unsigned int indent);
|
||||
static void set_debug_level (enum debug_info_type type, int extended,
|
||||
const char *arg);
|
||||
|
||||
@ -320,7 +311,7 @@ handle_option (const char **argv, unsigned int lang_mask)
|
||||
*(const char **) option->flag_var = arg;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (option->flags & lang_mask)
|
||||
if (lang_hooks.handle_option (opt_index, arg, value) == 0)
|
||||
result = 0;
|
||||
@ -601,7 +592,7 @@ decode_options (unsigned int argc, const char **argv)
|
||||
|
||||
if (flag_exceptions && flag_reorder_blocks_and_partition)
|
||||
{
|
||||
inform
|
||||
inform
|
||||
("-freorder-blocks-and-partition does not work with exceptions");
|
||||
flag_reorder_blocks_and_partition = 0;
|
||||
flag_reorder_blocks = 1;
|
||||
@ -626,13 +617,300 @@ decode_options (unsigned int argc, const char **argv)
|
||||
&& (!targetm.have_named_sections
|
||||
|| (flag_unwind_tables && targetm.unwind_tables_default)))
|
||||
{
|
||||
inform
|
||||
inform
|
||||
("-freorder-blocks-and-partition does not work on this architecture");
|
||||
flag_reorder_blocks_and_partition = 0;
|
||||
flag_reorder_blocks = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#define LEFT_COLUMN 27
|
||||
|
||||
/* Output ITEM, of length ITEM_WIDTH, in the left column,
|
||||
followed by word-wrapped HELP in a second column. */
|
||||
static void
|
||||
wrap_help (const char *help,
|
||||
const char *item,
|
||||
unsigned int item_width,
|
||||
unsigned int columns)
|
||||
{
|
||||
unsigned int col_width = LEFT_COLUMN;
|
||||
unsigned int remaining, room, len;
|
||||
|
||||
remaining = strlen (help);
|
||||
|
||||
do
|
||||
{
|
||||
room = columns - 3 - MAX (col_width, item_width);
|
||||
if (room > columns)
|
||||
room = 0;
|
||||
len = remaining;
|
||||
|
||||
if (room < len)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; help[i]; i++)
|
||||
{
|
||||
if (i >= room && len != remaining)
|
||||
break;
|
||||
if (help[i] == ' ')
|
||||
len = i;
|
||||
else if ((help[i] == '-' || help[i] == '/')
|
||||
&& help[i + 1] != ' '
|
||||
&& i > 0 && ISALPHA (help[i - 1]))
|
||||
len = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
printf( " %-*.*s %.*s\n", col_width, item_width, item, len, help);
|
||||
item_width = 0;
|
||||
while (help[len] == ' ')
|
||||
len++;
|
||||
help += len;
|
||||
remaining -= len;
|
||||
}
|
||||
while (remaining);
|
||||
}
|
||||
|
||||
/* Print help for a specific front-end, etc. */
|
||||
static void
|
||||
print_filtered_help (unsigned int include_flags,
|
||||
unsigned int exclude_flags,
|
||||
unsigned int any_flags,
|
||||
unsigned int columns)
|
||||
{
|
||||
unsigned int i;
|
||||
const char *help;
|
||||
static char *printed = NULL;
|
||||
bool found = false;
|
||||
bool displayed = false;
|
||||
|
||||
if (include_flags == CL_PARAMS)
|
||||
{
|
||||
for (i = 0; i < LAST_PARAM; i++)
|
||||
{
|
||||
const char *param = compiler_params[i].option;
|
||||
|
||||
help = compiler_params[i].help;
|
||||
if (help == NULL || *help == '\0')
|
||||
{
|
||||
if (exclude_flags & CL_UNDOCUMENTED)
|
||||
continue;
|
||||
help = undocumented_msg;
|
||||
}
|
||||
|
||||
/* Get the translation. */
|
||||
help = _(help);
|
||||
|
||||
wrap_help (help, param, strlen (param), columns);
|
||||
}
|
||||
putchar ('\n');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!printed)
|
||||
printed = xcalloc (1, cl_options_count);
|
||||
|
||||
for (i = 0; i < cl_options_count; i++)
|
||||
{
|
||||
static char new_help[128];
|
||||
const struct cl_option *option = cl_options + i;
|
||||
unsigned int len;
|
||||
const char *opt;
|
||||
const char *tab;
|
||||
|
||||
if (include_flags == 0
|
||||
|| ((option->flags & include_flags) != include_flags))
|
||||
{
|
||||
if ((option->flags & any_flags) == 0)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Skip unwanted switches. */
|
||||
if ((option->flags & exclude_flags) != 0)
|
||||
continue;
|
||||
|
||||
found = true;
|
||||
/* Skip switches that have already been printed. */
|
||||
if (printed[i])
|
||||
continue;
|
||||
|
||||
printed[i] = true;
|
||||
|
||||
help = option->help;
|
||||
if (help == NULL)
|
||||
{
|
||||
if (exclude_flags & CL_UNDOCUMENTED)
|
||||
continue;
|
||||
help = undocumented_msg;
|
||||
}
|
||||
|
||||
/* Get the translation. */
|
||||
help = _(help);
|
||||
|
||||
/* Find the gap between the name of the
|
||||
option and its descriptive text. */
|
||||
tab = strchr (help, '\t');
|
||||
if (tab)
|
||||
{
|
||||
len = tab - help;
|
||||
opt = help;
|
||||
help = tab + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
opt = option->opt_text;
|
||||
len = strlen (opt);
|
||||
}
|
||||
|
||||
/* With the -Q option enabled we change the descriptive text associated
|
||||
with an option to be an indication of its current setting. */
|
||||
if (!quiet_flag)
|
||||
{
|
||||
if (len < (LEFT_COLUMN + 2))
|
||||
strcpy (new_help, "\t\t");
|
||||
else
|
||||
strcpy (new_help, "\t");
|
||||
|
||||
if (option->flag_var != NULL)
|
||||
{
|
||||
if (option->flags & CL_JOINED)
|
||||
{
|
||||
if (option->var_type == CLVC_STRING)
|
||||
{
|
||||
if (* (const char **) option->flag_var != NULL)
|
||||
snprintf (new_help + strlen (new_help),
|
||||
sizeof (new_help) - strlen (new_help),
|
||||
* (const char **) option->flag_var);
|
||||
}
|
||||
else
|
||||
sprintf (new_help + strlen (new_help),
|
||||
"%#x", * (int *) option->flag_var);
|
||||
}
|
||||
else
|
||||
strcat (new_help, option_enabled (i)
|
||||
? _("[enabled]") : _("[disabled]"));
|
||||
}
|
||||
|
||||
help = new_help;
|
||||
}
|
||||
|
||||
wrap_help (help, opt, len, columns);
|
||||
displayed = true;
|
||||
}
|
||||
|
||||
if (! found)
|
||||
printf (_(" No options with the desired characteristics were found\n"));
|
||||
else if (! displayed)
|
||||
printf (_(" All options with the desired characteristics have already been displayed\n"));
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
/* Display help for a specified type of option.
|
||||
The options must have ALL of the INCLUDE_FLAGS set
|
||||
ANY of the flags in the ANY_FLAGS set
|
||||
and NONE of the EXCLUDE_FLAGS set. */
|
||||
static void
|
||||
print_specific_help (unsigned int include_flags,
|
||||
unsigned int exclude_flags,
|
||||
unsigned int any_flags)
|
||||
{
|
||||
unsigned int all_langs_mask = (1U << cl_lang_count) - 1;
|
||||
const char * description = NULL;
|
||||
const char * descrip_extra = "";
|
||||
size_t i;
|
||||
unsigned int flag;
|
||||
static unsigned int columns = 0;
|
||||
|
||||
/* Sanity check: Make sure that we do not have more
|
||||
languages than we have bits available to enumerate them. */
|
||||
gcc_assert ((1U << cl_lang_count) < CL_MIN_OPTION_CLASS);
|
||||
|
||||
/* If we have not done so already, obtain
|
||||
the desired maximum width of the output. */
|
||||
if (columns == 0)
|
||||
{
|
||||
const char *p;
|
||||
|
||||
GET_ENVIRONMENT (p, "COLUMNS");
|
||||
if (p != NULL)
|
||||
{
|
||||
int value = atoi (p);
|
||||
|
||||
if (value > 0)
|
||||
columns = value;
|
||||
}
|
||||
|
||||
if (columns == 0)
|
||||
/* Use a reasonable default. */
|
||||
columns = 80;
|
||||
}
|
||||
|
||||
/* Decide upon the title for the options that we are going to display. */
|
||||
for (i = 0, flag = 1; flag <= CL_MAX_OPTION_CLASS; flag <<= 1, i ++)
|
||||
{
|
||||
switch (flag & include_flags)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case CL_TARGET:
|
||||
description = _("The following options are target specific");
|
||||
break;
|
||||
case CL_WARNING:
|
||||
description = _("The following options control compiler warning messages");
|
||||
break;
|
||||
case CL_OPTIMIZATION:
|
||||
description = _("The following options control optimizations");
|
||||
break;
|
||||
case CL_COMMON:
|
||||
description = _("The following options are language-independent");
|
||||
break;
|
||||
case CL_PARAMS:
|
||||
description = _("The --param option recognizes the following as parameters");
|
||||
break;
|
||||
default:
|
||||
if (i >= cl_lang_count)
|
||||
break;
|
||||
if ((exclude_flags & ((1U << cl_lang_count) - 1)) != 0)
|
||||
{
|
||||
description = _("The following options are specific to the language ");
|
||||
descrip_extra = lang_names [i];
|
||||
}
|
||||
else
|
||||
description = _("The following options are supported by, amoung others, the language ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (description == NULL)
|
||||
{
|
||||
if (any_flags == 0)
|
||||
{
|
||||
if (include_flags == CL_UNDOCUMENTED)
|
||||
description = _("The following options are not documented");
|
||||
else
|
||||
{
|
||||
internal_error ("unrecognized include_flags 0x%x passed to print_specific_help",
|
||||
include_flags);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (any_flags & all_langs_mask)
|
||||
description = _("The following options are language-related");
|
||||
else
|
||||
description = _("The following options are language-independent");
|
||||
}
|
||||
}
|
||||
|
||||
printf ("%s%s:\n", description, descrip_extra);
|
||||
print_filtered_help (include_flags, exclude_flags, any_flags, columns);
|
||||
}
|
||||
|
||||
/* Handle target- and language-independent options. Return zero to
|
||||
generate an "unknown option" message. Only options that need
|
||||
extra handling need to be listed here; if you simply want
|
||||
@ -646,20 +924,124 @@ common_handle_option (size_t scode, const char *arg, int value,
|
||||
|
||||
switch (code)
|
||||
{
|
||||
case OPT__help:
|
||||
print_help ();
|
||||
exit_after_options = true;
|
||||
break;
|
||||
|
||||
case OPT__param:
|
||||
handle_param (arg);
|
||||
break;
|
||||
|
||||
case OPT_fhelp:
|
||||
case OPT__help:
|
||||
{
|
||||
unsigned int all_langs_mask = (1U << cl_lang_count) - 1;
|
||||
unsigned int undoc_mask;
|
||||
unsigned int i;
|
||||
|
||||
undoc_mask = extra_warnings ? 0 : CL_UNDOCUMENTED;
|
||||
/* First display any single language specific options. */
|
||||
for (i = 0; i < cl_lang_count; i++)
|
||||
print_specific_help
|
||||
(1U << i, (all_langs_mask & (~ (1U << i))) | undoc_mask, 0);
|
||||
/* Next display any multi language specific options. */
|
||||
print_specific_help (0, undoc_mask, all_langs_mask);
|
||||
/* Then display any remaining, non-language options. */
|
||||
for (i = CL_MIN_OPTION_CLASS; i <= CL_MAX_OPTION_CLASS; i <<= 1)
|
||||
print_specific_help (i, undoc_mask, 0);
|
||||
exit_after_options = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case OPT_ftarget_help:
|
||||
case OPT__target_help:
|
||||
print_target_help ();
|
||||
print_specific_help (CL_TARGET, CL_UNDOCUMENTED, 0);
|
||||
exit_after_options = true;
|
||||
break;
|
||||
|
||||
case OPT_fhelp_:
|
||||
case OPT__help_:
|
||||
{
|
||||
const char * a = arg;
|
||||
unsigned int include_flags = 0;
|
||||
/* Note - by default we include undocumented options when listing
|
||||
specific classes. If you only want to see documented options
|
||||
then add ",^undocumented" to the --help= option. e.g.:
|
||||
|
||||
--help=target,^undocumented */
|
||||
unsigned int exclude_flags = 0;
|
||||
|
||||
/* Walk along the argument string, parsing each word in turn.
|
||||
The format is:
|
||||
arg = [^]{word}[,{arg}]
|
||||
word = {optimizers|target|warnings|undocumented|params} */
|
||||
while (* a != 0)
|
||||
{
|
||||
static struct
|
||||
{
|
||||
const char * string;
|
||||
unsigned int flag;
|
||||
}
|
||||
specifics[] =
|
||||
{
|
||||
{ "optimizers", CL_OPTIMIZATION },
|
||||
{ "target", CL_TARGET },
|
||||
{ "warnings", CL_WARNING },
|
||||
{ "undocumented", CL_UNDOCUMENTED },
|
||||
{ "params", CL_PARAMS },
|
||||
{ "joined", CL_JOINED },
|
||||
{ "separate", CL_SEPARATE },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
unsigned int * pflags;
|
||||
char * comma;
|
||||
unsigned int len;
|
||||
unsigned int i;
|
||||
|
||||
if (* a == '^')
|
||||
{
|
||||
++ a;
|
||||
pflags = & exclude_flags;
|
||||
}
|
||||
else
|
||||
pflags = & include_flags;
|
||||
|
||||
comma = strchr (a, ',');
|
||||
if (comma == NULL)
|
||||
len = strlen (a);
|
||||
else
|
||||
len = comma - a;
|
||||
|
||||
for (i = 0; specifics[i].string != NULL; i++)
|
||||
if (strncasecmp (a, specifics[i].string, len) == 0)
|
||||
{
|
||||
* pflags |= specifics[i].flag;
|
||||
break;
|
||||
}
|
||||
|
||||
if (specifics[i].string == NULL)
|
||||
{
|
||||
/* Check to see if the string matches a language name. */
|
||||
for (i = 0; i < cl_lang_count; i++)
|
||||
if (strncasecmp (a, lang_names[i], len) == 0)
|
||||
{
|
||||
* pflags |= 1U << i;
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == cl_lang_count)
|
||||
fnotice (stderr,
|
||||
"warning: unrecognized argument to --help= switch: %.*s\n",
|
||||
len, a);
|
||||
}
|
||||
|
||||
if (comma == NULL)
|
||||
break;
|
||||
a = comma + 1;
|
||||
}
|
||||
|
||||
if (include_flags)
|
||||
print_specific_help (include_flags, exclude_flags, 0);
|
||||
exit_after_options = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case OPT__version:
|
||||
print_version (stderr, "");
|
||||
exit_after_options = true;
|
||||
@ -684,6 +1066,7 @@ common_handle_option (size_t scode, const char *arg, int value,
|
||||
{
|
||||
char *new_option;
|
||||
int option_index;
|
||||
|
||||
new_option = XNEWVEC (char, strlen (arg) + 2);
|
||||
new_option[0] = 'W';
|
||||
strcpy (new_option+1, arg);
|
||||
@ -819,7 +1202,7 @@ common_handle_option (size_t scode, const char *arg, int value,
|
||||
|
||||
case OPT_fpack_struct_:
|
||||
if (value <= 0 || (value & (value - 1)) || value > 16)
|
||||
error("structure alignment must be a small power of two, not %d", value);
|
||||
error ("structure alignment must be a small power of two, not %d", value);
|
||||
else
|
||||
{
|
||||
initial_max_fld_align = value;
|
||||
@ -1153,238 +1536,6 @@ set_debug_level (enum debug_info_type type, int extended, const char *arg)
|
||||
}
|
||||
}
|
||||
|
||||
/* Display help for target options. */
|
||||
static void
|
||||
print_target_help (void)
|
||||
{
|
||||
unsigned int i;
|
||||
static bool displayed = false;
|
||||
|
||||
/* Avoid double printing for --help --target-help. */
|
||||
if (displayed)
|
||||
return;
|
||||
|
||||
displayed = true;
|
||||
for (i = 0; i < cl_options_count; i++)
|
||||
if ((cl_options[i].flags & (CL_TARGET | CL_UNDOCUMENTED)) == CL_TARGET)
|
||||
{
|
||||
printf (_("\nTarget specific options:\n"));
|
||||
print_filtered_help (CL_TARGET);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Output --help text. */
|
||||
static void
|
||||
print_help (void)
|
||||
{
|
||||
size_t i;
|
||||
const char *p;
|
||||
|
||||
GET_ENVIRONMENT (p, "COLUMNS");
|
||||
if (p)
|
||||
{
|
||||
int value = atoi (p);
|
||||
if (value > 0)
|
||||
columns = value;
|
||||
}
|
||||
|
||||
puts (_("The following options are language-independent:\n"));
|
||||
|
||||
print_filtered_help (CL_COMMON);
|
||||
print_param_help ();
|
||||
|
||||
for (i = 0; lang_names[i]; i++)
|
||||
{
|
||||
printf (_("The %s front end recognizes the following options:\n\n"),
|
||||
lang_names[i]);
|
||||
print_filtered_help (1U << i);
|
||||
}
|
||||
print_target_help ();
|
||||
}
|
||||
|
||||
/* Print the help for --param. */
|
||||
static void
|
||||
print_param_help (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
puts (_("The --param option recognizes the following as parameters:\n"));
|
||||
|
||||
for (i = 0; i < LAST_PARAM; i++)
|
||||
{
|
||||
const char *help = compiler_params[i].help;
|
||||
const char *param = compiler_params[i].option;
|
||||
|
||||
if (help == NULL || *help == '\0')
|
||||
help = undocumented_msg;
|
||||
|
||||
/* Get the translation. */
|
||||
help = _(help);
|
||||
|
||||
wrap_help (help, param, strlen (param));
|
||||
}
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
/* Print help for a specific front-end, etc. */
|
||||
static void
|
||||
print_filtered_help (unsigned int flag)
|
||||
{
|
||||
unsigned int i, len, filter, indent = 0;
|
||||
bool duplicates = false;
|
||||
const char *help, *opt, *tab;
|
||||
static char *printed;
|
||||
|
||||
if (flag == CL_COMMON || flag == CL_TARGET)
|
||||
{
|
||||
filter = flag;
|
||||
if (!printed)
|
||||
printed = xmalloc (cl_options_count);
|
||||
memset (printed, 0, cl_options_count);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Don't print COMMON options twice. */
|
||||
filter = flag | CL_COMMON;
|
||||
|
||||
for (i = 0; i < cl_options_count; i++)
|
||||
{
|
||||
if ((cl_options[i].flags & filter) != flag)
|
||||
continue;
|
||||
|
||||
/* Skip help for internal switches. */
|
||||
if (cl_options[i].flags & CL_UNDOCUMENTED)
|
||||
continue;
|
||||
|
||||
/* Skip switches that have already been printed, mark them to be
|
||||
listed later. */
|
||||
if (printed[i])
|
||||
{
|
||||
duplicates = true;
|
||||
indent = print_switch (cl_options[i].opt_text, indent);
|
||||
}
|
||||
}
|
||||
|
||||
if (duplicates)
|
||||
{
|
||||
putchar ('\n');
|
||||
putchar ('\n');
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < cl_options_count; i++)
|
||||
{
|
||||
if ((cl_options[i].flags & filter) != flag)
|
||||
continue;
|
||||
|
||||
/* Skip help for internal switches. */
|
||||
if (cl_options[i].flags & CL_UNDOCUMENTED)
|
||||
continue;
|
||||
|
||||
/* Skip switches that have already been printed. */
|
||||
if (printed[i])
|
||||
continue;
|
||||
|
||||
printed[i] = true;
|
||||
|
||||
help = cl_options[i].help;
|
||||
if (!help)
|
||||
help = undocumented_msg;
|
||||
|
||||
/* Get the translation. */
|
||||
help = _(help);
|
||||
|
||||
tab = strchr (help, '\t');
|
||||
if (tab)
|
||||
{
|
||||
len = tab - help;
|
||||
opt = help;
|
||||
help = tab + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
opt = cl_options[i].opt_text;
|
||||
len = strlen (opt);
|
||||
}
|
||||
|
||||
wrap_help (help, opt, len);
|
||||
}
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
/* Output ITEM, of length ITEM_WIDTH, in the left column, followed by
|
||||
word-wrapped HELP in a second column. */
|
||||
static unsigned int
|
||||
print_switch (const char *text, unsigned int indent)
|
||||
{
|
||||
unsigned int len = strlen (text) + 1; /* trailing comma */
|
||||
|
||||
if (indent)
|
||||
{
|
||||
putchar (',');
|
||||
if (indent + len > columns)
|
||||
{
|
||||
putchar ('\n');
|
||||
putchar (' ');
|
||||
indent = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
putchar (' ');
|
||||
|
||||
putchar (' ');
|
||||
fputs (text, stdout);
|
||||
|
||||
return indent + len + 1;
|
||||
}
|
||||
|
||||
/* Output ITEM, of length ITEM_WIDTH, in the left column, followed by
|
||||
word-wrapped HELP in a second column. */
|
||||
static void
|
||||
wrap_help (const char *help, const char *item, unsigned int item_width)
|
||||
{
|
||||
unsigned int col_width = 27;
|
||||
unsigned int remaining, room, len;
|
||||
|
||||
remaining = strlen (help);
|
||||
|
||||
do
|
||||
{
|
||||
room = columns - 3 - MAX (col_width, item_width);
|
||||
if (room > columns)
|
||||
room = 0;
|
||||
len = remaining;
|
||||
|
||||
if (room < len)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; help[i]; i++)
|
||||
{
|
||||
if (i >= room && len != remaining)
|
||||
break;
|
||||
if (help[i] == ' ')
|
||||
len = i;
|
||||
else if ((help[i] == '-' || help[i] == '/')
|
||||
&& help[i + 1] != ' '
|
||||
&& i > 0 && ISALPHA (help[i - 1]))
|
||||
len = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
printf( " %-*.*s %.*s\n", col_width, item_width, item, len, help);
|
||||
item_width = 0;
|
||||
while (help[len] == ' ')
|
||||
len++;
|
||||
help += len;
|
||||
remaining -= len;
|
||||
}
|
||||
while (remaining);
|
||||
}
|
||||
|
||||
/* Return 1 if OPTION is enabled, 0 if it is disabled, or -1 if it isn't
|
||||
a simple on-off switch. */
|
||||
|
||||
@ -1392,6 +1543,7 @@ int
|
||||
option_enabled (int opt_idx)
|
||||
{
|
||||
const struct cl_option *option = &(cl_options[opt_idx]);
|
||||
|
||||
if (option->flag_var)
|
||||
switch (option->var_type)
|
||||
{
|
||||
|
33
gcc/opts.h
33
gcc/opts.h
@ -1,5 +1,5 @@
|
||||
/* Command line option handling.
|
||||
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
@ -64,17 +64,30 @@ struct cl_option_state {
|
||||
extern const struct cl_option cl_options[];
|
||||
extern const unsigned int cl_options_count;
|
||||
extern const char *const lang_names[];
|
||||
extern const unsigned int cl_lang_count;
|
||||
extern bool no_unit_at_a_time_default;
|
||||
|
||||
#define CL_DISABLED (1 << 21) /* Disabled in this configuration. */
|
||||
#define CL_TARGET (1 << 22) /* Target-specific option. */
|
||||
#define CL_REPORT (1 << 23) /* Report argument with -fverbose-asm */
|
||||
#define CL_JOINED (1 << 24) /* If takes joined argument. */
|
||||
#define CL_SEPARATE (1 << 25) /* If takes a separate argument. */
|
||||
#define CL_REJECT_NEGATIVE (1 << 26) /* Reject no- form. */
|
||||
#define CL_MISSING_OK (1 << 27) /* Missing argument OK (joined). */
|
||||
#define CL_UINTEGER (1 << 28) /* Argument is an integer >=0. */
|
||||
#define CL_COMMON (1 << 29) /* Language-independent. */
|
||||
#define CL_PARAMS (1 << 18) /* Fake entry. Used to display --param info with --help. */
|
||||
#define CL_WARNING (1 << 19) /* Enables an (optional) warning message. */
|
||||
#define CL_OPTIMIZATION (1 << 20) /* Enables an (optional) optimization. */
|
||||
#define CL_TARGET (1 << 21) /* Target-specific option. */
|
||||
#define CL_COMMON (1 << 22) /* Language-independent. */
|
||||
|
||||
#define CL_MIN_OPTION_CLASS CL_PARAMS
|
||||
#define CL_MAX_OPTION_CLASS CL_COMMON
|
||||
|
||||
/* From here on the bits describe attributes of the options.
|
||||
Before this point the bits have described the class of the option.
|
||||
This distinction is important because --help will not list options
|
||||
which only have these higher bits set. */
|
||||
|
||||
#define CL_DISABLED (1 << 23) /* Disabled in this configuration. */
|
||||
#define CL_REPORT (1 << 24) /* Report argument with -fverbose-asm */
|
||||
#define CL_JOINED (1 << 25) /* If takes joined argument. */
|
||||
#define CL_SEPARATE (1 << 26) /* If takes a separate argument. */
|
||||
#define CL_REJECT_NEGATIVE (1 << 27) /* Reject no- form. */
|
||||
#define CL_MISSING_OK (1 << 28) /* Missing argument OK (joined). */
|
||||
#define CL_UINTEGER (1 << 29) /* Argument is an integer >=0. */
|
||||
#define CL_UNDOCUMENTED (1 << 30) /* Do not output with --help. */
|
||||
|
||||
/* Input file names. */
|
||||
|
Loading…
Reference in New Issue
Block a user