diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | bits/select.h | 10 | ||||
-rw-r--r-- | sysdeps/i386/bits/select.h | 33 | ||||
-rw-r--r-- | sysdeps/x86_64/bits/select.h | 8 |
4 files changed, 28 insertions, 32 deletions
diff --git a/ChangeLog b/ChangeLog index 1ce25541e6..0d735765cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2011-01-09 Ulrich Drepper <drepper@gmail.com> + + * sysdeps/i386/bits/select.h: Don't use asm code for __FD_SET, + __FD_CLR, and __FS_ISSET. gcc generates better code on its own. + + * sysdeps/x86_64/bits/select.h: Mark value of __FD_SET and __FD_CLR as + void. + * bits/select.h: Likewise. + 2011-01-08 Ulrich Drepper <drepper@gmail.com> * po/ja.po: Update from translation team. diff --git a/bits/select.h b/bits/select.h index 47e7dedc30..8a4e537b94 100644 --- a/bits/select.h +++ b/bits/select.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2001, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,6 +30,8 @@ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ __FDS_BITS (__arr)[__i] = 0; \ } while (0) -#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) -#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) -#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) +#define __FD_SET(d, s) \ + ((void) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))) +#define __FD_CLR(d, s) \ + ((void) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))) +#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT (d)] & __FDMASK (d)) != 0) diff --git a/sysdeps/i386/bits/select.h b/sysdeps/i386/bits/select.h index 972bfb685a..ab9aa3d10e 100644 --- a/sysdeps/i386/bits/select.h +++ b/sysdeps/i386/bits/select.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2001, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ #if defined __GNUC__ && __GNUC__ >= 2 - # define __FD_ZERO(fdsp) \ do { \ int __d0, __d1; \ @@ -34,26 +33,6 @@ : "memory"); \ } while (0) -# define __FD_SET(fd, fdsp) \ - __asm__ __volatile__ ("btsl %1,%0" \ - : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \ - : "r" (((int) (fd)) % __NFDBITS) \ - : "cc","memory") -# define __FD_CLR(fd, fdsp) \ - __asm__ __volatile__ ("btrl %1,%0" \ - : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \ - : "r" (((int) (fd)) % __NFDBITS) \ - : "cc","memory") -# define __FD_ISSET(fd, fdsp) \ - (__extension__ \ - ({register char __result; \ - __asm__ __volatile__ ("btl %1,%2 ; setcb %b0" \ - : "=q" (__result) \ - : "r" (((int) (fd)) % __NFDBITS), \ - "m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \ - : "cc"); \ - __result; })) - #else /* ! GNU CC */ /* We don't use `memset' because this would require a prototype and @@ -65,8 +44,12 @@ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ __FDS_BITS (__arr)[__i] = 0; \ } while (0) -# define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) -# define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d)) -# define __FD_ISSET(d, set) (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) #endif /* GNU CC */ + +#define __FD_SET(d, set) \ + ((void) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))) +#define __FD_CLR(d, set) \ + ((void) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d))) +#define __FD_ISSET(d, set) \ + ((__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) != 0) diff --git a/sysdeps/x86_64/bits/select.h b/sysdeps/x86_64/bits/select.h index 5f31b84080..a300d58d33 100644 --- a/sysdeps/x86_64/bits/select.h +++ b/sysdeps/x86_64/bits/select.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997,1998,1999,2001,2008,2009 Free Software Foundation, Inc. +/* Copyright (C) 1997-1999,2001,2008,2009,2011 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -56,7 +56,9 @@ #endif /* GNU CC */ -#define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) -#define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d)) +#define __FD_SET(d, set) \ + ((void) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))) +#define __FD_CLR(d, set) \ + ((void) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d))) #define __FD_ISSET(d, set) \ ((__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) != 0) |