diff -ur boost/accumulators/statistics/p_square_cumulative_distribution.hpp --- boost/accumulators/statistics/p_square_cumulative_distribution.hpp 2012-03-27 14:53:50.000000000 -0400 +++ boost/accumulators/statistics/p_square_cumulative_distribution.hpp 2015-05-13 17:35:31.983635875 -0400 @@ -10,7 +10,7 @@ #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: This header is deprecated. Please use: boost/accumulators/statistics/p_square_cumul_dist.hpp") -#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) +#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) # warning "This header is deprecated. Please use: boost/accumulators/statistics/p_square_cumul_dist.hpp" #endif diff -ur boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp --- boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp 2012-03-27 14:53:50.000000000 -0400 +++ boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp 2015-05-13 17:35:31.983635875 -0400 @@ -10,7 +10,7 @@ #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: This header is deprecated. Please use: boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp") -#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) +#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) # warning "This header is deprecated. Please use: boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp" #endif diff -ur boost/archive/add_facet.hpp --- boost/archive/add_facet.hpp 2006-08-01 00:25:49.000000000 -0400 +++ boost/archive/add_facet.hpp 2015-05-13 17:35:31.983635875 -0400 @@ -23,7 +23,7 @@ // does STLport uses native STL for locales? #if (defined(__SGI_STL_PORT)&& defined(_STLP_NO_OWN_IOSTREAMS)) // and this native STL lib is old Dinkumware (has not defined _CPPLIB_VER) -# if (defined(_YVALS) && !defined(__IBMCPP__)) || !defined(_CPPLIB_VER) +# if (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || !defined(_CPPLIB_VER) # define BOOST_ARCHIVE_OLD_DINKUMWARE_BENEATH_STLPORT # endif #endif diff -ur boost/asio/detail/pop_options.hpp --- boost/asio/detail/pop_options.hpp 2013-09-22 18:13:33.000000000 -0400 +++ boost/asio/detail/pop_options.hpp 2015-05-13 17:35:32.063635878 -0400 @@ -81,7 +81,7 @@ // MPW MrCpp or SCpp -#elif defined(__IBMCPP__) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) // IBM Visual Age diff -ur boost/asio/detail/push_options.hpp --- boost/asio/detail/push_options.hpp 2013-09-22 18:13:33.000000000 -0400 +++ boost/asio/detail/push_options.hpp 2015-05-13 17:35:32.063635878 -0400 @@ -86,7 +86,7 @@ // MPW MrCpp or SCpp -#elif defined(__IBMCPP__) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) // IBM Visual Age diff -ur boost/asio/impl/src.cpp --- boost/asio/impl/src.cpp 2013-05-27 08:36:39.000000000 -0400 +++ boost/asio/impl/src.cpp 2015-05-13 17:35:32.063635878 -0400 @@ -17,7 +17,7 @@ #elif defined(__GNUC__) \ || defined(__HP_aCC) \ || defined(__SUNPRO_CC) \ - || defined(__IBMCPP__) + || defined(__IBMCPP__) && !defined(__ibmxl__) # warning "This file is deprecated." # warning "Please #include instead." #endif diff -ur boost/atomic/detail/platform.hpp --- boost/atomic/detail/platform.hpp 2013-09-08 09:55:41.000000000 -0400 +++ boost/atomic/detail/platform.hpp 2015-05-13 17:35:32.083635878 -0400 @@ -16,8 +16,9 @@ #endif // Intel compiler does not support __atomic* intrinsics properly, although defines them (tested with 13.0.1 and 13.1.1 on Linux) -#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 407) && !defined(BOOST_INTEL_CXX_VERSION))\ - || (defined(BOOST_CLANG) && ((__clang_major__ * 100 + __clang_minor__) >= 302)) +// IBM xlc-linux does not support __atomic* intrinsics +#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 407) && !defined(BOOST_INTEL_CXX_VERSION) && !defined(__ibmxl_vrm__))\ + || (defined(BOOST_CLANG) && ((__clang_major__ * 100 + __clang_minor__) >= 302) && !defined(__ibmxl_vrm__)) #include @@ -30,7 +31,7 @@ #include #include -#elif defined(__GNUC__) && (defined(__POWERPC__) || defined(__PPC__)) +#elif (defined(__GNUC__) && !defined(__ibmxl_vrm__)) && (defined(__POWERPC__) || defined(__PPC__)) #include diff -ur boost/bind/bind.hpp --- boost/bind/bind.hpp 2011-11-30 12:53:38.000000000 -0500 +++ boost/bind/bind.hpp 2015-05-13 17:35:32.083635878 -0400 @@ -1680,7 +1680,7 @@ typedef void type; }; -#if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION +#if !(defined(__IBMCPP__) && !defined(__ibmxl__)) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION template< class R, class T > struct add_cref< R (T::*) () const, 1 > { diff -ur boost/chrono/io/time_point_io.hpp --- boost/chrono/io/time_point_io.hpp 2013-10-27 19:55:01.000000000 -0400 +++ boost/chrono/io/time_point_io.hpp 2015-05-13 17:35:32.111635879 -0400 @@ -37,12 +37,12 @@ #define BOOST_CHRONO_INTERNAL_TIMEGM \ ( defined BOOST_WINDOWS && ! defined(__CYGWIN__) ) \ || ( (defined(sun) || defined(__sun)) && defined __GNUC__) \ - || (defined __IBMCPP__) + || (defined __IBMCPP__ && !defined __ibmxl__) #define BOOST_CHRONO_INTERNAL_GMTIME \ (defined BOOST_WINDOWS && ! defined(__CYGWIN__)) \ || ( (defined(sun) || defined(__sun)) && defined __GNUC__) \ - || (defined __IBMCPP__) + || (defined __IBMCPP__ && !defined __ibmxl__) #define BOOST_CHRONO_USES_INTERNAL_TIME_GET @@ -966,7 +966,7 @@ failed = tpf.put(os, os, os.fill(), &tm, pb, pe).failed(); if (!failed) { - duration d = tp - system_clock::from_time_t(t) + seconds(tm.tm_sec); + duration d = tp - (system_clock::from_time_t(t) + seconds(tm.tm_sec)); if (d.count() < 10) os << CharT('0'); //if (! os.good()) { // throw "exception"; diff -ur boost/config/requires_threads.hpp --- boost/config/requires_threads.hpp 2003-12-20 06:54:47.000000000 -0500 +++ boost/config/requires_threads.hpp 2015-05-13 17:35:32.135635880 -0400 @@ -70,7 +70,7 @@ // HP aCC # error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt" -#elif defined(__IBMCPP__) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) // IBM Visual Age # error "Compiler threading support is not turned on. Please compile the code with the xlC_r compiler" diff -ur boost/config/select_compiler_config.hpp --- boost/config/select_compiler_config.hpp 2013-09-17 12:55:51.000000000 -0400 +++ boost/config/select_compiler_config.hpp 2015-05-13 17:35:32.135635880 -0400 @@ -91,7 +91,7 @@ // MPW MrCpp or SCpp # define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" -#elif defined(__IBMCPP__) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) // IBM Visual Age # define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp" diff -ur boost/config/select_platform_config.hpp --- boost/config/select_platform_config.hpp 2011-10-10 07:50:55.000000000 -0400 +++ boost/config/select_platform_config.hpp 2015-05-13 17:35:32.135635880 -0400 @@ -49,7 +49,7 @@ // MacOS # define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" -#elif defined(__IBMCPP__) || defined(_AIX) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) || defined(_AIX) // IBM # define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" diff -ur boost/config/select_stdlib_config.hpp --- boost/config/select_stdlib_config.hpp 2011-04-25 08:10:48.000000000 -0400 +++ boost/config/select_stdlib_config.hpp 2015-05-13 17:35:32.135635880 -0400 @@ -60,7 +60,7 @@ // MSL standard lib: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp" -#elif defined(__IBMCPP__) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) // take the default VACPP std lib # define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp" @@ -68,7 +68,7 @@ // Modena C++ standard library # define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp" -#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) +#elif (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) // Dinkumware Library (this has to appear after any possible replacement libraries): # define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp" diff -ur boost/container/detail/advanced_insert_int.hpp --- boost/container/detail/advanced_insert_int.hpp 2013-09-26 17:35:57.000000000 -0400 +++ boost/container/detail/advanced_insert_int.hpp 2015-05-13 17:35:32.135635880 -0400 @@ -366,7 +366,7 @@ { \ BOOST_ASSERT(n == 1); (void)n; \ aligned_storage::value> v; \ - value_type *vp = static_cast(static_cast(&v)); \ + value_type *vp = launder(&v); \ alloc_traits::construct(this->a_, vp \ BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_MEMBER_FORWARD, _)); \ BOOST_TRY{ \ @@ -379,6 +379,12 @@ BOOST_CATCH_END \ alloc_traits::destroy(this->a_, vp); \ } \ + private: \ + /* make the pointer value opaque to address value propagation */ \ + value_type *launder(void *p) const __attribute__((noinline)) \ + { \ + return static_cast(p); \ + } \ }; \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) diff -ur boost/container/detail/mpl.hpp --- boost/container/detail/mpl.hpp 2013-09-26 17:35:57.000000000 -0400 +++ boost/container/detail/mpl.hpp 2015-05-13 17:35:32.135635880 -0400 @@ -112,8 +112,16 @@ struct select1st // : public std::unary_function { +#if defined(__IBMCPP__) && !defined(__ibmxl__) + typedef typename Pair::first_type dep_first_type; + typedef typename Pair::second_type dep_second_type; +#endif template +#if defined(__IBMCPP__) && !defined(__ibmxl__) + const dep_first_type& operator()(const OtherPair& x) const +#else const typename Pair::first_type& operator()(const OtherPair& x) const +#endif { return x.first; } const typename Pair::first_type& operator()(const typename Pair::first_type& x) const diff -ur boost/cstdint.hpp --- boost/cstdint.hpp 2013-09-21 16:17:00.000000000 -0400 +++ boost/cstdint.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -54,7 +54,7 @@ // this is triggered with GCC, because it defines __cplusplus < 199707L # define BOOST_NO_INT64_T # endif -# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX) +# elif defined(__FreeBSD__) || defined(__IBMCPP__) && !defined(__ibmxl__) || defined(_AIX) # include # else # include diff -ur boost/current_function.hpp --- boost/current_function.hpp 2013-09-17 12:55:51.000000000 -0400 +++ boost/current_function.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -40,7 +40,7 @@ # define BOOST_CURRENT_FUNCTION __FUNCSIG__ -#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500)) +#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 500)) # define BOOST_CURRENT_FUNCTION __FUNCTION__ diff -ur boost/date_time/time_resolution_traits.hpp --- boost/date_time/time_resolution_traits.hpp 2009-06-06 07:25:55.000000000 -0400 +++ boost/date_time/time_resolution_traits.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -68,16 +68,27 @@ 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 -ur boost/detail/container_fwd.hpp --- boost/detail/container_fwd.hpp 2012-03-31 15:34:56.000000000 -0400 +++ boost/detail/container_fwd.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -70,12 +70,12 @@ # elif defined(__MSL_CPP__) // MSL standard lib: # define BOOST_DETAIL_NO_CONTAINER_FWD -# elif defined(__IBMCPP__) +# elif defined(__IBMCPP__) && !defined(__ibmxl__) // The default VACPP std lib, forward declaration seems to be fine. # elif defined(MSIPL_COMPILE_H) // Modena C++ standard library # define BOOST_DETAIL_NO_CONTAINER_FWD -# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) +# elif (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) // Dinkumware Library (this has to appear after any possible replacement // libraries) # else diff -ur boost/detail/workaround.hpp --- boost/detail/workaround.hpp 2010-05-18 12:53:58.000000000 -0400 +++ boost/detail/workaround.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -85,7 +85,7 @@ #else #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0 #endif -#ifndef __IBMCPP__ +#if !defined(__IBMCPP__) || defined(__ibmxl__) #define __IBMCPP___WORKAROUND_GUARD 1 #else #define __IBMCPP___WORKAROUND_GUARD 0 diff -ur boost/foreach.hpp --- boost/foreach.hpp 2013-09-21 16:17:00.000000000 -0400 +++ boost/foreach.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -58,7 +58,7 @@ || BOOST_WORKAROUND(__GNUC__, < 3) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \ - || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ + || (BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) && (__IBMCPP__ < 1300)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \ || BOOST_WORKAROUND(__SUNPRO_CC, >= 0x5100) \ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) diff -ur boost/format/format_class.hpp --- boost/format/format_class.hpp 2010-07-09 16:27:18.000000000 -0400 +++ boost/format/format_class.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -68,7 +68,7 @@ { return io::detail::feed(*this,x); } #endif -#if defined(__GNUC__) +#if defined(__GNUC__) || defined (__IBMCPP__) && !defined(__ibmxl__) // GCC can't handle anonymous enums without some help // ** arguments passing ** // basic_format& operator%(const int& x) diff -ur boost/functional/hash/detail/float_functions.hpp --- boost/functional/hash/detail/float_functions.hpp 2012-12-13 17:34:18.000000000 -0500 +++ boost/functional/hash/detail/float_functions.hpp 2015-05-13 17:35:32.155635881 -0400 @@ -47,7 +47,7 @@ #elif defined(__MSL_CPP__) // MSL standard lib: # define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif defined(__IBMCPP__) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) // VACPP std lib (probably conformant for much earlier version). # if __IBMCPP__ >= 1210 # define BOOST_HASH_CONFORMANT_FLOATS 1 @@ -57,7 +57,7 @@ #elif defined(MSIPL_COMPILE_H) // Modena C++ standard library # define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) +#elif (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) // Dinkumware Library (this has to appear after any possible replacement libraries): # if _CPPLIB_VER >= 405 # define BOOST_HASH_CONFORMANT_FLOATS 1 diff -ur boost/graph/buffer_concepts.hpp --- boost/graph/buffer_concepts.hpp 2010-10-04 14:50:40.000000000 -0400 +++ boost/graph/buffer_concepts.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -25,7 +25,7 @@ BOOST_CONCEPT_ASSERT((Assignable)); - buf.push(g_ct); + sizeof(buf.push(g_ct),0); buf.pop(); reference t = buf.top(); boost::ignore_unused_variable_warning(t); @@ -51,12 +51,11 @@ : Buffer { BOOST_CONCEPT_USAGE(UpdatableQueue) { - q.update(g_ct); + sizeof(q.update(g_ct),0); } void const_constraints(const Q& cq) { - if (cq.contains(g_ct)) - dummy = __LINE__; + sizeof(cq.contains(g_ct) ? (dummy = __LINE__, int(0)) : char(0)); } int dummy; @@ -77,7 +76,7 @@ void const_constraints(const Q& cq) { km = cq.keys(); - k = get(km, g_ct); + sizeof(k = get(km, g_ct), char(0)); } static const typename Buffer::value_type g_ct; diff -ur boost/graph/edmunds_karp_max_flow.hpp --- boost/graph/edmunds_karp_max_flow.hpp 2008-12-06 04:10:20.000000000 -0500 +++ boost/graph/edmunds_karp_max_flow.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -10,7 +10,7 @@ #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: This header is deprecated. Please use: boost/graph/edmonds_karp_max_flow.hpp") -#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) +#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) # warning "This header is deprecated. Please use: boost/graph/edmonds_karp_max_flow.hpp" #endif diff -ur boost/interprocess/detail/atomic.hpp --- boost/interprocess/detail/atomic.hpp 2013-09-08 16:07:03.000000000 -0400 +++ boost/interprocess/detail/atomic.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -390,7 +390,8 @@ } //namespace interprocess{ } //namespace boost{ -#elif defined(__IBMCPP__) && (__IBMCPP__ >= 800) && defined(_AIX) +// As of V12.1, XLC++ has atomic BIF's implemented +#elif defined(__IBMCPP__) && (__IBMCPP__ >= 800) && defined(_AIX) && (__IBMCPP__ < 1210) #include @@ -482,7 +483,8 @@ } //namespace interprocess } //namespace boost -#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) +// As of V12.1, XLC++ has atomic BIF's implemented +#elif (defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )) || (defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 1210)) namespace boost { namespace interprocess { diff -ur boost/interprocess/detail/managed_multi_shared_memory.hpp --- boost/interprocess/detail/managed_multi_shared_memory.hpp 2012-12-28 18:12:08.000000000 -0500 +++ boost/interprocess/detail/managed_multi_shared_memory.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -119,6 +119,8 @@ group_services(frontend_t *const frontend) : mp_frontend(frontend), m_group(0), m_min_segment_size(0){} + /* This was changed because on zLinux std::size_t at 31-bit is unsigned int whereas size_t here is unsigned long. + * This does not violate the requirements in the standard as those two are the same size. */ virtual std::pair create_new_segment(size_type alloc_size) { (void)alloc_size; /* diff -ur boost/interprocess/ipc/message_queue.hpp --- boost/interprocess/ipc/message_queue.hpp 2013-05-18 06:40:55.000000000 -0400 +++ boost/interprocess/ipc/message_queue.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -523,7 +523,8 @@ msg_hdr_align = ::boost::alignment_of::value, index_align = ::boost::alignment_of::value, r_hdr_size = ipcdetail::ct_rounded_size::value, - r_index_size = ipcdetail::get_rounded_size(max_num_msg*sizeof(msg_hdr_ptr_t), msg_hdr_align), + // Some Linux distros fail without the static_cast below because in 32-bit mode + r_index_size = ipcdetail::get_rounded_size(max_num_msg*(static_cast(sizeof(msg_hdr_ptr_t))), msg_hdr_align), r_max_msg_size = ipcdetail::get_rounded_size(max_msg_size, msg_hdr_align) + sizeof(msg_header); return r_hdr_size + r_index_size + (max_num_msg*r_max_msg_size) + open_create_impl_t::ManagedOpenOrCreateUserOffset; @@ -537,7 +538,8 @@ msg_hdr_align = ::boost::alignment_of::value, index_align = ::boost::alignment_of::value, r_hdr_size = ipcdetail::ct_rounded_size::value, - r_index_size = ipcdetail::get_rounded_size(m_max_num_msg*sizeof(msg_hdr_ptr_t), msg_hdr_align), + // Some Linux distros fail without the static_cast below because in 32-bit mode + r_index_size = ipcdetail::get_rounded_size(m_max_num_msg*(static_cast(sizeof(msg_hdr_ptr_t))), msg_hdr_align), r_max_msg_size = ipcdetail::get_rounded_size(m_max_msg_size, msg_hdr_align) + sizeof(msg_header); //Pointer to the index diff -ur boost/interprocess/mem_algo/detail/multi_simple_seq_fit_impl.hpp --- boost/interprocess/mem_algo/detail/multi_simple_seq_fit_impl.hpp 2011-12-31 11:19:15.000000000 -0500 +++ boost/interprocess/mem_algo/detail/multi_simple_seq_fit_impl.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -242,7 +242,7 @@ m_header.m_size = size; //Initialize pointers - size_type block1_off = ipcdetail::get_rounded_size(sizeof(*this)+extra_hdr_bytes, Alignment); + size_type block1_off = ipcdetail::get_rounded_size(static_cast(sizeof(*this)+extra_hdr_bytes), Alignment); m_header.m_root.m_next = reinterpret_cast (reinterpret_cast(this) + block1_off); m_header.m_root.m_next->m_size = (size - block1_off)/Alignment; @@ -308,7 +308,7 @@ simple_seq_fit_impl:: get_min_size (size_type extra_hdr_bytes) { - return ipcdetail::get_rounded_size(sizeof(simple_seq_fit_impl)+extra_hdr_bytes + return ipcdetail::get_rounded_size(static_cast (sizeof(simple_seq_fit_impl)+extra_hdr_bytes) ,Alignment) + MinBlockSize; } diff -ur boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp --- boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp 2012-12-01 18:08:28.000000000 -0500 +++ boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp 2015-05-13 17:35:32.171635882 -0400 @@ -305,7 +305,7 @@ size_type uint_aligned_this = uint_this/Alignment*Alignment; size_type this_disalignment = (uint_this - uint_aligned_this); size_type block1_off = - ipcdetail::get_rounded_size(sizeof(simple_seq_fit_impl) + extra_hdr_bytes + this_disalignment, Alignment) + ipcdetail::get_rounded_size(static_cast(sizeof(simple_seq_fit_impl) + extra_hdr_bytes + this_disalignment), Alignment) - this_disalignment; algo_impl_t::assert_alignment(this_disalignment + block1_off); return block1_off; diff -ur boost/intrusive/detail/parent_from_member.hpp --- boost/intrusive/detail/parent_from_member.hpp 2013-08-24 07:02:18.000000000 -0400 +++ boost/intrusive/detail/parent_from_member.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -64,7 +64,7 @@ //This works with gcc, msvc, ac++, ibmcpp #elif defined(__GNUC__) || defined(__HP_aCC) || defined(BOOST_INTEL) || \ - defined(__IBMCPP__) || defined(__DECCXX) + defined(__IBMCPP__) && !defined(__ibmxl__) || defined(__DECCXX) const Parent * const parent = 0; const char *const member = static_cast(static_cast(&(parent->*ptr_to_member))); return std::ptrdiff_t(member - static_cast(static_cast(parent))); diff -ur boost/iostreams/detail/add_facet.hpp --- boost/iostreams/detail/add_facet.hpp 2008-03-22 17:45:55.000000000 -0400 +++ boost/iostreams/detail/add_facet.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -23,7 +23,7 @@ #if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && \ defined(_STLP_NO_OWN_IOSTREAMS) \ /**/ -# if (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) +# if (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) # define BOOST_IOSTREMS_STLPORT_WITH_OLD_DINKUMWARE # endif #endif diff -ur boost/iostreams/positioning.hpp --- boost/iostreams/positioning.hpp 2010-03-16 20:23:32.000000000 -0400 +++ boost/iostreams/positioning.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -82,7 +82,7 @@ // Converts a std::fpos_t to a stream_offset inline stream_offset fpos_t_to_offset(std::fpos_t pos) { -# if defined(_POSIX_) || (_INTEGRAL_MAX_BITS >= 64) || defined(__IBMCPP__) +# if defined(_POSIX_) || (_INTEGRAL_MAX_BITS >= 64) || defined(__IBMCPP__) && !defined(__ibmxl__) return pos; # else return _FPOSOFF(pos); @@ -92,7 +92,7 @@ // Extracts the member _Fpos from a std::fpos inline std::fpos_t streampos_to_fpos_t(std::streampos pos) { -# if defined (_CPPLIB_VER) || defined(__IBMCPP__) +# if defined (_CPPLIB_VER) || defined(__IBMCPP__) && !defined(__ibmxl__) return pos.seekpos(); # else return pos.get_fpos_t(); diff -ur boost/log/core/record_view.hpp --- boost/log/core/record_view.hpp 2013-09-12 13:17:07.000000000 -0400 +++ boost/log/core/record_view.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -59,6 +59,7 @@ struct private_data; friend struct private_data; +public: //! Publicly available record data struct public_data { diff -ur boost/log/utility/setup/settings.hpp --- boost/log/utility/setup/settings.hpp 2013-09-12 13:17:07.000000000 -0400 +++ boost/log/utility/setup/settings.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -101,7 +101,8 @@ //! Property tree path type typedef typename property_tree_type::path_type path_type; -private: +//private: +public: #if !defined(BOOST_LOG_DOXYGEN_PASS) //! A reference proxy object diff -ur boost/math/special_functions/detail/fp_traits.hpp --- boost/math/special_functions/detail/fp_traits.hpp 2012-01-02 06:21:41.000000000 -0500 +++ boost/math/special_functions/detail/fp_traits.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -386,7 +386,11 @@ #if defined(BOOST_BIG_ENDIAN) BOOST_STATIC_CONSTANT(int, offset_ = 0); #elif defined(BOOST_LITTLE_ENDIAN) - BOOST_STATIC_CONSTANT(int, offset_ = 12); + #if defined(__powerpc__) + BOOST_STATIC_CONSTANT(int, offset_ = 4); + #else + BOOST_STATIC_CONSTANT(int, offset_ = 12); + #endif #else BOOST_STATIC_ASSERT(false); #endif diff -ur boost/math/special_functions/jacobi_elliptic.hpp --- boost/math/special_functions/jacobi_elliptic.hpp 2013-04-15 04:47:08.000000000 -0400 +++ boost/math/special_functions/jacobi_elliptic.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -145,6 +145,22 @@ return jacobi_elliptic(k, theta, pcn, pdn, policies::policy<>()); } +/* Providing overloads rather than attempting to declare default arguments since the order of inclusion + sometimes puts this header ahead of math_fwd which is where the default arguments were specified. + These are not forwarding calls in case copying 'k' or 'theta' may have semantics. +*/ +template +inline typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn) +{ + return jacobi_elliptic(k, theta, pcn, 0, policies::policy<>()); +} + +template +inline typename tools::promote_args::type jacobi_elliptic(T k, U theta) +{ + return jacobi_elliptic(k, theta, 0, 0, policies::policy<>()); +} + template inline typename tools::promote_args::type jacobi_sn(U k, T theta, const Policy& pol) { diff -ur boost/math/special_functions/math_fwd.hpp --- boost/math/special_functions/math_fwd.hpp 2013-09-28 12:19:47.000000000 -0400 +++ boost/math/special_functions/math_fwd.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -813,7 +813,13 @@ typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&); template - typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0); + typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn); + + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn); + + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta); template typename tools::promote_args::type jacobi_sn(U k, T theta, const Policy& pol); diff -ur boost/math/tools/config.hpp --- boost/math/tools/config.hpp 2013-04-15 04:47:08.000000000 -0400 +++ boost/math/tools/config.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -39,7 +39,7 @@ # define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM) # include #endif -#ifdef __IBMCPP__ +#if defined(__IBMCPP__) && !defined(__ibmxl__) // // For reasons I don't unserstand, the tests with IMB's compiler all // pass at long double precision, but fail with real_concept, those tests @@ -82,7 +82,7 @@ # define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM) #endif -#ifdef __IBMCPP__ +#if defined(__IBMCPP__) && !defined(__ibmxl__) # define BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS #endif @@ -285,7 +285,7 @@ }} // namespace boost namespace math -#if ((defined(__linux__) && !defined(__UCLIBC__)) || defined(__QNX__) || defined(__IBMCPP__)) && !defined(BOOST_NO_FENV_H) +#if ((defined(__linux__) && !defined(__UCLIBC__)) || defined(__QNX__) || defined(__IBMCPP__)) && !defined(__ibmxl__) && !defined(BOOST_NO_FENV_H) #include diff -ur boost/math/tools/tuple.hpp --- boost/math/tools/tuple.hpp 2013-09-28 12:19:47.000000000 -0400 +++ boost/math/tools/tuple.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -49,7 +49,7 @@ }} -#elif (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || defined(__IBMCPP__) +#elif (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || defined(__IBMCPP__) && !defined(__ibmxl__) #include #include diff -ur boost/msm/back/state_machine.hpp --- boost/msm/back/state_machine.hpp 2013-09-22 06:12:20.000000000 -0400 +++ boost/msm/back/state_machine.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -2220,7 +2220,7 @@ // the IBM compiler seems to have problems with nested classes // the same seems to apply to the Apple version of gcc 4.0.1 (just in case we do for < 4.1) // and also to MS VC < 8 -#if defined (__IBMCPP__) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (defined(_MSC_VER) && (_MSC_VER < 1400)) +#if defined (__IBMCPP__) && !defined(__ibmxl__) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (defined(_MSC_VER) && (_MSC_VER < 1400)) public: #endif template @@ -2229,7 +2229,7 @@ m_is_included=true; ::boost::fusion::for_each(m_substate_list,add_state(this,sm)); } -#if defined (__IBMCPP__) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (defined(_MSC_VER) && (_MSC_VER < 1400)) +#if defined (__IBMCPP__) && !defined(__ibmxl__) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (defined(_MSC_VER) && (_MSC_VER < 1400)) private: #endif // A function object for use with mpl::for_each that stuffs @@ -2614,7 +2614,7 @@ } // the IBM and VC<8 compilers seem to have problems with the friend declaration of dispatch_table -#if defined (__IBMCPP__) || (defined(_MSC_VER) && (_MSC_VER < 1400)) +#if defined (__IBMCPP__) && !defined(__ibmxl__) || (defined(_MSC_VER) && (_MSC_VER < 1400)) public: #endif // no transition for event. @@ -2645,7 +2645,7 @@ { return HANDLED_FALSE; } -#if defined (__IBMCPP__) || (defined(_MSC_VER) && (_MSC_VER < 1400)) +#if defined (__IBMCPP__) && !defined(__ibmxl__) || (defined(_MSC_VER) && (_MSC_VER < 1400)) private: #endif // puts a deferred event in the queue diff -ur boost/multiprecision/cpp_int.hpp --- boost/multiprecision/cpp_int.hpp 2013-09-15 14:04:02.000000000 -0400 +++ boost/multiprecision/cpp_int.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -398,7 +398,10 @@ // There is currently no support for unsigned arbitrary precision arithmetic, largely // because it's not clear what subtraction should do: // +#if !defined(__IBMCPP__) || defined(__ibmxl__) + // SFINAE issue with vacpp causes this static assertion during overload resolution BOOST_STATIC_ASSERT_MSG(((sizeof(Allocator) == 0) && !is_void::value), "There is curently no support for unsigned arbitrary precision integers."); +#endif }; // // Fixed precision (i.e. no allocator), signed-magnitude type with limb-usage count: @@ -729,7 +732,7 @@ typedef mpl::int_ checked_type; protected: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); - BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = (MinBits < limb_bits) ? local_limb_type((local_limb_type(~local_limb_type(0))) >> (limb_bits - MinBits)) : local_limb_type(~local_limb_type(0))); + BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = (MinBits < limb_bits) ? local_limb_type((local_limb_type(~(local_limb_type(0)))) >> (limb_bits - MinBits)) : local_limb_type(~local_limb_type(0))); private: local_limb_type m_data; bool m_sign; @@ -1003,6 +1006,22 @@ // // Now the actual backend, normalising parameters passed to the base class: // +// One of the member functions uses divide_unsigned_helper before its definition in divide.hpp. +// Providing forward declarations. +#if defined(__IBMCPP__) && !defined(__ibmxl__) +template +void divide_unsigned_helper( + CppInt1* result, + const CppInt2& x, + const CppInt3& y, + CppInt1& r); +template +void divide_unsigned_helper( + CppInt1* result, + const CppInt2& x, + limb_type y, + CppInt1& r); +#endif template struct cpp_int_backend : public cpp_int_base< diff -ur boost/numeric/interval/detail/ppc_rounding_control.hpp --- boost/numeric/interval/detail/ppc_rounding_control.hpp 2007-06-07 14:43:47.000000000 -0400 +++ boost/numeric/interval/detail/ppc_rounding_control.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -16,7 +16,7 @@ #error This header only works on PPC CPUs. #endif -#if defined(__GNUC__ ) || (__IBMCPP__ >= 700) +#if defined(__GNUC__ ) || defined(__IBMCPP__) && !defined(__ibmxl__) && __IBMCPP__ >= 700 namespace boost { namespace numeric { diff -ur boost/numeric/ublas/matrix_sparse.hpp --- boost/numeric/ublas/matrix_sparse.hpp 2012-09-22 17:57:57.000000000 -0400 +++ boost/numeric/ublas/matrix_sparse.hpp 2015-05-13 17:35:32.175635882 -0400 @@ -1353,7 +1353,8 @@ typedef T value_type; typedef const T &const_reference; #ifndef BOOST_UBLAS_STRICT_MATRIX_SPARSE - typedef typename detail::map_traits::reference reference; + // No such thing as std::map::data_value_type + typedef typename detail::map_traits::reference reference; #else typedef sparse_matrix_element reference; #endif diff -ur boost/predef/library/std/dinkumware.h --- boost/predef/library/std/dinkumware.h 2013-07-31 23:46:04.000000000 -0400 +++ boost/predef/library/std/dinkumware.h 2015-05-13 17:35:32.175635882 -0400 @@ -31,7 +31,7 @@ #define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_NOT_AVAILABLE -#if (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) +#if (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) # undef BOOST_LIB_STD_DINKUMWARE # if defined(_CPPLIB_VER) # define BOOST_LIB_STD_DINKUMWARE BOOST_PREDEF_MAKE_10_VVRR(_CPPLIB_VER) diff -ur boost/predef/library/std/vacpp.h --- boost/predef/library/std/vacpp.h 2013-07-31 23:46:04.000000000 -0400 +++ boost/predef/library/std/vacpp.h 2015-05-13 17:35:32.175635882 -0400 @@ -27,7 +27,7 @@ #define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE -#if defined(__IBMCPP__) +#if defined(__IBMCPP__) && ! defined(__ibmxl__) # undef BOOST_LIB_STD_IBM # define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_AVAILABLE #endif diff -ur boost/preprocessor/config/config.hpp --- boost/preprocessor/config/config.hpp 2011-12-12 07:52:44.000000000 -0500 +++ boost/preprocessor/config/config.hpp 2015-05-13 17:35:32.179635882 -0400 @@ -43,7 +43,7 @@ # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_DMC()) # elif defined(__BORLANDC__) && __BORLANDC__ >= 0x581 # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT()) -# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) +# elif defined(__BORLANDC__) || defined(__IBMC__) && !defined(__ibmxl__) || defined(__IBMCPP__) && !defined(__ibmxl__) || defined(__SUNPRO_CC) # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC()) # elif defined(_MSC_VER) # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC()) @@ -72,7 +72,7 @@ # # if !defined BOOST_PP_VARIADICS # /* variadic support explicitly disabled for all untested compilers */ -# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI +# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ && !defined __ibmxl__ || defined __PGI # define BOOST_PP_VARIADICS 0 # /* VC++ (C/C++) */ # elif defined _MSC_VER && _MSC_VER >= 1400 && !defined __EDG__ @@ -94,7 +94,7 @@ # elif !BOOST_PP_VARIADICS + 1 < 2 # undef BOOST_PP_VARIADICS # define BOOST_PP_VARIADICS 1 -# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI) +# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ && !defined __ibmxl__ || defined __PGI) # define BOOST_PP_VARIADICS_MSVC 1 # endif # else diff -ur boost/preprocessor/seq/elem.hpp --- boost/preprocessor/seq/elem.hpp 2005-06-22 07:02:32.000000000 -0400 +++ boost/preprocessor/seq/elem.hpp 2015-05-13 17:35:32.179635882 -0400 @@ -35,7 +35,7 @@ # define BOOST_PP_SEQ_ELEM_III(im) BOOST_PP_SEQ_ELEM_IV(im) # define BOOST_PP_SEQ_ELEM_IV(x, _) x # else -# if defined(__IBMC__) || defined(__IBMCPP__) +# if defined(__IBMC__) && !defined(__ibmxl__) || defined(__IBMCPP__) && !defined(__ibmxl__) # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) # else # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_SEQ_ELEM_ ## i seq) diff -ur boost/preprocessor/seq/size.hpp --- boost/preprocessor/seq/size.hpp 2011-04-06 13:22:43.000000000 -0400 +++ boost/preprocessor/seq/size.hpp 2015-05-13 17:35:32.179635882 -0400 @@ -22,7 +22,7 @@ # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() || BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I(seq) # define BOOST_PP_SEQ_SIZE_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq) -# elif defined(__IBMC__) || defined(__IBMCPP__) +# elif defined(__IBMC__) && !defined(__ibmxl__) || defined(__IBMCPP__) && !defined(__ibmxl__) # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) # else # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq) diff -ur boost/proto/transform/default.hpp --- boost/proto/transform/default.hpp 2012-09-30 22:06:52.000000000 -0400 +++ boost/proto/transform/default.hpp 2015-05-13 17:35:32.179635882 -0400 @@ -65,7 +65,7 @@ typedef typename result_of::child_c::type e0; \ typedef typename Grammar::template impl::result_type r0; \ public: \ - BOOST_PROTO_DECLTYPE_(OP proto::detail::MAKE(), result_type) \ + BOOST_PROTO_DECLTYPE_(OP (proto::detail::MAKE()), result_type) \ result_type operator ()( \ typename impl::expr_param e \ , typename impl::state_param s \ diff -ur boost/regex/icu.hpp --- boost/regex/icu.hpp 2013-05-24 13:09:40.000000000 -0400 +++ boost/regex/icu.hpp 2015-05-13 17:35:32.179635882 -0400 @@ -243,7 +243,7 @@ // namespace re_detail{ -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) +#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) template inline u32regex do_make_u32regex(InputIterator i, InputIterator j, diff -ur boost/regex/v4/cpp_regex_traits.hpp --- boost/regex/v4/cpp_regex_traits.hpp 2012-12-10 08:18:45.000000000 -0500 +++ boost/regex/v4/cpp_regex_traits.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -274,7 +274,7 @@ // we need to start by initialising our syntax map so we know which // character is used for which purpose: #ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ +#if !defined(__IBMCPP__) || defined(__ibmxl__) typename std::messages::catalog cat = static_cast::catalog>(-1); #else typename std::messages::catalog cat = reinterpret_cast::catalog>(-1); @@ -660,7 +660,7 @@ void cpp_regex_traits_implementation::init() { #ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ +#if !defined(__IBMCPP__) || defined(__ibmxl__) typename std::messages::catalog cat = static_cast::catalog>(-1); #else typename std::messages::catalog cat = reinterpret_cast::catalog>(-1); diff -ur boost/serialization/force_include.hpp --- boost/serialization/force_include.hpp 2012-03-26 18:49:45.000000000 -0400 +++ boost/serialization/force_include.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -41,7 +41,7 @@ # define BOOST_DLLEXPORT __declspec(dllexport) # elif defined(__GNUC__) && (__GNUC__ >= 3) # define BOOST_USED __attribute__ ((__used__)) -# elif defined(__IBMCPP__) && (__IBMCPP__ >= 1110) +# elif defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 1110) # define BOOST_USED __attribute__ ((__used__)) # elif defined(__INTEL_COMPILER) && (BOOST_INTEL_CXX_VERSION >= 800) # define BOOST_USED __attribute__ ((__used__)) diff -ur boost/signal.hpp --- boost/signal.hpp 2013-06-20 17:18:17.000000000 -0400 +++ boost/signal.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -13,7 +13,7 @@ #ifndef BOOST_SIGNALS_NO_DEPRECATION_WARNING # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING.") -# elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) +# elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) # warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING." # endif #endif diff -ur boost/smart_ptr/detail/sp_counted_base.hpp --- boost/smart_ptr/detail/sp_counted_base.hpp 2012-12-13 09:53:09.000000000 -0500 +++ boost/smart_ptr/detail/sp_counted_base.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -44,7 +44,7 @@ #elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER ) && !defined(__PATHSCALE__) # include -#elif defined( __IBMCPP__ ) && defined( __powerpc ) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) && defined(__powerpc) # include #elif defined( __MWERKS__ ) && defined( __POWERPC__ ) diff -ur boost/smart_ptr/detail/sp_has_sync.hpp --- boost/smart_ptr/detail/sp_has_sync.hpp 2012-11-14 06:57:58.000000000 -0500 +++ boost/smart_ptr/detail/sp_has_sync.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -26,7 +26,7 @@ # define BOOST_SP_HAS_SYNC -#elif defined( __IBMCPP__ ) && ( __IBMCPP__ >= 1210 ) +#elif defined( __IBMCPP__ ) && !defined(__ibmxl__) && ( __IBMCPP__ >= 1210 ) # define BOOST_SP_HAS_SYNC diff -ur boost/spirit/home/karma/detail/pass_container.hpp --- boost/spirit/home/karma/detail/pass_container.hpp 2012-01-09 09:36:46.000000000 -0500 +++ boost/spirit/home/karma/detail/pass_container.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -188,7 +188,7 @@ {}; // If both, the containers value type and the exposed attribute type are - // optionals we are allowed to pass through the the container only if the + // optionals we are allowed to pass through the container only if the // embedded types of those optionals are not compatible. template @@ -242,27 +242,51 @@ namespace boost { namespace spirit { namespace karma { namespace detail { + template + struct pass_container_base + { + pass_container_base(Iterator begin, Iterator end) + : iter(begin), end(end) + {} + + mutable Iterator iter; + mutable Iterator end; + }; + + template + struct pass_container_base + { + pass_container_base(Iterator& begin, Iterator& end) + : iter(begin), end(end) + {} + + Iterator& iter; + Iterator& end; + }; + /////////////////////////////////////////////////////////////////////////// // This function handles the case where the attribute (Attr) given // to the sequence is an STL container. This is a wrapper around F. // The function F does the actual generating. template - struct pass_container + struct pass_container : pass_container_base { + typedef pass_container_base base_type; typedef typename F::context_type context_type; pass_container(F const& f, Iterator begin, Iterator end) - : f(f), iter(begin), end(end) + : base_type(begin, end) + , f(f) {} bool is_at_end() const { - return traits::compare(iter, end); + return traits::compare(this->iter, this->end); } void next() { - traits::next(iter); + traits::next(this->iter); } // this is for the case when the current element expects an attribute @@ -271,10 +295,10 @@ bool dispatch_container(Component const& component, mpl::false_) const { // get the next value to generate from container - if (!is_at_end() && !f(component, traits::deref(iter))) + if (!is_at_end() && !f(component, traits::deref(this->iter))) { // needs to return false as long as everything is ok - traits::next(iter); + traits::next(this->iter); return false; } @@ -288,7 +312,7 @@ template bool dispatch_container(Component const& component, mpl::true_) const { - return f(component, make_iterator_range(iter, end)); + return f(component, make_iterator_range(this->iter, this->end)); } /////////////////////////////////////////////////////////////////////// @@ -338,8 +362,6 @@ } F f; - mutable Iterator iter; - mutable Iterator end; private: // silence MSVC warning C4512: assignment operator could not be generated diff -ur boost/spirit/home/support/detail/math/detail/fp_traits.hpp --- boost/spirit/home/support/detail/math/detail/fp_traits.hpp 2010-12-16 08:39:55.000000000 -0500 +++ boost/spirit/home/support/detail/math/detail/fp_traits.hpp 2015-05-13 17:35:32.183635882 -0400 @@ -441,7 +441,11 @@ #if defined(BOOST_BIG_ENDIAN) BOOST_STATIC_CONSTANT(int, offset_ = 0); #elif defined(BOOST_LITTLE_ENDIAN) - BOOST_STATIC_CONSTANT(int, offset_ = 12); + #if defined(__powerpc__) + BOOST_STATIC_CONSTANT(int, offset_ = 4); + #else + BOOST_STATIC_CONSTANT(int, offset_ = 12); + #endif #else BOOST_STATIC_ASSERT(false); #endif diff -ur boost/spirit/repository/home/karma/nonterminal/subrule.hpp --- boost/spirit/repository/home/karma/nonterminal/subrule.hpp 2013-04-10 18:51:13.000000000 -0400 +++ boost/spirit/repository/home/karma/nonterminal/subrule.hpp 2015-05-13 17:35:32.187635882 -0400 @@ -207,7 +207,7 @@ // trying to use a subrule which has inherited attributes, // without passing values for them. context_type context(*this - , traits::pre_transform( + , traits::pre_transform( make_attribute::call(attr))); return def.binder(sink, context, delimiter); @@ -242,7 +242,7 @@ // trying to use a subrule which has inherited attributes, // passing values of incompatible types for them. context_type context(*this - , traits::pre_transform( + , traits::pre_transform( make_attribute::call(attr)), params, caller_context); return def.binder(sink, context, delimiter); diff -ur boost/spirit.hpp --- boost/spirit.hpp 2009-01-15 12:34:54.000000000 -0500 +++ boost/spirit.hpp 2015-05-13 17:35:32.187635882 -0400 @@ -14,7 +14,7 @@ #if BOOST_VERSION >= 103800 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic.hpp") -#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) +#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) # warning "This header is deprecated. Please use: boost/spirit/include/classic.hpp" #endif #endif diff -ur boost/static_assert.hpp --- boost/static_assert.hpp 2013-09-21 16:17:00.000000000 -0400 +++ boost/static_assert.hpp 2015-05-13 17:35:32.187635882 -0400 @@ -32,6 +32,12 @@ # else # define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) # endif +#elif defined (__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ > 1210) +# ifndef BOOST_NO_CXX11_VARIADIC_MACROS +# define BOOST_STATIC_ASSERT_MSG( ... ) __static_assert(__VA_ARGS__) +# else +# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) +# endif #else # define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) #endif @@ -79,6 +85,12 @@ # else # define BOOST_STATIC_ASSERT( B ) static_assert(B, #B) # endif +#elif defined (__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ > 1210) +# ifndef BOOST_NO_CXX11_VARIADIC_MACROS +# define BOOST_STATIC_ASSERT( ... ) __static_assert(__VA_ARGS__, #__VA_ARGS__) +# else +# define BOOST_STATIC_ASSERT( B ) __static_assert(B, #B) +# endif #else namespace boost{ diff -ur boost/test/impl/test_main.ipp --- boost/test/impl/test_main.ipp 2008-10-13 04:20:26.000000000 -0400 +++ boost/test/impl/test_main.ipp 2015-05-13 17:35:32.199635883 -0400 @@ -50,6 +50,14 @@ // ************** test main ************** // // ************************************************************************** // +//Test cases that define their own init_unit_test_suite shoud use it, not this one +#ifdef __IBMCPP__ +# ifdef __linux__ +# pragma weak _Z20init_unit_test_suiteiPPc +# elif _AIX +# pragma weak init_unit_test_suite__FiPPc +# endif +#endif ::boost::unit_test::test_suite* init_unit_test_suite( int argc, char* argv[] ) { using namespace ::boost::unit_test; diff -ur boost/test/impl/unit_test_main.ipp --- boost/test/impl/unit_test_main.ipp 2009-07-04 02:36:59.000000000 -0400 +++ boost/test/impl/unit_test_main.ipp 2015-05-13 17:35:32.199635883 -0400 @@ -220,6 +220,9 @@ // ************** main function for tests using lib ************** // // ************************************************************************** // +#ifdef __IBMCPP__ +#pragma weak main //Test cases that define their own main shoud use it, not this main +#endif int BOOST_TEST_CALL_DECL main( int argc, char* argv[] ) { diff -ur boost/test/utils/basic_cstring/basic_cstring.hpp --- boost/test/utils/basic_cstring/basic_cstring.hpp 2009-11-28 04:19:18.000000000 -0500 +++ boost/test/utils/basic_cstring/basic_cstring.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -91,7 +91,7 @@ self_type& trim_left( size_type trim_size ); self_type& trim_right( iterator it ); self_type& trim_left( iterator it ); -#ifndef __IBMCPP__ +#if !defined(__IBMCPP__) || defined(__ibmxl__) 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() ) ; diff -ur boost/thread/detail/config.hpp --- boost/thread/detail/config.hpp 2013-08-03 12:04:39.000000000 -0400 +++ boost/thread/detail/config.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -44,7 +44,7 @@ #endif // This compiler doesn't support Boost.Chrono -#if defined __IBMCPP__ && (__IBMCPP__ < 1100) \ +#if defined __IBMCPP__ && !defined(__ibmxl__) && (__IBMCPP__ < 1100) \ && ! defined BOOST_THREAD_DONT_USE_CHRONO #define BOOST_THREAD_DONT_USE_CHRONO #if ! defined BOOST_THREAD_USES_DATETIME @@ -363,8 +363,10 @@ // compatibility with the rest of Boost's auto-linking code: #if defined(BOOST_THREAD_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) # undef BOOST_THREAD_USE_LIB +#ifndef BOOST_THREAD_USE_DLL # define BOOST_THREAD_USE_DLL #endif +#endif #if defined(BOOST_THREAD_BUILD_DLL) //Build dll #elif defined(BOOST_THREAD_BUILD_LIB) //Build lib diff -ur boost/thread/detail/platform.hpp --- boost/thread/detail/platform.hpp 2012-07-09 01:55:01.000000000 -0400 +++ boost/thread/detail/platform.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -37,7 +37,7 @@ #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) # define BOOST_THREAD_MACOS //# define BOOST_THREAD_WAIT_BUG boost::posix_time::microseconds(1000) -#elif defined(__IBMCPP__) || defined(_AIX) +#elif defined(__IBMCPP__) && !defined(__ibmxl__) || defined(_AIX) # define BOOST_THREAD_AIX #elif defined(__amigaos__) # define BOOST_THREAD_AMIGAOS diff -ur boost/thread/synchronized_value.hpp --- boost/thread/synchronized_value.hpp 2013-09-08 05:50:12.000000000 -0400 +++ boost/thread/synchronized_value.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -743,7 +743,7 @@ } -#if ! defined __IBMCPP__ +#if ! defined __IBMCPP__ || defined __ibmxl__ private: #endif class deref_value diff -ur boost/tr1/detail/config.hpp --- boost/tr1/detail/config.hpp 2010-06-12 05:30:03.000000000 -0400 +++ boost/tr1/detail/config.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -9,7 +9,7 @@ #include #if (defined(__GNUC__) && !(defined(linux) || defined(__linux) || defined(__linux__))) \ - || (!defined(_AIX) && defined(__IBMCPP__) && (__IBMCPP__ >= 800)) + || (!defined(_AIX) && defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 800)) // Disable use of #include_next on Linux as typically we are installed in a // directory that is searched *after* the std lib include path. #if !defined(BOOST_HAS_INCLUDE_NEXT) diff -ur boost/typeof/typeof.hpp --- boost/typeof/typeof.hpp 2013-09-21 16:17:00.000000000 -0400 +++ boost/typeof/typeof.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -171,6 +171,15 @@ # define BOOST_TYPEOF_KEYWORD __typeof__ # endif # endif + +#elif defined(__IBMCPP__) && !defined(__ibmxl__) +# 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 -ur boost/type_traits/common_type.hpp --- boost/type_traits/common_type.hpp 2013-06-20 08:14:11.000000000 -0400 +++ boost/type_traits/common_type.hpp 2015-05-13 17:35:32.199635883 -0400 @@ -14,7 +14,7 @@ #if defined(__SUNPRO_CC) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF) # define BOOST_COMMON_TYPE_DONT_USE_TYPEOF #endif -#if defined(__IBMCPP__) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF) +#if defined(__IBMCPP__) && !defined(__ibmxl__) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF) # define BOOST_COMMON_TYPE_DONT_USE_TYPEOF #endif diff -ur boost/type_traits/extent.hpp --- boost/type_traits/extent.hpp 2008-10-15 05:29:29.000000000 -0400 +++ boost/type_traits/extent.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -80,7 +80,7 @@ BOOST_STATIC_CONSTANT(std::size_t, value = R); }; -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) && !defined(__MWERKS__) +#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) && !defined(__MWERKS__) template struct extent_imp { diff -ur boost/type_traits/is_array.hpp --- boost/type_traits/is_array.hpp 2012-12-28 13:39:22.000000000 -0500 +++ boost/type_traits/is_array.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -37,7 +37,7 @@ BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const[N],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T volatile[N],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const volatile[N],true) -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T[],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T const[],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T volatile[],true) diff -ur boost/type_traits/is_convertible.hpp --- boost/type_traits/is_convertible.hpp 2012-12-28 13:39:22.000000000 -0500 +++ boost/type_traits/is_convertible.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -149,7 +149,7 @@ }; #elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \ - || defined(__IBMCPP__) || defined(__HP_aCC) + || defined(__IBMCPP__) && !defined(__ibmxl__) || defined(__HP_aCC) // // This is *almost* an ideal world implementation as it doesn't rely // on undefined behaviour by passing UDT's through (...). diff -ur boost/type_traits/rank.hpp --- boost/type_traits/rank.hpp 2008-10-15 05:29:29.000000000 -0400 +++ boost/type_traits/rank.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -49,7 +49,7 @@ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp::value)); }; -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) template struct rank_imp { diff -ur boost/type_traits/remove_all_extents.hpp --- boost/type_traits/remove_all_extents.hpp 2008-10-15 05:29:29.000000000 -0400 +++ boost/type_traits/remove_all_extents.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -31,7 +31,7 @@ BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T const[N],typename boost::remove_all_extents::type type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T volatile[N],typename boost::remove_all_extents::type type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T const volatile[N],typename boost::remove_all_extents::type type) -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T[],typename boost::remove_all_extents::type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T const[],typename boost::remove_all_extents::type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T volatile[],typename boost::remove_all_extents::type) diff -ur boost/type_traits/remove_bounds.hpp --- boost/type_traits/remove_bounds.hpp 2008-10-15 05:29:29.000000000 -0400 +++ boost/type_traits/remove_bounds.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -31,7 +31,7 @@ BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const volatile[N],T const volatile type) -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T[],T) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const[],T const) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T volatile[],T volatile) diff -ur boost/type_traits/remove_extent.hpp --- boost/type_traits/remove_extent.hpp 2008-10-15 05:29:29.000000000 -0400 +++ boost/type_traits/remove_extent.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -31,7 +31,7 @@ BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const[N],T const type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T volatile[N],T volatile type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const volatile[N],T const volatile type) -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T[],T) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T const[],T const) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T volatile[],T volatile) diff -ur boost/unordered/detail/table.hpp --- boost/unordered/detail/table.hpp 2013-08-18 05:44:14.000000000 -0400 +++ boost/unordered/detail/table.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -24,7 +24,7 @@ #elif defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) #pragma message("Warning: BOOST_UNORDERED_DEPRECATED_EQUALITY is no longer supported.") #elif defined(__GNUC__) || defined(__HP_aCC) || \ - defined(__SUNPRO_CC) || defined(__IBMCPP__) + defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) #warning "BOOST_UNORDERED_DEPRECATED_EQUALITY is no longer supported." #endif diff -ur boost/utility/explicit_operator_bool.hpp --- boost/utility/explicit_operator_bool.hpp 2013-09-21 16:17:00.000000000 -0400 +++ boost/utility/explicit_operator_bool.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -64,7 +64,7 @@ namespace detail { -#if !defined(_MSC_VER) && !defined(__IBMCPP__) +#if !defined(_MSC_VER) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) struct unspecified_bool { diff -ur boost/utility/value_init.hpp --- boost/utility/value_init.hpp 2013-09-21 16:17:00.000000000 -0400 +++ boost/utility/value_init.hpp 2015-05-13 17:35:32.203635883 -0400 @@ -92,9 +92,14 @@ #endif aligned_storage::value>::type x; + // make the pointer value opaque to address value propagation + wrapper *mutate(void *vptr) const __attribute__((noinline)) + { + return static_cast( vptr); + } wrapper * wrapper_address() const { - return static_cast( static_cast(&x)); + return mutate(&x); } public : diff -ur libs/algorithm/test/Jamfile.v2 --- libs/algorithm/test/Jamfile.v2 2013-09-21 16:17:00.000000000 -0400 +++ libs/algorithm/test/Jamfile.v2 2015-05-13 17:35:32.203635883 -0400 @@ -18,48 +18,48 @@ { test-suite algorithm: # Search tests - : [ run empty_search_test.cpp unit_test_framework : : : : empty_search_test ] - [ run search_test1.cpp unit_test_framework : : : : search_test1 ] - [ run search_test2.cpp unit_test_framework : : : : search_test2 ] - [ run search_test3.cpp unit_test_framework : : : : search_test3 ] - [ run search_test4.cpp unit_test_framework : : : : search_test4 ] + : [ run empty_search_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : empty_search_test ] + [ run search_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : search_test1 ] + [ run search_test2.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : search_test2 ] + [ run search_test3.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : search_test3 ] + [ run search_test4.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : search_test4 ] [ compile-fail search_fail1.cpp : : : : ] [ compile-fail search_fail2.cpp : : : : ] [ compile-fail search_fail3.cpp : : : : ] # Clamp tests - [ run clamp_test.cpp unit_test_framework : : : : clamp_test ] + [ run clamp_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : clamp_test ] # Cxx11 tests - [ run all_of_test.cpp unit_test_framework : : : : all_of_test ] - [ run any_of_test.cpp unit_test_framework : : : : any_of_test ] - [ run none_of_test.cpp unit_test_framework : : : : none_of_test ] - [ run one_of_test.cpp unit_test_framework : : : : one_of_test ] + [ run all_of_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : all_of_test ] + [ run any_of_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : any_of_test ] + [ run none_of_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : none_of_test ] + [ run one_of_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : one_of_test ] - [ run ordered_test.cpp unit_test_framework : : : : ordered_test ] - [ run find_if_not_test1.cpp unit_test_framework : : : : find_if_not_test1 ] - [ run copy_if_test1.cpp unit_test_framework : : : : copy_if_test1 ] - [ run copy_n_test1.cpp unit_test_framework : : : : copy_n_test1 ] - [ run iota_test1.cpp unit_test_framework : : : : iota_test1 ] - - [ run is_permutation_test1.cpp unit_test_framework : : : : is_permutation_test1 ] - [ run partition_point_test1.cpp unit_test_framework : : : : partition_point_test1 ] - [ run is_partitioned_test1.cpp unit_test_framework : : : : is_partitioned_test1 ] - [ run partition_copy_test1.cpp unit_test_framework : : : : partition_copy_test1 ] + [ run ordered_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : ordered_test ] + [ run find_if_not_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : find_if_not_test1 ] + [ run copy_if_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : copy_if_test1 ] + [ run copy_n_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : copy_n_test1 ] + [ run iota_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : iota_test1 ] + + [ run is_permutation_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : is_permutation_test1 ] + [ run partition_point_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : partition_point_test1 ] + [ run is_partitioned_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : is_partitioned_test1 ] + [ run partition_copy_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : partition_copy_test1 ] # Cxx14 tests - [ run equal_test.cpp unit_test_framework : : : : equal_test ] - [ run mismatch_test.cpp unit_test_framework : : : : mismatch_test ] + [ run equal_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : equal_test ] + [ run mismatch_test.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : mismatch_test ] # Hex tests - [ run hex_test1.cpp unit_test_framework : : : : hex_test1 ] - [ run hex_test2.cpp unit_test_framework : : : : hex_test2 ] - [ run hex_test3.cpp unit_test_framework : : : : hex_test3 ] - [ run hex_test4.cpp unit_test_framework : : : : hex_test4 ] + [ run hex_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : hex_test1 ] + [ run hex_test2.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : hex_test2 ] + [ run hex_test3.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : hex_test3 ] + [ run hex_test4.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : hex_test4 ] [ compile-fail hex_fail1.cpp ] # Gather tests - [ run gather_test1.cpp unit_test_framework : : : : gather_test1 ] + [ run gather_test1.cpp unit_test_framework : : : vacpp,linux:BOOST_HAS_INCLUDE_NEXT : gather_test1 ] [ compile-fail gather_fail1.cpp ] ; diff -ur libs/atomic/test/Jamfile.v2 --- libs/atomic/test/Jamfile.v2 2013-09-08 09:55:41.000000000 -0400 +++ libs/atomic/test/Jamfile.v2 2015-05-13 17:35:32.223635884 -0400 @@ -12,6 +12,7 @@ project boost/atomic/test : requirements multi + vacpp:../../date_time/build//boost_date_time /boost/thread//boost_thread /boost/atomic//boost_atomic ; diff -ur libs/chrono/build/Jamfile.v2 --- libs/chrono/build/Jamfile.v2 2013-03-28 19:45:26.000000000 -0400 +++ libs/chrono/build/Jamfile.v2 2015-05-13 17:35:32.223635884 -0400 @@ -89,7 +89,7 @@ #BOOST_RATIO_USES_ARRAY_ASSERT #BOOST_CHRONO_USES_ARRAY_ASSERT #vacpp:BOOST_COMMON_TYPE_DONT_USE_TYPEOF - vacpp:BOOST_TYPEOF_EMULATION + #vacpp:BOOST_TYPEOF_EMULATION sun:__typeof__=__typeof__ BOOST_SYSTEM_NO_DEPRECATED diff -ur libs/gil/test/image.cpp --- libs/gil/test/image.cpp 2009-12-11 16:40:24.000000000 -0500 +++ libs/gil/test/image.cpp 2015-05-13 17:36:59.187639198 -0400 @@ -569,7 +569,8 @@ int main(int argc, char* argv[]) { - const char* local_name = "gil_reference_checksums.txt"; + // For when this test case is not run from either the containing directory or the status directory. + const char* local_name = argv[1]; const char* name_from_status = "../libs/gil/test/gil_reference_checksums.txt"; std::ifstream file_is_there(local_name); diff -ur libs/gil/test/Jamfile.v2 --- libs/gil/test/Jamfile.v2 2008-03-16 06:26:10.000000000 -0400 +++ libs/gil/test/Jamfile.v2 2015-05-13 17:35:32.223635884 -0400 @@ -15,7 +15,7 @@ sample_image.cpp error_if.cpp : - : + : gil_reference_checksums.txt : $(BOOST_ROOT) BOOST_GIL_NO_IO _SCL_SECURE_NO_WARNINGS ] [ run channel.cpp error_if.cpp @@ -35,6 +35,6 @@ [ run image_io.cpp error_if.cpp : - : + : gil_reference_checksums.txt : $(BOOST_ROOT) BOOST_GIL_NO_IO _SCL_SECURE_NO_WARNINGS ] ; diff -ur libs/graph/test/make_connected_test.cpp --- libs/graph/test/make_connected_test.cpp 2013-09-21 16:17:00.000000000 -0400 +++ libs/graph/test/make_connected_test.cpp 2015-05-13 17:35:32.223635884 -0400 @@ -116,7 +116,11 @@ std::vector gVV_components(num_vertices(gVV)); boost::iterator_property_map< std::vector::iterator, +#if defined(__IBMCPP__) && !defined(__ibmxl__) //typename does not belong here - not a template definition + boost::property_map::const_type +#else typename boost::property_map::const_type +#endif > gVV_components_pm(gVV_components.begin(), get(boost::vertex_index, gVV)); BOOST_CHECK(connected_components(gVV, gVV_components_pm) == static_cast(num_cycles)); @@ -132,7 +136,11 @@ std::vector gLV_components(num_vertices(gLV)); boost::iterator_property_map< std::vector::iterator, +#if defined(__IBMCPP__) && !defined(__ibmxl__) //typename does not belong here - not a template definition + boost::property_map::const_type +#else typename boost::property_map::const_type +#endif > gLV_components_pm(gLV_components.begin(), get(boost::vertex_index, gLV)); BOOST_CHECK(connected_components(gLV, gLV_components_pm) == static_cast(num_cycles)); diff -ur libs/iostreams/test/Jamfile.v2 --- libs/iostreams/test/Jamfile.v2 2013-09-21 16:17:00.000000000 -0400 +++ libs/iostreams/test/Jamfile.v2 2015-05-13 17:35:32.223635884 -0400 @@ -95,7 +95,7 @@ [ test-iostreams regex_filter_test.cpp /boost/regex//boost_regex ] - [ test-iostreams restrict_test.cpp ] + [ test-iostreams restrict_test.cpp : vacpp:BOOST_RESTRICT_USE_SLICE ] [ test-iostreams seekable_file_test.cpp ] [ test-iostreams seekable_filter_test.cpp ] [ test-iostreams sequence_test.cpp ] @@ -141,9 +141,17 @@ { all-tests += [ test-iostreams - gzip_test.cpp ../build//boost_iostreams ] + gzip_test.cpp + ../src/gzip.cpp + ../src/zlib.cpp + ../build//boost_iostreams + /site-config//zlib ] [ test-iostreams - zlib_test.cpp ../build//boost_iostreams ] ; + zlib_test.cpp + ../src/gzip.cpp + ../src/zlib.cpp + ../build//boost_iostreams + /site-config//zlib ] ; } test-suite "iostreams" : $(all-tests) ; diff -ur libs/local_function/test/addable.hpp --- libs/local_function/test/addable.hpp 2012-05-26 17:17:03.000000000 -0400 +++ libs/local_function/test/addable.hpp 2015-05-13 17:35:32.223635884 -0400 @@ -13,7 +13,8 @@ template struct Addable { // User-defined concept. BOOST_CONCEPT_USAGE(Addable) { - return_type(x + y); // Check addition `T operator+(T x, T y)`. + // some compilers will require the definition of x and y, so use a sizeof to avoid the requirement + sizeof(return_type(x + y)); // Check addition `T operator+(T x, T y)`. } private: diff -ur libs/math/test/compile_test/tools_roots_inc_test.cpp --- libs/math/test/compile_test/tools_roots_inc_test.cpp 2010-10-04 11:17:21.000000000 -0400 +++ libs/math/test/compile_test/tools_roots_inc_test.cpp 2015-05-13 17:35:32.223635884 -0400 @@ -21,7 +21,11 @@ void compile_and_link_test() { typedef double (*F)(double); +#if defined(__IBMCPP__) && !defined(__ibmxl__) + typedef boost::math::tuple (*F2)(double); +#else typedef std::pair (*F2)(double); +#endif typedef boost::math::tuple (*F3)(double); typedef boost::math::tools::eps_tolerance Tol; Tol tol(u); diff -ur libs/math/test/complex_test.cpp --- libs/math/test/complex_test.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/complex_test.cpp 2015-05-13 17:35:32.223635884 -0400 @@ -406,7 +406,7 @@ BOOST_CHECK((boost::math::isnan)(result.real())); BOOST_CHECK(result.imag() == infinity); } - if(boost::math::signbit(mzero)) + if((boost::math::signbit)(mzero)) { result = boost::math::acos(ct(-1.25f, zero)); BOOST_CHECK(result.real() > 0); @@ -537,7 +537,7 @@ BOOST_CHECK((boost::math::isnan)(result.real())); BOOST_CHECK((boost::math::isnan)(result.imag())); } - if(boost::math::signbit(mzero)) + if((boost::math::signbit)(mzero)) { result = boost::math::acosh(ct(-2.5f, zero)); BOOST_CHECK(result.real() > 0); @@ -669,7 +669,7 @@ BOOST_CHECK(std::fabs(result.real()) == infinity); BOOST_CHECK((boost::math::isnan)(result.imag())); } - if(boost::math::signbit(mzero)) + if((boost::math::signbit)(mzero)) { result = boost::math::asinh(ct(zero, 1.5f)); BOOST_CHECK(result.real() > 0); @@ -817,7 +817,7 @@ BOOST_CHECK((boost::math::isnan)(result.imag())); } - if(boost::math::signbit(mzero)) + if((boost::math::signbit)(mzero)) { result = boost::math::atanh(ct(-2.0f, mzero)); BOOST_CHECK(result.real() < 0); diff -ur libs/math/test/test_airy.cpp --- libs/math/test/test_airy.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_airy.cpp 2015-05-13 17:35:32.223635884 -0400 @@ -12,6 +12,7 @@ #include #include #include +#include #ifdef _MSC_VER # pragma warning(disable : 4756 4127) // overflow in constant arithmetic @@ -49,10 +50,10 @@ for(unsigned i = 0; i < data.size(); ++i) { BOOST_CHECK_CLOSE_FRACTION(data[i][1], boost::math::airy_ai(data[i][0]), tol); - if(boost::math::isfinite(data[i][2])) + if((boost::math::isfinite)(data[i][2])) BOOST_CHECK_CLOSE_FRACTION(data[i][2], boost::math::airy_bi(data[i][0]), tol); BOOST_CHECK_CLOSE_FRACTION(data[i][3], boost::math::airy_ai_prime(data[i][0]), tol); - if(boost::math::isfinite(data[i][4])) + if((boost::math::isfinite)(data[i][4])) BOOST_CHECK_CLOSE_FRACTION(data[i][4], boost::math::airy_bi_prime(data[i][0]), tol); } } diff -ur libs/math/test/test_error_handling.cpp --- libs/math/test/test_error_handling.cpp 2013-09-28 12:19:47.000000000 -0400 +++ libs/math/test/test_error_handling.cpp 2015-05-13 17:35:32.223635884 -0400 @@ -13,6 +13,7 @@ // in order to check that they are otherwise undefined. // The user MUST define them before they can be used. // +#include struct user_defined_error{}; namespace boost{ namespace math{ namespace policies{ diff -ur libs/math/test/test_hankel.cpp --- libs/math/test/test_hankel.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_hankel.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef _MSC_VER # pragma warning(disable : 4756 4127) // overflow in constant arithmetic diff -ur libs/math/test/test_nc_t.cpp --- libs/math/test/test_nc_t.cpp 2013-09-28 12:19:47.000000000 -0400 +++ libs/math/test/test_nc_t.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -744,7 +744,7 @@ BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(1, 0)))); BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(2, nan)))); BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(nan, nan)))); - BOOST_CHECK(boost::math::isfinite(mean(ignore_error_non_central_t(2, 0)))); // OK + BOOST_CHECK((boost::math::isfinite)(mean(ignore_error_non_central_t(2, 0)))); // OK // Variance BOOST_CHECK((boost::math::isnan)(variance(ignore_error_non_central_t(nan, 0)))); @@ -784,13 +784,13 @@ BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_non_central_t(3, 0)))); BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_non_central_t(4, 0)))); } // has_quiet_NaN - BOOST_CHECK(boost::math::isfinite(mean(ignore_error_non_central_t(1 + std::numeric_limits::epsilon(), 0)))); - BOOST_CHECK(boost::math::isfinite(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); - BOOST_CHECK(boost::math::isfinite(variance(ignore_error_non_central_t(static_cast(2.0001L), 0)))); - BOOST_CHECK(boost::math::isfinite(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); - BOOST_CHECK(boost::math::isfinite(skewness(ignore_error_non_central_t(3 + 3 * std::numeric_limits::epsilon(), 0)))); - BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_non_central_t(4 + 4 * std::numeric_limits::epsilon(), 0)))); - BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_non_central_t(static_cast(4.0001L), 0)))); + BOOST_CHECK((boost::math::isfinite)(mean(ignore_error_non_central_t(1 + std::numeric_limits::epsilon(), 0)))); + BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); + BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_non_central_t(static_cast(2.0001L), 0)))); + BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); + BOOST_CHECK((boost::math::isfinite)(skewness(ignore_error_non_central_t(3 + 3 * std::numeric_limits::epsilon(), 0)))); + BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_non_central_t(4 + 4 * std::numeric_limits::epsilon(), 0)))); + BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_non_central_t(static_cast(4.0001L), 0)))); // check_out_of_range >(1, 0); // Fails one check because allows df = infinity. check_support >(non_central_t_distribution(1, 0)); diff -ur libs/math/test/test_next.cpp --- libs/math/test/test_next.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_next.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -10,6 +10,7 @@ #include #include #include +#include #ifdef BOOST_MSVC #pragma warning(disable:4127) diff -ur libs/math/test/test_roots.cpp --- libs/math/test/test_roots.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_roots.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -14,6 +14,7 @@ #include #include #include +#include #include "table_type.hpp" #define BOOST_CHECK_CLOSE_EX(a, b, prec, i) \ diff -ur libs/math/test/test_round.cpp --- libs/math/test/test_round.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_round.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -14,6 +14,7 @@ #include #include #include +#include boost::mt19937 rng; diff -ur libs/math/test/test_signed_zero.cpp --- libs/math/test/test_signed_zero.cpp 2012-05-14 13:01:32.000000000 -0400 +++ libs/math/test/test_signed_zero.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -21,6 +21,7 @@ #include #include #include +#include namespace { diff -ur libs/math/test/test_students_t.cpp --- libs/math/test/test_students_t.cpp 2013-09-28 12:19:47.000000000 -0400 +++ libs/math/test/test_students_t.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -704,13 +704,13 @@ BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_students_t(4)))); } // has_quiet_NaN - BOOST_CHECK(boost::math::isfinite(mean(ignore_error_students_t(1 + std::numeric_limits::epsilon())))); - BOOST_CHECK(boost::math::isfinite(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); - BOOST_CHECK(boost::math::isfinite(variance(ignore_error_students_t(static_cast(2.0001L))))); - BOOST_CHECK(boost::math::isfinite(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); - BOOST_CHECK(boost::math::isfinite(skewness(ignore_error_students_t(3 + 3 * std::numeric_limits::epsilon())))); - BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_students_t(4 + 4 * std::numeric_limits::epsilon())))); - BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_students_t(static_cast(4.0001L))))); + BOOST_CHECK((boost::math::isfinite)(mean(ignore_error_students_t(1 + std::numeric_limits::epsilon())))); + BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); + BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_students_t(static_cast(2.0001L))))); + BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); + BOOST_CHECK((boost::math::isfinite)(skewness(ignore_error_students_t(3 + 3 * std::numeric_limits::epsilon())))); + BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_students_t(4 + 4 * std::numeric_limits::epsilon())))); + BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_students_t(static_cast(4.0001L))))); // check_out_of_range >(1); // Cannot be used because fails "exception std::domain_error is expected" diff -ur libs/math/test/test_toms748_solve.cpp --- libs/math/test/test_toms748_solve.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_toms748_solve.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -12,6 +12,7 @@ #include #include #include +#include // // Test functor implements the same test cases as used by diff -ur libs/math/test/test_tr1.cpp --- libs/math/test/test_tr1.cpp 2013-04-15 04:47:08.000000000 -0400 +++ libs/math/test/test_tr1.cpp 2015-05-13 17:35:32.227635884 -0400 @@ -8,6 +8,7 @@ #include #include #include // ldexpf +#include #ifdef TEST_STD #include diff -ur libs/numeric/ublas/test/sparse_view_test.cpp --- libs/numeric/ublas/test/sparse_view_test.cpp 2010-07-05 14:20:58.000000000 -0400 +++ libs/numeric/ublas/test/sparse_view_test.cpp 2015-05-13 17:35:32.263635885 -0400 @@ -7,11 +7,12 @@ // ublas headers -#include #include #include #include +// Moved the following header down since it uses storage_array which is declared in storage.hpp (included from matrix.hpp) +#include #include diff -ur libs/phoenix/test/regression/bug4853.cpp --- libs/phoenix/test/regression/bug4853.cpp 2011-04-13 17:42:40.000000000 -0400 +++ libs/phoenix/test/regression/bug4853.cpp 2015-05-13 17:35:32.275635886 -0400 @@ -18,6 +18,7 @@ #include #include +#include namespace phoenix = boost::phoenix; diff -ur libs/pool/test/Jamfile.v2 --- libs/pool/test/Jamfile.v2 2011-08-02 13:04:07.000000000 -0400 +++ libs/pool/test/Jamfile.v2 2015-05-13 17:35:32.287635886 -0400 @@ -16,6 +16,8 @@ pathscale:-Wno-long-long gcc:-Wcast-align msvc:on +# Not sure how the definition of system_category() is not needed by other toolsets + vacpp:/boost/system//boost_system ; import testing ; diff -ur libs/property_map/test/function_property_map_test.cpp --- libs/property_map/test/function_property_map_test.cpp 2012-06-30 16:00:41.000000000 -0400 +++ libs/property_map/test/function_property_map_test.cpp 2015-05-13 17:35:32.291635886 -0400 @@ -41,9 +41,18 @@ function_requires, int>, int> >(); function_requires, int>, int> >(); +#if !defined(__IBMCPP__) || defined(__ibmxl__) BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::lvalue_property_map_tag>::value)); +#else + /* Not sure if this works with other compilers, but typename for something that cannot be dependent + in a non-template function does not seem to make much sense. It definitely doesn't work with XLC. + */ + BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); + BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); + BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::lvalue_property_map_tag>::value)); +#endif BOOST_CHECK(get(function_property_map, int>(), 3) == 4); BOOST_CHECK(get(function_property_map, int>(add1()), 4) == 5); diff -ur libs/ptr_container/test/tut1.cpp --- libs/ptr_container/test/tut1.cpp 2008-03-22 17:45:55.000000000 -0400 +++ libs/ptr_container/test/tut1.cpp 2015-05-13 17:35:32.291635886 -0400 @@ -22,6 +22,7 @@ // // First we select which container to use. // +#include // Needed for boost::noncopyable #include // diff -ur libs/python/test/select_from_python_test.cpp --- libs/python/test/select_from_python_test.cpp 2007-06-07 14:08:54.000000000 -0400 +++ libs/python/test/select_from_python_test.cpp 2015-05-13 17:35:32.291635886 -0400 @@ -8,7 +8,7 @@ // 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__)) + || (defined(__IBMCPP__) && !defined(__ibmxl__) && defined(__linux__)) namespace boost { namespace python { BOOST_PYTHON_DECL bool handle_exception_impl(function0) { diff -ur libs/ratio/example/duration.hpp --- libs/ratio/example/duration.hpp 2012-12-01 18:39:04.000000000 -0500 +++ libs/ratio/example/duration.hpp 2015-05-13 17:35:32.347635888 -0400 @@ -48,7 +48,7 @@ #include #include -#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) +#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) && !defined(__ibmxl__) #else #include #endif @@ -462,7 +462,7 @@ duration() { } // = default; template explicit duration(const Rep2& r -#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) +#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) && !defined(__ibmxl__) #else , typename boost::enable_if < boost::mpl::and_ < @@ -490,7 +490,7 @@ // conversions template duration(const duration& d -#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) +#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) && !defined(__ibmxl__) #else , typename boost::enable_if < boost::mpl::or_ < @@ -576,7 +576,7 @@ template inline -#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) +#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) && !defined(__ibmxl__) duration::type, Period> #else typename boost::enable_if < @@ -597,7 +597,7 @@ template inline -#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) +#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) && !defined(__ibmxl__) duration::type, Period> #else typename boost::enable_if < @@ -784,7 +784,7 @@ // Compile-time select the most efficient algorithm for the conversion... template inline -#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) +#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1500)) || defined(__IBMCPP__) && !defined(__ibmxl__) ToDuration #else typename boost::enable_if , ToDuration>::type diff -ur libs/regex/src/cpp_regex_traits.cpp --- libs/regex/src/cpp_regex_traits.cpp 2009-12-08 07:42:33.000000000 -0500 +++ libs/regex/src/cpp_regex_traits.cpp 2015-05-13 17:35:32.347635888 -0400 @@ -36,7 +36,7 @@ // character is used for which purpose: std::memset(m_char_map, 0, sizeof(m_char_map)); #ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ +#if !defined(__IBMCPP__) || defined(__ibmxl__) std::messages::catalog cat = static_cast::catalog>(-1); #else std::messages::catalog cat = reinterpret_cast::catalog>(-1); diff -ur libs/regex/test/concepts/concept_check.cpp --- libs/regex/test/concepts/concept_check.cpp 2010-10-02 07:34:33.000000000 -0400 +++ libs/regex/test/concepts/concept_check.cpp 2015-05-13 17:35:32.347635888 -0400 @@ -24,7 +24,7 @@ #include #include -#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3) +#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__GNUC__, < 3) #include #endif @@ -33,7 +33,7 @@ { // VC6 and VC7 can't cope with the iterator architypes, // don't bother testing as it doesn't work: -#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3) +#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__GNUC__, < 3) boost::function_requires< boost::RegexTraitsConcept< boost::regex_traits diff -ur libs/regex/test/concepts/icu_concept_check.cpp --- libs/regex/test/concepts/icu_concept_check.cpp 2009-12-08 07:42:33.000000000 -0500 +++ libs/regex/test/concepts/icu_concept_check.cpp 2015-05-13 17:35:32.347635888 -0400 @@ -29,7 +29,7 @@ #include #include -#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3) +#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__GNUC__, < 3) #include #endif @@ -38,7 +38,7 @@ { // VC6 and VC7 can't cope with the iterator architypes, // don't bother testing as it doesn't work: -#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3) +#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__GNUC__, < 3) boost::function_requires< boost::RegexTraitsConcept< boost::icu_regex_traits diff -ur libs/regex/test/Jamfile.v2 --- libs/regex/test/Jamfile.v2 2012-12-10 08:18:45.000000000 -0500 +++ libs/regex/test/Jamfile.v2 2015-05-13 17:35:32.347635888 -0400 @@ -176,16 +176,18 @@ BOOST_REGEX_RECURSIVE=1 : regex_regress_recursive ] -[ run regress/$(R_SOURCE) ./noeh_test//boost_regex_noeh - ../build//icu_options - : # command line - : # input files - : # requirements - BOOST_NO_EXCEPTIONS=1 - off - static - shared - : regex_regress_noeh ] +# The below test case causes a recursive call to terminate. The amount +# of ouptut is then unmanageable. +# [ run regress/$(R_SOURCE) ./noeh_test//boost_regex_noeh +# ../build//icu_options +# : # command line +# : # input files +# : # requirements +# BOOST_NO_EXCEPTIONS=1 +# off +# static +# shared +# : regex_regress_noeh ] ; diff -ur libs/regex/test/regress/test_icu.cpp --- libs/regex/test/regress/test_icu.cpp 2013-05-24 13:09:40.000000000 -0400 +++ libs/regex/test/regress/test_icu.cpp 2015-05-13 17:35:32.347635888 -0400 @@ -206,7 +206,7 @@ #endif boost::regex_constants::syntax_option_type syntax_options = test_info::syntax_options(); try{ -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) +#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) r.assign(expression.begin(), expression.end(), syntax_options); #else if(expression.size()) @@ -379,7 +379,7 @@ // try { -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) +#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) if(0 == r.assign(expression.begin(), expression.end(), syntax_options | boost::regex_constants::no_except).status()) #else if(expression.size()) @@ -401,7 +401,7 @@ // bool have_catch = false; try{ -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) +#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) r.assign(expression.begin(), expression.end(), syntax_options); #else if(expression.size()) @@ -499,7 +499,7 @@ boost::regex_constants::syntax_option_type syntax_options = test_info::syntax_options(); boost::u32regex r; try{ -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) +#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) r.assign(expression.begin(), expression.end(), syntax_options); #else if(expression.size()) diff -ur libs/signals/test/swap_test.cpp --- libs/signals/test/swap_test.cpp 2012-10-13 13:27:29.000000000 -0400 +++ libs/signals/test/swap_test.cpp 2015-05-13 17:35:32.383635890 -0400 @@ -3,6 +3,7 @@ #include #include +#include struct HelloWorld { diff -ur libs/spirit/test/Jamfile --- libs/spirit/test/Jamfile 2013-05-14 19:46:54.000000000 -0400 +++ libs/spirit/test/Jamfile 2015-05-13 17:35:32.403635891 -0400 @@ -130,7 +130,7 @@ [ run qi/symbols1.cpp : : : : qi_symbols1 ] [ run qi/symbols2.cpp : : : : qi_symbols2 ] [ run qi/terminal_ex.cpp : : : : qi_terminal_ex ] - [ run qi/tst.cpp : : : : qi_tst ] + [ run qi/tst.cpp : : : vacpp:BOOST_SYSTEM_NO_DEPRECATED : qi_tst ] [ run qi/uint1.cpp : : : : qi_uint1 ] [ run qi/uint2.cpp : : : : qi_uint2 ] [ run qi/uint3.cpp : : : : qi_uint3 ] @@ -287,12 +287,12 @@ [ run lex/regression_basic_lexer.cpp : : : : lex_regression_basic_lexer ] [ run lex/regression_matlib_dynamic.cpp : : : : lex_regression_matlib_dynamic ] - [ run lex/regression_matlib_generate.cpp : $(LEX_DIR)/matlib_static.h : : : lex_regression_matlib_generate ] + [ run lex/regression_matlib_generate.cpp : : : : lex_regression_matlib_generate ] [ run lex/regression_matlib_static.cpp : : : on:.//lex_regression_matlib_generate-p3 off:.//lex_regression_matlib_generate-p2 : lex_regression_matlib_static ] - [ run lex/regression_matlib_generate_switch.cpp : $(LEX_DIR)/matlib_static_switch.h : : : lex_regression_matlib_generate_switch ] + [ run lex/regression_matlib_generate_switch.cpp : : : : lex_regression_matlib_generate_switch ] [ run lex/regression_matlib_switch.cpp : : : on:.//lex_regression_matlib_generate_switch-p3 off:.//lex_regression_matlib_generate_switch-p2 diff -ur libs/spirit/test/karma/regression_container_variant_sequence.cpp --- libs/spirit/test/karma/regression_container_variant_sequence.cpp 2012-12-08 11:31:17.000000000 -0500 +++ libs/spirit/test/karma/regression_container_variant_sequence.cpp 2015-05-13 17:35:32.403635891 -0400 @@ -32,7 +32,12 @@ SettingsHeaderGenerator() : SettingsHeaderGenerator::base_type(baseRule) { using phoenix::insert; +#ifdef BOOST_SPIRIT_USE_PHOENIX_V3 + // The V3 header does not actually declare at_c in the phoenix namespace + using boost::fusion::result_of::at_c; +#else using phoenix::at_c; +#endif using phoenix::push_back; using phoenix::ref; using karma::lit; diff -ur libs/test/src/test_tools.cpp --- libs/test/src/test_tools.cpp 2008-10-13 04:39:48.000000000 -0400 +++ libs/test/src/test_tools.cpp 2015-05-13 17:35:32.403635891 -0400 @@ -14,5 +14,21 @@ #define BOOST_TEST_SOURCE #include +/* With certain optimizations, vacpp requires a definition of this function + since it is called in the function call operator in struct test_main_caller. + Provide a weak definition so the linker will pick up the actual one if the + test case actually defines one. +*/ +#if defined(__IBMCPP__) && !defined(__ibmxl__) +# ifdef __linux__ +# pragma weak _Z9test_mainiPPc +# elif _AIX +# pragma weak test_main__FiPPc +# endif +int test_main( int argc, char* argv[] ) +{ + return 1; +} +#endif // EOF diff -ur libs/thread/build/Jamfile.v2 --- libs/thread/build/Jamfile.v2 2013-09-14 10:22:45.000000000 -0400 +++ libs/thread/build/Jamfile.v2 2015-05-13 17:35:32.403635891 -0400 @@ -242,6 +242,10 @@ #if ! vacpp in $(properties) || 11.1 in $(properties) || 12.1.0.1 in $(properties) || 12.1 in $(properties) #{ result += /boost/chrono//boost_chrono ; + if vacpp in $(properties) + { + result += /boost/date_time//boost_date_time ; + } #} return $(result) ; diff -ur libs/thread/src/pthread/thread.cpp --- libs/thread/src/pthread/thread.cpp 2013-09-21 16:45:06.000000000 -0400 +++ libs/thread/src/pthread/thread.cpp 2015-05-13 17:35:32.407635891 -0400 @@ -442,7 +442,7 @@ { # if defined(BOOST_HAS_PTHREAD_DELAY_NP) - # if defined(__IBMCPP__) + # if defined(__IBMCPP__) && !defined(__ibmxl__) BOOST_VERIFY(!pthread_delay_np(const_cast(&ts))); # else BOOST_VERIFY(!pthread_delay_np(&ts)); diff -ur libs/thread/test/Jamfile.v2 --- libs/thread/test/Jamfile.v2 2013-09-13 15:01:48.000000000 -0400 +++ libs/thread/test/Jamfile.v2 2015-05-13 17:35:32.407635891 -0400 @@ -138,7 +138,7 @@ rule thread-run2-noit ( sources : name ) { return - [ run $(sources) ../build//boost_thread : : : + [ run $(sources) ../build//boost_thread /boost/atomic//boost_atomic : : : : $(name) ] [ run $(sources) ../src/tss_null.cpp ../build//boost_thread/static : : : diff -ur libs/tr1/test/Jamfile.v2 --- libs/tr1/test/Jamfile.v2 2009-10-09 12:16:02.000000000 -0400 +++ libs/tr1/test/Jamfile.v2 2015-05-13 17:35:32.407635891 -0400 @@ -13,6 +13,8 @@ borland:$(BOOST_ROOT)/boost/tr1/tr1/bcc32 # Sunpro's broken include mechanism needs these extra headers: $(BOOST_ROOT)/boost/tr1/tr1/sun + # XLC++ has #include_next implemented correctly and it is needed on Linux + vacpp,linux:BOOST_HAS_INCLUDE_NEXT ; @@ -33,7 +35,7 @@ { all_rules += [ compile $(file) ] ; all_rules += [ compile $(file) - : TEST_STD_HEADERS=1 $(TR1_PROPERTIES) : std_$(file:B) ] ; + : TEST_STD_HEADERS=1 $(TR1_PROPERTIES) vacpp,aix:__IBMCPP_TR1__ : std_$(file:B) ] ; } for local fileb in [ glob run*.cpp ] { diff -ur libs/tr1/test/test_cmath_tricky.cpp --- libs/tr1/test/test_cmath_tricky.cpp 2008-10-09 13:33:50.000000000 -0400 +++ libs/tr1/test/test_cmath_tricky.cpp 2015-05-13 17:35:32.407635891 -0400 @@ -65,11 +65,16 @@ verify_return_type((std::tr1::erfc)(ld), ld); verify_return_type((std::tr1::erfcf)(f), f); verify_return_type((std::tr1::erfcl)(ld), ld); +#if defined(__IBMCPP__) && !defined(__ibmxl__) && defined(__linux__) + // std::tr1::exp2 only available with C99/C++11 in linux headers + // XLC does not define the macro _GLIBCXX_USE_C99_MATH_TR1 by default +#else verify_return_type((std::tr1::exp2)(d), d); verify_return_type((std::tr1::exp2)(f), f); verify_return_type((std::tr1::exp2)(ld), ld); verify_return_type((std::tr1::exp2f)(f), f); verify_return_type((std::tr1::exp2l)(ld), ld); +#endif verify_return_type((std::tr1::expm1)(d), d); verify_return_type((std::tr1::expm1)(f), f); verify_return_type((std::tr1::expm1)(ld), ld); diff -ur libs/type_traits/test/is_member_func_test.cpp --- libs/type_traits/test/is_member_func_test.cpp 2010-10-01 07:11:16.000000000 -0400 +++ libs/type_traits/test/is_member_func_test.cpp 2015-05-13 17:35:32.423635891 -0400 @@ -30,7 +30,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); -#ifndef __IBMCPP__ +#if !defined(__IBMCPP__) || defined(__ibmxl__) // this test may not be strictly legal: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); #endif diff -ur libs/utility/assert_test.cpp --- libs/utility/assert_test.cpp 2013-09-21 16:17:00.000000000 -0400 +++ libs/utility/assert_test.cpp 2015-05-13 17:35:32.423635891 -0400 @@ -66,6 +66,11 @@ #undef BOOST_DISABLE_ASSERTS #define BOOST_ENABLE_ASSERT_HANDLER +// The assertion_failed_msg function declaration is missing if NDEBUG is defined. +#ifdef NDEBUG +# undef NDEBUG +# define NDEBUG_PREVIOUSLY_DEFINED +#endif #include #include #include @@ -142,6 +147,9 @@ #undef BOOST_ENABLE_ASSERT_HANDLER #undef BOOST_ENABLE_ASSERT_MSG_HANDLER +#ifdef NDEBUG_PREVIOUSLY_DEFINED +# define NDEBUG +#endif int main() { diff -ur libs/xpressive/test/Jamfile.v2 --- libs/xpressive/test/Jamfile.v2 2012-11-12 15:18:35.000000000 -0500 +++ libs/xpressive/test/Jamfile.v2 2015-05-13 17:35:32.423635891 -0400 @@ -27,10 +27,10 @@ ; test-suite "xpressive" - : [ run regress.cpp : : : msvc:/bigobj regress.txt ] - [ run regress_u.cpp : : : msvc:/bigobj regress.txt ] - [ run c_traits.cpp : : : msvc:/bigobj regress.txt ] - [ run c_traits_u.cpp : : : msvc:/bigobj regress.txt ] + : [ run regress.cpp : : regress.txt : msvc:/bigobj regress.txt ] + [ run regress_u.cpp : : regress.txt : msvc:/bigobj regress.txt ] + [ run c_traits.cpp : : regress.txt : msvc:/bigobj regress.txt ] + [ run c_traits_u.cpp : : regress.txt : msvc:/bigobj regress.txt ] [ run test1.cpp ] [ run test2.cpp ] [ run test3.cpp ] diff -ur libs/xpressive/test/regress.ipp --- libs/xpressive/test/regress.ipp 2012-08-05 21:10:49.000000000 -0400 +++ libs/xpressive/test/regress.ipp 2015-05-13 17:35:32.423635891 -0400 @@ -42,6 +42,7 @@ using namespace boost::unit_test; using namespace boost::xpressive; +static char *input_file; ////////////////////////////////////////////////////////////////////////////// // xpr_test_case @@ -394,7 +395,7 @@ // possible paths. // first assume we are being run from boost_root/status - in.open("../libs/xpressive/test/regress.txt"); + in.open(input_file); if(!in.good()) { @@ -432,6 +433,7 @@ // test_suite* init_unit_test_suite( int argc, char* argv[] ) { + input_file = argv[1]; test_suite *test = BOOST_TEST_SUITE("basic regression test"); test->add(BOOST_TEST_CASE(&test_main)); return test; diff -ur tools/build/v2/engine/boehm_gc/os_dep.c --- tools/build/v2/engine/boehm_gc/os_dep.c 2011-06-06 16:36:21.000000000 -0400 +++ tools/build/v2/engine/boehm_gc/os_dep.c 2015-05-13 17:35:32.423635891 -0400 @@ -503,7 +503,7 @@ # include -# if !defined(__IBMC__) && !defined(__WATCOMC__) /* e.g. EMX */ +# if !(defined(__IBMC__) && !defined(__ibmxl__)) && !defined(__WATCOMC__) /* e.g. EMX */ struct exe_hdr { unsigned short magic_number; diff -ur tools/build/v2/tools/vacpp.jam --- tools/build/v2/tools/vacpp.jam 2010-02-17 04:49:08.000000000 -0500 +++ tools/build/v2/tools/vacpp.jam 2015-05-13 17:35:32.483635894 -0400 @@ -13,9 +13,33 @@ import common ; import generators ; import os ; +import modules ; + +if [ os.name ] = LINUX +{ + import gcc ; +} -feature.extend toolset : vacpp ; toolset.inherit vacpp : unix ; +feature.extend toolset : vacpp ; + +if [ os.name ] = LINUX +{ + rule link ( targets * : sources * : properties * ) + { + gcc.quote-rpath $(targets) ; + } + + rule link.dll ( targets * : sources * : properties * ) + { + gcc.quote-rpath $(targets) ; + } + + rule archive ( targets * : sources * : properties * ) + { + gcc.archive $(targets) : $(sources) : $(properties) ; + } +} generators.override vacpp.prebuilt : builtin.prebuilt ; generators.override vacpp.searched-lib-generator : searched-lib-generator ; @@ -25,10 +49,15 @@ local condition = [ common.check-init-parameters vacpp : version $(version) ] ; - command = [ common.get-invocation-command vacpp : xlC + local tool-command = [ common.get-invocation-command vacpp : xlC : $(command) : "/usr/vacpp/bin/xlC" ] ; - common.handle-options vacpp : $(condition) : $(command) : $(options) ; + common.handle-options vacpp : $(condition) : $(tool-command) : $(options) ; + + if [ os.name ] = LINUX + { + gcc.init-link-flags vacpp gnu $(condition) ; + } } # Declare generators @@ -36,11 +65,16 @@ generators.register-c-compiler vacpp.compile.c++ : CPP : OBJ : vacpp ; # Allow C++ style comments in C files -flags vacpp CFLAGS : -qcpluscmt ; +#flags vacpp CFLAGS : -qcpluscmt ; +#flags vacpp CFLAGS : -qcpluscmt -qphsinfo -qdebug=timing ; + +# Use xlc-linux workarounds +#flags vacpp CFLAGS : -D_XLC_LINUX_WORKAROUNDS ; # Declare flags flags vacpp CFLAGS off : -qNOOPTimize ; -flags vacpp CFLAGS speed : -O3 -qstrict ; +#flags vacpp CFLAGS speed : -O3 -qstrict ; +#flags vacpp CFLAGS speed : -qstrict ; flags vacpp CFLAGS space : -O2 -qcompact ; # Discretionary inlining (not recommended) @@ -59,18 +93,25 @@ # Enable 64-bit memory addressing model flags vacpp CFLAGS 64 : -q64 ; -flags vacpp LINKFLAGS 64 : -q64 ; -flags vacpp ARFLAGS aix/64 : -X 64 ; +flags vacpp.link OPTIONS 64 : -q64 ; +flags vacpp AIX_OBJ_MODE aix/64 : -X 64 ; # Use absolute path when generating debug information flags vacpp CFLAGS on : -g -qfullpath ; -flags vacpp LINKFLAGS on : -g -qfullpath ; -flags vacpp LINKFLAGS off : -s ; +flags vacpp.link OPTIONS on : -g -qfullpath ; +flags vacpp.link OPTIONS aix/off/on : -s ; + +# In order to prevent TOC overflow for some test cases with many global symbols +flags vacpp.compile CFLAGS shared : -qpic=large ; +flags vacpp.link OPTIONS shared : -qpic=large ; if [ os.name ] = AIX { flags vacpp.compile C++FLAGS : -qfuncsect ; + # Enable 32-bit Very Large Address-Space + flags vacpp.link OPTIONS 32 : -bmaxdata:0xAFFFFFFF/dsa ; + # The -bnoipath strips the prepending (relative) path of libraries from # the loader section in the target library or executable. Hence, during # load-time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded @@ -84,7 +125,7 @@ # AIX 4.x and AIX 6.x. For details about the AIX linker see: # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf # - flags vacpp.link LINKFLAGS shared : -bnoipath ; + flags vacpp.link OPTIONS shared : -bnoipath ; # Run-time linking flags vacpp.link EXE-LINKFLAGS shared : -brtl ; @@ -92,13 +133,12 @@ else { # Linux PPC - flags vacpp.compile CFLAGS shared : -qpic=large ; - flags vacpp FINDLIBS : rt ; + flags vacpp.link FINDLIBS-SA multi : rt ; } # Profiling flags vacpp CFLAGS on : -pg ; -flags vacpp LINKFLAGS on : -pg ; +flags vacpp.link OPTIONS on : -pg ; flags vacpp.compile OPTIONS ; flags vacpp.compile.c++ OPTIONS ; @@ -106,45 +146,71 @@ flags vacpp UNDEFS ; flags vacpp HDRS ; flags vacpp STDHDRS ; -flags vacpp.link OPTIONS ; + flags vacpp ARFLAGS ; +flags vacpp ARFLAGS ; -flags vacpp LIBPATH ; -flags vacpp NEEDLIBS ; -flags vacpp FINDLIBS ; -flags vacpp FINDLIBS ; - -# Select the compiler name according to the threading model. -flags vacpp VA_C_COMPILER single : xlc ; -flags vacpp VA_C_COMPILER multi : xlc_r ; -flags vacpp VA_CXX_COMPILER single : xlC ; -flags vacpp VA_CXX_COMPILER multi : xlC_r ; +flags vacpp.link USER_OPTIONS ; +flags vacpp.link LINKPATH ; +flags vacpp.link LIBRARIES ; +flags vacpp.link FINDLIBS-ST ; +flags vacpp.link FINDLIBS-SA ; + +# Select the compiler configuration stanza according to the threading model. +flags vacpp VA_C_COMPILER_CFG single : -F:xlc ; +flags vacpp VA_C_COMPILER_CFG multi : -F:xlc_r ; +flags vacpp VA_CXX_COMPILER_CFG single : -F:xlC ; +flags vacpp VA_CXX_COMPILER_CFG multi : -F:xlC_r ; SPACE = " " ; -flags vacpp.link.dll HAVE_SONAME linux : "" ; - -actions vacpp.link bind NEEDLIBS +if [ os.name ] = LINUX { - $(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) + actions link bind LIBRARIES + { + $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -L"$(LINKPATH)" -Wl,-R,$(RPATH) -Wl,-rpath-link,"$(RPATH_LINK)" -o "$(<[1])" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + actions link.dll bind LIBRARIES + { + $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -G -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,$(RPATH) -o "$(<[1])" -Wl,-soname=$(<[-1]:D=) $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } } - -actions vacpp.link.dll bind NEEDLIBS +else { - xlC_r -G $(LINKFLAGS) -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) + actions vacpp.link bind LIBRARIES + { + $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) $(EXE-LINKFLAGS) -o "$(<[1])" -L$(LINKPATH) "$(>)" "$(LIBRARIES)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS) $(USER_OPTIONS) + } + + actions vacpp.link.dll bind LIBRARIES + { + $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -G -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LINKPATH) "$(>)" "$(LIBRARIES)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS) $(USER_OPTIONS) + } } actions vacpp.compile.c { - $(VA_C_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" + $(CONFIG_COMMAND) $(VA_C_COMPILER_CFG) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } actions vacpp.compile.c++ { - $(VA_CXX_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" + $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -qxflag=MangleCVOnTemplateTypeArgs -D__IBM_ALLOW_OVERRIDE_PLACEMENT_NEW -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } -actions updated together piecemeal vacpp.archive +if [ os.name ] = AIX +{ + actions updated together piecemeal vacpp.archive + { + ar $(AIX_OBJ_MODE) $(ARFLAGS) rcu "$(<)" "$(>)" + ranlib $(AIX_OBJ_MODE) "$(<)" + } +} +else { - ar $(ARFLAGS) ru "$(<)" "$(>)" + actions piecemeal archive + { + ar $(ARFLAGS) rc "$(<)" "$(>)" + ranlib "$(<)" + } }