diff mbox series

[libstdc++,testsuite] xfail 128bit from_chars on all aarch64-*-*

Message ID orbk34jc95.fsf@lxoliva.fsfla.org
State New
Headers show
Series [libstdc++,testsuite] xfail 128bit from_chars on all aarch64-*-* | expand

Commit Message

Alexandre Oliva July 11, 2024, 1:20 p.m. UTC
Having observed failures of these two tests on yet another aarch64
operating system, and having concluded that the conditions that
trigger the problem ought to be present on all aarch64 targets, I'm
now matching any aarch64 target_os to enable the workaround.

Regstrapped on x86_64-linux-gnu, also tested with gcc-13 targeting
aarch64.  Ok to install?


for  libstdc++-v3/ChangeLog

	* testsuite/20_util/from_chars/8.cc: Define SKIP_LONG_DOUBLE
	on all aarch64-*-* targets.
	* testsuite/20_util/to_chars/float128_c++23.cc: Xfail on all
	aarch64-*-* targets.
---
 libstdc++-v3/testsuite/20_util/from_chars/8.cc     |    2 +-
 .../testsuite/20_util/to_chars/float128_c++23.cc   |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Jonathan Wakely July 11, 2024, 2:35 p.m. UTC | #1
On Thu, 11 Jul 2024 at 14:21, Alexandre Oliva <oliva@adacore.com> wrote:
>
>
> Having observed failures of these two tests on yet another aarch64
> operating system, and having concluded that the conditions that
> trigger the problem ought to be present on all aarch64 targets, I'm
> now matching any aarch64 target_os to enable the workaround.

That's concerning, aarch64-unknown-linux-gnu with glibc should work OK
for float128_t, because aarch64 already has 128-bit long double, so
there's no good reason that float128_t wouldn't work. What are the
conditions that trigger the problem?

I've only just noticed that the macro name makes no sense, as this is
about float128_t, not long double. They're distinct types (although
for aarch64 they have the same representation). So we should at the
very least rename the macro to something like SKIP_FLOAT128, but I'd
also like to understand why float128_t fails on a target where long
double works OK and has the same binary128 representation.

>
> Regstrapped on x86_64-linux-gnu, also tested with gcc-13 targeting
> aarch64.  Ok to install?
>
>
> for  libstdc++-v3/ChangeLog
>
>         * testsuite/20_util/from_chars/8.cc: Define SKIP_LONG_DOUBLE
>         on all aarch64-*-* targets.
>         * testsuite/20_util/to_chars/float128_c++23.cc: Xfail on all
>         aarch64-*-* targets.
> ---
>  libstdc++-v3/testsuite/20_util/from_chars/8.cc     |    2 +-
>  .../testsuite/20_util/to_chars/float128_c++23.cc   |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libstdc++-v3/testsuite/20_util/from_chars/8.cc b/libstdc++-v3/testsuite/20_util/from_chars/8.cc
> index bacad89943b5f..e92b64349025e 100644
> --- a/libstdc++-v3/testsuite/20_util/from_chars/8.cc
> +++ b/libstdc++-v3/testsuite/20_util/from_chars/8.cc
> @@ -17,7 +17,7 @@
>
>  // { dg-do run { target c++23 } }
>  // { dg-add-options ieee }
> -// { dg-additional-options "-DSKIP_LONG_DOUBLE" { target aarch64-*-vxworks* aarch64-*-rtems* } }
> +// { dg-additional-options "-DSKIP_LONG_DOUBLE" { target aarch64-*-* } }
>
>  #include <charconv>
>  #include <string>
> diff --git a/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc b/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
> index 6cb9cadcd2041..840131c1e5691 100644
> --- a/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
> +++ b/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
> @@ -19,7 +19,7 @@
>  // { dg-require-effective-target ieee_floats }
>  // { dg-require-effective-target size32plus }
>  // { dg-add-options ieee }
> -// { dg-xfail-run-if "from_chars limited to double-precision" { aarch64-*-vxworks* aarch64-*-rtems* } }
> +// { dg-xfail-run-if "from_chars limited to double-precision" { aarch64-*-* } }
>
>  #include <charconv>
>  #include <stdfloat>
>
>
> --
> Alexandre Oliva, happy hacker            https://FSFLA.org/blogs/lxo/
>    Free Software Activist                   GNU Toolchain Engineer
> More tolerance and less prejudice are key for inclusion and diversity
> Excluding neuro-others for not behaving ""normal"" is *not* inclusive
>
Andreas Schwab July 11, 2024, 2:54 p.m. UTC | #2
On Jul 11 2024, Jonathan Wakely wrote:

> On Thu, 11 Jul 2024 at 14:21, Alexandre Oliva <oliva@adacore.com> wrote:
>>
>>
>> Having observed failures of these two tests on yet another aarch64
>> operating system, and having concluded that the conditions that
>> trigger the problem ought to be present on all aarch64 targets, I'm
>> now matching any aarch64 target_os to enable the workaround.
>
> That's concerning, aarch64-unknown-linux-gnu with glibc should work OK
> for float128_t, because aarch64 already has 128-bit long double, so
> there's no good reason that float128_t wouldn't work. What are the
> conditions that trigger the problem?

Both tests run sucessfully on aarch64-linux.
Alexandre Oliva July 11, 2024, 4:12 p.m. UTC | #3
On Jul 11, 2024, Andreas Schwab <schwab@suse.de> wrote:

> On Jul 11 2024, Jonathan Wakely wrote:
>> On Thu, 11 Jul 2024 at 14:21, Alexandre Oliva <oliva@adacore.com> wrote:
>>> 
>>> 
>>> Having observed failures of these two tests on yet another aarch64
>>> operating system, and having concluded that the conditions that
>>> trigger the problem ought to be present on all aarch64 targets, I'm
>>> now matching any aarch64 target_os to enable the workaround.
>> 
>> That's concerning, aarch64-unknown-linux-gnu with glibc should work OK
>> for float128_t, because aarch64 already has 128-bit long double, so
>> there's no good reason that float128_t wouldn't work. What are the
>> conditions that trigger the problem?

> Both tests run sucessfully on aarch64-linux.

Thanks, I stand corrected.  I got the right answer for the wrong
question.  All aarch64 have '# define USE_LIB_FAST_FLOAT 1', but that
won't limit the precision of from_char for 128-bit float types when
strtold et al can be used for the conversion.  Patch withdrawn, on the
grounds of...  general failure to engage brain ;-D
diff mbox series

Patch

diff --git a/libstdc++-v3/testsuite/20_util/from_chars/8.cc b/libstdc++-v3/testsuite/20_util/from_chars/8.cc
index bacad89943b5f..e92b64349025e 100644
--- a/libstdc++-v3/testsuite/20_util/from_chars/8.cc
+++ b/libstdc++-v3/testsuite/20_util/from_chars/8.cc
@@ -17,7 +17,7 @@ 
 
 // { dg-do run { target c++23 } }
 // { dg-add-options ieee }
-// { dg-additional-options "-DSKIP_LONG_DOUBLE" { target aarch64-*-vxworks* aarch64-*-rtems* } }
+// { dg-additional-options "-DSKIP_LONG_DOUBLE" { target aarch64-*-* } }
 
 #include <charconv>
 #include <string>
diff --git a/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc b/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
index 6cb9cadcd2041..840131c1e5691 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
@@ -19,7 +19,7 @@ 
 // { dg-require-effective-target ieee_floats }
 // { dg-require-effective-target size32plus }
 // { dg-add-options ieee }
-// { dg-xfail-run-if "from_chars limited to double-precision" { aarch64-*-vxworks* aarch64-*-rtems* } }
+// { dg-xfail-run-if "from_chars limited to double-precision" { aarch64-*-* } }
 
 #include <charconv>
 #include <stdfloat>