public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
@ 2014-11-22  8:58 burnus at gcc dot gnu.org
  2014-11-28 13:10 ` [Bug fortran/64022] " fxcoudert at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: burnus at gcc dot gnu.org @ 2014-11-22  8:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

            Bug ID: 64022
           Summary: [F2003][IEEE] ieee_support_flag does not handle
                    kind=10 and kind=16 REAL variables
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: fxcoudert at gcc dot gnu.org

Reported by  Ian D Chivers and Jane Sleightholme. The following program is
rejected at compile time with:

    if ( ieee_support_flag(ieee_all(i),z) ) then
         1
Error: There is no specific function for the generic 'ieee_support_flag' at (1)

In the program below, "z" is a REAL(kind=16) variable but kind=10 has the same
issue.


module precision_module
  implicit none
  integer, parameter :: &
    sp = selected_real_kind( 6,  37)
  integer, parameter :: &
    dp = selected_real_kind(15, 307)
  integer, parameter :: &
    qp = selected_real_kind(30, 291)
end module precision_module

program ch3402
  use precision_module
  use ieee_arithmetic

  implicit none

  real (sp)   :: x = 1.0
  real (dp)   :: y = 1.0_dp
  real (qp)   :: z = 1.0_qp

  integer :: i

  character*20 , dimension(5) :: flags = &
    (/ 'IEEE_DIVIDE_BY_ZERO ' , &
       'IEEE_INEXACT        ' , &
       'IEEE_INVALID        ' , &
       'IEEE_OVERFLOW       ' , &
       'IEEE_UNDERFLOW      ' /)

  do i=1,5
    if ( ieee_support_flag(ieee_all(i),x) ) then
      write(unit=*,fmt=10) flags(i)
      10 format(a20,' 32 bit support')
    endif
    if ( ieee_support_flag(ieee_all(i),y) ) then
      write(unit=*,fmt=20) flags(i)
      20 format(a20,' 64 bit support')

    endif
    if ( ieee_support_flag(ieee_all(i),z) ) then
      write(unit=*,fmt=30)flags(i) 
      30 format(a20,'128 bit support')
    endif
  end do
end program ch3402


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
@ 2014-11-28 13:10 ` fxcoudert at gcc dot gnu.org
  2015-04-22 12:02 ` jakub at gcc dot gnu.org
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2014-11-28 13:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #2 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Additional (related) issue:

The following program

module precision_module
 implicit none
 integer, parameter :: &
   sp = selected_real_kind( 6,  37)
 integer, parameter :: &
   dp = selected_real_kind(15, 307)
 integer, parameter :: &
   qp = selected_real_kind(30, 291)
end module precision_module

program ch3406

 use precision_module
 use ieee_arithmetic
 implicit none

 real (sp)   :: x0        = 0.0
 real (dp)   :: y0        = 0.0_dp
 real (qp)   :: z0        = 0.0_qp

 real (sp)   :: x1        = 1.0
 real (dp)   :: y1        = 1.0_dp
 real (qp)   :: z1        = 1.0_qp

 real (sp)   :: xnan      = 1.0
 real (dp)   :: ynan      = 1.0_dp
 real (qp)   :: znan      = 1.0_qp

 real (sp)   :: xinfinite = 1.0
 real (dp)   :: yinfinite = 1.0_dp
 real (qp)   :: zinfinite = 1.0_qp

 xinfinite=x1/x0
 yinfinite=y1/y0
 zinfinite=z1/z0
 xnan=x0/x0
 ynan=y0/y0
 znan=z0/z0

 if ( ieee_support_datatype(x1) ) then
   print *,'  32 bit IEEE support'
   print *,'     inf ' , ieee_support_inf(x1)
   print *,'     nan ' , ieee_support_nan(x1)
   print *,' 1/0 finite',ieee_is_finite(xinfinite)
   print *,' 0/0 nan',ieee_is_nan(xnan)
 endif

 if ( ieee_support_datatype(y1) ) then
   print *,'  64 bit IEEE support'
   print *,'     inf ' , ieee_support_inf(y1)
   print *,'     nan ' , ieee_support_nan(y1)
   print *,' 1/0 finite',ieee_is_finite(yinfinite)
   print *,' 0/0 nan',ieee_is_nan(ynan)
 endif

 if ( ieee_support_datatype(z1) ) then
   print *,' 128 bit IEEE support'
   print *,'     inf ' , ieee_support_inf(z1)
   print *,'     nan ' , ieee_support_nan(z1)
   print *,' 1/0 finite',ieee_is_finite(zinfinite)
   print *,' 0/0 nan',ieee_is_nan(znan)
 endif

end program ch3406

generates the following compilation message

d:\document\fortran\third_edition\examples>gfortran ch3406.f90
ch3406.f90:50.26:

   print *,' 1/0 finite',ieee_is_finite(zinfinite)
                         1
Error: There is no specific function for the generic 'ieee_is_finite' at (1)
ch3406.f90:51.23:

   print *,' 0/0 nan',ieee_is_nan(znan)
                      1
Error: There is no specific function for the generic 'ieee_is_nan' at (1)


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
  2014-11-28 13:10 ` [Bug fortran/64022] " fxcoudert at gcc dot gnu.org
@ 2015-04-22 12:02 ` jakub at gcc dot gnu.org
  2015-07-16  9:16 ` rguenth at gcc dot gnu.org
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2015-04-22 12:02 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|5.0                         |5.2

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 5.1 has been released.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
  2014-11-28 13:10 ` [Bug fortran/64022] " fxcoudert at gcc dot gnu.org
  2015-04-22 12:02 ` jakub at gcc dot gnu.org
@ 2015-07-16  9:16 ` rguenth at gcc dot gnu.org
  2015-08-04  7:27 ` fxcoudert at gcc dot gnu.org
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-07-16  9:16 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|5.2                         |5.3

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 5.2 is being released, adjusting target milestone to 5.3.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2015-07-16  9:16 ` rguenth at gcc dot gnu.org
@ 2015-08-04  7:27 ` fxcoudert at gcc dot gnu.org
  2015-08-04 15:08 ` hjl.tools at gmail dot com
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2015-08-04  7:27 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #5 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Author: fxcoudert
Date: Tue Aug  4 07:27:19 2015
New Revision: 226548

URL: https://gcc.gnu.org/viewcvs?rev=226548&root=gcc&view=rev
Log:
        PR fortran/64022

        * simplify.c (gfc_simplify_ieee_selected_real_kind): Extend IEEE
        support to all real kinds.

        * ieee/ieee_exceptions.F90: Support all real kinds.
        * ieee/ieee_arithmetic.F90: Likewise.
        * ieee/ieee_helper.c (ieee_class_helper_10,
        ieee_class_helper_16): New functions
        * gfortran.map (GFORTRAN_1.7): Add entries.

        * gfortran.dg/ieee/ieee_7.f90: Adjust test.
        * gfortran.dg/ieee/large_1.f90: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/ieee/large_1.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/simplify.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/ieee/ieee_7.f90
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/gfortran.map
    trunk/libgfortran/ieee/ieee_arithmetic.F90
    trunk/libgfortran/ieee/ieee_exceptions.F90
    trunk/libgfortran/ieee/ieee_helper.c


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2015-08-04  7:27 ` fxcoudert at gcc dot gnu.org
@ 2015-08-04 15:08 ` hjl.tools at gmail dot com
  2015-08-04 15:18 ` kargl at gcc dot gnu.org
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: hjl.tools at gmail dot com @ 2015-08-04 15:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> ---
I am seeing:

FAIL: gfortran.dg/ieee/large_1.f90   -O0  (test for excess errors)
FAIL: gfortran.dg/ieee/large_1.f90   -O1  (test for excess errors)
FAIL: gfortran.dg/ieee/large_1.f90   -O2  (test for excess errors)
FAIL: gfortran.dg/ieee/large_1.f90   -O3 -fomit-frame-pointer -funroll-loops
-fpeel-loops -ftracer -finline-functions  (test for excess errors)
FAIL: gfortran.dg/ieee/large_1.f90   -O3 -g  (test for excess errors)
FAIL: gfortran.dg/ieee/large_1.f90   -Os  (test for excess errors)

on Fedora 22/x86.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2015-08-04 15:08 ` hjl.tools at gmail dot com
@ 2015-08-04 15:18 ` kargl at gcc dot gnu.org
  2015-08-04 16:06 ` fxcoudert at gcc dot gnu.org
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: kargl at gcc dot gnu.org @ 2015-08-04 15:18 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #7 from kargl at gcc dot gnu.org ---
(In reply to H.J. Lu from comment #6)
> I am seeing:
> 
> FAIL: gfortran.dg/ieee/large_1.f90   -O0  (test for excess errors)
> FAIL: gfortran.dg/ieee/large_1.f90   -O1  (test for excess errors)
> FAIL: gfortran.dg/ieee/large_1.f90   -O2  (test for excess errors)
> FAIL: gfortran.dg/ieee/large_1.f90   -O3 -fomit-frame-pointer -funroll-loops
> -fpeel-loops -ftracer -finline-functions  (test for excess errors)
> FAIL: gfortran.dg/ieee/large_1.f90   -O3 -g  (test for excess errors)
> FAIL: gfortran.dg/ieee/large_1.f90   -Os  (test for excess errors)
> 
> on Fedora 22/x86.

So, what is the the log file?  We can't see 
inside your computer or head!


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2015-08-04 15:18 ` kargl at gcc dot gnu.org
@ 2015-08-04 16:06 ` fxcoudert at gcc dot gnu.org
  2015-08-06  8:39 ` fxcoudert at gcc dot gnu.org
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2015-08-04 16:06 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #8 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #6)
> FAIL: gfortran.dg/ieee/large_1.f90   -O0  (test for excess errors)

This is fixed by the following patch, waiting for approval:
https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00124.html


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2015-08-04 16:06 ` fxcoudert at gcc dot gnu.org
@ 2015-08-06  8:39 ` fxcoudert at gcc dot gnu.org
  2015-08-06 20:55 ` fxcoudert at gcc dot gnu.org
  2015-08-10  5:14 ` uros at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2015-08-06  8:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #9 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Author: fxcoudert
Date: Thu Aug  6 08:38:59 2015
New Revision: 226665

URL: https://gcc.gnu.org/viewcvs?rev=226665&root=gcc&view=rev
Log:
        PR fortran/64022
        * gfortran.dg/ieee/large_1.f90: Adjust test.

Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/ieee/large_1.f90


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2015-08-06  8:39 ` fxcoudert at gcc dot gnu.org
@ 2015-08-06 20:55 ` fxcoudert at gcc dot gnu.org
  2015-08-10  5:14 ` uros at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2015-08-06 20:55 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
            Version|5.0                         |6.0
         Resolution|---                         |FIXED

--- Comment #11 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Fixed on trunk.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables
  2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2015-08-06 20:55 ` fxcoudert at gcc dot gnu.org
@ 2015-08-10  5:14 ` uros at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: uros at gcc dot gnu.org @ 2015-08-10  5:14 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #12 from uros at gcc dot gnu.org ---
Author: uros
Date: Mon Aug 10 05:13:01 2015
New Revision: 226755

URL: https://gcc.gnu.org/viewcvs?rev=226755&root=gcc&view=rev
Log:
        PR fortran/64022
        * gfortran.dg/ieee/large_4.f90: New test.


Added:
    trunk/gcc/testsuite/gfortran.dg/ieee/large_4.f90
Modified:
    trunk/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-08-10  5:14 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-22  8:58 [Bug fortran/64022] New: [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables burnus at gcc dot gnu.org
2014-11-28 13:10 ` [Bug fortran/64022] " fxcoudert at gcc dot gnu.org
2015-04-22 12:02 ` jakub at gcc dot gnu.org
2015-07-16  9:16 ` rguenth at gcc dot gnu.org
2015-08-04  7:27 ` fxcoudert at gcc dot gnu.org
2015-08-04 15:08 ` hjl.tools at gmail dot com
2015-08-04 15:18 ` kargl at gcc dot gnu.org
2015-08-04 16:06 ` fxcoudert at gcc dot gnu.org
2015-08-06  8:39 ` fxcoudert at gcc dot gnu.org
2015-08-06 20:55 ` fxcoudert at gcc dot gnu.org
2015-08-10  5:14 ` uros at gcc dot gnu.org

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).