Qt 6.8.3 with BlackBerry 10 (QNX 8 / ARMv7) patches
 
 
 
 
 
 
Go to file
Thiago Macieira a7cea16005 MSVC x86: implement add_overflow for quint64
There's no 64-bit ADD instruction, so we make do with ADD+ADC. This is
what Clang generates. ICC uses the two as well, but then performs some
subtractions to find out if it overflowed. GCC for some inexplicable
reason attempts to use SSE2 if that's enabled, otherwise it performs the
subtractions like ICC.

Alternative implementation which generates better code, but violates
strict aliasing:

 uint *low = reinterpret_cast<uint *>(r);
 uint *high = low + 1;
 return _addcarry_u32(_addcarry_u32(0, unsigned(v1), unsigned(v2), low),
                      v1 >> 32, v2 >> 32, high);

Manual testing shows this works. tst_qnumeric passes in debug mode. MSVC
2017 15.9 still miscompiles in release mode (reported to MS as [1]).

[1] https://developercommunity.visualstudio.com/content/problem/409039/-addcarry-u32-wrong-results-with-constant-inputs.html

Change-Id: I61ce366d57bc46c89db5fffd15704d53ebd4af3c
Reviewed-by: Thomas Miller <thomaslmiller91@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-12-21 17:48:56 +00:00
bin syncqt: Do not clean header directory before "-minimal" run 2018-11-22 14:16:53 +00:00
config.tests configure: modernize iconv use 2018-12-19 19:22:16 +00:00
dist Include CLDR 34 update in change log 2018-12-11 18:57:27 +00:00
doc doc: Update online navigation header to match http://doc.qt.io/ 2018-10-17 16:16:28 +00:00
examples threads: disable threads examples for nothread builds 2018-12-10 05:36:08 +00:00
lib
mkspecs qmake: remove support for pre-5.6 qt module pris 2018-12-20 21:01:16 +00:00
qmake qmake: fixify target paths of extra compilers more consistently 2018-12-20 21:01:07 +00:00
src MSVC x86: implement add_overflow for quint64 2018-12-21 17:48:56 +00:00
tests Fix text shifting vertically when elided 2018-12-21 10:27:12 +00:00
util Clean up and update Unicode character data 3rd-party infrastructure 2018-11-11 22:09:27 +00:00
.gitattributes
.gitignore Remove support for qml1 plugins and modules 2018-11-15 19:52:13 +00:00
.qmake.conf Bump version 2018-11-08 11:26:39 +01:00
.tag
INSTALL
LICENSE.FDL
LICENSE.GPL2
LICENSE.GPL3
LICENSE.GPL3-EXCEPT
LICENSE.LGPL3
LICENSE.LGPLv3 Remove LICENSE.GPLv3, LICENSE.LGPLv21, LGPL_EXCEPTION.txt 2018-04-16 11:02:14 +00:00
LICENSE.QT-LICENSE-AGREEMENT-4.0 Replace commercial preview license with Qt License Agreement 4.0 2018-06-21 11:39:15 +00:00
config_help.txt src/3rdparty: remove xkbcommon 2018-11-30 09:47:03 +00:00
configure configure: Treat win32-clang-g++ the same as win32-g++ 2018-10-10 04:10:40 +00:00
configure.bat
configure.json configure: enable inline tests to contain auxiliary files 2018-12-19 19:22:06 +00:00
configure.pri configure: fix license determination failure message 2018-11-21 23:07:48 +00:00
header.BSD Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.FDL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL-EXCEPT Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-NOGPL2 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-ONLY Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3-COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.MIT qsimd: add support for new x86 CPU features 2018-05-05 06:20:07 +00:00
qtbase.pro
sync.profile Fix build failed with ANGLE 2018-10-16 05:19:43 +00:00