* [PATCH] libstdc++: Fix long double to_chars testcase [PR98384]
@ 2021-01-07 15:37 Patrick Palka
2021-01-07 17:35 ` Jonathan Wakely
0 siblings, 1 reply; 2+ messages in thread
From: Patrick Palka @ 2021-01-07 15:37 UTC (permalink / raw)
To: gcc-patches; +Cc: libstdc++, Patrick Palka
The testcase was failing to compile on some targets due to its use of
the non-standard functions nextupl and nextdownl. This patch makes the
testcase instead use the C99 function nexttowardl in an equivalent
manner.
libstdc++-v3/ChangeLog:
PR libstdc++/98384
* testsuite/20_util/to_chars/long_double.cc: Use nexttowardl
instead of the non-standard nextupl and nextdownl.
---
.../testsuite/20_util/to_chars/long_double.cc | 25 +++++++++++++------
1 file changed, 18 insertions(+), 7 deletions(-)
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 9d9ede7cf8a..4f72cb65400 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
@@ -32,6 +32,17 @@
using namespace std;
+namespace detail
+{
+ long double
+ nextupl(long double x)
+ { return nexttowardl(x, numeric_limits<long double>::infinity()); }
+
+ long double
+ nextdownl(long double x)
+ { return nexttowardl(x, -numeric_limits<long double>::infinity()); }
+}
+
// The long double overloads of std::to_chars currently just go through printf
// (except for the hexadecimal formatting).
@@ -40,8 +51,8 @@ void
test01()
{
const long double hex_testcases[]
- = { nextdownl(numeric_limits<long double>::max()),
- nextupl(numeric_limits<long double>::min()),
+ = { detail::nextdownl(numeric_limits<long double>::max()),
+ detail::nextupl(numeric_limits<long double>::min()),
42.0L,
0x1.2p+0L,
0x1.23p+0L,
@@ -94,7 +105,7 @@ test01()
{
// Verify that the nearby values have a different shortest form.
- testcase = nextdownl(testcase);
+ testcase = detail::nextdownl(testcase);
result = to_chars(begin(to_chars_buffer), end(to_chars_buffer),
testcase, chars_format::hex);
VERIFY( result.ec == errc{} );
@@ -103,7 +114,7 @@ test01()
sprintf(printf_buffer, "%La", testcase);
VERIFY( !strcmp(to_chars_buffer, printf_buffer+strlen("0x")) );
- testcase = nextupl(nextupl(testcase));
+ testcase = detail::nextupl(detail::nextupl(testcase));
result = to_chars(begin(to_chars_buffer), end(to_chars_buffer),
testcase, chars_format::hex);
VERIFY( result.ec == errc{} );
@@ -112,7 +123,7 @@ test01()
sprintf(printf_buffer, "%La", testcase);
VERIFY( !strcmp(to_chars_buffer, printf_buffer+strlen("0x")) );
- testcase = nextdownl(testcase);
+ testcase = detail::nextdownl(testcase);
}
for (int precision = -1; precision < 50; precision++)
@@ -173,7 +184,7 @@ test02()
*result.ptr = '\0';
char nearby_buffer[50000];
{
- const long double smaller = nextdownl(value);
+ const long double smaller = detail::nextdownl(value);
result = to_chars(begin(nearby_buffer), end(nearby_buffer),
smaller, fmt);
VERIFY( result.ec == errc{} );
@@ -182,7 +193,7 @@ test02()
}
{
- long double larger = nextupl(value);
+ long double larger = detail::nextupl(value);
result = to_chars(begin(nearby_buffer), end(nearby_buffer),
larger, fmt);
VERIFY( result.ec == errc{} );
--
2.30.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] libstdc++: Fix long double to_chars testcase [PR98384]
2021-01-07 15:37 [PATCH] libstdc++: Fix long double to_chars testcase [PR98384] Patrick Palka
@ 2021-01-07 17:35 ` Jonathan Wakely
0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Wakely @ 2021-01-07 17:35 UTC (permalink / raw)
To: Patrick Palka; +Cc: gcc-patches, libstdc++
On 07/01/21 10:37 -0500, Patrick Palka via Libstdc++ wrote:
>The testcase was failing to compile on some targets due to its use of
>the non-standard functions nextupl and nextdownl. This patch makes the
>testcase instead use the C99 function nexttowardl in an equivalent
>manner.
>
>libstdc++-v3/ChangeLog:
>
> PR libstdc++/98384
> * testsuite/20_util/to_chars/long_double.cc: Use nexttowardl
> instead of the non-standard nextupl and nextdownl.
OK, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-01-07 17:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-07 15:37 [PATCH] libstdc++: Fix long double to_chars testcase [PR98384] Patrick Palka
2021-01-07 17:35 ` Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).