patches/gcc/4.0.0/150-pr21951.patch
changeset 1617 7d70bcf940a9
parent 1602 1ba79f2126df
parent 1616 1fda13e5d961
child 1618 7f52e1cca71e
     1.1 --- a/patches/gcc/4.0.0/150-pr21951.patch	Wed Oct 28 12:03:38 2009 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,153 +0,0 @@
     1.4 -Workaround for buglet in std::vector etc. when compiling 
     1.5 -with gcc-4.0.0 -Wall -O -fno-exceptions
     1.6 -Fixes:
     1.7 -
     1.8 -.../include/c++/4.0.0/bits/vector.tcc: In member function 'void std::vector<_Tp,
     1.9 -_Alloc>::reserve(size_t) [with _Tp = int, _Alloc = std::allocator<int>]':
    1.10 -.../include/c++/4.0.0/bits/vector.tcc:78: warning: control may reach end of
    1.11 -non-void function 'typename _Alloc::pointer std::vector<_Tp,
    1.12 -_Alloc>::_M_allocate_and_copy(size_t, _ForwardIterator, _ForwardIterator) [with
    1.13 -_ForwardIterator = int*, _Tp = int, _Alloc = std::allocator<int>]' being inlined
    1.14 -
    1.15 -See http://gcc.gnu.org/PR21951
    1.16 -
    1.17 ---- gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_vector.h.old	2005-06-11 03:58:20.000000000 -0700
    1.18 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_vector.h	2005-06-11 04:01:21.000000000 -0700
    1.19 -@@ -765,13 +765,13 @@
    1.20 - 	    {
    1.21 - 	      std::__uninitialized_copy_a(__first, __last, __result,
    1.22 - 					  this->get_allocator());
    1.23 --	      return __result;
    1.24 - 	    }
    1.25 - 	  catch(...)
    1.26 - 	    {
    1.27 - 	      _M_deallocate(__result, __n);
    1.28 - 	      __throw_exception_again;
    1.29 - 	    }
    1.30 -+	  return __result;
    1.31 - 	}
    1.32 - 
    1.33 - 
    1.34 ---- gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_uninitialized.h.old	2005-06-11 03:58:20.000000000 -0700
    1.35 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_uninitialized.h	2005-06-11 04:05:18.990003248 -0700
    1.36 -@@ -84,13 +84,13 @@
    1.37 - 	{
    1.38 - 	  for (; __first != __last; ++__first, ++__cur)
    1.39 - 	    std::_Construct(&*__cur, *__first);
    1.40 --	  return __cur;
    1.41 - 	}
    1.42 -       catch(...)
    1.43 - 	{
    1.44 - 	  std::_Destroy(__result, __cur);
    1.45 - 	  __throw_exception_again;
    1.46 - 	}
    1.47 -+      return __cur;
    1.48 -     }
    1.49 - 
    1.50 -   /**
    1.51 -@@ -236,13 +236,13 @@
    1.52 - 	{
    1.53 - 	  for (; __first != __last; ++__first, ++__cur)
    1.54 - 	    __alloc.construct(&*__cur, *__first);
    1.55 --	  return __cur;
    1.56 - 	}
    1.57 -       catch(...)
    1.58 - 	{
    1.59 - 	  std::_Destroy(__result, __cur, __alloc);
    1.60 - 	  __throw_exception_again;
    1.61 - 	}
    1.62 -+      return __cur;
    1.63 -     }
    1.64 - 
    1.65 -   template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
    1.66 -@@ -337,11 +337,13 @@
    1.67 - 	{
    1.68 - 	  return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
    1.69 - 	}
    1.70 -+#ifdef __EXCEPTIONS  // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
    1.71 -       catch(...)
    1.72 - 	{
    1.73 - 	  std::_Destroy(__result, __mid, __alloc);
    1.74 - 	  __throw_exception_again;
    1.75 - 	}
    1.76 -+#endif
    1.77 -     }
    1.78 - 
    1.79 -   // __uninitialized_fill_copy
    1.80 -@@ -360,11 +362,13 @@
    1.81 - 	{
    1.82 - 	  return std::__uninitialized_copy_a(__first, __last, __mid, __alloc);
    1.83 - 	}
    1.84 -+#ifdef __EXCEPTIONS  // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
    1.85 -       catch(...)
    1.86 - 	{
    1.87 - 	  std::_Destroy(__result, __mid, __alloc);
    1.88 - 	  __throw_exception_again;
    1.89 - 	}
    1.90 -+#endif
    1.91 -     }
    1.92 - 
    1.93 -   // __uninitialized_copy_fill
    1.94 ---- gcc-4.0.1-20050607/libstdc++-v3/include/ext/rope.old	2005-06-11 03:58:20.000000000 -0700
    1.95 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/rope	2005-06-11 04:13:26.628870872 -0700
    1.96 -@@ -1645,11 +1645,13 @@
    1.97 - 	_S_cond_store_eos(__buf[__size]);
    1.98 - 	try
    1.99 - 	  { return _S_new_RopeLeaf(__buf, __size, __a); }
   1.100 -+#ifdef __EXCEPTIONS  // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
   1.101 - 	catch(...)
   1.102 - 	  {
   1.103 - 	    _RopeRep::__STL_FREE_STRING(__buf, __size, __a);
   1.104 - 	    __throw_exception_again;
   1.105 - 	  }
   1.106 -+#endif
   1.107 -       }
   1.108 - 
   1.109 -       // Concatenation of nonempty strings.
   1.110 ---- gcc-4.0.1-20050607/libstdc++-v3/include/ext/memory.old	2005-06-11 03:58:20.000000000 -0700
   1.111 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/memory	2005-06-11 04:13:52.897877376 -0700
   1.112 -@@ -85,11 +85,13 @@
   1.113 - 	    std::_Construct(&*__cur, *__first);
   1.114 - 	  return pair<_InputIter, _ForwardIter>(__first, __cur);
   1.115 - 	}
   1.116 -+#ifdef __EXCEPTIONS  // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
   1.117 -       catch(...)
   1.118 - 	{
   1.119 - 	  std::_Destroy(__result, __cur);
   1.120 - 	  __throw_exception_again;
   1.121 - 	}
   1.122 -+#endif
   1.123 -     }
   1.124 - 
   1.125 -   template<typename _RandomAccessIter, typename _Size, typename _ForwardIter>
   1.126 -@@ -144,11 +146,13 @@
   1.127 - 	    __alloc.construct(&*__cur, *__first);
   1.128 - 	  return pair<_InputIter, _ForwardIter>(__first, __cur);
   1.129 - 	}
   1.130 -+#ifdef __EXCEPTIONS  // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
   1.131 -       catch(...)
   1.132 - 	{
   1.133 - 	  std::_Destroy(__result, __cur, __alloc);
   1.134 - 	  __throw_exception_again;
   1.135 - 	}
   1.136 -+#endif
   1.137 -     }
   1.138 - 
   1.139 -   template<typename _InputIter, typename _Size, typename _ForwardIter,
   1.140 ---- gcc-4.0.1-20050607/libstdc++-v3/include/ext/hashtable.h.old	2005-06-11 03:58:20.000000000 -0700
   1.141 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/hashtable.h	2005-06-11 04:14:28.384482592 -0700
   1.142 -@@ -607,13 +607,13 @@
   1.143 - 	try
   1.144 - 	  {
   1.145 - 	    this->get_allocator().construct(&__n->_M_val, __obj);
   1.146 --	    return __n;
   1.147 - 	  }
   1.148 - 	catch(...)
   1.149 - 	  {
   1.150 - 	    _M_put_node(__n);
   1.151 - 	    __throw_exception_again;
   1.152 - 	  }
   1.153 -+	return __n;
   1.154 -       }
   1.155 - 
   1.156 -       void