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:
parent
4e98bcaf29
commit
61ff2bdc6c
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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, \
|
||||
|
@ -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
|
||||
|
||||
|
@ -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])
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user