1From be12f3c3a5240b8bbb6837a3b23d36b61303b455 Mon Sep 17 00:00:00 2001
2From: Nicola Lunghi <nick83ola@gmail.com>
3Date: Wed, 5 Feb 2020 15:32:25 +0000
4Subject: [PATCH] tst_qpainter: FE_ macros are not defined for every platform
5
6the FE_INEXACT, FE_UNDERFLOW, FE_OVERFLOW, FE_DIVBYZERO, FE_INVALID are defined
7only for platforms with fp engine.
8
9Signed-off-by: Nicola Lunghi <nick83ola@gmail.com>
10Upstream-Status: submitted [https://codereview.qt-project.org/c/qt/qtbase/+/289447]
11---
12 .../gui/painting/qpainter/tst_qpainter.cpp    | 50 ++++++++++++++-----
13 1 file changed, 37 insertions(+), 13 deletions(-)
14
15diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
16index 42e98ce363..0ca9b87f04 100644
17--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
18+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
19@@ -2931,19 +2931,43 @@ void tst_QPainter::monoImages()
20 #if !defined(Q_OS_AIX) && !defined(Q_CC_MSVC) && !defined(Q_OS_SOLARIS) && !defined(__UCLIBC__)
21 #include <fenv.h>
22
23+#if defined(FE_INEXACT)
24+    #define QP_FE_INEXACT (FE_INEXACT)
25+#else
26+    #define QP_FE_INEXACT 0
27+#endif
28+#if defined(FE_UNDERFLOW)
29+    #define QP_FE_UNDERFLOW (FE_UNDERFLOW)
30+#else
31+    #define QP_FE_UNDERFLOW 0
32+#endif
33+#if defined(FE_OVERFLOW)
34+    #define QP_FE_OVERFLOW (FE_OVERFLOW)
35+#else
36+    #define QP_FE_OVERFLOW 0
37+#endif
38+#if defined(FE_DIVBYZERO)
39+    #define QP_FE_DIVBYZERO (FE_DIVBYZERO)
40+#else
41+    #define QP_FE_DIVBYZERO 0
42+#endif
43+#if defined(FE_INVALID)
44+    #define QP_FE_INVALID (FE_INVALID)
45+#else
46+    #define QP_FE_INVALID 0
47+#endif
48+
49 static const QString fpeExceptionString(int exception)
50 {
51-#ifdef FE_INEXACT
52-    if (exception & FE_INEXACT)
53+    if (exception & QP_FE_INEXACT)
54         return QLatin1String("Inexact result");
55-#endif
56-    if (exception & FE_UNDERFLOW)
57+    if (exception & QP_FE_UNDERFLOW)
58         return QLatin1String("Underflow");
59-    if (exception & FE_OVERFLOW)
60+    if (exception & QP_FE_OVERFLOW)
61         return QLatin1String("Overflow");
62-    if (exception & FE_DIVBYZERO)
63+    if (exception & QP_FE_DIVBYZERO)
64         return QLatin1String("Divide by zero");
65-    if (exception & FE_INVALID)
66+    if (exception & QP_FE_INVALID)
67         return QLatin1String("Invalid operation");
68     return QLatin1String("No exception");
69 }
70@@ -2969,7 +2993,7 @@ private:
71
72 void fpe_rasterizeLine_task232012()
73 {
74-    FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
75+    FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
76     QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
77     img.fill(0x0);
78     QPainter p(&img);
79@@ -2981,7 +3005,7 @@ void fpe_rasterizeLine_task232012()
80
81 void fpe_pixmapTransform()
82 {
83-    FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
84+    FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
85
86     QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
87
88@@ -3009,7 +3033,7 @@ void fpe_pixmapTransform()
89
90 void fpe_zeroLengthLines()
91 {
92-    FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
93+    FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
94
95     QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
96
97@@ -3021,7 +3045,7 @@ void fpe_zeroLengthLines()
98
99 void fpe_divByZero()
100 {
101-    FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
102+    FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
103
104     QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
105
106@@ -3044,7 +3068,7 @@ void fpe_divByZero()
107
108 void fpe_steepSlopes()
109 {
110-    FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
111+    FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
112
113     QImage img(1024, 1024, QImage::Format_ARGB32_Premultiplied);
114
115@@ -3063,7 +3087,7 @@ void fpe_steepSlopes()
116
117 void fpe_radialGradients()
118 {
119-    FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
120+    FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
121
122     QImage img(21, 21, QImage::Format_ARGB32_Premultiplied);
123     img.fill(0);
124