qt5base-lts/tests/auto
Thiago Macieira 309dacedac Atomics: remove requirement for alignment equality with plain types
This was originally added so that you could replace a T with
QAtomicInteger<T> in the same class and still keep ABI. However, for
legacy reasons, on 32-bit x86, types larger than 4 bytes keep an old
1990s alignment of only 4 bytes, but modern std::atomic<T> for those 8-
byte types enforces an alignment of 8 bytes. Therefore, the requirement
to keep alignment is not possible to guarantee.

In other words: you may not replace T with QAtomicInteger<T> or
std::atomic<T> and assume no ABI breakages in all platforms.

This is a requirement to implement atomicity. An 8-byte type aligned to
only a 4-byte boundary could cross a 16-byte boundary or, worse, cross a
cacheline boundary. Crossing the 16-byte boundary could be bad on some
processors, but crossing the cacheline boundary (addresses ending in
0x3C, 0x7C, 0xCC and 0xFC, or 4 out of 64 possible addresses or 6.25%)
is always bad: the CPUs cannot guarantee an atomic load or store
operation.

See also <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71660>.

Task-number: QTBUG-67858
Change-Id: If90a92b041d3442fa0a4fffd15283e4615474582
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-04-24 17:36:42 +00:00
..
android Updated license headers 2016-01-21 18:55:18 +00:00
bic/data Add binary compatibility files for QtBase for 5.10 2018-01-04 16:26:32 +00:00
cmake Remove CMake code for CMake < 3.1 2018-03-24 22:31:18 +00:00
compilerwarnings/data Updated license headers 2016-01-21 18:55:18 +00:00
concurrent Fix of flaky qFutureAssignmentLeak test 2018-02-15 16:24:38 +00:00
corelib Atomics: remove requirement for alignment equality with plain types 2018-04-24 17:36:42 +00:00
dbus tests/auto/dbus: Avoid unconditional qWait()s 2018-04-12 05:49:07 +00:00
gui Blacklist tst_QWindow::isActive on Ubuntu 2018-04-18 13:23:18 +00:00
guiapplauncher Fix path to examples part of tst_GuiAppLauncher 2015-02-13 07:28:15 +00:00
installed_cmake Add a unit test for testing Qt in its install location. 2013-07-02 23:08:54 +02:00
network QWindowsPipeReader: fix waiting on inactive pipe 2018-04-12 18:08:29 +00:00
opengl tst_QGL: Use qWaitForWindowExposed() 2018-04-11 06:05:46 +00:00
other Fix license header for tst_toolingsupport.cpp 2018-04-09 06:37:01 +00:00
printsupport tst_QPrinter: Use qWaitForWindowActive() to wait for dialog 2018-04-09 05:59:39 +00:00
shared Remove workaround for potentially unavailable pasteboard in macOS 2017-03-07 01:04:46 +00:00
sql oci: Use OCIBindByPos2 to accommodate data longer than USHRT_MAX 2018-04-06 12:44:37 +00:00
testlib Stabilize tst_QSignalSpy::waitFunctionPointer_signalEmittedTooLate() 2018-03-17 12:10:05 +00:00
tools qmake: make VFS aware of exact vs. cumulative evaluation 2018-03-29 18:15:10 +00:00
widgets tests/auto/widgets/kernel: Avoid unconditional qWait()s 2018-04-24 05:01:57 +00:00
xml Don't indefinitely wait for data if it was able to read some data 2018-01-24 05:54:31 +00:00
auto.pro tests/auto/auto.pro: Use correct null device for DBUS check 2017-12-01 09:53:07 +00:00
network-settings.h Merge remote-tracking branch 'origin/5.6' into 5.7 2016-05-06 15:36:44 +02:00