re PR fortran/82143 (add a -fdefault-real-16 flag)
authorJanus Weil <janus@gcc.gnu.org>
Tue, 26 Sep 2017 20:28:00 +0000 (22:28 +0200)
committerJanus Weil <janus@gcc.gnu.org>
Tue, 26 Sep 2017 20:28:00 +0000 (22:28 +0200)
2017-09-26  Janus Weil  <janus@gcc.gnu.org>

PR fortran/82143
PR fortran/82324
* doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.

2017-09-26  Janus Weil  <janus@gcc.gnu.org>

PR fortran/82143
PR fortran/82324
* lib/target-supports.exp (check_effective_target_fortran_real_10): New.
* gfortran.dg/promotion_3.f90: Only run if real(16) is available.
* gfortran.dg/promotion_4.f90: Only run if real(10) is available.
Don't assume that DOUBLE PRECISION has kind=16.

From-SVN: r253214

gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/promotion_3.f90
gcc/testsuite/gfortran.dg/promotion_4.f90
gcc/testsuite/lib/target-supports.exp

index 54acc7810f70e769ff6954cd17ad4e6e629aa482..d80b6a07c139d8e714cadae0efabcfe1ed485ef9 100644 (file)
@@ -1,3 +1,9 @@
+2017-09-26  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/82143
+       PR fortran/82324
+       * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
+
 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
index 9901c940e79767041230daab11ec61ead8e14936..56e1b4eb103ab412b29d6dcd9b556515ebc2ac63 100644 (file)
@@ -1357,6 +1357,12 @@ Target has runtime support for any options added with
 @item fortran_integer_16
 Target supports Fortran @code{integer} that is 16 bytes or longer.
 
+@item fortran_real_10
+Target supports Fortran @code{real} that is 10 bytes or longer.
+
+@item fortran_real_16
+Target supports Fortran @code{real} that is 16 bytes or longer.
+
 @item fortran_large_int
 Target supports Fortran @code{integer} kinds larger than @code{integer(8)}.
 
index 697d0639dc5db2f13bd3932d0419a289877324cc..38591f42c89c88a5ad73565e4a244a1c824c0f2f 100644 (file)
@@ -1,3 +1,12 @@
+2017-09-26  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/82143
+       PR fortran/82324
+       * lib/target-supports.exp (check_effective_target_fortran_real_10): New.
+       * gfortran.dg/promotion_3.f90: Only run if real(16) is available.
+       * gfortran.dg/promotion_4.f90: Only run if real(10) is available.
+       Don't assume that DOUBLE PRECISION has kind=16.
+
 2017-09-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        * gfortran.dg/gomp/associate1.f90: Really commit change
index 7c9b5917fc8f013c32fdc43d0551af7a2bc84e5e..3571bd175b27ce6a1dd3c2b004f77a1a6835872d 100644 (file)
@@ -1,5 +1,6 @@
 ! { dg-do run }
 ! { dg-options "-fdefault-real-16" }
+! { dg-require-effective-target fortran_real_16 }
 !
 ! PR 82143: add a -fdefault-real-16 flag
 !
index 0aa1c8edbc4c97bff133a8faba9e276d1d209472..8378cdd264a762f02d4cb1c04808518dfb82ddc0 100644 (file)
@@ -1,5 +1,6 @@
 ! { dg-do run }
 ! { dg-options "-fdefault-real-10" }
+! { dg-require-effective-target fortran_real_10 }
 !
 ! PR 82143: add a -fdefault-real-16 flag
 !
@@ -12,5 +13,5 @@ double precision :: d
 if (kind(r4) /= 4) call abort
 if (kind(r8) /= 8) call abort
 if (kind(r) /= 10) call abort
-if (kind(d) /= 16) call abort
+if (kind(d)  < 10) call abort
 end
index 8b2579798ee2504aeb78e85ba54741c5ad037528..57f646ce2df5bcd5619870403242e73f6e91ff77 100644 (file)
@@ -1464,6 +1464,20 @@ proc check_effective_target_fortran_real_16 { } {
     }]
 }
 
+# Return 1 if the target supports Fortran real kind 10,
+# 0 otherwise. Contrary to check_effective_target_fortran_large_real
+# this checks for real(10) only.
+#
+# When the target name changes, replace the cached result.
+
+proc check_effective_target_fortran_real_10 { } {
+    return [check_no_compiler_messages fortran_real_10 executable {
+       ! Fortran
+       real(kind=10) :: x
+       x = cos (x)
+       end
+    }]
+}
 
 # Return 1 if the target supports Fortran's IEEE modules,
 # 0 otherwise.