diff -rc boost/archive/detail/iserializer.hpp.orig boost/archive/detail/iserializer.hpp *** boost/archive/detail/iserializer.hpp.orig Sat Nov 6 12:31:31 2010 --- boost/archive/detail/iserializer.hpp Mon Apr 9 12:48:54 2012 *************** *** 61,67 **** #define DONT_USE_HAS_NEW_OPERATOR ( \ defined(__BORLANDC__) \ ! || defined(__IBMCPP__) \ || defined(BOOST_MSVC) && (BOOST_MSVC <= 1300) \ || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \ ) --- 61,67 ---- #define DONT_USE_HAS_NEW_OPERATOR ( \ defined(__BORLANDC__) \ ! || BOOST_WORKAROUND(__IBMCPP__, < 1210) \ || defined(BOOST_MSVC) && (BOOST_MSVC <= 1300) \ || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \ ) diff -rc boost/bind/bind.hpp.orig boost/bind/bind.hpp *** boost/bind/bind.hpp.orig Mon Nov 30 15:30:22 2009 --- boost/bind/bind.hpp Wed Aug 24 15:01:13 2011 *************** *** 1680,1686 **** typedef void type; }; ! #if !( defined(__IBMCPP__) && BOOST_WORKAROUND( __IBMCPP__, BOOST_TESTED_AT(600) ) ) template< class R, class T > struct add_cref< R (T::*) () const, 1 > { --- 1680,1686 ---- typedef void type; }; ! #if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION template< class R, class T > struct add_cref< R (T::*) () const, 1 > { diff -rc boost/chrono/detail/inlined/posix/thread_clock.hpp.orig boost/chrono/detail/inlined/posix/thread_clock.hpp *** boost/chrono/detail/inlined/posix/thread_clock.hpp.orig Sat May 28 03:02:19 2011 --- boost/chrono/detail/inlined/posix/thread_clock.hpp Mon Apr 9 12:48:39 2012 *************** *** 15,20 **** --- 15,21 ---- #include # include + # include # include namespace boost { namespace chrono { diff -c boost/config/select_platform_config.hpp.orig boost_1_47_0/boost/config/select_platform_config.hpp *** boost/config/select_platform_config.hpp.orig Wed Aug 29 10:20:38 2012 --- boost/config/select_platform_config.hpp Wed Aug 29 10:21:17 2012 *************** *** 49,55 **** // MacOS # define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" ! #elif defined(__IBMCPP__) || defined(_AIX) // IBM # define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" --- 49,55 ---- // MacOS # define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" ! #elif defined(_AIX) // IBM # define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" diff -rc boost/config/compiler/vacpp.hpp.orig boost/config/compiler/vacpp.hpp *** boost/config/compiler/vacpp.hpp.orig Wed Aug 29 12:01:04 2012 --- boost/config/compiler/vacpp.hpp Wed Aug 29 12:00:25 2012 *************** *** 84,90 **** # define BOOST_NO_CHAR16_T # define BOOST_NO_CHAR32_T #endif ! #define BOOST_NO_CONSTEXPR #if ! __IBMCPP_DECLTYPE # define BOOST_NO_DECLTYPE #else --- 84,92 ---- # define BOOST_NO_CHAR16_T # define BOOST_NO_CHAR32_T #endif ! #if ! __IBMCPP_CONSTEXPR ! # define BOOST_NO_CONSTEXPR ! #endif #if ! __IBMCPP_DECLTYPE # define BOOST_NO_DECLTYPE #else *************** *** 92,98 **** #endif #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS ! #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #if ! __IBMCPP_EXTERN_TEMPLATE # define BOOST_NO_EXTERN_TEMPLATE #endif --- 94,102 ---- #endif #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS ! #if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS ! # define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS ! #endif #if ! __IBMCPP_EXTERN_TEMPLATE # define BOOST_NO_EXTERN_TEMPLATE #endif *************** *** 105,112 **** #define BOOST_NO_NOEXCEPT #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS ! #define BOOST_NO_RVALUE_REFERENCES ! #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX #if ! __IBMCPP_STATIC_ASSERT --- 109,120 ---- #define BOOST_NO_NOEXCEPT #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS ! #if ! __IBMCPP_RVALUE_REFERENCES ! # define BOOST_NO_RVALUE_REFERENCES ! #endif ! #if ! __IBMCPP_SCOPED_ENUM ! # define BOOST_NO_SCOPED_ENUMS ! #endif #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX #if ! __IBMCPP_STATIC_ASSERT diff -rc boost/date_time/time_resolution_traits.hpp.orig boost/date_time/time_resolution_traits.hpp *** boost/date_time/time_resolution_traits.hpp.orig Sat Jun 6 07:25:55 2009 --- boost/date_time/time_resolution_traits.hpp Mon Apr 9 12:48:56 2012 *************** *** 68,83 **** --- 68,94 ---- typename frac_sec_type::int_type resolution_adjust, #endif unsigned short frac_digits, + #if defined(_AIX) + typename boost_v_type = boost::int32_t > + #else typename v_type = boost::int32_t > + #endif class time_resolution_traits { public: typedef typename frac_sec_type::int_type fractional_seconds_type; typedef typename frac_sec_type::int_type tick_type; typedef typename frac_sec_type::impl_type impl_type; + #if defined(_AIX) + typedef boost_v_type day_type; + typedef boost_v_type hour_type; + typedef boost_v_type min_type; + typedef boost_v_type sec_type; + #else typedef v_type day_type; typedef v_type hour_type; typedef v_type min_type; typedef v_type sec_type; + #endif // bring in function from frac_sec_type traits structs static fractional_seconds_type as_number(impl_type i) diff -rc boost/numeric/ublas/operation/size.hpp.orig boost/numeric/ublas/operation/size.hpp *** boost/numeric/ublas/operation/size.hpp.orig Tue Oct 19 03:01:35 2010 --- boost/numeric/ublas/operation/size.hpp Mon Apr 9 12:48:44 2012 *************** *** 304,310 **** BOOST_UBLAS_INLINE typename vector_traits::size_type size(vector_expression const& ve) { ! return detail::size_by_dim_impl::template apply(ve); } --- 304,310 ---- BOOST_UBLAS_INLINE typename vector_traits::size_type size(vector_expression const& ve) { ! return detail::size_by_dim_impl::apply(ve); } *************** *** 321,327 **** BOOST_UBLAS_INLINE typename matrix_traits::size_type size(matrix_expression const& me) { ! return detail::size_by_dim_impl::template apply(me); } --- 321,327 ---- BOOST_UBLAS_INLINE typename matrix_traits::size_type size(matrix_expression const& me) { ! return detail::size_by_dim_impl::apply(me); } *************** *** 341,347 **** detail::matrix_size_type >::type size(matrix_expression const& me) { ! return detail::size_by_tag_impl::orientation_category>::template apply(me); } }}} // Namespace boost::numeric::ublas --- 341,347 ---- detail::matrix_size_type >::type size(matrix_expression const& me) { ! return detail::size_by_tag_impl::orientation_category>::apply(me); } }}} // Namespace boost::numeric::ublas diff -rc boost/python/type_id.hpp.orig boost/python/type_id.hpp *** boost/python/type_id.hpp.orig Tue Jul 15 17:05:24 2008 --- boost/python/type_id.hpp Mon Apr 9 12:48:40 2012 *************** *** 34,40 **** || defined(_AIX) \ || ( defined(__sgi) && defined(__host_mips)) \ || (defined(__hpux) && defined(__HP_aCC)) \ ! || (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC)) # define BOOST_PYTHON_TYPE_ID_NAME # endif --- 34,41 ---- || defined(_AIX) \ || ( defined(__sgi) && defined(__host_mips)) \ || (defined(__hpux) && defined(__HP_aCC)) \ ! || (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC)) \ ! || (defined(__linux__) && defined(__IBMCPP__)) # define BOOST_PYTHON_TYPE_ID_NAME # endif diff -rc boost/smart_ptr/detail/atomic_count_gcc.hpp.orig boost/smart_ptr/detail/atomic_count_gcc.hpp *** boost/smart_ptr/detail/atomic_count_gcc.hpp.orig Sun Apr 19 06:17:50 2009 --- boost/smart_ptr/detail/atomic_count_gcc.hpp Fri Apr 13 11:58:05 2012 *************** *** 19,26 **** #if __GNUC__ * 100 + __GNUC_MINOR__ >= 402 # include ! #else ! # include #endif namespace boost --- 19,30 ---- #if __GNUC__ * 100 + __GNUC_MINOR__ >= 402 # include ! #else ! # ifdef __bgq__ ! # include ! # else ! # include ! # endif #endif namespace boost diff -rc boost/smart_ptr/detail/sp_counted_base.hpp.orig boost/smart_ptr/detail/sp_counted_base.hpp *** boost/smart_ptr/detail/sp_counted_base.hpp.orig Fri Mar 27 09:10:46 2009 --- boost/smart_ptr/detail/sp_counted_base.hpp Mon Apr 9 12:48:50 2012 *************** *** 41,46 **** --- 41,49 ---- #elif defined(__HP_aCC) && defined(__ia64) # include + #elif defined( __IBMCPP__ ) && defined( __powerpc ) + # include + #elif defined( __MWERKS__ ) && defined( __POWERPC__ ) # include diff -rc boost/smart_ptr/detail/sp_has_sync.hpp.orig boost/smart_ptr/detail/sp_has_sync.hpp *** boost/smart_ptr/detail/sp_has_sync.hpp.orig Tue Mar 22 19:55:05 2011 --- boost/smart_ptr/detail/sp_has_sync.hpp Mon Apr 9 12:48:52 2012 *************** *** 20,27 **** // are available. // ! #if defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( BOOST_SP_NO_SYNC ) #define BOOST_SP_HAS_SYNC #if defined( __arm__ ) || defined( __armel__ ) --- 20,29 ---- // are available. // ! #ifndef BOOST_SP_NO_SYNC + #if defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) + #define BOOST_SP_HAS_SYNC #if defined( __arm__ ) || defined( __armel__ ) *************** *** 45,49 **** --- 47,57 ---- #endif #endif // __GNUC__ * 100 + __GNUC_MINOR__ >= 401 + + #if defined( __IBMCPP__ ) && ( __IBMCPP__ >= 1200 ) + #define BOOST_SP_HAS_SYNC + #endif + + #endif // !defined( BOOST_SP_NO_SYNC ) #endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED diff -rc boost/test/utils/basic_cstring/basic_cstring.hpp.orig boost/test/utils/basic_cstring/basic_cstring.hpp *** boost/test/utils/basic_cstring/basic_cstring.hpp.orig Sat Nov 28 04:19:18 2009 --- boost/test/utils/basic_cstring/basic_cstring.hpp Wed Feb 29 22:21:44 2012 *************** *** 91,108 **** self_type& trim_left( size_type trim_size ); self_type& trim_right( iterator it ); self_type& trim_left( iterator it ); ! #ifndef __IBMCPP__ self_type& trim_left( self_type exclusions = self_type() ) ; self_type& trim_right( self_type exclusions = self_type() ) ; self_type& trim( self_type exclusions = self_type() ) ; #else ! // VisualAge version 6 has in this case a problem with the default arguments. self_type& trim_left( self_type exclusions ) ; self_type& trim_right( self_type exclusions ) ; self_type& trim( self_type exclusions ) ; ! self_type& trim_left() { trim_left( self_type() ) ; } ! self_type& trim_right() { trim_right( self_type() ) ; } ! self_type& trim() { trim( self_type() ) ; } #endif // Assignment operators --- 91,108 ---- self_type& trim_left( size_type trim_size ); self_type& trim_right( iterator it ); self_type& trim_left( iterator it ); ! #if !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(800)) self_type& trim_left( self_type exclusions = self_type() ) ; self_type& trim_right( self_type exclusions = self_type() ) ; self_type& trim( self_type exclusions = self_type() ) ; #else ! // VA C++/XL C++ v6 and v8 has in this case a problem with the default arguments. self_type& trim_left( self_type exclusions ) ; self_type& trim_right( self_type exclusions ) ; self_type& trim( self_type exclusions ) ; ! self_type& trim_left() { return trim_left( self_type() ) ; } ! self_type& trim_right() { return trim_right( self_type() ) ; } ! self_type& trim() { return trim( self_type() ) ; } #endif // Assignment operators diff -rc libs/numeric/ublas/test/test_assignment.cpp.orig libs/numeric/ublas/test/test_assignment.cpp *** libs/numeric/ublas/test/test_assignment.cpp.orig Mon Jul 5 02:35:22 2010 --- libs/numeric/ublas/test/test_assignment.cpp Mon Apr 9 12:48:46 2012 *************** *** 26,32 **** typename AE::size_type i, j; for (i=0; i!= me().size1(); i++) { for (j=0; j!= me().size2(); j++) { ! s+=std::fabs(me()(i,j)); } } return s/me().size1()*me().size2(); --- 26,32 ---- typename AE::size_type i, j; for (i=0; i!= me().size1(); i++) { for (j=0; j!= me().size2(); j++) { ! s+=std::fabs(static_cast(me()(i,j))); } } return s/me().size1()*me().size2(); *************** *** 39,45 **** typename AE::value_type s(0); typename AE::size_type i; for (i=0; i!= ve().size(); i++) { ! s+=std::fabs(ve()(i)); } return s/ve().size(); } --- 39,45 ---- typename AE::value_type s(0); typename AE::size_type i; for (i=0; i!= ve().size(); i++) { ! s+=std::fabs(static_cast(ve()(i))); } return s/ve().size(); } diff -rc libs/python/test/select_from_python_test.cpp.orig libs/python/test/select_from_python_test.cpp *** libs/python/test/select_from_python_test.cpp.orig Thu Jun 7 14:08:54 2007 --- libs/python/test/select_from_python_test.cpp Thu Sep 22 12:01:12 2011 *************** *** 8,14 **** // gcc 2.95.x, MIPSpro 7.3.1.3 and IBM XL for Linux linker seem to demand this definition #if (defined(__GNUC__) && (__GNUC__ < 3)) \ || (defined(__sgi) && defined(__EDG_VERSION__) && (__EDG_VERSION__ == 238)) \ ! || (defined(__IBMCPP__) && defined(__linux__)) namespace boost { namespace python { BOOST_PYTHON_DECL bool handle_exception_impl(function0) { --- 8,14 ---- // gcc 2.95.x, MIPSpro 7.3.1.3 and IBM XL for Linux linker seem to demand this definition #if (defined(__GNUC__) && (__GNUC__ < 3)) \ || (defined(__sgi) && defined(__EDG_VERSION__) && (__EDG_VERSION__ == 238)) \ ! || (defined(__IBMCPP__)) namespace boost { namespace python { BOOST_PYTHON_DECL bool handle_exception_impl(function0) { diff -rc boost/typeof/typeof.hpp.orig boost/typeof/typeof.hpp *** boost/typeof/typeof.hpp.orig Mon Aug 6 20:02:38 2012 --- boost/typeof/typeof.hpp Mon Aug 6 20:14:34 2012 *************** *** 156,161 **** --- 156,169 ---- # error native typeof is not supported # endif + #elif defined(__IBMCPP__) + # ifndef BOOST_TYPEOF_EMULATION + # ifndef BOOST_TYPEOF_NATIVE + # define BOOST_TYPEOF_NATIVE + # endif + # define BOOST_TYPEOF_KEYWORD __typeof__ + # endif + #else //unknown compiler # ifndef BOOST_TYPEOF_NATIVE # ifndef BOOST_TYPEOF_EMULATION diff -rc /dev/null boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp *** /dev/null Mon Aug 6 21:34:30 2012 --- boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp Mon Apr 9 12:47:27 2012 *************** *** 0 **** --- 1,150 ---- + #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED + #define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED + + // + // detail/sp_counted_base_vacpp_ppc.hpp - xlC(vacpp) on POWER + // based on: detail/sp_counted_base_w32.hpp + // + // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. + // Copyright 2004-2005 Peter Dimov + // Copyright 2006 Michael van der Westhuizen + // Copyright 2012 IBM Corp. + // + // Distributed under the Boost Software License, Version 1.0. (See + // accompanying file LICENSE_1_0.txt or copy at + // http://www.boost.org/LICENSE_1_0.txt) + // + // + // Lock-free algorithm by Alexander Terekhov + // + // Thanks to Ben Hitchings for the #weak + (#shared != 0) + // formulation + // + + #include + + extern "builtin" void __lwsync(void); + extern "builtin" void __isync(void); + extern "builtin" int __fetch_and_add(volatile int* addr, int val); + extern "builtin" int __compare_and_swap(volatile int*, int*, int); + + namespace boost + { + + namespace detail + { + + inline void atomic_increment( int *pw ) + { + // ++*pw; + __lwsync(); + __fetch_and_add(pw, 1); + __isync(); + } + + inline int atomic_decrement( int *pw ) + { + // return --*pw; + __lwsync(); + int originalValue = __fetch_and_add(pw, -1); + __isync(); + + return (originalValue - 1); + } + + inline int atomic_conditional_increment( int *pw ) + { + // if( *pw != 0 ) ++*pw; + // return *pw; + + __lwsync(); + int v = *const_cast(pw); + for (;;) + // loop until state is known + { + if (v == 0) return 0; + if (__compare_and_swap(pw, &v, v + 1)) + { + __isync(); return (v + 1); + } + } + } + + class sp_counted_base + { + private: + + sp_counted_base( sp_counted_base const & ); + sp_counted_base & operator= ( sp_counted_base const & ); + + int use_count_; // #shared + int weak_count_; // #weak + (#shared != 0) + char pad[64] __attribute__((__aligned__(64))); + // pad to prevent false sharing + public: + + sp_counted_base(): use_count_( 1 ), weak_count_( 1 ) + { + } + + virtual ~sp_counted_base() // nothrow + { + } + + // dispose() is called when use_count_ drops to zero, to release + // the resources managed by *this. + + virtual void dispose() = 0; // nothrow + + // destroy() is called when weak_count_ drops to zero. + + virtual void destroy() // nothrow + { + delete this; + } + + virtual void * get_deleter( sp_typeinfo const & ti ) = 0; + + void add_ref_copy() + { + atomic_increment( &use_count_ ); + } + + bool add_ref_lock() // true on success + { + return atomic_conditional_increment( &use_count_ ) != 0; + } + + void release() // nothrow + { + if( atomic_decrement( &use_count_ ) == 0 ) + { + dispose(); + weak_release(); + } + } + + void weak_add_ref() // nothrow + { + atomic_increment( &weak_count_ ); + } + + void weak_release() // nothrow + { + if( atomic_decrement( &weak_count_ ) == 0 ) + { + destroy(); + } + } + + long use_count() const // nothrow + { + return *const_cast(&use_count_); + } + }; + + } // namespace detail + + } // namespace boost + + #endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED