summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2011-04-04 10:17:11 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2011-04-04 10:17:11 +0000
commitcb14e05859b08afbee46f715af6cd368f131a96a (patch)
tree80b585242934f43f5933e85676bd17af4fba0f01
parent517579e0f9bfb4bafcc6674532fab3352baef52d (diff)
downloadgcc-cb14e05859b08afbee46f715af6cd368f131a96a.tar.gz
* doc/options.texi (ToLower): Document.
* opt-functions.awk (switch_bit_fields): Initialize cl_tolower field. * opts-common.c (decode_cmdline_option): Handle cl_tolower. * opts.h (cl_option): Add cl_tolower field. * config/rx/rx.c (rx_handle_option): Use strcmp of -mcpu= arguments with lowercase strings. * config/rx/rx.opt (mcpu=): Add ToLower. * config/rx/t-rx (MULTILIB_MATCHES): Don't handle uppercase -mcpu= argument. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171932 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/config/rx/rx.c6
-rw-r--r--gcc/config/rx/rx.opt4
-rw-r--r--gcc/config/rx/t-rx4
-rw-r--r--gcc/doc/options.texi5
-rw-r--r--gcc/opt-functions.awk1
-rw-r--r--gcc/opts-common.c13
-rw-r--r--gcc/opts.h2
8 files changed, 41 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 75f791a7152..4447037cbc6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,16 @@
+2011-04-04 Joseph Myers <joseph@codesourcery.com>
+
+ * doc/options.texi (ToLower): Document.
+ * opt-functions.awk (switch_bit_fields): Initialize cl_tolower
+ field.
+ * opts-common.c (decode_cmdline_option): Handle cl_tolower.
+ * opts.h (cl_option): Add cl_tolower field.
+ * config/rx/rx.c (rx_handle_option): Use strcmp of -mcpu=
+ arguments with lowercase strings.
+ * config/rx/rx.opt (mcpu=): Add ToLower.
+ * config/rx/t-rx (MULTILIB_MATCHES): Don't handle uppercase -mcpu=
+ argument.
+
2011-04-04 Richard Sandiford <richard.sandiford@linaro.org>
* config/pdp11/pdp11.h (IRA_COVER_CLASSES): Delete.
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 0ed4ee634d2..f0a97abd500 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -2308,14 +2308,14 @@ rx_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
return value >= 0 && value <= 4;
case OPT_mcpu_:
- if (strcasecmp (arg, "RX610") == 0)
+ if (strcmp (arg, "rx610") == 0)
rx_cpu_type = RX610;
- else if (strcasecmp (arg, "RX200") == 0)
+ else if (strcmp (arg, "rx200") == 0)
{
target_flags |= MASK_NO_USE_FPU;
rx_cpu_type = RX200;
}
- else if (strcasecmp (arg, "RX600") != 0)
+ else if (strcmp (arg, "rx600") != 0)
warning (0, "unrecognized argument '%s' to -mcpu= option", arg);
break;
diff --git a/gcc/config/rx/rx.opt b/gcc/config/rx/rx.opt
index 35143dd0f55..99f262c0773 100644
--- a/gcc/config/rx/rx.opt
+++ b/gcc/config/rx/rx.opt
@@ -1,5 +1,5 @@
; Command line options for the Renesas RX port of GCC.
-; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+; Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
; Contributed by Red Hat.
;
; This file is part of GCC.
@@ -43,7 +43,7 @@ Enable the use of RX FPU instructions. This is the default.
;---------------------------------------------------
mcpu=
-Target RejectNegative Joined Var(rx_cpu_name) Report
+Target RejectNegative Joined Var(rx_cpu_name) Report ToLower
Specify the target RX cpu type.
;---------------------------------------------------
diff --git a/gcc/config/rx/t-rx b/gcc/config/rx/t-rx
index 7990bcfaa47..38893143981 100644
--- a/gcc/config/rx/t-rx
+++ b/gcc/config/rx/t-rx
@@ -1,5 +1,5 @@
# Makefile fragment for building GCC for the Renesas RX target.
-# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
# Contributed by Red Hat.
#
# This file is part of GCC.
@@ -23,7 +23,7 @@
MULTILIB_OPTIONS = m64bit-doubles nofpu mbig-endian-data
MULTILIB_DIRNAMES = 64-bit-double no-fpu-libs big-endian-data
-MULTILIB_MATCHES = nofpu=mnofpu nofpu=mcpu?rx200 nofpu=mcpu?RX200
+MULTILIB_MATCHES = nofpu=mnofpu nofpu=mcpu?rx200
MULTILIB_EXCEPTIONS =
MULTILIB_EXTRA_OPTS =
diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi
index 608afa2b1b9..69e73645893 100644
--- a/gcc/doc/options.texi
+++ b/gcc/doc/options.texi
@@ -257,6 +257,11 @@ option handler. @code{UInteger} should also be used on options like
@code{-falign-loops}=@var{n} are supported to make sure the saved
options are given a full integer.
+@item ToLower
+The option's argument should be converted to lowercase as part of
+putting it in canonical form, and before comparing with the strings
+indicated by any @code{Enum} property.
+
@item NoDriverArg
For an option marked @code{Separate}, the option only takes an
argument in the compiler proper, not in the driver. This is for
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index 19bdf3afb06..68575790e52 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -126,6 +126,7 @@ function switch_bit_fields (flags)
flag_init("RejectNegative", flags) \
flag_init("JoinedOrMissing", flags) \
flag_init("UInteger", flags) \
+ flag_init("ToLower", flags) \
flag_init("Report", flags)
sub(", $", "", result)
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index f54d64aff28..e314cb35213 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -567,6 +567,19 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
if (!option_ok_for_language (option, lang_mask))
errors |= CL_ERR_WRONG_LANG;
+ /* Convert the argument to lowercase if appropriate. */
+ if (arg && option->cl_tolower)
+ {
+ size_t j;
+ size_t len = strlen (arg);
+ char *arg_lower = XNEWVEC (char, len + 1);
+
+ for (j = 0; j < len; j++)
+ arg_lower[j] = TOLOWER ((unsigned char) arg[j]);
+ arg_lower[len] = 0;
+ arg = arg_lower;
+ }
+
/* If the switch takes an integer, convert it. */
if (arg && option->cl_uinteger)
{
diff --git a/gcc/opts.h b/gcc/opts.h
index 15e717da0d9..c0c597f8601 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -96,6 +96,8 @@ struct cl_option
BOOL_BITFIELD cl_missing_ok : 1;
/* Argument is an integer >=0. */
BOOL_BITFIELD cl_uinteger : 1;
+ /* Argument should be converted to lowercase. */
+ BOOL_BITFIELD cl_tolower : 1;
/* Report argument with -fverbose-asm */
BOOL_BITFIELD cl_report : 1;
/* Offset of field for this option in struct gcc_options, or