diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2021-07-08 15:39:41 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2021-07-19 18:55:51 +0200 |
commit | 406bb11a4ebf3e166416a399807ec2ad8d1baede (patch) | |
tree | 8ea2b2b690e445d543dd03e67322533a765bd852 /tests/benchmarks/corelib/tools | |
parent | 1969a25ceef1be7b9769245054c80e5b56491820 (diff) |
Suppress a broken benchmark comparing QVector to std::vector
The test constructs an ersatz object with which to overwrite a
QVector's internals, but based it on Qt 5's memory layout. Since Qt 6
completely rearranged that memory layout, the test now crashes (or, in
a debug build, trips over an out-of-bounds assertion).
So suppress the test until those who perpetrated it and/or the
reworking of QVector's internals can work out how to fix it.
That way, QA can at least run the benchmark without crashing.
Task-number: QTBUG-95061
Pick-to: 6.2
Change-Id: I0e8c8d58f2002497f6e29d0ad25f840e207704a4
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'tests/benchmarks/corelib/tools')
-rw-r--r-- | tests/benchmarks/corelib/tools/qvector/main.cpp | 20 | ||||
-rw-r--r-- | tests/benchmarks/corelib/tools/qvector/qrawvector.h | 1 |
2 files changed, 15 insertions, 6 deletions
diff --git a/tests/benchmarks/corelib/tools/qvector/main.cpp b/tests/benchmarks/corelib/tools/qvector/main.cpp index b090c04480..6d1354cb6a 100644 --- a/tests/benchmarks/corelib/tools/qvector/main.cpp +++ b/tests/benchmarks/corelib/tools/qvector/main.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -175,6 +175,16 @@ sys 0m0.008s #define TEST_RETURN 1 +#if TEST_RETURN +/* QRawVector::mutateToVector() hacks a semblance of a Qt 5 QVector. + + However, Qt 6's QVector is Qt 6's QList and completely different in internal + layout. The QTypedArrayData inside it is also completely rearranged. Until + QRawVector can be rewritten to do whatever it's supposed to do in a + Qt6-compatible way, this test is suppressed, see QTBUG-95061. +*/ +#define TEST_RAW 0 +#endif // For some reason, both 'plain' and '-callgrind' create strange results // (like varying instruction count for the same assembly code) @@ -218,9 +228,9 @@ private slots: void qrawvector_separator() { qWarning() << "QRawVector results: "; } void qrawvector_const_read_access(); void qrawvector_mutable_read_access(); - #ifdef TEST_RETURN +#if TEST_RAW void qrawvector_fill_and_return(); - #endif +#endif }; const int N = 1000000; @@ -321,9 +331,7 @@ void tst_QVector::qvector_pop_back() } } - - -#ifdef TEST_RETURN +#if TEST_RAW extern QVector<double> qrawvector_fill_and_return_helper(); void tst_QVector::qrawvector_fill_and_return() diff --git a/tests/benchmarks/corelib/tools/qvector/qrawvector.h b/tests/benchmarks/corelib/tools/qvector/qrawvector.h index 1f615f6e69..3d827c7921 100644 --- a/tests/benchmarks/corelib/tools/qvector/qrawvector.h +++ b/tests/benchmarks/corelib/tools/qvector/qrawvector.h @@ -217,6 +217,7 @@ private: public: QVector<T> mutateToVector() { + Q_ASSERT(!"Fix QTBUG-95061 before calling this; it is broken beyond repair"); Data *d = toBase(m_begin); d->ref.initializeOwned(); d->alloc = m_alloc; |