[PATCH] [testsuite] tolerate missing std::stold
Jonathan Wakely
jwakely.gcc@gmail.com
Tue May 20 07:22:25 GMT 2025
On Tue, 20 May 2025, 05:00 Alexandre Oliva, <oliva@adacore.com> wrote:
>
> basic_string.h doesn't define the non-w string version of std::stold
> when certain conditions aren't met, and then a couple of tests fail to
> compile.
>
> Guard the portions of the tests that depend on std::stold with the
> conditions for it to be defined.
>
> Regstrapped on x86_64-linux-gnu. Also tested with gcc-14 on aarch64-,
> arm-, x86-, and x86_64-vxworks7r2. Ok to install?
>
OK
Maybe we should just define it in terms of std::stod, so it always exists
but might not support the full accuracy of long double.
>
> for libstdc++-v3/ChangeLog
>
> *
> testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc:
> Guard non-wide stold calls with conditions for it to be
> defined.
> *
> testsuite/27_io/basic_ostream/inserters_arthmetic/char/hexfloat.cc:
> Likewise.
> ---
> .../basic_string/numeric_conversions/char/stold.cc | 6 ++++++
> .../inserters_arithmetic/char/hexfloat.cc | 6 ++++++
> 2 files changed, 12 insertions(+)
>
> diff --git
> a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
> b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
> index b64ad0c868345..dd777c4529a08 100644
> ---
> a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
> +++
> b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
> @@ -31,6 +31,11 @@
> void
> test01()
> {
> + /* If these conditions are not met, basic_string.h doesn't define
> + std::stold(const string&, size_t* = 0), and then the test would
> + fail to compile. */
> +#if (_GLIBCXX_HAVE_STRTOLD && ! _GLIBCXX_HAVE_BROKEN_STRTOLD) \
> + || __DBL_MANT_DIG__ == __LDBL_MANT_DIG__
> bool test = false;
> using namespace std;
>
> @@ -106,6 +111,7 @@ test01()
> test = false;
> }
> VERIFY( test );
> +#endif
> }
>
> int main()
> diff --git
> a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
> b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
> index b1bc7fbb9d4e1..f694730901edb 100644
> ---
> a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
> +++
> b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
> @@ -95,6 +95,11 @@ test01()
> void
> test02()
> {
> + /* If these conditions are not met, basic_string.h doesn't define
> + std::stold(const string&, size_t* = 0), and then the test would
> + fail to compile. */
> +#if (_GLIBCXX_HAVE_STRTOLD && ! _GLIBCXX_HAVE_BROKEN_STRTOLD) \
> + || __DBL_MANT_DIG__ == __LDBL_MANT_DIG__
> ostringstream os;
> long double d = 272.L; // 0x1.1p+8L;
> os << hexfloat << setprecision(1);
> @@ -140,6 +145,7 @@ test02()
> cout << "got: " << os.str() << endl;
> #endif
> VERIFY( os && os.str() == "15" );
> +#endif
> }
>
> int
>
> --
> Alexandre Oliva, happy hacker https://blog.lx.oliva.nom.br/
> Free Software Activist FSFLA co-founder GNU Toolchain Engineer
> More tolerance and less prejudice are key for inclusion and diversity.
> Excluding neuro-others for not behaving ""normal"" is *not* inclusive!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20250520/14927d85/attachment-0001.htm>
More information about the Libstdc++
mailing list