apl: patch build on platforms with not enough ldbl range

This backports a relevant fix from upstream.
This commit is contained in:
q66 2019-06-25 01:32:18 +02:00 committed by Leah Neukirchen
parent d2875a9d64
commit 5fb8ae9f8d

View file

@ -0,0 +1,43 @@
This backports the relevant bit of svn revision 1177 to fix build on platforms
where long double does not have extended range (larger than regular double),
particularly PowerPC (32 and 64 bit).
On those platforms, the build previously failed with:
Tokenizer.cc:769:4: error: floating constant exceeds range of 'long double' [-Werror=overflow]
exp_0_9(1E30)
^~~~~~~
--- src/Tokenizer.cc
+++ src/Tokenizer.cc
@@ -755,10 +755,10 @@
MAX_TOKENIZE_DIGITS = MAX_TOKENIZE_DIGITS_1 - 1 // excl. rounding digit
};
-#define exp_0_9(x) x ## 0L, x ## 1L, x ## 2L, x ## 3L, x ## 4L, \
- x ## 5L, x ## 6L, x ## 7L, x ## 8L, x ## 9L,
+#define exp_0_9(x) x ## 0, x ## 1, x ## 2, x ## 3, x ## 4, \
+ x ## 5, x ## 6, x ## 7, x ## 8, x ## 9,
-static const long double expo_tab[310] =
+static const long double expo_tab[309] =
{
exp_0_9(1E) exp_0_9(1E1) exp_0_9(1E2) exp_0_9(1E3) exp_0_9(1E4)
exp_0_9(1E5) exp_0_9(1E6) exp_0_9(1E7) exp_0_9(1E8) exp_0_9(1E9)
@@ -766,7 +766,7 @@
exp_0_9(1E15) exp_0_9(1E16) exp_0_9(1E17) exp_0_9(1E18) exp_0_9(1E19)
exp_0_9(1E20) exp_0_9(1E21) exp_0_9(1E22) exp_0_9(1E23) exp_0_9(1E24)
exp_0_9(1E25) exp_0_9(1E26) exp_0_9(1E27) exp_0_9(1E28) exp_0_9(1E29)
- exp_0_9(1E30)
+ 1E300, 1E301, 1E302, 1E303, 1E304, 1E305, 1E306, 1E307, 1E308
};
static const long double nexpo_tab[310] =
@@ -960,6 +960,7 @@
if (expo > 0)
{
+ if (expo > 308) return false;
if (negative) flt_val = - v * expo_tab[expo];
else flt_val = v * expo_tab[expo];
return true; // OK