* data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount.
This is ugly, but it should fix the performance problem for older GCC versions in the short run. I'll look into integrating the Gnulib module for popcount, as a better fix. See the thread starting in: http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00474.html (popcount_size_t_generic) [NEED_GENERIC_POPCOUNT]: (popcount_size_t_msc) [USE_MSC_POPCOUNT]: (popcount_size_t_gcc) [USE_GCC_POPCOUNT]: (popcount_size_t): Use it.
This commit is contained in:
parent
10ebac9d6a
commit
4710d6f406
2 changed files with 25 additions and 5 deletions
|
@ -1,3 +1,16 @@
|
|||
2013-09-24 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount.
|
||||
This is ugly, but it should fix the performance problem for older
|
||||
GCC versions in the short run. I'll look into integrating the
|
||||
Gnulib module for popcount, as a better fix.
|
||||
See the thread starting in:
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00474.html
|
||||
(popcount_size_t_generic) [NEED_GENERIC_POPCOUNT]:
|
||||
(popcount_size_t_msc) [USE_MSC_POPCOUNT]:
|
||||
(popcount_size_t_gcc) [USE_GCC_POPCOUNT]:
|
||||
(popcount_size_t): Use it.
|
||||
|
||||
2013-09-24 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
* process.c (Fnetwork_interface_info): Fix build break due to
|
||||
|
|
17
src/data.c
17
src/data.c
|
@ -2972,18 +2972,25 @@ bool_vector_spare_mask (ptrdiff_t nr_bits)
|
|||
|
||||
#if _MSC_VER >= 1500 && (defined _M_IX86 || defined _M_X64)
|
||||
# define USE_MSC_POPCOUNT
|
||||
# define POPCOUNT_STATIC_INLINE static inline
|
||||
#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
||||
# define USE_GCC_POPCOUNT
|
||||
# if 199901L <= __STDC_VERSION__ || !__STRICT_ANSI__
|
||||
# define POPCOUNT_STATIC_INLINE static inline
|
||||
# endif
|
||||
#else
|
||||
# define NEED_GENERIC_POPCOUNT
|
||||
#endif
|
||||
#ifndef POPCOUNT_STATIC_INLINE
|
||||
# define POPCOUNT_STATIC_INLINE static
|
||||
#endif
|
||||
|
||||
#ifdef USE_MSC_POPCOUNT
|
||||
#define NEED_GENERIC_POPCOUNT
|
||||
# define NEED_GENERIC_POPCOUNT
|
||||
#endif
|
||||
|
||||
#ifdef NEED_GENERIC_POPCOUNT
|
||||
static unsigned int
|
||||
POPCOUNT_STATIC_INLINE unsigned int
|
||||
popcount_size_t_generic (size_t val)
|
||||
{
|
||||
unsigned short j;
|
||||
|
@ -2997,7 +3004,7 @@ popcount_size_t_generic (size_t val)
|
|||
#endif
|
||||
|
||||
#ifdef USE_MSC_POPCOUNT
|
||||
static unsigned int
|
||||
POPCOUNT_STATIC_INLINE unsigned int
|
||||
popcount_size_t_msc (size_t val)
|
||||
{
|
||||
unsigned int count;
|
||||
|
@ -3042,7 +3049,7 @@ popcount_size_t_msc (size_t val)
|
|||
#endif /* USE_MSC_POPCOUNT */
|
||||
|
||||
#ifdef USE_GCC_POPCOUNT
|
||||
static unsigned int
|
||||
POPCOUNT_STATIC_INLINE unsigned int
|
||||
popcount_size_t_gcc (size_t val)
|
||||
{
|
||||
# if BITS_PER_SIZE_T == 64
|
||||
|
@ -3053,7 +3060,7 @@ popcount_size_t_gcc (size_t val)
|
|||
}
|
||||
#endif /* USE_GCC_POPCOUNT */
|
||||
|
||||
static unsigned int
|
||||
POPCOUNT_STATIC_INLINE unsigned int
|
||||
popcount_size_t (size_t val)
|
||||
{
|
||||
#if defined USE_MSC_POPCOUNT
|
||||
|
|
Loading…
Add table
Reference in a new issue