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

            Bug ID: 106083
           Summary: gfortran.dg/ieee/large_1.f90 fails on powerpc64 with
                    ieee longlongs
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

make  -k check-fortran RUNTESTFLAGS="ieee.exp=gfortran.dg/ieee/large_1.f90"

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


This occurs with the compiler configured with  --with-long-double-format=ieee
on a distro (Fedora 36) which also used  --with-long-double-format=ieee.  

It fails when compiled with gcc 10, 12, and trunk but works when compiled with
gcc 11.  The code generated for gcc 11 is identical to that for gcc 12 which is
why I suspect a library difference.


spawn -ignore SIGHUP
/home/seurer/gcc/git/build/gcc-ieee/gcc/testsuite/gfortran/../../gfortran
-B/home/seurer/gcc/git/build/gcc-ieee/gcc/testsuite/gfortran/../../
-B/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libgfortran/
/home/seurer/gcc/git/gcc-ieee/gcc/testsuite/gfortran.dg/ieee/large_1.f90
-fdiagnostics-plain-output -fdiagnostics-plain-output -O0 -pedantic-errors
-fintrinsic-modules-path
/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libgfortran/
-fno-unsafe-math-optimizations -frounding-math -fsignaling-nans
-B/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libgfortran/.libs
-L/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libgfortran/.libs
-L/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libgfortran/.libs
-L/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libatomic/.libs
-B/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libquadmath/.libs
-L/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libquadmath/.libs
-L/home/seurer/gcc/git/build/gcc-ieee/powerpc64le-unknown-linux-gnu/./libquadmath/.libs
-lm -o ./large_1.exe^M
PASS: gfortran.dg/ieee/large_1.f90   -O0  (test for excess errors)
...
spawn [open ...]^M
STOP 2
FAIL: gfortran.dg/ieee/large_1.f90   -O0  execution test


The code from large_1.f90 that fails is just:

! Testing IEEE modules on large real kinds

program test

  use ieee_arithmetic
  implicit none

  ! k1 and k2 will be large real kinds, if supported, and single/double
  ! otherwise
  integer, parameter :: k1 = &
    max(ieee_selected_real_kind(precision(0.d0) + 1), kind(0.))
  if (ieee_is_finite(ieee_value(0._k1, ieee_negative_inf))) STOP 2
end program test

Reply via email to