]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
options.texi (NoDriverArg): Document.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 16 Aug 2010 10:17:07 +0000 (11:17 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 16 Aug 2010 10:17:07 +0000 (11:17 +0100)
* 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

12 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/c-family/c.opt
gcc/doc/options.texi
gcc/fortran/ChangeLog
gcc/fortran/cpp.c
gcc/fortran/lang.opt
gcc/gcc.c
gcc/opt-functions.awk
gcc/opts-common.c
gcc/opts.h

index 92ae2640778dde94ffb43c6fad018d2d2029ca1b..540d210b4a71eed5f4217c7569fa2629c29a5ced 100644 (file)
@@ -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.
index 80034e6d6ecee7b8a6cd8f2eadae524109ab0fc0..b88684a62b8075099aa50d6140b7a238a0c9009c 100644 (file)
@@ -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.
index cce42651ffe0704df8cfeab7a1141bfbd520bb57..b46b0a04908ff505ffb66581d2af9ded8698e093 100644 (file)
@@ -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;
index d1aa10e1887b51d90ba26d69c414d3fd07bcda19..05fedd66f027c55d683d02af364fe120be0f3342 100644 (file)
@@ -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++
index fff148defad9891e98a72a821a68b11f1d144f43..aac638bd1feac98e854353cca03fefdead94fc2e 100644 (file)
@@ -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:
index cf8eb49c0a40353416ba8af8f0eb97a1d08c1cc2..a0b5c2421b990c3c665b89467473d434036e818f 100644 (file)
@@ -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.
index 046a9a27dbd5b743e17839b5fcbd07f96a057cce..a6a922f0ff91267e7b27d4ac97745e2fc7eb99af 100644 (file)
@@ -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;
index dea14511baa8c4c76a84eb565019ad319059bf94..82804a4b7db87700aa6671dbbf610c47b9e75db5 100644 (file)
@@ -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
index f0a037c16b1e59ed3f0b225de40841d18df5f296..c2c87fe0d859bfec91b690685e51350eba3137ce 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -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}\
index 4ff4068cc0c2fadd51334ce10d0e4647bd22ba0a..01a06e84f56d06caa8467c76a93ee860fa3a2a92 100644 (file)
@@ -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") \
index f7c10407c3883798a8b2f6370392a33c36443b5e..1296653ece54495342282bf1caa733d1a31110fa 100644 (file)
@@ -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.  */
index 18dfdc2a09610fd2c5e14e9757fb2bd32e12a4a6..4bfa7c1fb3603e2802bbe9a1a4c45881014a6b48 100644 (file)
@@ -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.  */