]> git.eshelyaron.com Git - emacs.git/commitdiff
* data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 24 Sep 2013 14:53:49 +0000 (07:53 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 24 Sep 2013 14:53:49 +0000 (07:53 -0700)
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.

src/ChangeLog
src/data.c

index 82517661164af3dd0cac3a0948f06928732f60e9..90ffce575f95c57c9d627bacbe90e9b49a0ee12a 100644 (file)
@@ -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
index 82cfd74cd0fb7b10d2de7f6c57ef9ecfc3aa4143..79679bae444dbc1ebcace8ee40b3909ba5378080 100644 (file)
@@ -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