summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/corelib/tools
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2021-07-08 15:39:41 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2021-07-19 18:55:51 +0200
commit406bb11a4ebf3e166416a399807ec2ad8d1baede (patch)
tree8ea2b2b690e445d543dd03e67322533a765bd852 /tests/benchmarks/corelib/tools
parent1969a25ceef1be7b9769245054c80e5b56491820 (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.cpp20
-rw-r--r--tests/benchmarks/corelib/tools/qvector/qrawvector.h1
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;