common.opt (o): Add MissingArgError.

* 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
This commit is contained in:
Joseph Myers 2010-07-27 15:43:31 +01:00 committed by Joseph Myers
parent 4e98bcaf29
commit 61ff2bdc6c
20 changed files with 84 additions and 96 deletions

View 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

View 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,

View 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,

View 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)

View 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

View 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

View 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

View 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

View 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

View 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

View 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,

View 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);

View 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, \

View 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

View 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])

View 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;
}

View 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;

View 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

View 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)

View 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