Fix tst_qfloat16 runtime failure for INTEGRITY
- GHS compiler is not fully compliant with iec559. Therefore we need to update is_iec559 checking for GHS case. Pick-to: 6.2 Change-Id: Ia094509d26bf5f0109f2937547a056267019cffb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>bb10
parent
be63c3011b
commit
eba9196304
|
|
@ -150,7 +150,7 @@ static_assert(sizeof(wchar_t) == sizeof(char32_t) || sizeof(wchar_t) == sizeof(c
|
|||
// denormals where GHS compiler is relying hardware behavior that is not IEC
|
||||
// 559 compliant. So split the check in several subchecks.
|
||||
|
||||
// On GHC the compiler reports std::numeric_limits<float>::is_iec559 as false.
|
||||
// On GHS the compiler reports std::numeric_limits<float>::is_iec559 as false.
|
||||
// This is all right according to our needs.
|
||||
#if !defined(Q_CC_GHS)
|
||||
static_assert(std::numeric_limits<float>::is_iec559,
|
||||
|
|
|
|||
|
|
@ -540,7 +540,20 @@ void tst_qfloat16::properties()
|
|||
QVERIFY(Bounds::is_signed);
|
||||
QVERIFY(!Bounds::is_integer);
|
||||
QVERIFY(!Bounds::is_exact);
|
||||
|
||||
// While we'd like to check for __STDC_IEC_559__, as per ISO/IEC 9899:2011
|
||||
// Annex F (C11, normative for C++11), there are a few corner cases regarding
|
||||
// denormals where GHS compiler is relying hardware behavior that is not IEC
|
||||
// 559 compliant.
|
||||
|
||||
// On GHS the compiler reports std::numeric_limits<float>::is_iec559 as false.
|
||||
// and the same supposed to be for qfloat16.
|
||||
#if !defined(Q_CC_GHS)
|
||||
QVERIFY(Bounds::is_iec559);
|
||||
#else
|
||||
// Technically, presence of NaN and infinities are implied from the above check, but that checkings GHS compiler complies.
|
||||
QVERIFY(Bounds::has_infinity && Bounds::has_quiet_NaN && Bounds::has_signaling_NaN);
|
||||
#endif // Q_CC_GHS
|
||||
QVERIFY(Bounds::is_bounded);
|
||||
QVERIFY(!Bounds::is_modulo);
|
||||
QVERIFY(!Bounds::traps);
|
||||
|
|
|
|||
Loading…
Reference in New Issue