]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
common.opt (o): Add MissingArgError.
authorJoseph Myers <joseph@codesourcery.com>
Tue, 27 Jul 2010 14:43:31 +0000 (15:43 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Tue, 27 Jul 2010 14:43:31 +0000 (15:43 +0100)
* common.opt (o): Add MissingArgError.
* doc/options.texi (MissingArgError): Document.
* hooks.c (hook_bool_constcharptr_size_t_false): Remove.
* hooks.h (hook_bool_constcharptr_size_t_false): Remove.
* langhooks-def.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
(LANG_HOOKS_INITIALIZER): Remove missing_argument hook
initializer.
* langhooks.h (struct lang_hooks): Remove missing_argument.
* optc-gen.awk: Handle MissingArgError and output new structure
field initializers.
* opts.c (read_cmdline_option): Use missing_argument_error field
instead of missing_argument langhook.
* opts.h (struct cl_option): Add missing_argument_error field.
* system.h (LANG_HOOKS_MISSING_ARGUMENT): Poison.

c-family:
* c-common.h (c_common_missing_argument): Remove.
* c-opts.c (c_common_missing_argument): Remove.
* c.opt (A, D, F, I, MD, MMD, MQ, MT, U, fconstant-string-class=,
idirafter, imacros, include, isysroot, isystem, iquote): Add
MissingArgError.
* c-objc-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.

cp:
* cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.

po:
* exgettext: Also extract MissingArgError texts from .opt files.

From-SVN: r162571

20 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.h
gcc/c-family/c-opts.c
gcc/c-family/c.opt
gcc/c-objc-common.h
gcc/common.opt
gcc/cp/ChangeLog
gcc/cp/cp-objcp-common.h
gcc/doc/options.texi
gcc/hooks.c
gcc/hooks.h
gcc/langhooks-def.h
gcc/langhooks.h
gcc/optc-gen.awk
gcc/opts.c
gcc/opts.h
gcc/po/ChangeLog
gcc/po/exgettext
gcc/system.h

index 9b04483a64f8ba6d9cc8c3952a1db26a2d17e307..ddbe6cccb34248a3113215165a5cdf484d9ee910 100644 (file)
@@ -1,3 +1,20 @@
+2010-07-27  Joseph Myers  <joseph@codesourcery.com>
+
+       * common.opt (o): Add MissingArgError.
+       * doc/options.texi (MissingArgError): Document.
+       * hooks.c (hook_bool_constcharptr_size_t_false): Remove.
+       * hooks.h (hook_bool_constcharptr_size_t_false): Remove.
+       * langhooks-def.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
+       (LANG_HOOKS_INITIALIZER): Remove missing_argument hook
+       initializer.
+       * langhooks.h (struct lang_hooks): Remove missing_argument.
+       * optc-gen.awk: Handle MissingArgError and output new structure
+       field initializers.
+       * opts.c (read_cmdline_option): Use missing_argument_error field
+       instead of missing_argument langhook.
+       * opts.h (struct cl_option): Add missing_argument_error field.
+       * system.h (LANG_HOOKS_MISSING_ARGUMENT): Poison.
+
 2010-07-27  Iain Sandoe  <iains@gcc.gnu.org>
 
        PR target/29090
index 7007582bb9d198da4bb89063b9f74230d6a92dcc..17bd6ab56f5f83e42b5bb18f03ca34af21c991eb 100644 (file)
@@ -1,3 +1,12 @@
+2010-07-27  Joseph Myers  <joseph@codesourcery.com>
+
+       * c-common.h (c_common_missing_argument): Remove.
+       * c-opts.c (c_common_missing_argument): Remove.
+       * c.opt (A, D, F, I, MD, MMD, MQ, MT, U, fconstant-string-class=,
+       idirafter, imacros, include, isysroot, isystem, iquote): Add
+       MissingArgError.
+       * c-objc-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
+
 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
 
        * c-common.h (c_common_option_lang_mask,
index df9cf759a5a767be14c549dd586bc20b78ed80a8..b92fef8f04d4e3a1ba2a933bf5a87be6c9678dbc 100644 (file)
@@ -659,7 +659,6 @@ extern tree handle_format_attribute (tree *, tree, tree, int, bool *);
 extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *);
 extern bool attribute_takes_identifier_p (const_tree);
 extern int c_common_handle_option (size_t code, const char *arg, int value, int kind);
-extern bool c_common_missing_argument (const char *opt, size_t code);
 extern tree c_common_type_for_mode (enum machine_mode, int);
 extern tree c_common_type_for_size (unsigned int, int);
 extern tree c_common_fixed_point_type_for_size (unsigned int, unsigned int,
index ab22cf993b80ad76d94aca520653734c5c9b7a60..38c996bfea034b59c7c9d9fc0a9509d6e3d3dea3 100644 (file)
@@ -135,59 +135,6 @@ static struct deferred_opt
 static const unsigned int 
 c_family_lang_mask = (CL_C | CL_CXX | CL_ObjC | CL_ObjCXX);
 
-/* Complain that switch CODE expects an argument but none was
-   provided.  OPT was the command-line option.  Return FALSE to get
-   the default message in opts.c, TRUE if we provide a specialized
-   one.  */
-bool
-c_common_missing_argument (const char *opt, size_t code)
-{
-  switch (code)
-    {
-    default:
-      /* Pick up the default message.  */
-      return false;
-
-    case OPT_fconstant_string_class_:
-      error ("no class name specified with %qs", opt);
-      break;
-
-    case OPT_A:
-      error ("assertion missing after %qs", opt);
-      break;
-
-    case OPT_D:
-    case OPT_U:
-      error ("macro name missing after %qs", opt);
-      break;
-
-    case OPT_F:
-    case OPT_I:
-    case OPT_idirafter:
-    case OPT_isysroot:
-    case OPT_isystem:
-    case OPT_iquote:
-      error ("missing path after %qs", opt);
-      break;
-
-    case OPT_MF:
-    case OPT_MD:
-    case OPT_MMD:
-    case OPT_include:
-    case OPT_imacros:
-    case OPT_o:
-      error ("missing filename after %qs", opt);
-      break;
-
-    case OPT_MQ:
-    case OPT_MT:
-      error ("missing makefile target after %qs", opt);
-      break;
-    }
-
-  return true;
-}
-
 /* Defer option CODE with argument ARG.  */
 static void
 defer_opt (enum opt_code code, const char *arg)
index ade444a8dccbf334008dae791348607dbd1a3c7f..9d23b3d6f00dcfb6c898b76dd5303b49f71e7292 100644 (file)
@@ -38,7 +38,7 @@ ObjC++
 C ObjC C++ ObjC++ Joined Separate
 
 A
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(assertion missing after %qs)
 -A<question>=<answer>  Assert the <answer> to <question>.  Putting '-' before <question> disables the <answer> to <question>
 
 C
@@ -50,14 +50,14 @@ C ObjC C++ ObjC++
 Do not discard comments in macro expansions
 
 D
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
 -D<macro>[=<val>]      Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1
 
 E
 C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only)
 
 F
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
 -F <dir>       Add <dir> to the end of the main framework include path
 
 H
@@ -65,7 +65,7 @@ C ObjC C++ ObjC++
 Print the name of header files as they are used
 
 I
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
 -I <dir>       Add <dir> to the end of the main include path
 
 M
@@ -73,11 +73,11 @@ C ObjC C++ ObjC++
 Generate make dependencies
 
 MD
-C ObjC C++ ObjC++ Separate
+C ObjC C++ ObjC++ Separate MissingArgError(missing filename after %qs)
 Generate make dependencies and compile
 
 MF
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
 -MF <file>     Write dependency output to the given file
 
 MG
@@ -89,7 +89,7 @@ C ObjC C++ ObjC++
 Like -M but ignore system header files
 
 MMD
-C ObjC C++ ObjC++ Separate
+C ObjC C++ ObjC++ Separate MissingArgError(missing filename after %qs)
 Like -MD but ignore system header files
 
 MP
@@ -97,11 +97,11 @@ C ObjC C++ ObjC++
 Generate phony targets for all headers
 
 MQ
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
 -MQ <target>   Add a MAKE-quoted target
 
 MT
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
 -MT <target>   Add an unquoted target
 
 P
@@ -109,7 +109,7 @@ C ObjC C++ ObjC++
 Do not generate #line directives
 
 U
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
 -U<macro>      Undefine <macro>
 
 Wabi
@@ -564,7 +564,7 @@ C++ ObjC++ Var(flag_conserve_space)
 Reduce the size of object files
 
 fconstant-string-class=
-ObjC ObjC++ Joined
+ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
 -fconst-string-class=<name>    Use class <name> for constant strings
 
 fdeduce-init-list
@@ -886,11 +886,11 @@ C ObjC C++ ObjC++ Joined
 -femit-struct-debug-detailed=<spec-list>       Detailed reduced debug info for structs
 
 idirafter
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
 -idirafter <dir>       Add <dir> to the end of the system include path
 
 imacros
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
 -imacros <file>        Accept definition of macros in <file>
 
 imultilib
@@ -898,7 +898,7 @@ C ObjC C++ ObjC++ Joined Separate
 -imultilib <dir>       Set <dir> to be the multilib include subdirectory
 
 include
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
 -include <file>        Include the contents of <file> before other files
 
 iprefix
@@ -906,15 +906,15 @@ C ObjC C++ ObjC++ Joined Separate
 -iprefix <path>        Specify <path> as a prefix for next two options
 
 isysroot
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
 -isysroot <dir>        Set <dir> to be the system root directory
 
 isystem
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
 -isystem <dir> Add <dir> to the start of the system include path
 
 iquote
-C ObjC C++ ObjC++ Joined Separate
+C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
 -iquote <dir>  Add <dir> to the end of the quote include path
 
 iwithprefix
index c2b5ffab86ace00414c4f299a9f4d511fced1478..4bc5bb38a2acb410840728bba32f1ecc631d4263 100644 (file)
@@ -39,8 +39,6 @@ along with GCC; see the file COPYING3.  If not see
 #define LANG_HOOKS_INITIALIZE_DIAGNOSTICS c_initialize_diagnostics
 #undef LANG_HOOKS_HANDLE_OPTION
 #define LANG_HOOKS_HANDLE_OPTION c_common_handle_option
-#undef LANG_HOOKS_MISSING_ARGUMENT
-#define LANG_HOOKS_MISSING_ARGUMENT c_common_missing_argument
 #undef LANG_HOOKS_POST_OPTIONS
 #define LANG_HOOKS_POST_OPTIONS c_common_post_options
 #undef LANG_HOOKS_GET_ALIAS_SET
index 41a9838f481eeb599f25a291c1fbd5c49c9d1d24..59ab3b1b341261c710d21c3f2224da2aa28eebca 100644 (file)
@@ -1584,7 +1584,7 @@ Common Joined Var(plugindir_string) Init(0)
 -iplugindir=<dir>      Set <dir> to be the default plugin directory
 
 o
-Common Joined Separate
+Common Joined Separate MissingArgError(missing filename after %qs)
 -o <file>      Place output into <file>
 
 p
index 7829c5b9a7b7bf28f3fd638e103390092a1cf055..35416869926a656af0b42e02f1e09e164d1cbcc0 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-27  Joseph Myers  <joseph@codesourcery.com>
+
+       * cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
+
 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
 
        * cp-objcp-common.c (cxx_initialize_diagnostics): First call
index 5e26b335ca50ec356dfcfabdabeb69d3170a06cf..2391faf2239e5f3c25656ec66364f92e98336d74 100644 (file)
@@ -53,8 +53,6 @@ extern bool cp_function_decl_explicit_p (tree decl);
 #define LANG_HOOKS_HANDLE_OPTION c_common_handle_option
 #undef LANG_HOOKS_HANDLE_FILENAME
 #define LANG_HOOKS_HANDLE_FILENAME c_common_handle_filename
-#undef LANG_HOOKS_MISSING_ARGUMENT
-#define LANG_HOOKS_MISSING_ARGUMENT c_common_missing_argument
 #undef LANG_HOOKS_POST_OPTIONS
 #define LANG_HOOKS_POST_OPTIONS c_common_post_options
 #undef LANG_HOOKS_GET_ALIAS_SET
index 284ea49cdfe84853aca235920d4518cc96762e8a..b14b2b497fa660c2ccaf9dae59337a3c0c2c07b9 100644 (file)
@@ -1,4 +1,4 @@
-@c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+@c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 @c Free Software Foundation, Inc.
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
@@ -135,6 +135,14 @@ it will be part of the same @code{argv} entry as the option itself.
 
 This property cannot be used alongside @code{Joined} or @code{Separate}.
 
+@item MissingArgError(@var{message})
+For an option marked @code{Joined} or @code{Separate}, the message
+@var{message} will be used as an error message if the mandatory
+argument is missing; for options without @code{MissingArgError}, a
+generic error message is used.  @var{message} should contain a single
+@samp{%qs} format, which will be used to format the name of the option
+passed.
+
 @item UInteger
 The option's argument is a non-negative integer.  The option parser
 will check and convert the argument before passing it to the relevant
index 355509ad7b9db29c80fa2bfdbd60db74f4f723ab..94d045f037047bdb303a5b2ec8b64d8d7ac41ec8 100644 (file)
@@ -118,13 +118,6 @@ hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED,
   return true;
 }
 
-bool
-hook_bool_constcharptr_size_t_false (const char *a ATTRIBUTE_UNUSED,
-                                    size_t b ATTRIBUTE_UNUSED)
-{
-  return false;
-}
-
 bool
 hook_bool_size_t_constcharptr_int_true (size_t a ATTRIBUTE_UNUSED,
                                        const char *b ATTRIBUTE_UNUSED,
index db1da30398d98c5201f62edbbfc290315ded1020..52e4d84ce78a019b06441155dcc621e189dbaf30 100644 (file)
@@ -48,7 +48,6 @@ extern bool hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree,
 extern bool hook_bool_rtx_false (rtx);
 extern bool hook_bool_uintp_uintp_false (unsigned int *, unsigned int *);
 extern bool hook_bool_rtx_int_int_intp_bool_false (rtx, int, int, int *, bool);
-extern bool hook_bool_constcharptr_size_t_false (const char *, size_t);
 extern bool hook_bool_size_t_constcharptr_int_true (size_t, const char *, int);
 extern bool hook_bool_tree_tree_false (tree, tree);
 extern bool hook_bool_tree_tree_true (tree, tree);
index 504fdad59204b3cf82eb814a85d516ff3f727cf7..1b7cebfb10ea2268f57603188fad7e114aa86997 100644 (file)
@@ -90,7 +90,6 @@ extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *,
 #define LANG_HOOKS_INITIALIZE_DIAGNOSTICS lhd_initialize_diagnostics
 #define LANG_HOOKS_COMPLAIN_WRONG_LANG_P lhd_complain_wrong_lang_p
 #define LANG_HOOKS_HANDLE_OPTION       hook_int_size_t_constcharptr_int_0
-#define LANG_HOOKS_MISSING_ARGUMENT    hook_bool_constcharptr_size_t_false
 #define LANG_HOOKS_POST_OPTIONS                lhd_post_options
 #define LANG_HOOKS_MISSING_NORETURN_OK_P hook_bool_tree_true
 #define LANG_HOOKS_GET_ALIAS_SET       lhd_get_alias_set
@@ -268,7 +267,6 @@ extern void lhd_end_section (void);
   LANG_HOOKS_INITIALIZE_DIAGNOSTICS, \
   LANG_HOOKS_COMPLAIN_WRONG_LANG_P, \
   LANG_HOOKS_HANDLE_OPTION, \
-  LANG_HOOKS_MISSING_ARGUMENT, \
   LANG_HOOKS_POST_OPTIONS, \
   LANG_HOOKS_INIT, \
   LANG_HOOKS_FINISH, \
index 4702d143daadf6838ec63a839632c2da622a67be..6c9f80dec4b8d387b110a90dc20a5efca922d06d 100644 (file)
@@ -298,10 +298,6 @@ struct lang_hooks
      valid and should not be treated as language-independent too.  */
   int (*handle_option) (size_t code, const char *arg, int value, int kind);
 
-  /* Return false to use the default complaint about a missing
-     argument, otherwise output a complaint and return true.  */
-  bool (*missing_argument) (const char *opt, size_t code);
-
   /* Called when all command line options have been parsed to allow
      further processing and initialization
 
index 60211df2de16920bc5dc8534f1785142fc04ba8e..78741fc8743e8a29ed2e8e374a27ee2d355e849c 100644 (file)
@@ -194,6 +194,12 @@ for (i = 0; i < n_opts; i++) {
        else
                hlp = quote help[i] quote;
 
+       missing_arg_error = opt_args("MissingArgError", flags[i])
+       if (missing_arg_error == "")
+               missing_arg_error = "0"
+       else
+               missing_arg_error = quote missing_arg_error quote
+
        neg = opt_args("Negative", flags[i]);
        if (neg != "")
                idx = indices[neg]
@@ -209,8 +215,9 @@ for (i = 0; i < n_opts; i++) {
        }
        # Split the printf after %u to work around an ia64-hp-hpux11.23
        # awk bug.
-       printf("  { %c-%s%c,\n    %s,\n    %s, %u,",
-              quote, opts[i], quote, hlp, back_chain[i], len)
+       printf("  { %c-%s%c,\n    %s,\n    %s,\n    %s, %u,",
+              quote, opts[i], quote, hlp, missing_arg_error,
+              back_chain[i], len)
        printf(" %d,\n", idx)
        condition = opt_args("Condition", flags[i])
        cl_flags = switch_flags(flags[i])
index 2016ed4d44116ea0a12bc3cd53cfb069c7a3a2af..12eb40a451a4855c2c19d1c2a0a40783f31b1b09 100644 (file)
@@ -547,7 +547,9 @@ read_cmdline_option (struct cl_decoded_option *decoded,
 
   if (decoded->errors & CL_ERR_MISSING_ARG)
     {
-      if (!lang_hooks.missing_argument (opt, decoded->opt_index))
+      if (option->missing_argument_error)
+       error (option->missing_argument_error, opt);
+      else
        error ("missing argument to %qs", opt);
       return;
     }
index fbc86b1c36ea518fca967e182e11bb79db79a209..674843a9497be67a33defb994a272c419bcf777e 100644 (file)
@@ -44,6 +44,7 @@ struct cl_option
 {
   const char *opt_text;
   const char *help;
+  const char *missing_argument_error;
   unsigned short back_chain;
   unsigned char opt_len;
   int neg_index;
index 2bd47546476a65eb684dfa42155a86d57b29343e..75200f86d36eabc479820be9f04898976d67bd7f 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-27  Joseph Myers  <joseph@codesourcery.com>
+
+       * exgettext: Also extract MissingArgError texts from .opt files.
+
 2010-06-29  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        PR other/44034
index e0658302ac87d7d86b00526924772fbc7027abb9..c3d92448f980f82de35b018824a3f5ff79fbefb1 100644 (file)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Wrapper around gettext for programs using the msgid convention.
-# Copyright 1998, 2001, 2002, 2003, 2009 Free Software Foundation, Inc.
+# Copyright 1998, 2001, 2002, 2003, 2009, 2010 Free Software Foundation, Inc.
 
 # Written by Paul Eggert <eggert@twinsun.com>.
 # Revised by Zack Weinberg <zackw@stanford.edu> for no-POTFILES operation.
@@ -223,6 +223,13 @@ echo "scanning option files..." >&2
        if (/^[ \t]*(;|$)/ || !/^[^ \t]/) {
            field = 0
        } else {
+           if ((field == 1) && /MissingArgError/) {
+               line = $0
+               sub(".*MissingArgError\\(", "", line)
+               sub("\\).*", "", line)
+               printf("#line %d \"%s\"\n", lineno, file)
+               printf("_(\"%s\")\n", line)
+           }
            if (field == 2) {
                line = $0
                printf("#line %d \"%s\"\n", lineno, file)
index a8b4fa93558ef2d3e2c20492d37c550bed75f42d..a5cfababa6dffb2c90adfb2d5ab1c06ad30d8a37 100644 (file)
@@ -779,7 +779,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
        LANG_HOOKS_PUSHLEVEL LANG_HOOKS_SET_BLOCK \
        LANG_HOOKS_MAYBE_BUILD_CLEANUP LANG_HOOKS_UPDATE_DECL_AFTER_SAVING \
        LANG_HOOKS_POPLEVEL LANG_HOOKS_TRUTHVALUE_CONVERSION \
-       TARGET_PROMOTE_FUNCTION_ARGS TARGET_PROMOTE_FUNCTION_RETURN
+       TARGET_PROMOTE_FUNCTION_ARGS TARGET_PROMOTE_FUNCTION_RETURN \
+       LANG_HOOKS_MISSING_ARGUMENT
 
 /* Miscellaneous macros that are no longer used.  */
  #pragma GCC poison USE_MAPPED_LOCATION