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.

Reply via email to