52 lines
1.6 KiB
Fortran
52 lines
1.6 KiB
Fortran
c { dg-do compile }
|
|
* Date: Fri, 17 Apr 1998 14:12:51 +0200
|
|
* From: Jean-Paul Jeannot <jeannot@gx-tech.fr>
|
|
* Organization: GX Technology France
|
|
* To: egcs-bugs@cygnus.com
|
|
* Subject: identified bug in g77 on Alpha
|
|
*
|
|
* Dear Sir,
|
|
*
|
|
* You will find below the assembly code of a simple Fortran routine which
|
|
* crashes with segmentation fault when storing the first element
|
|
* in( jT_f-hd_T ) = Xsp
|
|
* whereas everything is fine when commenting this line.
|
|
*
|
|
* The assembly code (generated with
|
|
* -ffast-math -fexpensive-optimizations -fomit-frame-pointer -fno-inline
|
|
* or with -O5)
|
|
* uses a zapnot instruction to copy an address.
|
|
* BUT the zapnot parameter is 15 (copuing 4 bytes) instead of 255 (to copy
|
|
* 8 bytes).
|
|
*
|
|
* I guess this is typically a 64 bit issue. As, from my understanding,
|
|
* zapnots are used a lot to copy registers, this may create problems
|
|
* elsewhere.
|
|
*
|
|
* Thanks for your help
|
|
*
|
|
* Jean-Paul Jeannot
|
|
*
|
|
subroutine simul_trace( in, Xsp, Ysp, Xrcv, Yrcv )
|
|
|
|
c Next declaration added on transfer to gfortran testsuite
|
|
integer hd_S, hd_Z, hd_T
|
|
|
|
common /Idim/ jT_f, jT_l, nT, nT_dim
|
|
common /Idim/ jZ_f, jZ_l, nZ, nZ_dim
|
|
common /Idim/ jZ2_f, jZ2_l, nZ2, nZ2_dim
|
|
common /Idim/ jzs_f, jzs_l, nzs, nzs_dim, l_amp
|
|
common /Idim/ hd_S, hd_Z, hd_T
|
|
common /Idim/ nlay, nlayz
|
|
common /Idim/ n_work
|
|
common /Idim/ nb_calls
|
|
|
|
real Xsp, Ysp, Xrcv, Yrcv
|
|
real in( jT_f-hd_T : jT_l )
|
|
|
|
in( jT_f-hd_T ) = Xsp
|
|
in( jT_f-hd_T + 1 ) = Ysp
|
|
in( jT_f-hd_T + 2 ) = Xrcv
|
|
in( jT_f-hd_T + 3 ) = Yrcv
|
|
end
|