Use scalar_int/float_mode in brig_langhook_type_for_mode
authorRichard Sandiford <richard.sandiford@linaro.org>
Mon, 23 Oct 2017 09:36:12 +0000 (09:36 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 23 Oct 2017 09:36:12 +0000 (09:36 +0000)
This follows on from similar changes a couple of months ago and
is needed when general modes have variable size.

2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/brig/
* brig-lang.c (brig_langhook_type_for_mode): Use scalar_int_mode
and scalar_float_mode.

From-SVN: r254000

gcc/brig/ChangeLog
gcc/brig/brig-lang.c

index fa7668486b203a8395f5526ab31d20e6fc13e94e..01778599406c9a95c5239e05a2803162f96c044b 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * brig-lang.c (brig_langhook_type_for_mode): Use scalar_int_mode
+       and scalar_float_mode.
+
 2017-10-09  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
 
        * brigfrontend/brig-to-generic.cc: Support BRIG_KIND_NONE
index 970214b3a3fb2193b1253dc02f5cc57ddf24ece9..cff605541d05b80bbe815699b5dc8cc1f36a24cf 100644 (file)
@@ -278,10 +278,11 @@ brig_langhook_type_for_mode (machine_mode mode, int unsignedp)
       return NULL_TREE;
     }
 
-  enum mode_class mc = GET_MODE_CLASS (mode);
-  if (mc == MODE_FLOAT)
+  scalar_int_mode imode;
+  scalar_float_mode fmode;
+  if (is_int_mode (mode, &imode))
     {
-      switch (GET_MODE_BITSIZE (mode))
+      switch (GET_MODE_BITSIZE (imode))
        {
        case 32:
          return float_type_node;
@@ -290,15 +291,15 @@ brig_langhook_type_for_mode (machine_mode mode, int unsignedp)
        default:
          /* We have to check for long double in order to support
             i386 excess precision.  */
-         if (mode == TYPE_MODE (long_double_type_node))
+         if (imode == TYPE_MODE (long_double_type_node))
            return long_double_type_node;
 
          gcc_unreachable ();
          return NULL_TREE;
        }
     }
-  else if (mc == MODE_INT)
-    return brig_langhook_type_for_size(GET_MODE_BITSIZE(mode), unsignedp);
+  else if (is_float_mode (mode, &fmode))
+    return brig_langhook_type_for_size (GET_MODE_BITSIZE (fmode), unsignedp);
   else
     {
       /* E.g., build_common_builtin_nodes () asks for modes/builtins