diff options
Diffstat (limited to 'tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp')
-rw-r--r-- | tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp index c2dc8a4cc6..1283083f0e 100644 --- a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp +++ b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp @@ -161,6 +161,25 @@ static void warningFreeHelperTemplate() assemblyMarker<64>(&i); } +template <bool> inline void booleanHelper() +{ } + +template <typename Atomic> +static void constexprFunctionsHelperTemplate() +{ +#ifdef Q_COMPILER_CONSTEXPR + // this is a compile-time test only + booleanHelper<Atomic::isReferenceCountingNative()>(); + booleanHelper<Atomic::isReferenceCountingWaitFree()>(); + booleanHelper<Atomic::isTestAndSetNative()>(); + booleanHelper<Atomic::isTestAndSetWaitFree()>(); + booleanHelper<Atomic::isFetchAndStoreNative()>(); + booleanHelper<Atomic::isFetchAndStoreWaitFree()>(); + booleanHelper<Atomic::isFetchAndAddNative()>(); + booleanHelper<Atomic::isFetchAndAddWaitFree()>(); +#endif +} + void tst_QAtomicInt::warningFreeHelper() { qFatal("This code is bogus, and shouldn't be run. We're looking for compiler warnings only."); @@ -169,23 +188,32 @@ void tst_QAtomicInt::warningFreeHelper() #ifdef Q_ATOMIC_INT32_IS_SUPPORTED warningFreeHelperTemplate<int, QBasicAtomicInteger<int> >(); warningFreeHelperTemplate<unsigned int, QBasicAtomicInteger<unsigned int> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<int> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<unsigned int> >(); #endif #ifdef Q_ATOMIC_INT16_IS_SUPPORTED warningFreeHelperTemplate<qint16, QBasicAtomicInteger<qint16> >(); warningFreeHelperTemplate<quint16, QBasicAtomicInteger<quint16> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<qint16> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<quint16> >(); #endif #ifdef Q_ATOMIC_INT8_IS_SUPPORTED warningFreeHelperTemplate<char, QBasicAtomicInteger<char> >(); warningFreeHelperTemplate<signed char, QBasicAtomicInteger<signed char> >(); warningFreeHelperTemplate<unsigned char, QBasicAtomicInteger<unsigned char> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<char> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<signed char> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<unsigned char> >(); #endif #ifdef Q_ATOMIC_INT64_IS_SUPPORTED #if !defined(__i386__) || (defined(Q_CC_GNU) && defined(__OPTIMIZE__)) warningFreeHelperTemplate<qlonglong, QBasicAtomicInteger<qlonglong> >(); warningFreeHelperTemplate<qulonglong, QBasicAtomicInteger<qulonglong> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<qlonglong> >(); + constexprFunctionsHelperTemplate<QBasicAtomicInteger<qulonglong> >(); #endif #endif } |