* include/bits/functional_hash.h: Add specializations for __intN
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2015 17:57:34 +0000 (17:57 +0000)
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2015 17:57:34 +0000 (17:57 +0000)
types.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226117 138bc75d-0d04-0410-961f-82ee72b054a4

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

index c1c9052..152887b 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 d94843f..3c962fc 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 b03d7a3..4aaf3d3 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 */
       };