Bypass a bug in gcc 4.7 for QAtomicTraits::isLockFree()
It's not possible to build Qt with gcc 4.7 since aca0e367be9cdc3b48f09200f4eadbcfe5a574c8 because of the bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53473 that doesn't allow to specialize static members declared both as constexpr and noexcept. That commit was made after 5.7.0 and it introduced QAtomicTraits::isLockFree() with these specifiers. Remove the noexcept specifier to fix building. Change-Id: Ifc2462c90de1180f1e015fdc0646f246d33e68b0 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
c3bd28de8d
commit
4f6f0cd4c9
@ -73,7 +73,7 @@ QT_END_NAMESPACE
|
||||
|
||||
// ### Qt 6: make non-constexpr (see above)
|
||||
template <int N> struct QAtomicTraits
|
||||
{ static Q_DECL_CONSTEXPR inline bool isLockFree() Q_DECL_NOTHROW; };
|
||||
{ static Q_DECL_CONSTEXPR inline bool isLockFree(); };
|
||||
|
||||
#define Q_ATOMIC_INT32_IS_SUPPORTED
|
||||
#if ATOMIC_INT_LOCK_FREE == 2
|
||||
@ -86,7 +86,7 @@ template <int N> struct QAtomicTraits
|
||||
# define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
|
||||
# define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree()
|
||||
{ return true; }
|
||||
#elif ATOMIC_INT_LOCK_FREE == 1
|
||||
# define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
|
||||
@ -98,7 +98,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
|
||||
# define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree()
|
||||
{ return false; }
|
||||
#else
|
||||
# define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NEVER_NATIVE
|
||||
@ -110,7 +110,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_NEVER_NATIVE
|
||||
# define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_NEVER_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree()
|
||||
{ return false; }
|
||||
#endif
|
||||
|
||||
@ -139,7 +139,7 @@ template<> struct QAtomicOpsSupport<1> { enum { IsSupported = 1 }; };
|
||||
# define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE
|
||||
# define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree()
|
||||
{ return true; }
|
||||
#elif ATOMIC_CHAR_LOCK_FREE == 1
|
||||
# define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
|
||||
@ -147,7 +147,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
|
||||
# define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree()
|
||||
{ return false; }
|
||||
#else
|
||||
# define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_NEVER_NATIVE
|
||||
@ -155,7 +155,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_NEVER_NATIVE
|
||||
# define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_NEVER_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR bool QAtomicTraits<1>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR bool QAtomicTraits<1>::isLockFree()
|
||||
{ return false; }
|
||||
#endif
|
||||
|
||||
@ -167,7 +167,7 @@ template<> struct QAtomicOpsSupport<2> { enum { IsSupported = 1 }; };
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree()
|
||||
{ return false; }
|
||||
#elif ATOMIC_SHORT_LOCK_FREE == 1
|
||||
# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
|
||||
@ -175,7 +175,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree()
|
||||
{ return false; }
|
||||
#else
|
||||
# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_NEVER_NATIVE
|
||||
@ -183,7 +183,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_NEVER_NATIVE
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_NEVER_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree()
|
||||
{ return false; }
|
||||
#endif
|
||||
|
||||
@ -196,7 +196,7 @@ template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; };
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree()
|
||||
{ return true; }
|
||||
# elif ATOMIC_LLONG_LOCK_FREE == 1
|
||||
# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
|
||||
@ -204,7 +204,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree()
|
||||
{ return false; }
|
||||
# else
|
||||
# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_NEVER_NATIVE
|
||||
@ -212,7 +212,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() Q_DECL_N
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_NEVER_NATIVE
|
||||
# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_NEVER_NATIVE
|
||||
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() Q_DECL_NOTHROW
|
||||
template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree()
|
||||
{ return false; }
|
||||
# endif
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user