diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/c-family/c-common.h | 1 | ||||
-rw-r--r-- | gcc/c-family/c-opts.c | 53 | ||||
-rw-r--r-- | gcc/c-family/c.opt | 34 | ||||
-rw-r--r-- | gcc/c-objc-common.h | 2 | ||||
-rw-r--r-- | gcc/common.opt | 2 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/cp-objcp-common.h | 2 | ||||
-rw-r--r-- | gcc/doc/options.texi | 10 | ||||
-rw-r--r-- | gcc/hooks.c | 7 | ||||
-rw-r--r-- | gcc/hooks.h | 1 | ||||
-rw-r--r-- | gcc/langhooks-def.h | 2 | ||||
-rw-r--r-- | gcc/langhooks.h | 4 | ||||
-rw-r--r-- | gcc/optc-gen.awk | 11 | ||||
-rw-r--r-- | gcc/opts.c | 4 | ||||
-rw-r--r-- | gcc/opts.h | 1 | ||||
-rw-r--r-- | gcc/po/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/po/exgettext | 9 | ||||
-rw-r--r-- | gcc/system.h | 3 |
20 files changed, 84 insertions, 96 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9b04483a64f..ddbe6cccb34 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 7007582bb9d..17bd6ab56f5 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,5 +1,14 @@ 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, c_common_initialize_diagnostics, c_common_complain_wrong_lang_p): New. diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index df9cf759a5a..b92fef8f04d 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -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, diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index ab22cf993b8..38c996bfea0 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -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) diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index ade444a8dcc..9d23b3d6f00 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -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 diff --git a/gcc/c-objc-common.h b/gcc/c-objc-common.h index c2b5ffab86a..4bc5bb38a2a 100644 --- a/gcc/c-objc-common.h +++ b/gcc/c-objc-common.h @@ -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 diff --git a/gcc/common.opt b/gcc/common.opt index 41a9838f481..59ab3b1b341 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -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 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7829c5b9a7b..35416869926 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 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 c_common_initialize_diagnostics. * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK, diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index 5e26b335ca5..2391faf2239 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -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 diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 284ea49cdfe..b14b2b497fa 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -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 diff --git a/gcc/hooks.c b/gcc/hooks.c index 355509ad7b9..94d045f0370 100644 --- a/gcc/hooks.c +++ b/gcc/hooks.c @@ -119,13 +119,6 @@ hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED, } 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, int c ATTRIBUTE_UNUSED) diff --git a/gcc/hooks.h b/gcc/hooks.h index db1da30398d..52e4d84ce78 100644 --- a/gcc/hooks.h +++ b/gcc/hooks.h @@ -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); diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index 504fdad5920..1b7cebfb10e 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -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, \ diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 4702d143daa..6c9f80dec4b 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -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 diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk index 60211df2de1..78741fc8743 100644 --- a/gcc/optc-gen.awk +++ b/gcc/optc-gen.awk @@ -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]) diff --git a/gcc/opts.c b/gcc/opts.c index 2016ed4d441..12eb40a451a 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -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; } diff --git a/gcc/opts.h b/gcc/opts.h index fbc86b1c36e..674843a9497 100644 --- a/gcc/opts.h +++ b/gcc/opts.h @@ -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; diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index 2bd47546476..75200f86d36 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -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 diff --git a/gcc/po/exgettext b/gcc/po/exgettext index e0658302ac8..c3d92448f98 100644 --- a/gcc/po/exgettext +++ b/gcc/po/exgettext @@ -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) diff --git a/gcc/system.h b/gcc/system.h index a8b4fa93558..a5cfababa6d 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -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 |