This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/84615] [8 Regression] Executable Segfault for tests compiled with -fdefault-integer-8 and -m32


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

--- Comment #6 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
The following test does not need -fdefault-integer-8, but only -m32 to give a
wrong-code:

module mykinds
  implicit none
  integer, parameter :: ik1 = selected_int_kind (2)
  integer, parameter :: ik2 = selected_int_kind (4)
!  integer, parameter :: ik = selected_int_kind (8)
  integer, parameter :: ik = selected_int_kind (12)
  integer, parameter :: dp = selected_real_kind (15,300)
end module mykinds

module spec_xpr
  use mykinds
  implicit none
  integer(ik2) c_size
contains
  pure function tricky (str,ugly)
    character(*), intent(in) :: str
    integer(ik1) :: ia_ik1(len(str))
    interface yoagly
      pure function ugly(n)
        use mykinds
        implicit none
        integer(ik), intent(in) :: n
        complex(dp) :: ugly(3*n+2)
      end function ugly
    end interface yoagly
    logical(ik) :: la(size (yoagly (size (ia_ik1, kind=ik))))
    integer(ik) :: i
    character(tricky_helper ((/(.TRUE._ik, i=1, size (la))/)) + c_size) ::
tricky

    tricky = transfer (yoagly (1_ik), tricky)
  end function tricky

  pure function tricky_helper (lb)
    logical(ik), intent(in) :: lb(:)
    integer(ik) :: tricky_helper
    tricky_helper = 2 * size (lb) + 3
  end function tricky_helper
end module spec_xpr

module xtra_fun
  implicit none
contains
  pure function butt_ugly(n)
    use mykinds
    implicit none
    integer(ik), intent(in) :: n
    complex(dp) :: butt_ugly(3*n+2)
    real(dp) pi, sq2

    pi = 4 * atan (1.0_dp)
    sq2 = sqrt (2.0_dp)
    butt_ugly = cmplx (pi, sq2, dp)
  end function butt_ugly
end module xtra_fun

program spec_test
  use mykinds
  use spec_xpr
  use xtra_fun
  implicit none
  character(54) :: chr

  c_size = 5
  if (tricky ('Help me', butt_ugly) .ne. transfer (butt_ugly (1_ik), chr)) call
abort ()
end program spec_test

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]