Skip to content

Commit

Permalink
Update GCC 4.9 headers to work with gccxml's GCC 4.2 parser
Browse files Browse the repository at this point in the history
Port changes from commit 567213a (Update GCC 4.8 headers...,
2013-05-02) to GCC 4.9 headers:

* In (|e|x)mmintrin.h remove the function bodies that use builtins not
  provided by the GCC 4.2 parser.  The declarations are sufficient for
  our needs anyway.

* In <complex> remove assignment operator implementations that use
  conversions the older GCC parser does not recognize.

* In <iomanip> remove use of initializer lists.

* In <bits/stl_*> remove use of decltype.

* In <ext/atomicity.h> replace use of atomic builtins with older GCC
  names.

Inspired-by: Mattias Ellert <mattias.ellert@fysast.uu.se>
  • Loading branch information
bradking committed Jun 10, 2014
1 parent 7a9a1ce commit a012b8f
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 128 deletions.
3 changes: 1 addition & 2 deletions GCC_XML/Support/GCC/4.9/bits/stl_algo.h
Expand Up @@ -4320,8 +4320,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
// "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;
}
Expand Down
6 changes: 2 additions & 4 deletions GCC_XML/Support/GCC/4.9/bits/stl_algobase.h
Expand Up @@ -745,8 +745,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__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;
}
Expand All @@ -757,8 +756,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__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;
}
Expand Down
18 changes: 3 additions & 15 deletions GCC_XML/Support/GCC/4.9/complex
Expand Up @@ -1093,11 +1093,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
imag(float __val) { __imag__ _M_value = __val; }

complex&
operator=(float __f)
{
_M_value = __f;
return *this;
}
operator=(float __f);

complex&
operator+=(float __f)
Expand Down Expand Up @@ -1244,11 +1240,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
imag(double __val) { __imag__ _M_value = __val; }

complex&
operator=(double __d)
{
_M_value = __d;
return *this;
}
operator=(double __d);

complex&
operator+=(double __d)
Expand Down Expand Up @@ -1396,11 +1388,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
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)
Expand Down
10 changes: 2 additions & 8 deletions GCC_XML/Support/GCC/4.9/emmintrin.h
Expand Up @@ -731,10 +731,7 @@ _mm_movpi64_epi64 (__m64 __A)
}

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 an undefined vector. */
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
Expand Down Expand Up @@ -1437,10 +1434,7 @@ _mm_stream_si32 (int *__A, int __B)

#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__))
Expand Down
4 changes: 2 additions & 2 deletions GCC_XML/Support/GCC/4.9/ext/atomicity.h
Expand Up @@ -46,11 +46,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#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__))
Expand Down
16 changes: 8 additions & 8 deletions GCC_XML/Support/GCC/4.9/iomanip
Expand Up @@ -61,7 +61,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*/
inline _Resetiosflags
resetiosflags(ios_base::fmtflags __mask)
{ return { __mask }; }
{ _Resetiosflags r = { __mask }; return r; }

template<typename _CharT, typename _Traits>
inline basic_istream<_CharT, _Traits>&
Expand Down Expand Up @@ -91,7 +91,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*/
inline _Setiosflags
setiosflags(ios_base::fmtflags __mask)
{ return { __mask }; }
{ _Setiosflags s = { __mask }; return s; }

template<typename _CharT, typename _Traits>
inline basic_istream<_CharT, _Traits>&
Expand Down Expand Up @@ -122,7 +122,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*/
inline _Setbase
setbase(int __base)
{ return { __base }; }
{ _Setbase s = { __base }; return s; }

template<typename _CharT, typename _Traits>
inline basic_istream<_CharT, _Traits>&
Expand Down Expand Up @@ -160,7 +160,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
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>&
Expand Down Expand Up @@ -190,7 +190,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*/
inline _Setprecision
setprecision(int __n)
{ return { __n }; }
{ _Setprecision s = { __n }; return s; }

template<typename _CharT, typename _Traits>
inline basic_istream<_CharT, _Traits>&
Expand Down Expand Up @@ -220,7 +220,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*/
inline _Setw
setw(int __n)
{ return { __n }; }
{ _Setw s = {__n} ; return s; }

template<typename _CharT, typename _Traits>
inline basic_istream<_CharT, _Traits>&
Expand Down Expand Up @@ -254,7 +254,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _MoneyT>
inline _Get_money<_MoneyT>
get_money(_MoneyT& __mon, bool __intl = false)
{ return { __mon, __intl }; }
{ _Get_money<_MoneyT> r = { __mon, __intl }; return r; }

template<typename _CharT, typename _Traits, typename _MoneyT>
basic_istream<_CharT, _Traits>&
Expand Down Expand Up @@ -301,7 +301,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _MoneyT>
inline _Put_money<_MoneyT>
put_money(const _MoneyT& __mon, bool __intl = false)
{ return { __mon, __intl }; }
{ _Put_money<_MoneyT> r = { __mon, __intl }; return r; }

template<typename _CharT, typename _Traits, typename _MoneyT>
basic_ostream<_CharT, _Traits>&
Expand Down
90 changes: 18 additions & 72 deletions GCC_XML/Support/GCC/4.9/mmintrin.h
Expand Up @@ -313,10 +313,7 @@ _m_paddd (__m64 __m1, __m64 __m2)
#endif /* __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);
#ifdef __DISABLE_SSE2__
#undef __DISABLE_SSE2__
#pragma GCC pop_options
Expand Down Expand Up @@ -425,10 +422,7 @@ _m_psubd (__m64 __m1, __m64 __m2)
#endif /* __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);
#ifdef __DISABLE_SSE2__
#undef __DISABLE_SSE2__
#pragma GCC pop_options
Expand Down Expand Up @@ -535,10 +529,7 @@ _m_pmullw (__m64 __m1, __m64 __m2)

/* 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)
Expand All @@ -547,10 +538,7 @@ _m_psllw (__m64 __m, __m64 __count)
}

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)
Expand All @@ -560,10 +548,7 @@ _m_psllwi (__m64 __m, int __count)

/* 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)
Expand All @@ -572,10 +557,7 @@ _m_pslld (__m64 __m, __m64 __count)
}

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)
Expand All @@ -585,10 +567,7 @@ _m_pslldi (__m64 __m, int __count)

/* 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)
Expand All @@ -597,10 +576,7 @@ _m_psllq (__m64 __m, __m64 __count)
}

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)
Expand All @@ -610,10 +586,7 @@ _m_psllqi (__m64 __m, int __count)

/* 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)
Expand All @@ -622,10 +595,7 @@ _m_psraw (__m64 __m, __m64 __count)
}

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)
Expand All @@ -635,10 +605,7 @@ _m_psrawi (__m64 __m, int __count)

/* 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)
Expand All @@ -647,10 +614,7 @@ _m_psrad (__m64 __m, __m64 __count)
}

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)
Expand All @@ -660,10 +624,7 @@ _m_psradi (__m64 __m, int __count)

/* 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)
Expand All @@ -672,10 +633,7 @@ _m_psrlw (__m64 __m, __m64 __count)
}

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)
Expand All @@ -685,10 +643,7 @@ _m_psrlwi (__m64 __m, int __count)

/* 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)
Expand All @@ -697,10 +652,7 @@ _m_psrld (__m64 __m, __m64 __count)
}

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)
Expand All @@ -710,10 +662,7 @@ _m_psrldi (__m64 __m, int __count)

/* 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)
Expand All @@ -722,10 +671,7 @@ _m_psrlq (__m64 __m, __m64 __count)
}

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)
Expand Down

0 comments on commit a012b8f

Please sign in to comment.