Fix warnings in __bswap_16.
authorUlrich Drepper <drepper@gmail.com>
Wed, 10 Nov 2010 07:38:35 +0000 (02:38 -0500)
committerUlrich Drepper <drepper@gmail.com>
Wed, 10 Nov 2010 07:38:35 +0000 (02:38 -0500)
ChangeLog
NEWS
sysdeps/i386/bits/byteswap.h
sysdeps/x86_64/bits/byteswap.h

index 005266c..d40db12 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-08  Ulrich Drepper  <drepper@gmail.com>
+
+       [BZ #12194]
+       * sysdeps/i386/bits/byteswap.h: Avoid warning in __bswap_16.
+       * sysdeps/x86_64/bits/byteswap.h: Likewise.
+
 2010-11-07  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/x86_64/memset.S: Check USE_MULTIARCH and USE_SSE2 for
diff --git a/NEWS b/NEWS
index cbe6e51..d4d5b73 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes.  2010-11-5
+GNU C Library NEWS -- history of user-visible changes.  2010-11-8
 Copyright (C) 1992-2009, 2010 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -11,7 +11,7 @@ Version 2.13
 
   3268, 7066, 10851, 11611, 11640, 11701, 11840, 11856, 11883, 11903, 11904,
   11968, 11979, 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108,
-  12113, 12140, 12159, 12167, 12191
+  12113, 12140, 12159, 12167, 12191, 12194
 
 * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
 
index 1f3fc5e..c246ae8 100644 (file)
@@ -1,5 +1,5 @@
 /* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008
+   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008, 2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
 
 /* Swap bytes in 16 bit value.  */
 #define __bswap_constant_16(x) \
-     ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
+     ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
 
 #ifdef __GNUC__
 # if __GNUC__ >= 2
 #  define __bswap_16(x) \
      (__extension__                                                          \
-      ({ register unsigned short int __v, __x = (x);                         \
+      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
         if (__builtin_constant_p (__x))                                      \
           __v = __bswap_constant_16 (__x);                                   \
         else                                                                 \
           __asm__ ("rorw $8, %w0"                                            \
                    : "=r" (__v)                                              \
-                   : "0" (__x)                                               \
-                   : "cc");                                                  \
+                   : "0" (__x)                                               \
+                   : "cc");                                                  \
         __v; }))
 # else
 /* This is better than nothing.  */
 #  define __bswap_16(x) \
      (__extension__                                                          \
-      ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); }))
+      ({ register unsigned short int __x = (unsigned short int) (x);         \
+        __bswap_constant_16 (__x); }))
 # endif
 #else
 static __inline unsigned short int
@@ -122,7 +123,7 @@ __bswap_32 (unsigned int __bsx)
      (__extension__                                                          \
       ({ union { __extension__ unsigned long long int __ll;                  \
                 unsigned long int __l[2]; } __w, __r;                        \
-         if (__builtin_constant_p (x))                                       \
+        if (__builtin_constant_p (x))                                        \
           __r.__ll = __bswap_constant_64 (x);                                \
         else                                                                 \
           {                                                                  \
index 08b38e8..e350fb8 100644 (file)
@@ -1,5 +1,5 @@
 /* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008
+   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
 
 /* Swap bytes in 16 bit value.  */
 #define __bswap_constant_16(x) \
-     ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
+     ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
 
 #if defined __GNUC__ && __GNUC__ >= 2
 # define __bswap_16(x) \
      (__extension__                                                          \
-      ({ register unsigned short int __v, __x = (x);                         \
+      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
         if (__builtin_constant_p (__x))                                      \
           __v = __bswap_constant_16 (__x);                                   \
         else                                                                 \
@@ -47,7 +47,8 @@
 /* This is better than nothing.  */
 # define __bswap_16(x) \
      (__extension__                                                          \
-      ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); }))
+      ({ register unsigned short int __x = (unsigned short int) (x);          \
+        __bswap_constant_16 (__x); }))
 #endif
 
 
 #  define __bswap_64(x) \
      (__extension__                                                           \
       ({ union { __extension__ unsigned long long int __ll;                   \
-                 unsigned int __l[2]; } __w, __r;                             \
-         if (__builtin_constant_p (x))                                        \
-           __r.__ll = __bswap_constant_64 (x);                                \
-         else                                                                 \
-           {                                                                  \
-             __w.__ll = (x);                                                  \
-             __r.__l[0] = __bswap_32 (__w.__l[1]);                            \
-             __r.__l[1] = __bswap_32 (__w.__l[0]);                            \
-           }                                                                  \
-         __r.__ll; }))
+                unsigned int __l[2]; } __w, __r;                             \
+        if (__builtin_constant_p (x))                                        \
+          __r.__ll = __bswap_constant_64 (x);                                \
+        else                                                                 \
+          {                                                                  \
+            __w.__ll = (x);                                                  \
+            __r.__l[0] = __bswap_32 (__w.__l[1]);                            \
+            __r.__l[1] = __bswap_32 (__w.__l[0]);                            \
+          }                                                                  \
+        __r.__ll; }))
 # endif
 #endif