https://gcc.gnu.org/g:d4d4e874dee2d5b0abe5ceb9f2a78e5602e86030
commit r15-7274-gd4d4e874dee2d5b0abe5ceb9f2a78e5602e86030 Author: Siddhesh Poyarekar <siddh...@gotplt.org> Date: Thu Dec 19 08:09:15 2024 -0500 testsuite/118127: Pass fortran tests on ppc64le for IEEE128 long doubles Denormal behaviour is well defined for IEEE128 long doubles, so XFAIL some gfortran tests only for targets with the IBM128 long double ABI. gcc/testsuite/ChangeLog: PR testsuite/118127 * lib/target-supports.exp (check_effective_target_long_double_is_ibm128): New procedure. * gfortran.dg/default_format_2.f90: xfail for long_double_is_ibm128. * gfortran.dg/default_format_denormal_2.f90: Likewise. * gfortran.dg/large_real_kind_form_io_2.f90: Likewise. Signed-off-by: Siddhesh Poyarekar <siddh...@gotplt.org> Diff: --- gcc/testsuite/gfortran.dg/default_format_2.f90 | 2 +- gcc/testsuite/gfortran.dg/default_format_denormal_2.f90 | 2 +- gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 | 2 +- gcc/testsuite/lib/target-supports.exp | 14 ++++++++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/gfortran.dg/default_format_2.f90 b/gcc/testsuite/gfortran.dg/default_format_2.f90 index 5ad7b3a64295..dd04d3aae981 100644 --- a/gcc/testsuite/gfortran.dg/default_format_2.f90 +++ b/gcc/testsuite/gfortran.dg/default_format_2.f90 @@ -1,4 +1,4 @@ -! { dg-do run { xfail powerpc*-apple-darwin* powerpc*-*-linux* } } +! { dg-do run { xfail long_double_is_ibm128 } } ! { dg-require-effective-target fortran_large_real } ! Test XFAILed on these platforms because the system's printf() lacks ! proper support for denormalized long doubles. See PR24685 diff --git a/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90 b/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90 index e9ccf5e8f61d..ae056d506a29 100644 --- a/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90 +++ b/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90 @@ -1,4 +1,4 @@ -! { dg-do run { xfail powerpc*-*-* } } +! { dg-do run { xfail long_double_is_ibm128 } } ! { dg-require-effective-target fortran_large_real } ! Test XFAILed on this platform because the system's printf() lacks ! proper support for denormalized long doubles. See PR24685 diff --git a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 index 34b8aec462c6..7b5ca645b62b 100644 --- a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 +++ b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 @@ -1,4 +1,4 @@ -! { dg-do run { xfail powerpc*-apple-darwin* powerpc*-*-linux* } } +! { dg-do run { xfail long_double_is_ibm128 } } ! Test XFAILed on these platforms because the system's printf() lacks ! proper support for denormalized long doubles. See PR24685 ! { dg-require-effective-target fortran_large_real } diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 9ad1e1965bbd..60e24129bd58 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1854,6 +1854,20 @@ proc check_effective_target_fortran_integer_16 { } { }] } +# Check if long double on the target defaults to the IBM extended format. + +proc check_effective_target_long_double_is_ibm128 { } { + if { ![istarget powerpc*-*-*] } { + return 0 + } + + return [check_no_compiler_messages long_double_is_ibm128 assembly { + #ifndef __LONG_DOUBLE_IBM128__ + #error "__LONG_DOUBLE_IBM128__ not defined" + #endif + }] +} + # Return 1 if we can statically link libgfortran, 0 otherwise. # # When the target name changes, replace the cached result.