This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/84615] [8 Regression] Executable Segfault for tests compiled with -fdefault-integer-8 and -m32
- From: "dominiq at lps dot ens.fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 10 Mar 2018 07:30:34 +0000
- Subject: [Bug fortran/84615] [8 Regression] Executable Segfault for tests compiled with -fdefault-integer-8 and -m32
- Auto-submitted: auto-generated
- References: <bug-84615-4@http.gcc.gnu.org/bugzilla/>
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