functional_hash.h: Add specializations for __intN types.
authorDJ Delorie <dj@redhat.com>
Thu, 23 Jul 2015 17:57:34 +0000 (13:57 -0400)
committerDJ Delorie <dj@gcc.gnu.org>
Thu, 23 Jul 2015 17:57:34 +0000 (13:57 -0400)
* include/bits/functional_hash.h: Add specializations for __intN
types.

* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp (__gnu_pbds):
Guard against values that might exceed size_t's precision.

From-SVN: r226117

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/functional_hash.h
libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp

index c1c905207fccd13c1674604a2ba636cc1a57d86a..152887b178fbbe1234f0f8c3d9fb83531626608f 100644 (file)
@@ -1,3 +1,11 @@
+2015-07-23  DJ Delorie  <dj@redhat.com>
+
+       * include/bits/functional_hash.h: Add specializations for __intN
+       types.
+
+       * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp (__gnu_pbds):
+       Guard against values that might exceed size_t's precision.
+
 2015-07-20  Jason Merrill  <jason@redhat.com>
 
        * include/bits/c++config: Fix abi_tag in special modes.
index d94843f5172233ed2c3ab0df7e35fc75aa8c561a..3c962fc7a914968456717ba43da0d4dc7018e4c7 100644 (file)
@@ -121,6 +121,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// Explicit specialization for unsigned long long.
   _Cxx_hashtable_define_trivial_hash(unsigned long long)
 
+#ifdef __GLIBCXX_TYPE_INT_N_0
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0)
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0 unsigned)
+#endif
+#ifdef __GLIBCXX_TYPE_INT_N_1
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_1)
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_1 unsigned)
+#endif
+#ifdef __GLIBCXX_TYPE_INT_N_2
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_2)
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_2 unsigned)
+#endif
+#ifdef __GLIBCXX_TYPE_INT_N_3
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3)
+  _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3 unsigned)
+#endif
+
 #undef _Cxx_hashtable_define_trivial_hash
 
   struct _Hash_impl
index b03d7a3a0debd22852c3deda73b74238c567a404..4aaf3d30c63e9e7a439261ceb6b5a5e71c96a542 100644 (file)
@@ -270,18 +270,24 @@ namespace __gnu_pbds
        /* 21    */ 15126ul,
        /* 22    */ 24476ul,
        /* 23    */ 39602ul,
-       /* 24    */ 64079ul,
+       /* 24    */ 64079ul
+#if __SIZE_MAX__ > 0xfffful
+       ,
        /* 25    */ 103681ul,
        /* 26    */ 167761ul,
        /* 27    */ 271442ul,
        /* 28    */ 439204ul,
-       /* 29    */ 710646ul,
+       /* 29    */ 710646ul
+#if __SIZE_MAX__ > 0xffffful
+       ,
        /* 30    */ 1149851ul,
        /* 31    */ 1860497ul,
        /* 32    */ 3010349ul,
        /* 33    */ 4870846ul,
        /* 34    */ 7881196ul,
-       /* 35    */ 12752042ul,
+       /* 35    */ 12752042ul
+#if __SIZE_MAX__ > 0xfffffful
+       ,
        /* 36    */ 20633239ul,
        /* 37    */ 33385282ul,
        /* 38    */ 54018521ul,
@@ -294,6 +300,9 @@ namespace __gnu_pbds
        /* 45    */ 1568397607ul,
        /* 46    */ 2537720636ul,
        /* 47    */ 4106118243ul
+#endif
+#endif
+#endif
        /* Pot's good, let's play */
       };