Ticket #6842: boost-shared_ptr-intel-fix-20120421-0447.patch

File boost-shared_ptr-intel-fix-20120421-0447.patch, 1.7 KB (added by Joshua Boyce <raptorfactor@…>, 10 years ago)

Fist patch. Massive hack. Needs improvement.

  • boost/smart_ptr/shared_ptr.hpp

     
    665665
    666666#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
    667667
     668#if defined(BOOST_INTEL)
     669
     670#pragma push_macro("atomic_is_lock_free")
     671#undef atomic_is_lock_free
     672
     673#pragma push_macro("atomic_load")
     674#undef atomic_load
     675
     676#pragma push_macro("atomic_load_explicit")
     677#undef atomic_load_explicit
     678
     679#pragma push_macro("atomic_store")
     680#undef atomic_store
     681
     682#pragma push_macro("atomic_store_explicit")
     683#undef atomic_store_explicit
     684
     685#pragma push_macro("atomic_exchange")
     686#undef atomic_exchange
     687
     688#pragma push_macro("atomic_exchange_explicit")
     689#undef atomic_exchange_explicit
     690
     691#pragma push_macro("atomic_compare_exchange")
     692#undef atomic_compare_exchange
     693
     694#pragma push_macro("atomic_compare_exchange_explicit")
     695#undef atomic_compare_exchange_explicit
     696
     697#endif // #if defined(BOOST_INTEL)
     698
    668699template<class T> inline bool atomic_is_lock_free( shared_ptr<T> const * /*p*/ )
    669700{
    670701    return false;
     
    738769    return atomic_compare_exchange( p, v, w ); // std::move( w )
    739770}
    740771
     772#if defined(BOOST_INTEL)
     773
     774#pragma pop_macro("atomic_is_lock_free")
     775#pragma pop_macro("atomic_load")
     776#pragma pop_macro("atomic_load_explicit")
     777#pragma pop_macro("atomic_store")
     778#pragma pop_macro("atomic_store_explicit")
     779#pragma pop_macro("atomic_exchange")
     780#pragma pop_macro("atomic_exchange_explicit")
     781#pragma pop_macro("atomic_compare_exchange")
     782#pragma pop_macro("atomic_compare_exchange_explicit")
     783
     784#endif // #if defined(BOOST_INTEL)
     785
    741786#endif // !defined(BOOST_SP_NO_ATOMIC_ACCESS)
    742787
    743788// hash_value