diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/bits/stl_algobase.h gccxml/GCC_XML/Support/GCC/4.7/bits/stl_algobase.h
--- gccxml.orig/GCC_XML/Support/GCC/4.7/bits/stl_algobase.h	2012-03-08 13:27:56.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/bits/stl_algobase.h	2012-03-09 08:25:29.363347016 +0100
@@ -728,8 +728,7 @@
     __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
     __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
     {
-      for (__decltype(__n + 0) __niter = __n;
-	   __niter > 0; --__niter, ++__first)
+      for (; __n > 0; --__n, ++__first)
 	*__first = __value;
       return __first;
     }
@@ -740,8 +739,7 @@
     __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
     {
       const _Tp __tmp = __value;
-      for (__decltype(__n + 0) __niter = __n;
-	   __niter > 0; --__niter, ++__first)
+      for (; __n > 0; --__n, ++__first)
 	*__first = __tmp;
       return __first;
     }
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/bits/stl_algo.h gccxml/GCC_XML/Support/GCC/4.7/bits/stl_algo.h
--- gccxml.orig/GCC_XML/Support/GCC/4.7/bits/stl_algo.h	2012-03-08 13:27:56.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/bits/stl_algo.h	2012-03-09 08:05:47.182370746 +0100
@@ -5065,8 +5065,7 @@
             // "the type returned by a _Generator"
             __typeof__(__gen())>)
 
-      for (__decltype(__n + 0) __niter = __n;
-	   __niter > 0; --__niter, ++__first)
+      for (; __n > 0; --__n, ++__first)
 	*__first = __gen();
       return __first;
     }
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/complex gccxml/GCC_XML/Support/GCC/4.7/complex
--- gccxml.orig/GCC_XML/Support/GCC/4.7/complex	2012-03-08 13:27:57.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/complex	2012-03-09 02:00:09.175022257 +0100
@@ -1089,11 +1089,7 @@
       imag(float __val) { __imag__ _M_value = __val; }
 
       complex&
-      operator=(float __f)
-      {
-	_M_value = __f;
-	return *this;
-      }
+      operator=(float __f);
 
       complex&
       operator+=(float __f)
@@ -1238,11 +1234,7 @@
       imag(double __val) { __imag__ _M_value = __val; }
 
       complex&
-      operator=(double __d)
-      {
-	_M_value = __d;
-	return *this;
-      }
+      operator=(double __d);
 
       complex&
       operator+=(double __d)
@@ -1388,11 +1380,7 @@
       imag(long double __val) { __imag__ _M_value = __val; }
 
       complex&
-      operator=(long double __r)
-      {
-	_M_value = __r;
-	return *this;
-      }
+      operator=(long double __r);
 
       complex&
       operator+=(long double __r)
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/emmintrin.h gccxml/GCC_XML/Support/GCC/4.7/emmintrin.h
--- gccxml.orig/GCC_XML/Support/GCC/4.7/emmintrin.h	2012-03-08 13:05:36.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/emmintrin.h	2012-03-09 08:32:47.891898766 +0100
@@ -722,10 +722,7 @@
 }
 
 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_move_epi64 (__m128i __A)
-{
-  return (__m128i)__builtin_ia32_movq128 ((__v2di) __A);
-}
+_mm_move_epi64 (__m128i __A);
 
 /* Create a vector of zeros.  */
 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@@ -1420,10 +1417,7 @@
 
 #ifdef __x86_64__
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_stream_si64 (long long int *__A, long long int __B)
-{
-  __builtin_ia32_movnti64 (__A, __B);
-}
+_mm_stream_si64 (long long int *__A, long long int __B);
 #endif
 
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/ext/atomicity.h gccxml/GCC_XML/Support/GCC/4.7/ext/atomicity.h
--- gccxml.orig/GCC_XML/Support/GCC/4.7/ext/atomicity.h	2012-03-08 13:27:56.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/ext/atomicity.h	2012-03-09 00:33:59.689619318 +0100
@@ -45,11 +45,11 @@
 #ifdef _GLIBCXX_ATOMIC_BUILTINS
   static inline _Atomic_word 
   __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
+  { return __sync_fetch_and_add(__mem, __val, __ATOMIC_ACQ_REL); }
 
   static inline void
   __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
+  { __sync_fetch_and_add(__mem, __val, __ATOMIC_ACQ_REL); }
 #else
   _Atomic_word
   __attribute__ ((__unused__))
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/iomanip gccxml/GCC_XML/Support/GCC/4.7/iomanip
--- gccxml.orig/GCC_XML/Support/GCC/4.7/iomanip	2012-03-08 13:27:57.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/iomanip	2012-03-09 07:51:09.915296738 +0100
@@ -63,7 +63,7 @@
   */
   inline _Resetiosflags 
   resetiosflags(ios_base::fmtflags __mask)
-  { return { __mask }; }
+  { _Resetiosflags r = { __mask }; return r; }
 
   template<typename _CharT, typename _Traits>
     inline basic_istream<_CharT, _Traits>& 
@@ -93,7 +93,7 @@
   */
   inline _Setiosflags 
   setiosflags(ios_base::fmtflags __mask)
-  { return { __mask }; }
+  { _Setiosflags s = { __mask }; return s; }
 
   template<typename _CharT, typename _Traits>
     inline basic_istream<_CharT, _Traits>& 
@@ -124,7 +124,7 @@
   */
   inline _Setbase 
   setbase(int __base)
-  { return { __base }; }
+  { _Setbase s = { __base }; return s; }
 
   template<typename _CharT, typename _Traits>
     inline basic_istream<_CharT, _Traits>& 
@@ -162,7 +162,7 @@
   template<typename _CharT>
     inline _Setfill<_CharT>
     setfill(_CharT __c)
-    { return { __c }; }
+    { _Setfill<_CharT> s = { __c }; return s; }
 
   template<typename _CharT, typename _Traits>
     inline basic_istream<_CharT, _Traits>& 
@@ -192,7 +192,7 @@
   */
   inline _Setprecision 
   setprecision(int __n)
-  { return { __n }; }
+  { _Setprecision s = { __n }; return s; }
 
   template<typename _CharT, typename _Traits>
     inline basic_istream<_CharT, _Traits>& 
@@ -222,7 +222,7 @@
   */
   inline _Setw 
   setw(int __n)
-  { return { __n }; }
+  { _Setw s = {__n} ; return s; }
 
   template<typename _CharT, typename _Traits>
     inline basic_istream<_CharT, _Traits>& 
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/mmintrin.h gccxml/GCC_XML/Support/GCC/4.7/mmintrin.h
--- gccxml.orig/GCC_XML/Support/GCC/4.7/mmintrin.h	2012-03-08 13:05:36.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/mmintrin.h	2012-03-09 07:34:02.611500877 +0100
@@ -306,10 +306,7 @@
 /* Add the 64-bit values in M1 to the 64-bit values in M2.  */
 #ifdef __SSE2__
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_add_si64 (__m64 __m1, __m64 __m2)
-{
-  return (__m64) __builtin_ia32_paddq ((__v1di)__m1, (__v1di)__m2);
-}
+_mm_add_si64 (__m64 __m1, __m64 __m2);
 #endif
 
 /* Add the 8-bit values in M1 to the 8-bit values in M2 using signed
@@ -410,10 +407,7 @@
 /* Add the 64-bit values in M1 to the 64-bit values in M2.  */
 #ifdef __SSE2__
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_sub_si64 (__m64 __m1, __m64 __m2)
-{
-  return (__m64) __builtin_ia32_psubq ((__v1di)__m1, (__v1di)__m2);
-}
+_mm_sub_si64 (__m64 __m1, __m64 __m2);
 #endif
 
 /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using signed
@@ -517,10 +511,7 @@
 
 /* Shift four 16-bit values in M left by COUNT.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_sll_pi16 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (__v4hi)__count);
-}
+_mm_sll_pi16 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psllw (__m64 __m, __m64 __count)
@@ -529,10 +520,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_slli_pi16 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psllwi ((__v4hi)__m, __count);
-}
+_mm_slli_pi16 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psllwi (__m64 __m, int __count)
@@ -542,10 +530,7 @@
 
 /* Shift two 32-bit values in M left by COUNT.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_sll_pi32 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_pslld ((__v2si)__m, (__v2si)__count);
-}
+_mm_sll_pi32 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_pslld (__m64 __m, __m64 __count)
@@ -554,10 +539,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_slli_pi32 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_pslldi ((__v2si)__m, __count);
-}
+_mm_slli_pi32 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_pslldi (__m64 __m, int __count)
@@ -567,10 +549,7 @@
 
 /* Shift the 64-bit value in M left by COUNT.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_sll_si64 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psllq ((__v1di)__m, (__v1di)__count);
-}
+_mm_sll_si64 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psllq (__m64 __m, __m64 __count)
@@ -579,10 +558,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_slli_si64 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psllqi ((__v1di)__m, __count);
-}
+_mm_slli_si64 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psllqi (__m64 __m, int __count)
@@ -592,10 +568,7 @@
 
 /* Shift four 16-bit values in M right by COUNT; shift in the sign bit.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_sra_pi16 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psraw ((__v4hi)__m, (__v4hi)__count);
-}
+_mm_sra_pi16 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psraw (__m64 __m, __m64 __count)
@@ -604,10 +577,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srai_pi16 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psrawi ((__v4hi)__m, __count);
-}
+_mm_srai_pi16 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrawi (__m64 __m, int __count)
@@ -617,10 +587,7 @@
 
 /* Shift two 32-bit values in M right by COUNT; shift in the sign bit.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_sra_pi32 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psrad ((__v2si)__m, (__v2si)__count);
-}
+_mm_sra_pi32 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrad (__m64 __m, __m64 __count)
@@ -629,10 +596,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srai_pi32 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psradi ((__v2si)__m, __count);
-}
+_mm_srai_pi32 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psradi (__m64 __m, int __count)
@@ -642,10 +606,7 @@
 
 /* Shift four 16-bit values in M right by COUNT; shift in zeros.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srl_pi16 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, (__v4hi)__count);
-}
+_mm_srl_pi16 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrlw (__m64 __m, __m64 __count)
@@ -654,10 +615,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srli_pi16 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psrlwi ((__v4hi)__m, __count);
-}
+_mm_srli_pi16 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrlwi (__m64 __m, int __count)
@@ -667,10 +625,7 @@
 
 /* Shift two 32-bit values in M right by COUNT; shift in zeros.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srl_pi32 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psrld ((__v2si)__m, (__v2si)__count);
-}
+_mm_srl_pi32 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrld (__m64 __m, __m64 __count)
@@ -679,10 +634,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srli_pi32 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psrldi ((__v2si)__m, __count);
-}
+_mm_srli_pi32 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrldi (__m64 __m, int __count)
@@ -692,10 +644,7 @@
 
 /* Shift the 64-bit value in M left by COUNT; shift in zeros.  */
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srl_si64 (__m64 __m, __m64 __count)
-{
-  return (__m64) __builtin_ia32_psrlq ((__v1di)__m, (__v1di)__count);
-}
+_mm_srl_si64 (__m64 __m, __m64 __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrlq (__m64 __m, __m64 __count)
@@ -704,10 +653,7 @@
 }
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_srli_si64 (__m64 __m, int __count)
-{
-  return (__m64) __builtin_ia32_psrlqi ((__v1di)__m, __count);
-}
+_mm_srli_si64 (__m64 __m, int __count);
 
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _m_psrlqi (__m64 __m, int __count)
diff -ur gccxml.orig/GCC_XML/Support/GCC/4.7/xmmintrin.h gccxml/GCC_XML/Support/GCC/4.7/xmmintrin.h
--- gccxml.orig/GCC_XML/Support/GCC/4.7/xmmintrin.h	2012-03-08 13:05:36.000000000 +0100
+++ gccxml/GCC_XML/Support/GCC/4.7/xmmintrin.h	2012-03-09 07:38:12.139251665 +0100
@@ -740,17 +740,11 @@
 /* Sets the upper two SPFP values with 64-bits of data loaded from P;
    the lower two values are passed through from A.  */
 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_loadh_pi (__m128 __A, __m64 const *__P)
-{
-  return (__m128) __builtin_ia32_loadhps ((__v4sf)__A, (const __v2sf *)__P);
-}
+_mm_loadh_pi (__m128 __A, __m64 const *__P);
 
 /* Stores the upper two SPFP values of A into P.  */
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_storeh_pi (__m64 *__P, __m128 __A)
-{
-  __builtin_ia32_storehps ((__v2sf *)__P, (__v4sf)__A);
-}
+_mm_storeh_pi (__m64 *__P, __m128 __A);
 
 /* Moves the upper two values of B into the lower two values of A.  */
 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@@ -769,17 +763,11 @@
 /* Sets the lower two SPFP values with 64-bits of data loaded from P;
    the upper two values are passed through from A.  */
 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_loadl_pi (__m128 __A, __m64 const *__P)
-{
-  return (__m128) __builtin_ia32_loadlps ((__v4sf)__A, (const __v2sf *)__P);
-}
+_mm_loadl_pi (__m128 __A, __m64 const *__P);
 
 /* Stores the lower two SPFP values of A into P.  */
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_storel_pi (__m64 *__P, __m128 __A)
-{
-  __builtin_ia32_storelps ((__v2sf *)__P, (__v4sf)__A);
-}
+_mm_storel_pi (__m64 *__P, __m128 __A);
 
 /* Creates a 4-bit mask from the most significant bits of the SPFP values.  */
 extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
