summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qfloat16.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/global/qfloat16.cpp')
-rw-r--r--src/corelib/global/qfloat16.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp
index 5264b56104..1de1ae65fb 100644
--- a/src/corelib/global/qfloat16.cpp
+++ b/src/corelib/global/qfloat16.cpp
@@ -61,8 +61,21 @@ QT_BEGIN_NAMESPACE
Q_STATIC_ASSERT_X(sizeof(float) == sizeof(quint32),
"qfloat16 assumes that floats are 32 bits wide");
+
+// There are a few corner cases regarding denormals where GHS compiler is relying
+// hardware behavior that is not IEC 559 compliant. Therefore the compiler
+// reports std::numeric_limits<float>::is_iec559 as false. This is all right
+// according to our needs.
+
+#if !defined(Q_CC_GHS)
Q_STATIC_ASSERT_X(std::numeric_limits<float>::is_iec559,
"Only works with IEEE 754 floating point");
+#endif
+
+Q_STATIC_ASSERT_X(std::numeric_limits<float>::has_infinity &&
+ std::numeric_limits<float>::has_quiet_NaN &&
+ std::numeric_limits<float>::has_signaling_NaN,
+ "Only works with IEEE 754 floating point");
/*!
Returns true if the \c qfloat16 \a {f} is equivalent to infinity.