[5/77] Small tweak to array_value_type
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 30 Aug 2017 11:08:53 +0000 (11:08 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 30 Aug 2017 11:08:53 +0000 (11:08 +0000)
Store the type mode in a variable so that a later,
more mechanical patch can change its type.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251456

gcc/ChangeLog
gcc/tree-switch-conversion.c

index 7742722c1f43a5682b46392f47c4c85b3e9ed429..8765c3cc7a326c3f73e50af546157299ef2423a2 100644 (file)
@@ -1,3 +1,10 @@
+2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+           Alan Hayward  <alan.hayward@arm.com>
+           David Sherwood  <david.sherwood@arm.com>
+
+       * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
+       once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
+
 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
             Alan Hayward  <alan.hayward@arm.com>
             David Sherwood  <david.sherwood@arm.com>
index 5a827a6f1f9a8fcc8ef5b83b9245c1e838af37eb..85d6816d11902192f39281735ee329322d38b3ee 100644 (file)
@@ -1037,7 +1037,6 @@ array_value_type (gswitch *swtch, tree type, int num,
 {
   unsigned int i, len = vec_safe_length (info->constructors[num]);
   constructor_elt *elt;
-  machine_mode mode;
   int sign = 0;
   tree smaller_type;
 
@@ -1051,8 +1050,9 @@ array_value_type (gswitch *swtch, tree type, int num,
   if (!INTEGRAL_TYPE_P (type))
     return type;
 
-  mode = GET_CLASS_NARROWEST_MODE (GET_MODE_CLASS (TYPE_MODE (type)));
-  if (GET_MODE_SIZE (TYPE_MODE (type)) <= GET_MODE_SIZE (mode))
+  machine_mode type_mode = TYPE_MODE (type);
+  machine_mode mode = get_narrowest_mode (type_mode);
+  if (GET_MODE_SIZE (type_mode) <= GET_MODE_SIZE (mode))
     return type;
 
   if (len < (optimize_bb_for_size_p (gimple_bb (swtch)) ? 2 : 32))
@@ -1090,7 +1090,7 @@ array_value_type (gswitch *swtch, tree type, int num,
 
          mode = GET_MODE_WIDER_MODE (mode);
          if (mode == VOIDmode
-             || GET_MODE_SIZE (mode) >= GET_MODE_SIZE (TYPE_MODE (type)))
+             || GET_MODE_SIZE (mode) >= GET_MODE_SIZE (type_mode))
            return type;
        }
     }