diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2021-05-19 18:47:55 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2021-05-19 18:47:55 +0100 |
commit | 4984e512c6bb242ed2734c7c8a2b90ba0c9f44c5 (patch) | |
tree | 8f076c64d6c7ef5e967ecf7e0fe44e96df14bc6c /11.1.0 | |
parent | 8.5.0: cut 1 patchset, a copy of 8.4.0 with upstreamed pacthes removed (diff) | |
download | gcc-patches-4984e512c6bb242ed2734c7c8a2b90ba0c9f44c5.tar.gz gcc-patches-4984e512c6bb242ed2734c7c8a2b90ba0c9f44c5.tar.bz2 gcc-patches-4984e512c6bb242ed2734c7c8a2b90ba0c9f44c5.zip |
11.1.0: backport msp430 float_to_chars build fix
Bug: https://gcc.gnu.org/PR100361
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to '11.1.0')
-rw-r--r-- | 11.1.0/gentoo/27_all_msp430-f2c.patch | 85 | ||||
-rw-r--r-- | 11.1.0/gentoo/README.history | 3 |
2 files changed, 88 insertions, 0 deletions
diff --git a/11.1.0/gentoo/27_all_msp430-f2c.patch b/11.1.0/gentoo/27_all_msp430-f2c.patch new file mode 100644 index 0000000..2c9a3c2 --- /dev/null +++ b/11.1.0/gentoo/27_all_msp430-f2c.patch @@ -0,0 +1,85 @@ +https://gcc.gnu.org/PR100361 + +2021-05-18 Joern Rennecke <joern.rennecke@riscy-ip.com> + + libstdc++: Disable floating_to_chars.cc on 16 bit targets + + This patch conditionally disables the compilation of floating_to_chars.cc + on 16 bit targets, thus fixing a build failure for these targets as + the POW10_SPLIT_2 array exceeds the maximum object size. + +libstdc++-v3/ + PR libstdc++/100361 + * include/std/charconv (to_chars): Hide the overloads for + floating-point types for 16 bit targets. + * src/c++17/floating_to_chars.cc: Don't compile for 16 bit targets. + * testsuite/20_util/to_chars/double.cc: Run this test only on + size32plus targets. + * testsuite/20_util/to_chars/float.cc: Likewise. + * testsuite/20_util/to_chars/long_double.cc: Likewise. + +diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv +index 193702e677a..ac9c34d4601 100644 +--- a/libstdc++-v3/include/std/charconv ++++ b/libstdc++-v3/include/std/charconv +@@ -703,7 +703,8 @@ namespace __detail + chars_format __fmt = chars_format::general) noexcept; + #endif + +-#if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 ++#if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 \ ++ && __SIZE_WIDTH__ >= 32 + // Floating-point std::to_chars + + // Overloads for float. +diff --git a/libstdc++-v3/src/c++17/floating_to_chars.cc b/libstdc++-v3/src/c++17/floating_to_chars.cc +index 1a0abb9e80f..44f547a77b4 100644 +--- a/libstdc++-v3/src/c++17/floating_to_chars.cc ++++ b/libstdc++-v3/src/c++17/floating_to_chars.cc +@@ -50,7 +50,9 @@ extern "C" int __sprintfieee128(char*, const char*, ...); + + // This implementation crucially assumes float/double have the + // IEEE binary32/binary64 formats. +-#if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 ++#if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 \ ++ /* And it also assumes that uint64_t POW10_SPLIT_2[3133][3] is valid. */\ ++ && __SIZE_WIDTH__ >= 32 + + // Determine the binary format of 'long double'. + +diff --git a/libstdc++-v3/testsuite/20_util/to_chars/double.cc b/libstdc++-v3/testsuite/20_util/to_chars/double.cc +index bb6f74424ed..64e62213044 100644 +--- a/libstdc++-v3/testsuite/20_util/to_chars/double.cc ++++ b/libstdc++-v3/testsuite/20_util/to_chars/double.cc +@@ -33,6 +33,7 @@ + + // { dg-do run { target c++17 } } + // { dg-require-effective-target ieee-floats } ++// { dg-require-effective-target size32plus } + + #include <charconv> + +diff --git a/libstdc++-v3/testsuite/20_util/to_chars/float.cc b/libstdc++-v3/testsuite/20_util/to_chars/float.cc +index 0c8dd4f66df..73b9081d4ff 100644 +--- a/libstdc++-v3/testsuite/20_util/to_chars/float.cc ++++ b/libstdc++-v3/testsuite/20_util/to_chars/float.cc +@@ -33,6 +33,7 @@ + + // { dg-do run { target c++17 } } + // { dg-require-effective-target ieee-floats } ++// { dg-require-effective-target size32plus } + + #include <charconv> + +diff --git a/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc b/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc +index 8cf45ad5e94..447e5368811 100644 +--- a/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc ++++ b/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc +@@ -35,6 +35,7 @@ + // { dg-xfail-run-if "Non-conforming printf (see PR98384)" { *-*-solaris* *-*-darwin* } } + + // { dg-require-effective-target ieee-floats } ++// { dg-require-effective-target size32plus } + + #include <charconv> + diff --git a/11.1.0/gentoo/README.history b/11.1.0/gentoo/README.history index b2cb96e..9c9ad5e 100644 --- a/11.1.0/gentoo/README.history +++ b/11.1.0/gentoo/README.history @@ -1,3 +1,6 @@ +2 TODO + + 27_all_msp430-f2c.patch + 1 27 Apr 2021 + 01_all_default-fortify-source.patch + 02_all_default-warn-format-security.patch |