mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 19:46:12 +08:00
options.texi (NoDriverArg): Document.
* doc/options.texi (NoDriverArg): Document. * gcc.c (cpp_unique_options): Generate -MD and -MMD instead of -MDX and -MMDX. * opt-functions.awk (switch_flags): Handle NoDriverArg. * opts-common.c (decode_cmdline_option): Ignore CL_SEPARATE marking for CL_NO_DRIVER_ARG options when in the driver. * opts.h (CL_NO_DRIVER_ARG): Define. (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER, CL_TARGET, CL_COMMON): Update values. c-family: * c.opt (MDX): Change back to MD. Mark NoDriverArg instead of RejectDriver. (MMDX): Change back to MMD. Mark NoDriverArg instead of RejectDriver. * c-opts.c (c_common_handle_option): Use OPT_MD and OPT_MMD instead of OPT_MDX and OPT_MMDX. fortran: * lang.opt (MDX): Change back to MD. Mark NoDriverArg instead of RejectDriver. (MMDX): Change back to MMD. Mark NoDriverArg instead of RejectDriver. * cpp.c (gfc_cpp_handle_option): Use OPT_MD and OPT_MMD instead of OPT_MDX and OPT_MMDX. From-SVN: r163280
This commit is contained in:
parent
603349bf3d
commit
c878765bbf
@ -1,3 +1,15 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* doc/options.texi (NoDriverArg): Document.
|
||||
* gcc.c (cpp_unique_options): Generate -MD and -MMD instead of
|
||||
-MDX and -MMDX.
|
||||
* opt-functions.awk (switch_flags): Handle NoDriverArg.
|
||||
* opts-common.c (decode_cmdline_option): Ignore CL_SEPARATE
|
||||
marking for CL_NO_DRIVER_ARG options when in the driver.
|
||||
* opts.h (CL_NO_DRIVER_ARG): Define.
|
||||
(CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER, CL_TARGET,
|
||||
CL_COMMON): Update values.
|
||||
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* common.opt: Add driver options.
|
||||
|
@ -1,3 +1,12 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* c.opt (MDX): Change back to MD. Mark NoDriverArg instead of
|
||||
RejectDriver.
|
||||
(MMDX): Change back to MMD. Mark NoDriverArg instead of
|
||||
RejectDriver.
|
||||
* c-opts.c (c_common_handle_option): Use OPT_MD and OPT_MMD
|
||||
instead of OPT_MDX and OPT_MMDX.
|
||||
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* c.opt (MDX, MMDX, lang-asm): Mark RejectDriver.
|
||||
|
@ -398,9 +398,9 @@ c_common_handle_option (size_t scode, const char *arg, int value,
|
||||
flag_no_output = 1;
|
||||
break;
|
||||
|
||||
case OPT_MDX:
|
||||
case OPT_MMDX:
|
||||
cpp_opts->deps.style = (code == OPT_MDX ? DEPS_SYSTEM: DEPS_USER);
|
||||
case OPT_MD:
|
||||
case OPT_MMD:
|
||||
cpp_opts->deps.style = (code == OPT_MD ? DEPS_SYSTEM: DEPS_USER);
|
||||
cpp_opts->deps.need_preprocessor_output = true;
|
||||
deps_file = arg;
|
||||
break;
|
||||
|
@ -72,9 +72,9 @@ M
|
||||
C ObjC C++ ObjC++
|
||||
Generate make dependencies
|
||||
|
||||
MDX
|
||||
C ObjC C++ ObjC++ RejectDriver Separate MissingArgError(missing filename after %qs)
|
||||
-MD Generate make dependencies and compile
|
||||
MD
|
||||
C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
|
||||
Generate make dependencies and compile
|
||||
|
||||
MF
|
||||
C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
|
||||
@ -88,9 +88,9 @@ MM
|
||||
C ObjC C++ ObjC++
|
||||
Like -M but ignore system header files
|
||||
|
||||
MMDX
|
||||
C ObjC C++ ObjC++ RejectDriver Separate MissingArgError(missing filename after %qs)
|
||||
-MMD Like -MD but ignore system header files
|
||||
MMD
|
||||
C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
|
||||
Like -MD but ignore system header files
|
||||
|
||||
MP
|
||||
C ObjC C++ ObjC++
|
||||
|
@ -159,6 +159,12 @@ option handler. @code{UInteger} should also be used on options like
|
||||
@code{-falign-loops}=@var{n} are supported to make sure the saved
|
||||
options are given a full integer.
|
||||
|
||||
@item NoDriverArg
|
||||
For an option marked @code{Separate}, the option only takes an
|
||||
argument in the compiler proper, not in the driver. This is for
|
||||
compatibility with existing options that are used both directly and
|
||||
via @option{-Wp,}; new options should not have this property.
|
||||
|
||||
@item Var(@var{var})
|
||||
The state of this option should be stored in variable @var{var}.
|
||||
The way that the state is stored depends on the type of option:
|
||||
|
@ -1,3 +1,12 @@
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* lang.opt (MDX): Change back to MD. Mark NoDriverArg instead of
|
||||
RejectDriver.
|
||||
(MMDX): Change back to MMD. Mark NoDriverArg instead of
|
||||
RejectDriver.
|
||||
* cpp.c (gfc_cpp_handle_option): Use OPT_MD and OPT_MMD instead of
|
||||
OPT_MDX and OPT_MMDX.
|
||||
|
||||
2010-08-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* lang.opt (MDX, MMDX): Mark RejectDriver.
|
||||
|
@ -456,11 +456,11 @@ gfc_cpp_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED
|
||||
gfc_cpp_option.deps = 1;
|
||||
break;
|
||||
|
||||
case OPT_MMDX:
|
||||
case OPT_MMD:
|
||||
gfc_cpp_option.deps_skip_system = 1;
|
||||
/* fall through */
|
||||
|
||||
case OPT_MDX:
|
||||
case OPT_MD:
|
||||
gfc_cpp_option.deps = 1;
|
||||
gfc_cpp_option.deps_filename = arg;
|
||||
break;
|
||||
|
@ -60,8 +60,8 @@ M
|
||||
Fortran
|
||||
; Documented in C
|
||||
|
||||
MDX
|
||||
Fortran Separate RejectDriver
|
||||
MD
|
||||
Fortran Separate NoArgDriver
|
||||
; Documented in C
|
||||
|
||||
MF
|
||||
@ -76,8 +76,8 @@ MM
|
||||
Fortran
|
||||
; Documented in C
|
||||
|
||||
MMDX
|
||||
Fortran Separate RejectDriver
|
||||
MMD
|
||||
Fortran Separate NoArgDriver
|
||||
; Documented in C
|
||||
|
||||
MP
|
||||
|
@ -767,8 +767,8 @@ static const char *trad_capable_cpp =
|
||||
file that happens to exist is up-to-date. */
|
||||
static const char *cpp_unique_options =
|
||||
"%{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*&F*} %{P} %I\
|
||||
%{MD:-MDX %{!o:%b.d}%{o*:%.d%*}}\
|
||||
%{MMD:-MMDX %{!o:%b.d}%{o*:%.d%*}}\
|
||||
%{MD:-MD %{!o:%b.d}%{o*:%.d%*}}\
|
||||
%{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}}\
|
||||
%{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*}\
|
||||
%{!E:%{!M:%{!MM:%{!MT:%{!MQ:%{MD|MMD:%{o*:-MQ %*}}}}}}}\
|
||||
%{remap} %{g3|ggdb3|gstabs3|gcoff3|gxcoff3|gvms3:-dD}\
|
||||
|
@ -80,6 +80,7 @@ function switch_flags (flags)
|
||||
test_flag("Target", flags, " | CL_TARGET") \
|
||||
test_flag("Driver", flags, " | CL_DRIVER") \
|
||||
test_flag("RejectDriver", flags, " | CL_REJECT_DRIVER") \
|
||||
test_flag("NoDriverArg", flags, " | CL_NO_DRIVER_ARG") \
|
||||
test_flag("Save", flags, " | CL_SAVE") \
|
||||
test_flag("Joined", flags, " | CL_JOINED") \
|
||||
test_flag("JoinedOrMissing", flags, " | CL_JOINED | CL_MISSING_OK") \
|
||||
|
@ -145,6 +145,8 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
char *p;
|
||||
const struct cl_option *option;
|
||||
int errors = 0;
|
||||
bool separate_arg_flag;
|
||||
bool joined_arg_flag;
|
||||
|
||||
opt = argv[0];
|
||||
|
||||
@ -186,8 +188,15 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
if (option->flags & CL_DISABLED)
|
||||
errors |= CL_ERR_DISABLED;
|
||||
|
||||
/* Determine whether there may be a separate argument based on
|
||||
whether this option is being processed for the driver. */
|
||||
separate_arg_flag = ((option->flags & CL_SEPARATE)
|
||||
&& !((option->flags & CL_NO_DRIVER_ARG)
|
||||
&& (lang_mask & CL_DRIVER)));
|
||||
joined_arg_flag = (option->flags & CL_JOINED) != 0;
|
||||
|
||||
/* Sort out any argument the switch takes. */
|
||||
if (option->flags & CL_JOINED)
|
||||
if (joined_arg_flag)
|
||||
{
|
||||
/* Have arg point to the original switch. This is because
|
||||
some code, such as disable_builtin_function, expects its
|
||||
@ -198,7 +207,7 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
|
||||
if (*arg == '\0' && !(option->flags & CL_MISSING_OK))
|
||||
{
|
||||
if (option->flags & CL_SEPARATE)
|
||||
if (separate_arg_flag)
|
||||
{
|
||||
arg = argv[1];
|
||||
result = 2;
|
||||
@ -210,7 +219,7 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
arg = NULL;
|
||||
}
|
||||
}
|
||||
else if (option->flags & CL_SEPARATE)
|
||||
else if (separate_arg_flag)
|
||||
{
|
||||
arg = argv[1];
|
||||
result = 2;
|
||||
@ -228,7 +237,7 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
|
||||
are specified. */
|
||||
errors |= CL_ERR_WRONG_LANG;
|
||||
|
||||
if (arg == NULL && (option->flags & (CL_JOINED | CL_SEPARATE)))
|
||||
if (arg == NULL && (separate_arg_flag || joined_arg_flag))
|
||||
errors |= CL_ERR_MISSING_ARG;
|
||||
|
||||
/* If the switch takes an integer, convert it. */
|
||||
|
13
gcc/opts.h
13
gcc/opts.h
@ -67,12 +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 << 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_PARAMS (1 << 14) /* Fake entry. Used to display --param info with --help. */
|
||||
#define CL_WARNING (1 << 15) /* Enables an (optional) warning message. */
|
||||
#define CL_OPTIMIZATION (1 << 16) /* Enables an (optional) optimization. */
|
||||
#define CL_DRIVER (1 << 17) /* Driver option. */
|
||||
#define CL_TARGET (1 << 18) /* Target-specific option. */
|
||||
#define CL_COMMON (1 << 19) /* Language-independent. */
|
||||
|
||||
#define CL_MIN_OPTION_CLASS CL_PARAMS
|
||||
#define CL_MAX_OPTION_CLASS CL_COMMON
|
||||
@ -82,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_NO_DRIVER_ARG (1 << 20) /* Option takes no argument in the driver. */
|
||||
#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. */
|
||||
|
Loading…
Reference in New Issue
Block a user