mt_allocator.cc: Fix assumption that sizeof(void *) is equal to sizeof(size_t).
authorJoel Sherrill <joel.sherrill@oarcorp.com>
Fri, 14 Nov 2014 16:57:20 +0000 (16:57 +0000)
committerJoel Sherrill <joel@gcc.gnu.org>
Fri, 14 Nov 2014 16:57:20 +0000 (16:57 +0000)
2014-11-14  Joel Sherrill <joel.sherrill@oarcorp.com>

* src/c++98/mt_allocator.cc: Fix assumption that sizeof(void *) is
equal to sizeof(size_t). The m32c breaks this assumption.

From-SVN: r217576

libstdc++-v3/ChangeLog
libstdc++-v3/src/c++98/mt_allocator.cc

index 18e214fc94b97e637a63188365de4d8ed7e851df..c6f32e423d5be28eccadef1d915a18f2627246c3 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-14  Joel Sherrill <joel.sherrill@oarcorp.com>
+
+       * src/c++98/mt_allocator.cc: Fix assumption that sizeof(void *) is
+       equal to sizeof(size_t). The m32c breaks this assumption.
+
 2014-11-14  Jonathan Wakely  <jwakely@redhat.com>
 
        * config/abi/pre/gnu.ver: Add new exports.
index 38e17df9f2b10ba4f3c78e6298747046634cb0a3..51b260563b7d982578e48d2b9584fd602825bc4e 100644 (file)
 #include <ext/mt_allocator.h>
 #include <cstring>
 
+// The include file is needed for uintptr_t. If this file does not compile,
+// check to make sure the target has <stdint.h> and that it provides
+// uintptr_t.
+#include <stdint.h>
+
 namespace
 {
 #ifdef __GTHREADS
@@ -74,7 +79,7 @@ namespace
     __freelist& freelist = get_freelist();
     {
       __gnu_cxx::__scoped_lock sentry(get_freelist_mutex());
-      size_t _M_id = reinterpret_cast<size_t>(__id);
+      uintptr_t _M_id = reinterpret_cast<uintptr_t>(__id);
       
       typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record;
       _Thread_record* __tr = &freelist._M_thread_freelist_array[_M_id - 1];
@@ -627,7 +632,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
        __freelist& freelist = get_freelist();
        void* v = __gthread_getspecific(freelist._M_key);
-       size_t _M_id = (size_t)v;
+       uintptr_t _M_id = (uintptr_t)v;
        if (_M_id == 0)
          {
            {