* config/cris/cris.c (cris_print_operand): Handle 64-bit CONST_INT.
authorRichard Henderson <rth@redhat.com>
Sun, 27 Jan 2002 03:42:07 +0000 (19:42 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 27 Jan 2002 03:42:07 +0000 (19:42 -0800)
From-SVN: r49259

gcc/ChangeLog
gcc/config/cris/cris.c

index b6a374c..57fd4b9 100644 (file)
@@ -1,5 +1,9 @@
 2002-01-26  Richard Henderson  <rth@redhat.com>
 
+       * config/cris/cris.c (cris_print_operand): Handle 64-bit CONST_INT.
+
+2002-01-26  Richard Henderson  <rth@redhat.com>
+
        * config/alpha/alpha.c (alpha_sa_mask): Mark RA for unicos here too.
        (alpha_sa_size): Use alpha_sa_mask to compute size of saved regs.
 
index 8d2afa8..480b59c 100644 (file)
@@ -1363,8 +1363,11 @@ cris_print_operand (file, x, code)
       switch (GET_CODE (operand))
        {
        case CONST_INT:
-         /* Sign-extension from a normal int to a long long.  */
-         fprintf (file, INTVAL (operand) < 0 ? "-1" : "0");
+         if (HOST_BITS_PER_WIDE_INT == 32)
+           /* Sign-extension from a normal int to a long long.  */
+           fprintf (file, INTVAL (operand) < 0 ? "-1" : "0");
+         else
+           fprintf (file, "0x%x", (unsigned int)(INTVAL (x) >> 31 >> 1));
          return;
 
        case CONST_DOUBLE:
@@ -1447,8 +1450,13 @@ cris_print_operand (file, x, code)
          fprintf (file, "0x%x", CONST_DOUBLE_LOW (x));
          return;
        }
-      /* If not a CONST_DOUBLE, the least significant part equals the
-        normal part, so handle it normally.  */
+      else if (HOST_BITS_PER_WIDE_INT > 32 && GET_CODE (operand) == CONST_INT)
+       {
+         fprintf (file, "0x%x", (unsigned int)(INTVAL (x) & 0xffffffff));
+         return;
+       }
+      /* Otherwise the least significant part equals the normal part,
+        so handle it normally.  */
       break;
 
     case 'A':