On 04/22/2014 12:26 AM, Jakub Jelinek wrote:
> I've committed following fix as obvious after testing it with a
> x86_64->sparc64-linux cross-compiler.
> 
> 2014-04-22  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR target/60910
>       * config/sparc/sparc.c (sparc_init_modes): Pass enum machine_mode
>       value instead of int to GET_MODE_CLASS and GET_MODE_SIZE macros.

Here's an additional change that I'd had in my tree.
Sorry about not getting it committed last night.


r~
        * config/sparc/sparc.c (sparc_init_modes): Hoist GET_MODE_SIZE
        computation to the top of the loop.

 
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index bf118e0..7f16609 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4822,41 +4822,43 @@ sparc_init_modes (void)
   for (i = 0; i < NUM_MACHINE_MODES; i++)
     {
       enum machine_mode m = (enum machine_mode) i;
+      unsigned int size = GET_MODE_SIZE (m);
+
       switch (GET_MODE_CLASS (m))
        {
        case MODE_INT:
        case MODE_PARTIAL_INT:
        case MODE_COMPLEX_INT:
-         if (GET_MODE_SIZE (m) < 4)
+         if (size < 4)
            sparc_mode_class[i] = 1 << (int) H_MODE;
-         else if (GET_MODE_SIZE (m) == 4)
+         else if (size == 4)
            sparc_mode_class[i] = 1 << (int) S_MODE;
-         else if (GET_MODE_SIZE (m) == 8)
+         else if (size == 8)
            sparc_mode_class[i] = 1 << (int) D_MODE;
-         else if (GET_MODE_SIZE (m) == 16)
+         else if (size == 16)
            sparc_mode_class[i] = 1 << (int) T_MODE;
-         else if (GET_MODE_SIZE (m) == 32)
+         else if (size == 32)
            sparc_mode_class[i] = 1 << (int) O_MODE;
          else
            sparc_mode_class[i] = 0;
          break;
        case MODE_VECTOR_INT:
-         if (GET_MODE_SIZE (m) == 4)
+         if (size == 4)
            sparc_mode_class[i] = 1 << (int) SF_MODE;
-         else if (GET_MODE_SIZE (m) == 8)
+         else if (size == 8)
            sparc_mode_class[i] = 1 << (int) DF_MODE;
          else
            sparc_mode_class[i] = 0;
          break;
        case MODE_FLOAT:
        case MODE_COMPLEX_FLOAT:
-         if (GET_MODE_SIZE (m) == 4)
+         if (size == 4)
            sparc_mode_class[i] = 1 << (int) SF_MODE;
-         else if (GET_MODE_SIZE (m) == 8)
+         else if (size == 8)
            sparc_mode_class[i] = 1 << (int) DF_MODE;
-         else if (GET_MODE_SIZE (m) == 16)
+         else if (size == 16)
            sparc_mode_class[i] = 1 << (int) TF_MODE;
-         else if (GET_MODE_SIZE (m) == 32)
+         else if (size == 32)
            sparc_mode_class[i] = 1 << (int) OF_MODE;
          else
            sparc_mode_class[i] = 0;

Reply via email to