diff --git a/include/boost/detail/atomic_count.hpp b/include/boost/detail/atomic_count.hpp index 804fd1a..c53a63b 100644 --- a/include/boost/detail/atomic_count.hpp +++ b/include/boost/detail/atomic_count.hpp @@ -90,23 +90,18 @@ typedef long atomic_count; } #elif defined(BOOST_AC_USE_PTHREADS) - # include #elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) - # include #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) - # include -#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) - +#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __hppa ) && ( !defined( __INTEL_COMPILER ) || defined( __ia64__ ) ) # include #elif defined(__GLIBCPP__) || defined(__GLIBCXX__) - # include #elif defined(BOOST_HAS_PTHREADS) diff --git a/include/boost/detail/atomic_count_sync.hpp b/include/boost/detail/atomic_count_sync.hpp index e973fb7..676d3f9 100644 --- a/include/boost/detail/atomic_count_sync.hpp +++ b/include/boost/detail/atomic_count_sync.hpp @@ -15,6 +15,10 @@ // http://www.boost.org/LICENSE_1_0.txt) // +#if defined( __ia64__ ) && defined( __INTEL_COMPILER ) +# include +#endif + namespace boost { diff --git a/include/boost/detail/sp_counted_base.hpp b/include/boost/detail/sp_counted_base.hpp index 6d733d0..c25a57f 100644 --- a/include/boost/detail/sp_counted_base.hpp +++ b/include/boost/detail/sp_counted_base.hpp @@ -46,10 +46,10 @@ #elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) ) # include -#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __hppa ) +#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __hppa ) && ( !defined( __INTEL_COMPILER ) || defined( __ia64__ ) ) # include -#elif defined(__GNUC__) && ( defined( __sparcv8 ) || defined( __sparcv9 ) ) +#elif defined(__GNUC__) && ( defined( __sparcv9 ) || ( defined( __sparcv8 ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 ) ) ) # include #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) diff --git a/include/boost/detail/spinlock.hpp b/include/boost/detail/spinlock.hpp index e273647..346fb3c 100644 --- a/include/boost/detail/spinlock.hpp +++ b/include/boost/detail/spinlock.hpp @@ -30,9 +30,9 @@ #include -#if defined(__GNUC__) && defined( __arm__ ) +#if defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ ) # include -#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) +#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __hppa ) && ( !defined( __INTEL_COMPILER ) || defined( __ia64__ ) ) # include #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # include diff --git a/shared_array.htm b/shared_array.htm index 87bf61e..320a54a 100644 --- a/shared_array.htm +++ b/shared_array.htm @@ -47,7 +47,7 @@ void reset(T * p = 0); template<class D> void reset(T * p, D d); - T & operator[](std::ptrdiff_t i) const() const; // never throws + T & operator[](std::ptrdiff_t i) const; // never throws T * get() const; // never throws bool unique() const; // never throws diff --git a/src/sp_collector.cpp b/src/sp_collector.cpp index 6f933c2..bb69ae8 100644 --- a/src/sp_collector.cpp +++ b/src/sp_collector.cpp @@ -104,6 +104,8 @@ static void find_unreachable_objects_impl(map_type const & m, map2_type & m2) BOOST_ASSERT(p->use_count() != 0); // there should be no inactive counts in the map + m2[ i->first ]; + scan_and_count(i->second.first, i->second.second, m, m2); } @@ -121,7 +123,7 @@ static void find_unreachable_objects_impl(map_type const & m, map2_type & m2) if(p->use_count() != i->second) open.push_back(p); } - std::cout << "... " << m2.size() << " objects in open.\n"; + std::cout << "... " << open.size() << " objects in open.\n"; for(open_type::iterator j = open.begin(); j != open.end(); ++j) {