* doc/options.texi (NegativeAlias): Document.
(Alias): Mention NegativeAlias.
* opt-functions.awk: Handle NegativeAlias.
* optc-gen.awk: Disallow NegativeAlias with multiple Alias
arguments.
* opts-common.c (decode_cmdline_option): Handle CL_NEGATIVE_ALIAS.
* opts.h (CL_NEGATIVE_ALIAS): Define.
* config/rs6000/rs6000.c (rs6000_parse_yes_no_option): Remove.
(rs6000_handle_option): Don't handle OPT_mvrsave_, OPT_misel_ and
OPT_mspe_.
* config/rs6000/rs6000.opt (mvrsave=, misel=, mspe=): Replace with
Alias entries.
* config/rs6000/t-spe (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
mno-spe and mno-isel instead of mspe=no and -misel=no.
From-SVN: r171745
+2011-03-30 Joseph Myers <joseph@codesourcery.com>
+
+ * doc/options.texi (NegativeAlias): Document.
+ (Alias): Mention NegativeAlias.
+ * opt-functions.awk: Handle NegativeAlias.
+ * optc-gen.awk: Disallow NegativeAlias with multiple Alias
+ arguments.
+ * opts-common.c (decode_cmdline_option): Handle CL_NEGATIVE_ALIAS.
+ * opts.h (CL_NEGATIVE_ALIAS): Define.
+ * config/rs6000/rs6000.c (rs6000_parse_yes_no_option): Remove.
+ (rs6000_handle_option): Don't handle OPT_mvrsave_, OPT_misel_ and
+ OPT_mspe_.
+ * config/rs6000/rs6000.opt (mvrsave=, misel=, mspe=): Replace with
+ Alias entries.
+ * config/rs6000/t-spe (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
+ mno-spe and mno-isel instead of mspe=no and -misel=no.
+
2011-03-29 Mark Wielaard <mjw@redhat.com>
* common.opt (fdebug-types-section): New flag.
const struct cl_decoded_option *,
location_t);
static int rs6000_loop_align_max_skip (rtx);
-static void rs6000_parse_yes_no_option (const char *, const char *, int *);
static int first_altivec_reg_to_save (void);
static unsigned int compute_vrsave_mask (void);
static void compute_save_world_info (rs6000_stack_t *info_ptr);
return word_mode;
}
-/* Handle generic options of the form -mfoo=yes/no.
- NAME is the option name.
- VALUE is the option value.
- FLAG is the pointer to the flag where to store a 1 or 0, depending on
- whether the option value is 'yes' or 'no' respectively. */
-static void
-rs6000_parse_yes_no_option (const char *name, const char *value, int *flag)
-{
- if (value == 0)
- return;
- else if (!strcmp (value, "yes"))
- *flag = 1;
- else if (!strcmp (value, "no"))
- *flag = 0;
- else
- error ("unknown -m%s= option specified: '%s'", name, value);
-}
-
/* Implement TARGET_OPTION_INIT_STRUCT. */
static void
TARGET_ALTIVEC_VRSAVE = value;
break;
- case OPT_mvrsave_:
- rs6000_explicit_options.vrsave = true;
- rs6000_parse_yes_no_option ("vrsave", arg, &(TARGET_ALTIVEC_VRSAVE));
- break;
-
- case OPT_misel_:
- target_flags_explicit |= MASK_ISEL;
- isel = 0;
- rs6000_parse_yes_no_option ("isel", arg, &isel);
- if (isel)
- target_flags |= MASK_ISEL;
- else
- target_flags &= ~MASK_ISEL;
- break;
-
case OPT_mspe:
rs6000_explicit_options.spe = true;
rs6000_spe = value;
break;
- case OPT_mspe_:
- rs6000_explicit_options.spe = true;
- rs6000_parse_yes_no_option ("spe", arg, &(rs6000_spe));
- break;
-
case OPT_mdebug_:
p = ASTRDUP (arg);
rs6000_debug = 0;
; Options for the rs6000 port of the compiler
;
-; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
; Foundation, Inc.
; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
;
Target Report Var(TARGET_ALTIVEC_VRSAVE) Save
Generate VRSAVE instructions when generating AltiVec code
-mvrsave=
-Target RejectNegative Joined
--mvrsave=yes/no Deprecated option. Use -mvrsave/-mno-vrsave instead
+mvrsave=no
+Target RejectNegative Alias(mvrsave) NegativeAlias
+Deprecated option. Use -mno-vrsave instead
+
+mvrsave=yes
+Target RejectNegative Alias(mvrsave)
+Deprecated option. Use -mvrsave instead
mblock-move-inline-limit=
Target Report Var(rs6000_block_move_inline_limit) Init(0) RejectNegative Joined UInteger Save
Target Report Mask(ISEL) Save
Generate isel instructions
-misel=
-Target RejectNegative Joined
--misel=yes/no Deprecated option. Use -misel/-mno-isel instead
+misel=no
+Target RejectNegative Alias(misel) NegativeAlias
+Deprecated option. Use -mno-isel instead
+
+misel=yes
+Target RejectNegative Alias(misel)
+Deprecated option. Use -misel instead
mspe
Target
Target Var(rs6000_paired_float) Save
Generate PPC750CL paired-single instructions
-mspe=
-Target RejectNegative Joined
--mspe=yes/no Deprecated option. Use -mspe/-mno-spe instead
+mspe=no
+Target RejectNegative Alias(mspe) NegativeAlias
+Deprecated option. Use -mno-spe instead
+
+mspe=yes
+Target RejectNegative Alias(mspe)
+Deprecated option. Use -mspe instead
mdebug=
Target RejectNegative Joined
# Multilibs for e500
#
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# -mcpu=7400 -maltivec -mabi=altivec
# -mcpu=7400 -msoft-float
# -msoft-float
-# -mspe=no -mabi=no-spe -misel=no
+# -mno-spe -mabi=no-spe -mno-isel
# so we'll need to create exceptions later below.
MULTILIB_OPTIONS = mcpu=7400 \
maltivec \
mabi=altivec \
msoft-float \
- mspe=no \
+ mno-spe \
mabi=no-spe \
- misel=no \
+ mno-isel \
mlittle
MULTILIB_DIRNAMES = mpc7400 altivec abi-altivec \
nof no-spe no-abi-spe no-isel le
-MULTILIB_EXCEPTIONS = maltivec mabi=altivec mspe=no mabi=no-spe misel=no \
+MULTILIB_EXCEPTIONS = maltivec mabi=altivec mno-spe mabi=no-spe mno-isel \
maltivec/mabi=altivec \
mcpu=7400/maltivec \
mcpu=7400/mabi=altivec \
- *mcpu=7400/*mspe=no* \
+ *mcpu=7400/*mno-spe* \
*mcpu=7400/*mabi=no-spe* \
- *mcpu=7400/*misel=no* \
+ *mcpu=7400/*mno-isel* \
*maltivec/*msoft-float* \
- *maltivec/*mspe=no* \
+ *maltivec/*mno-spe* \
*maltivec/*mabi=no-spe* \
- *maltivec/*misel=no* \
+ *maltivec/*mno-isel* \
*mabi=altivec/*msoft-float* \
- *mabi=altivec/*mspe=no* \
+ *mabi=altivec/*mno-spe* \
*mabi=altivec/*mabi=no-spe* \
- *mabi=altivec/*misel=no* \
- *msoft-float/*mspe=no* \
+ *mabi=altivec/*mno-isel* \
+ *msoft-float/*mno-spe* \
*msoft-float/*mabi=no-spe* \
- *msoft-float/*misel=no* \
- mspe=no/mabi=no-spe \
- mspe=no/misel=no \
- mabi=no-spe/misel=no \
- misel=no/mlittle \
- mabi=no-spe/misel=no/mlittle \
- mspe=no/mlittle \
+ *msoft-float/*mno-isel* \
+ mno-spe/mabi=no-spe \
+ mno-spe/mno-isel \
+ mabi=no-spe/mno-isel \
+ mno-isel/mlittle \
+ mabi=no-spe/mno-isel/mlittle \
+ mno-spe/mlittle \
mabi=spe/mlittle \
mcpu=7400/mabi=altivec/mlittle \
mcpu=7400/maltivec/mlittle \
mabi=no-spe/mlittle \
- mspe=no/misel=no/mlittle \
- mspe=no/mabi=no-spe/mlittle \
+ mno-spe/mno-isel/mlittle \
+ mno-spe/mabi=no-spe/mlittle \
mabi=altivec/mlittle \
maltivec/mlittle \
maltivec/mabi=altivec/mlittle
@item Alias(@var{opt})
@itemx Alias(@var{opt}, @var{arg})
@itemx Alias(@var{opt}, @var{posarg}, @var{negarg})
-The option is an alias for @option{-@var{opt}}. In the first form,
+The option is an alias for @option{-@var{opt}} (or the negative form
+of that option, depending on @code{NegativeAlias}). In the first form,
any argument passed to the alias is considered to be passed to
@option{-@var{opt}}, and @option{-@var{opt}} is considered to be
negated if the alias is used in negated form. In the second form, the
for it; only the canonical form of the option will be seen in those
places.
+@item NegativeAlias
+For an option marked with @code{Alias(@var{opt})}, the option is
+considered to be an alias for the positive form of @option{-@var{opt}}
+if negated and for the negative form of @option{-@var{opt}} if not
+negated. @code{NegativeAlias} may not be used with the forms of
+@code{Alias} taking more than one argument.
+
@item Ignore
This option is ignored apart from printing any warning specified using
@code{Warn}. The option will not be seen by specs and no @samp{OPT_}
-# Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010, 2011
# Free Software Foundation, Inc.
# Contributed by Kelley Cook, June 2004.
# Original code from Neil Booth, May 2003.
test_flag("RejectDriver", flags, " | CL_REJECT_DRIVER") \
test_flag("NoDriverArg", flags, " | CL_NO_DRIVER_ARG") \
test_flag("SeparateAlias", flags, " | CL_SEPARATE_ALIAS") \
+ test_flag("NegativeAlias", flags, " | CL_NEGATIVE_ALIAS") \
test_flag("Save", flags, " | CL_SAVE") \
test_flag("Joined", flags, " | CL_JOINED") \
test_flag("JoinedOrMissing", flags, " | CL_JOINED | CL_MISSING_OK") \
print "#error Alias with single argument " \
"allowing negative form"
}
+ if (alias_posarg != "" \
+ && flag_set_p("NegativeAlias", flags[i])) {
+ print "#error Alias with multiple arguments " \
+ "used with NegativeAlias"
+ }
alias_opt = opt_enum(alias_opt)
if (alias_posarg == "")
{
gcc_assert (option->alias_arg != NULL);
gcc_assert (arg == NULL);
+ gcc_assert (!(option->flags & CL_NEGATIVE_ALIAS));
if (value)
arg = option->alias_arg;
else
{
gcc_assert (value == 1);
gcc_assert (arg == NULL);
+ gcc_assert (!(option->flags & CL_NEGATIVE_ALIAS));
arg = option->alias_arg;
}
+ if (option->flags & CL_NEGATIVE_ALIAS)
+ value = !value;
+
opt_index = new_opt_index;
option = new_option;
#define CL_MISSING_OK (1U << 28) /* Missing argument OK (joined). */
#define CL_UINTEGER (1U << 29) /* Argument is an integer >=0. */
#define CL_UNDOCUMENTED (1U << 30) /* Do not output with --help. */
+#define CL_NEGATIVE_ALIAS (1U << 31) /* Alias to negative form of option. */
/* Flags for an enumerated option argument. */
#define CL_ENUM_CANONICAL (1 << 0) /* Canonical for this value. */