Disable CPUID checking with GCC 4.2 or older
authorThiago Macieira <thiago.macieira@intel.com>
Tue, 14 Aug 2012 12:07:31 +0000 (14:07 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 15 Aug 2012 13:20:39 +0000 (15:20 +0200)
commit732fc614dab0434b0a977889f326ea0910901b94
tree6eff535190ba37e9ab3d1629329951ab3d3d15e0
parent555e4e05f4f98f524e108fba0fb236406f2e2b2f
Disable CPUID checking with GCC 4.2 or older

This is not the first time that GCC 4.2 on Mac has produced bad code
surrounding the CPUID instruction (see also commit 81d1f79a7f4b0f67d71).
So declare it broken beyond repair and don't run the instruction at all.

Instead, initialise the set of features found to be exactly that which
we detected at compile-time. For that reason, we can also disable the
runtime checking of the processor (minFeatures == detected features).

At the time of this commit, only the draw helpers and one QImage
helper make use of the runtime detection. Since the detection now
switches to compile-time, QtGui will start carrying dead code for GCC
4.2 and earlier: it will never run the SSE2/SSSE3 code on 32-bit
builds. (GCC 4.2 does not support AVX, so that code won't be built)

Note: all Clang versions report that they are GCC 4.2, so we need to
exclude it from the test; ICC reports the same version as the system's
GCC.

Change-Id: I43f168a9480a2479c6444eea175782b2eadc2ab2
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
src/corelib/tools/qsimd.cpp