mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 22:36:12 +08:00
common.opt: Add driver options.
* common.opt: Add driver options. (auxbase, auxbase-strip, quiet, version): Mark RejectDriver. * doc/options.texi (Driver, RejectDriver): Document. * gcc.c (pass_exit_codes, print_search_dirs, print_file_name, print_prog_name, print_multi_directory, print_sysroot, print_multi_os_directory, print_multi_lib, print_sysroot_headers_suffix, report_times, combine_flag, use_pipes, wrapper_string): Remove. (save_switch, driver_unknown_option_callback, driver_wrong_lang_callback, driver_post_handling_callback, driver_handle_option): New. (spec_lang, last_language_n_infiles): Make file-scope static instead of local to process_command. (process_command): Use decode_cmdline_options_to_array and read_cmdline_option for option processing. Compute have_c in prescan of decoded options. * opt-functions.awk (switch_flags): Handle Driver and RejectDriver. (var_type, var_type_struct): Handle Separate options as generating const char * variables. * opts-common.c (decode_cmdline_option): Expect CL_COMMON and CL_TARGET to be passed by caller if required. (decode_cmdline_options_to_array): Update comment. * opts.c (complain_wrong_lang): Handle options only valid for the driver. (decode_options): Update call to decode_cmdline_options_to_array. (print_filtered_help): Ignore driver-only options. (print_specific_help): Ignore CL_DRIVER. (common_handle_option): Don't call print_specific_help for CL_DRIVER. * opts.h (CL_DRIVER, CL_REJECT_DRIVER): Define. (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET, CL_COMMON): Update values. c-family: * c.opt (MDX, MMDX, lang-asm): Mark RejectDriver. fortran: * lang.opt (MDX, MMDX): Mark RejectDriver. java: * lang.opt (MD_, MMD_, version): Mark RejectDriver. From-SVN: r163279
This commit is contained in:
parent
4b228e61a9
commit
603349bf3d
@ -1,3 +1,39 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* common.opt: Add driver options.
|
||||
(auxbase, auxbase-strip, quiet, version): Mark RejectDriver.
|
||||
* doc/options.texi (Driver, RejectDriver): Document.
|
||||
* gcc.c (pass_exit_codes, print_search_dirs, print_file_name,
|
||||
print_prog_name, print_multi_directory, print_sysroot,
|
||||
print_multi_os_directory, print_multi_lib,
|
||||
print_sysroot_headers_suffix, report_times, combine_flag,
|
||||
use_pipes, wrapper_string): Remove.
|
||||
(save_switch, driver_unknown_option_callback,
|
||||
driver_wrong_lang_callback, driver_post_handling_callback,
|
||||
driver_handle_option): New.
|
||||
(spec_lang, last_language_n_infiles): Make file-scope static
|
||||
instead of local to process_command.
|
||||
(process_command): Use decode_cmdline_options_to_array and
|
||||
read_cmdline_option for option processing. Compute have_c in
|
||||
prescan of decoded options.
|
||||
* opt-functions.awk (switch_flags): Handle Driver and
|
||||
RejectDriver.
|
||||
(var_type, var_type_struct): Handle Separate options as generating
|
||||
const char * variables.
|
||||
* opts-common.c (decode_cmdline_option): Expect CL_COMMON and
|
||||
CL_TARGET to be passed by caller if required.
|
||||
(decode_cmdline_options_to_array): Update comment.
|
||||
* opts.c (complain_wrong_lang): Handle options only valid for the
|
||||
driver.
|
||||
(decode_options): Update call to decode_cmdline_options_to_array.
|
||||
(print_filtered_help): Ignore driver-only options.
|
||||
(print_specific_help): Ignore CL_DRIVER.
|
||||
(common_handle_option): Don't call print_specific_help for
|
||||
CL_DRIVER.
|
||||
* opts.h (CL_DRIVER, CL_REJECT_DRIVER): Define.
|
||||
(CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET, CL_COMMON):
|
||||
Update values.
|
||||
|
||||
2010-08-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-cfg.c (verify_types_in_gimple_reference): Verify
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* c.opt (MDX, MMDX, lang-asm): Mark RejectDriver.
|
||||
|
||||
2010-08-12 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* c.opt (MD, MMD): Change to MDX and MMDX.
|
||||
|
@ -73,7 +73,7 @@ C ObjC C++ ObjC++
|
||||
Generate make dependencies
|
||||
|
||||
MDX
|
||||
C ObjC C++ ObjC++ Separate MissingArgError(missing filename after %qs)
|
||||
C ObjC C++ ObjC++ RejectDriver Separate MissingArgError(missing filename after %qs)
|
||||
-MD Generate make dependencies and compile
|
||||
|
||||
MF
|
||||
@ -89,7 +89,7 @@ C ObjC C++ ObjC++
|
||||
Like -M but ignore system header files
|
||||
|
||||
MMDX
|
||||
C ObjC C++ ObjC++ Separate MissingArgError(missing filename after %qs)
|
||||
C ObjC C++ ObjC++ RejectDriver Separate MissingArgError(missing filename after %qs)
|
||||
-MMD Like -MD but ignore system header files
|
||||
|
||||
MP
|
||||
@ -926,7 +926,7 @@ C ObjC C++ ObjC++ Joined Separate
|
||||
-iwithprefixbefore <dir> Add <dir> to the end of the main include path
|
||||
|
||||
lang-asm
|
||||
C Undocumented
|
||||
C Undocumented RejectDriver
|
||||
|
||||
nostdinc
|
||||
C ObjC C++ ObjC++
|
||||
|
161
gcc/common.opt
161
gcc/common.opt
@ -23,39 +23,51 @@
|
||||
|
||||
; Please try to keep this file in ASCII collating order.
|
||||
|
||||
###
|
||||
Driver
|
||||
|
||||
-help
|
||||
Common
|
||||
Common Driver
|
||||
Display this information
|
||||
|
||||
-help=
|
||||
Common Report Joined
|
||||
Common Driver 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
|
||||
Common Driver
|
||||
Alias for --help=target
|
||||
|
||||
;; The following four 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 Var(help_flag)
|
||||
Common Driver Var(help_flag)
|
||||
|
||||
fhelp=
|
||||
Common Joined
|
||||
Common Driver Joined
|
||||
|
||||
ftarget-help
|
||||
Common
|
||||
Common Driver
|
||||
|
||||
fversion
|
||||
Common
|
||||
Common Driver
|
||||
|
||||
-param
|
||||
Common Separate
|
||||
--param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
|
||||
|
||||
-sysroot=
|
||||
Driver JoinedOrMissing
|
||||
|
||||
-version
|
||||
Common
|
||||
Common Driver
|
||||
|
||||
B
|
||||
Driver Joined Separate
|
||||
|
||||
E
|
||||
Driver
|
||||
|
||||
O
|
||||
Common JoinedOrMissing Optimization
|
||||
@ -69,10 +81,22 @@ Ofast
|
||||
Common Optimization
|
||||
Optimize for speed disregarding exact standards compliance
|
||||
|
||||
S
|
||||
Driver
|
||||
|
||||
W
|
||||
Common RejectNegative Var(extra_warnings) Warning
|
||||
This switch is deprecated; use -Wextra instead
|
||||
|
||||
Wa,
|
||||
Driver JoinedOrMissing
|
||||
|
||||
Wl,
|
||||
Driver JoinedOrMissing
|
||||
|
||||
Wp,
|
||||
Driver JoinedOrMissing
|
||||
|
||||
Waggregate-return
|
||||
Common Var(warn_aggregate_return) Warning
|
||||
Warn about returning structures, unions or arrays
|
||||
@ -260,6 +284,15 @@ Wcoverage-mismatch
|
||||
Common Var(warn_coverage_mismatch) Init(1) Warning
|
||||
Warn in case profiles in -fprofile-use do not match
|
||||
|
||||
Xassembler
|
||||
Driver Separate
|
||||
|
||||
Xlinker
|
||||
Driver Separate
|
||||
|
||||
Xpreprocessor
|
||||
Driver Separate
|
||||
|
||||
aux-info
|
||||
Common Separate
|
||||
-aux-info <file> Emit declaration information into <file>
|
||||
@ -268,10 +301,16 @@ aux-info=
|
||||
Common Joined
|
||||
|
||||
auxbase
|
||||
Common Separate
|
||||
Common Separate RejectDriver
|
||||
|
||||
auxbase-strip
|
||||
Common Separate
|
||||
Common Separate RejectDriver
|
||||
|
||||
combine
|
||||
Driver Var(combine_flag)
|
||||
|
||||
c
|
||||
Driver
|
||||
|
||||
d
|
||||
Common Joined
|
||||
@ -285,6 +324,15 @@ dumpdir
|
||||
Common Separate
|
||||
-dumpdir <dir> Set the directory name to be used for dumps
|
||||
|
||||
dumpmachine
|
||||
Driver
|
||||
|
||||
dumpspecs
|
||||
Driver
|
||||
|
||||
dumpversion
|
||||
Driver
|
||||
|
||||
; The version of the C++ ABI in use. The following values are allowed:
|
||||
;
|
||||
; 0: The version of the ABI believed most conformant with the C++ ABI
|
||||
@ -410,12 +458,16 @@ fcommon
|
||||
Common Report Var(flag_no_common,0) Optimization
|
||||
Do not put uninitialized globals in the common section
|
||||
|
||||
fcompare-debug
|
||||
Driver
|
||||
; Converted by the driver to -fcompare-debug= options.
|
||||
|
||||
fcompare-debug=
|
||||
Common JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
|
||||
Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
|
||||
-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump
|
||||
|
||||
fcompare-debug-second
|
||||
Common RejectNegative Var(flag_compare_debug)
|
||||
Common Driver RejectNegative Var(flag_compare_debug)
|
||||
Run only the second compilation of -fcompare-debug
|
||||
|
||||
fconserve-stack
|
||||
@ -1587,14 +1639,23 @@ iplugindir=
|
||||
Common Joined Var(plugindir_string) Init(0)
|
||||
-iplugindir=<dir> Set <dir> to be the default plugin directory
|
||||
|
||||
l
|
||||
Driver Joined Separate
|
||||
|
||||
no-canonical-prefixes
|
||||
Driver
|
||||
|
||||
o
|
||||
Common Joined Separate MissingArgError(missing filename after %qs)
|
||||
Common Driver Joined Separate MissingArgError(missing filename after %qs)
|
||||
-o <file> Place output into <file>
|
||||
|
||||
p
|
||||
Common Var(profile_flag)
|
||||
Enable function profiling
|
||||
|
||||
pass-exit-codes
|
||||
Driver Var(pass_exit_codes)
|
||||
|
||||
pedantic
|
||||
Common Var(pedantic)
|
||||
Issue warnings needed for strict compliance to the standard
|
||||
@ -1603,22 +1664,92 @@ pedantic-errors
|
||||
Common
|
||||
Like -pedantic but issue them as errors
|
||||
|
||||
pipe
|
||||
Driver Var(use_pipes)
|
||||
|
||||
print-file-name=
|
||||
Driver JoinedOrMissing Var(print_file_name)
|
||||
|
||||
print-libgcc-file-name
|
||||
Driver
|
||||
|
||||
print-multi-directory
|
||||
Driver Var(print_multi_directory)
|
||||
|
||||
print-multi-lib
|
||||
Driver Var(print_multi_lib)
|
||||
|
||||
print-multi-os-directory
|
||||
Driver Var(print_multi_os_directory)
|
||||
|
||||
print-prog-name=
|
||||
Driver JoinedOrMissing Var(print_prog_name)
|
||||
|
||||
print-search-dirs
|
||||
Driver Var(print_search_dirs)
|
||||
|
||||
print-sysroot
|
||||
Driver Var(print_sysroot)
|
||||
|
||||
print-sysroot-headers-suffix
|
||||
Driver Var(print_sysroot_headers_suffix)
|
||||
|
||||
quiet
|
||||
Common Var(quiet_flag)
|
||||
Common Var(quiet_flag) RejectDriver
|
||||
Do not display functions compiled or elapsed time
|
||||
|
||||
save-temps
|
||||
Driver
|
||||
|
||||
save-temps=
|
||||
Driver Joined
|
||||
|
||||
time
|
||||
Driver Var(report_times)
|
||||
|
||||
time=
|
||||
Driver JoinedOrMissing
|
||||
|
||||
v
|
||||
Driver
|
||||
|
||||
version
|
||||
Common Var(version_flag)
|
||||
Common Var(version_flag) RejectDriver
|
||||
Display the compiler's version
|
||||
|
||||
w
|
||||
Common Var(inhibit_warnings)
|
||||
Suppress warnings
|
||||
|
||||
wrapper
|
||||
Driver Separate Var(wrapper_string)
|
||||
|
||||
x
|
||||
Driver Joined Separate
|
||||
|
||||
shared
|
||||
Common RejectNegative Negative(pie)
|
||||
Create a shared library
|
||||
|
||||
shared-libgcc
|
||||
Driver
|
||||
|
||||
specs
|
||||
Driver Separate
|
||||
|
||||
specs=
|
||||
Driver Joined
|
||||
|
||||
static-libgcc
|
||||
Driver
|
||||
|
||||
static-libgfortran
|
||||
Driver
|
||||
; Documented for Fortran, but always accepted by driver.
|
||||
|
||||
static-libstdc++
|
||||
Driver
|
||||
|
||||
pie
|
||||
Common RejectNegative Negative(shared)
|
||||
Create a position independent executable
|
||||
|
@ -102,6 +102,10 @@ The option is available for all languages and targets.
|
||||
@item Target
|
||||
The option is available for all languages but is target-specific.
|
||||
|
||||
@item Driver
|
||||
The option is handled by the compiler driver using code not shared
|
||||
with the compilers proper (@file{cc1} etc.).
|
||||
|
||||
@item @var{language}
|
||||
The option is available when compiling for the given language.
|
||||
|
||||
@ -109,6 +113,10 @@ It is possible to specify several different languages for the same
|
||||
option. Each @var{language} must have been declared by an earlier
|
||||
@code{Language} record. @xref{Option file format}.
|
||||
|
||||
@item RejectDriver
|
||||
The option is only handled by the compilers proper (@file{cc1} etc.)@:
|
||||
and should not be accepted by the driver.
|
||||
|
||||
@item RejectNegative
|
||||
The option does not have a ``no-'' form. All options beginning with
|
||||
``f'', ``W'' or ``m'' are assumed to have a ``no-'' form unless this
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* lang.opt (MDX, MMDX): Mark RejectDriver.
|
||||
|
||||
2010-08-15 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
* trans-expr.c (gfc_trans_assign_vtab_procs): Clean up (we don't have
|
||||
|
@ -61,7 +61,7 @@ Fortran
|
||||
; Documented in C
|
||||
|
||||
MDX
|
||||
Fortran Separate
|
||||
Fortran Separate RejectDriver
|
||||
; Documented in C
|
||||
|
||||
MF
|
||||
@ -77,7 +77,7 @@ Fortran
|
||||
; Documented in C
|
||||
|
||||
MMDX
|
||||
Fortran Separate
|
||||
Fortran Separate RejectDriver
|
||||
; Documented in C
|
||||
|
||||
MP
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* lang.opt (MD_, MMD_, version): Mark RejectDriver.
|
||||
|
||||
2010-08-05 David Daney <ddaney@caviumnetworks.com>
|
||||
|
||||
* class.c (build_utf8_ref): Fix code formatting from previous commit.
|
||||
|
@ -33,7 +33,7 @@ Java
|
||||
; Documented for C
|
||||
|
||||
MD_
|
||||
Java Undocumented
|
||||
Java Undocumented RejectDriver
|
||||
; Documented for C
|
||||
|
||||
MF
|
||||
@ -45,7 +45,7 @@ Java
|
||||
; Documented for C
|
||||
|
||||
MMD_
|
||||
Java Undocumented
|
||||
Java Undocumented RejectDriver
|
||||
; Documented for C
|
||||
|
||||
MP
|
||||
@ -209,7 +209,7 @@ Java Joined
|
||||
Set the target VM version
|
||||
|
||||
version
|
||||
Java
|
||||
Java RejectDriver
|
||||
|
||||
;
|
||||
; Warnings handled by ecj.
|
||||
|
@ -78,6 +78,8 @@ function switch_flags (flags)
|
||||
result = result \
|
||||
test_flag("Common", flags, " | CL_COMMON") \
|
||||
test_flag("Target", flags, " | CL_TARGET") \
|
||||
test_flag("Driver", flags, " | CL_DRIVER") \
|
||||
test_flag("RejectDriver", flags, " | CL_REJECT_DRIVER") \
|
||||
test_flag("Save", flags, " | CL_SAVE") \
|
||||
test_flag("Joined", flags, " | CL_JOINED") \
|
||||
test_flag("JoinedOrMissing", flags, " | CL_JOINED | CL_MISSING_OK") \
|
||||
@ -128,7 +130,7 @@ function static_var(name, flags)
|
||||
# Return the type of variable that should be associated with the given flags.
|
||||
function var_type(flags)
|
||||
{
|
||||
if (!flag_set_p("Joined.*", flags))
|
||||
if (!flag_set_p("Joined.*", flags) && !flag_set_p("Separate", flags))
|
||||
return "int "
|
||||
else if (flag_set_p("UInteger", flags))
|
||||
return "int "
|
||||
@ -143,7 +145,7 @@ function var_type_struct(flags)
|
||||
{
|
||||
if (flag_set_p("UInteger", flags))
|
||||
return "int "
|
||||
else if (!flag_set_p("Joined.*", flags)) {
|
||||
else if (!flag_set_p("Joined.*", flags) && !flag_set_p("Separate", flags)) {
|
||||
if (flag_set_p(".*Mask.*", flags))
|
||||
return "int "
|
||||
else
|
||||
|
@ -128,8 +128,9 @@ integral_argument (const char *arg)
|
||||
}
|
||||
|
||||
/* Decode the switch beginning at ARGV for the language indicated by
|
||||
LANG_MASK, into the structure *DECODED. Returns the number of
|
||||
switches consumed. */
|
||||
LANG_MASK (including CL_COMMON and CL_TARGET if applicable), into
|
||||
the structure *DECODED. Returns the number of switches
|
||||
consumed. */
|
||||
|
||||
static unsigned int
|
||||
decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
@ -147,7 +148,7 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
|
||||
opt = argv[0];
|
||||
|
||||
opt_index = find_opt (opt + 1, lang_mask | CL_COMMON | CL_TARGET);
|
||||
opt_index = find_opt (opt + 1, lang_mask);
|
||||
if (opt_index == OPT_SPECIAL_unknown
|
||||
&& (opt[1] == 'W' || opt[1] == 'f' || opt[1] == 'm')
|
||||
&& opt[2] == 'n' && opt[3] == 'o' && opt[4] == '-')
|
||||
@ -161,7 +162,7 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
memcpy (dup + 2, opt + 5, len - 2 + 1);
|
||||
opt = dup;
|
||||
value = 0;
|
||||
opt_index = find_opt (opt + 1, lang_mask | CL_COMMON | CL_TARGET);
|
||||
opt_index = find_opt (opt + 1, lang_mask);
|
||||
}
|
||||
|
||||
if (opt_index == OPT_SPECIAL_unknown)
|
||||
@ -218,11 +219,11 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
}
|
||||
|
||||
/* Check if this is a switch for a different front end. */
|
||||
if (!(option->flags & (lang_mask | CL_COMMON | CL_TARGET)))
|
||||
if (!(option->flags & lang_mask))
|
||||
errors |= CL_ERR_WRONG_LANG;
|
||||
else if ((option->flags & CL_TARGET)
|
||||
&& (option->flags & CL_LANG_ALL)
|
||||
&& !(option->flags & lang_mask))
|
||||
&& (option->flags & (CL_LANG_ALL | CL_DRIVER))
|
||||
&& !(option->flags & (lang_mask & ~CL_COMMON & ~CL_TARGET)))
|
||||
/* Complain for target flag language mismatches if any languages
|
||||
are specified. */
|
||||
errors |= CL_ERR_WRONG_LANG;
|
||||
@ -301,8 +302,9 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
array and *DECODED_OPTIONS_COUNT to the number of entries in the
|
||||
array. The first entry in the array is always one for the program
|
||||
name (OPT_SPECIAL_program_name). LANG_MASK indicates the language
|
||||
applicable for decoding. Do not produce any diagnostics or set
|
||||
state outside of these variables. */
|
||||
flags applicable for decoding (including CL_COMMON and CL_TARGET if
|
||||
those options should be considered applicable). Do not produce any
|
||||
diagnostics or set state outside of these variables. */
|
||||
|
||||
void
|
||||
decode_cmdline_options_to_array (unsigned int argc, const char **argv,
|
||||
|
35
gcc/opts.c
35
gcc/opts.c
@ -418,17 +418,27 @@ complain_wrong_lang (const struct cl_decoded_option *decoded,
|
||||
{
|
||||
const struct cl_option *option = &cl_options[decoded->opt_index];
|
||||
const char *text = decoded->orig_option_with_args_text;
|
||||
char *ok_langs, *bad_lang;
|
||||
char *ok_langs = NULL, *bad_lang = NULL;
|
||||
unsigned int opt_flags = option->flags;
|
||||
|
||||
if (!lang_hooks.complain_wrong_lang_p (option))
|
||||
return;
|
||||
|
||||
ok_langs = write_langs (option->flags);
|
||||
bad_lang = write_langs (lang_mask);
|
||||
opt_flags &= ((1U << cl_lang_count) - 1) | CL_DRIVER;
|
||||
if (opt_flags != CL_DRIVER)
|
||||
ok_langs = write_langs (opt_flags);
|
||||
if (lang_mask != CL_DRIVER)
|
||||
bad_lang = write_langs (lang_mask);
|
||||
|
||||
/* Eventually this should become a hard error IMO. */
|
||||
warning (0, "command line option \"%s\" is valid for %s but not for %s",
|
||||
text, ok_langs, bad_lang);
|
||||
if (opt_flags == CL_DRIVER)
|
||||
error ("command line option %qs is valid for the driver but not for %s",
|
||||
text, bad_lang);
|
||||
else if (lang_mask == CL_DRIVER)
|
||||
gcc_unreachable ();
|
||||
else
|
||||
/* Eventually this should become a hard error IMO. */
|
||||
warning (0, "command line option %qs is valid for %s but not for %s",
|
||||
text, ok_langs, bad_lang);
|
||||
|
||||
free (ok_langs);
|
||||
free (bad_lang);
|
||||
@ -681,7 +691,8 @@ decode_options (unsigned int argc, const char **argv,
|
||||
else
|
||||
lang_mask = initial_lang_mask;
|
||||
|
||||
decode_cmdline_options_to_array (argc, argv, lang_mask,
|
||||
decode_cmdline_options_to_array (argc, argv,
|
||||
lang_mask | CL_COMMON | CL_TARGET,
|
||||
decoded_options, decoded_options_count);
|
||||
if (first_time_p)
|
||||
/* Perform language-specific options initialization. */
|
||||
@ -1193,6 +1204,12 @@ print_filtered_help (unsigned int include_flags,
|
||||
if ((option->flags & exclude_flags) != 0)
|
||||
continue;
|
||||
|
||||
/* The driver currently prints its own help text. */
|
||||
if ((option->flags & CL_DRIVER) != 0
|
||||
&& (option->flags & (((1U << cl_lang_count) - 1)
|
||||
| CL_COMMON | CL_TARGET)) == 0)
|
||||
continue;
|
||||
|
||||
found = true;
|
||||
/* Skip switches that have already been printed. */
|
||||
if (printed[i])
|
||||
@ -1333,6 +1350,7 @@ print_specific_help (unsigned int include_flags,
|
||||
switch (flag & include_flags)
|
||||
{
|
||||
case 0:
|
||||
case CL_DRIVER:
|
||||
break;
|
||||
|
||||
case CL_TARGET:
|
||||
@ -1436,7 +1454,8 @@ common_handle_option (const struct cl_decoded_option *decoded,
|
||||
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);
|
||||
if (i != CL_DRIVER)
|
||||
print_specific_help (i, undoc_mask, 0);
|
||||
exit_after_options = true;
|
||||
break;
|
||||
}
|
||||
|
12
gcc/opts.h
12
gcc/opts.h
@ -67,11 +67,12 @@ extern const unsigned int cl_options_count;
|
||||
extern const char *const lang_names[];
|
||||
extern const unsigned int cl_lang_count;
|
||||
|
||||
#define CL_PARAMS (1 << 17) /* Fake entry. Used to display --param info with --help. */
|
||||
#define CL_WARNING (1 << 18) /* Enables an (optional) warning message. */
|
||||
#define CL_OPTIMIZATION (1 << 19) /* Enables an (optional) optimization. */
|
||||
#define CL_TARGET (1 << 20) /* Target-specific option. */
|
||||
#define CL_COMMON (1 << 21) /* Language-independent. */
|
||||
#define CL_PARAMS (1 << 15) /* Fake entry. Used to display --param info with --help. */
|
||||
#define CL_WARNING (1 << 16) /* Enables an (optional) warning message. */
|
||||
#define CL_OPTIMIZATION (1 << 17) /* Enables an (optional) optimization. */
|
||||
#define CL_DRIVER (1 << 18) /* Driver option. */
|
||||
#define CL_TARGET (1 << 19) /* Target-specific option. */
|
||||
#define CL_COMMON (1 << 20) /* Language-independent. */
|
||||
|
||||
#define CL_MIN_OPTION_CLASS CL_PARAMS
|
||||
#define CL_MAX_OPTION_CLASS CL_COMMON
|
||||
@ -81,6 +82,7 @@ extern const unsigned int cl_lang_count;
|
||||
This distinction is important because --help will not list options
|
||||
which only have these higher bits set. */
|
||||
|
||||
#define CL_REJECT_DRIVER (1 << 21) /* Reject this option in the driver. */
|
||||
#define CL_SAVE (1 << 22) /* Target-specific option for attribute. */
|
||||
#define CL_DISABLED (1 << 23) /* Disabled in this configuration. */
|
||||
#define CL_REPORT (1 << 24) /* Report argument with -fverbose-asm */
|
||||
|
Loading…
Reference in New Issue
Block a user