options.texi (ToLower): Document.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 4 Apr 2011 10:17:11 +0000 (11:17 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 4 Apr 2011 10:17:11 +0000 (11:17 +0100)
* 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.

From-SVN: r171932

gcc/ChangeLog
gcc/config/rx/rx.c
gcc/config/rx/rx.opt
gcc/config/rx/t-rx
gcc/doc/options.texi
gcc/opt-functions.awk
gcc/opts-common.c
gcc/opts.h

index 75f791a7152cf6bc96a11a99823e6b56a7de2c2c..4447037cbc61887f45acd5e4237684e4204e757f 100644 (file)
@@ -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.
index 0ed4ee634d2be5b10c339a9b1ab2b1fe3cd9a2a7..f0a97abd500cfe0e66e3f8e77b9e380a2a004423 100644 (file)
@@ -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;
       
index 35143dd0f55794dedb52451a821775efbef62bac..99f262c07736a678284a613c77c402ed7a003a5a 100644 (file)
@@ -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.
 
 ;---------------------------------------------------
index 7990bcfaa47d8cadf8b8a20dfbe44f785fcd5bdb..3889314398151a6d464b277acfbda9907cafaaae 100644 (file)
@@ -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 = 
index 608afa2b1b92c3885a0c22fecc0864723e75d84e..69e73645893b62203e1fcdc53730e0c2546548a2 100644 (file)
@@ -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
index 19bdf3afb06873cced64cae7b1089e1cc6741ae9..68575790e52cfbde8c8c8b8135e7c4cbb75ff066 100644 (file)
@@ -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)
index f54d64aff2810e77dad3796c3a6f3b1e4690b190..e314cb35213e7881cf04f520f0fb862c9a477c54 100644 (file)
@@ -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)
     {
index 15e717da0d945d79ea6816821906da61ec6e38af..c0c597f860144d7f7059908802ee9ae153f8295d 100644 (file)
@@ -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