Author: faridz Date: Tue Nov 18 07:03:45 2008 New Revision: 718626 URL: http://svn.apache.org/viewvc?rev=718626&view=rev Log: 2008-11-18 Farid Zaripov <[EMAIL PROTECTED]>
STDCXX-1022 * include/rw/_heap.cc (__make_heap): Optimize the loop with fixing the ICE on MSVC. Modified: stdcxx/branches/4.2.x/include/rw/_heap.cc Modified: stdcxx/branches/4.2.x/include/rw/_heap.cc URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_heap.cc?rev=718626&r1=718625&r2=718626&view=diff ============================================================================== --- stdcxx/branches/4.2.x/include/rw/_heap.cc (original) +++ stdcxx/branches/4.2.x/include/rw/_heap.cc Tue Nov 18 07:03:45 2008 @@ -95,17 +95,10 @@ const _Dist __dist = __last - __first; -#if !defined (_RWSTD_MSVC) || (1500 < _RWSTD_MSVC) \ - || defined (_WIN64) || defined (_RWSTDDEBUG) - for (_Dist __parent = (__dist - 2) / 2; ; --__parent) { -#else // _RWSTD_MSVC <= 1500 && !_WIN64 && !_RWSTDDEBUG - // Workaround for ICE on 32-bit MSVC in optimized builds (STDCXX-1022) - for (_Dist __parent = (__dist - 2) / 2; 0 <= __parent; --__parent) { -#endif // !_RWSTD_MSVC || _RWSTD_MSVC > 1500 || _WIN64 || _RWSTDDEBUG + for (_Dist __parent = __dist / 2; 0 < __parent; ) { + --__parent; __adjust_heap (__first, __parent, __dist, *(__first + __parent), __comp); - if (__parent == 0) - return; } }