* config/tc-crx.c (check_range): Correct uint32_t misconceptions.
authorAlan Modra <amodra@gmail.com>
Mon, 27 Feb 2012 12:36:21 +0000 (12:36 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 27 Feb 2012 12:36:21 +0000 (12:36 +0000)
gas/ChangeLog
gas/config/tc-crx.c

index 47dede4..be8e7c5 100644 (file)
@@ -1,5 +1,9 @@
 2012-02-27  Alan Modra  <amodra@gmail.com>
 
+       * config/tc-crx.c (check_range): Correct uint32_t misconceptions.
+
+2012-02-27  Alan Modra  <amodra@gmail.com>
+
        * config/tc-tic4x.c (tic4x_do_align): Remove ATTRIBUTE_UNUSED on
        params.  Properly generate NOP pattern.  Comment reason for
        subseg_text_p failure.
index 775781b..3b06a78 100644 (file)
@@ -1331,9 +1331,6 @@ check_range (long *num, int bits, int unsigned flags, int update)
   uint32_t upper_64kb = 0xffff0000;
   uint32_t value = *num;
 
-  /* Trim all values to 32 bits.  uint32_t can be more than 32 bits.  */
-  value &= 0xffffffff;
-
   /* Verify operand value is even.  */
   if (flags & OP_EVEN)
     {
@@ -1361,7 +1358,7 @@ check_range (long *num, int bits, int unsigned flags, int update)
         value is implementation defined.  See ISO C 6.5.7.  So we use
         an unsigned type and sign extend afterwards.  */
       value >>= 1;
-      value = ((value ^ 0x40000000) - 0x40000000) & 0xffffffff;
+      value = (value ^ 0x40000000) - 0x40000000;
       if (update)
        *num = value;
     }
@@ -1407,7 +1404,7 @@ check_range (long *num, int bits, int unsigned flags, int update)
 
       for (bin = 0; bin < cst4_maps; bin++)
        {
-         if (value == ((uint32_t) cst4_map[bin] & 0xffffffff))
+         if (value == (uint32_t) cst4_map[bin])
            {
              is_cst4 = 1;
              if (update)