[Bug middle-end/31030] [4.3 Regression] Segmentation fault with -O2
dominiq at lps dot ens dot fr
gcc-bugzilla@gcc.gnu.org
Sun Mar 11 12:58:00 GMT 2007
------- Comment #3 from dominiq at lps dot ens dot fr 2007-03-11 12:58 -------
The following reduced test case
PROGRAM LINPK
PARAMETER (N=2500,LDA=N+1)
DOUBLE PRECISION a(LDA,N) , b(N) , x(N)
a = 1.0
print *, 'before DSCAL'
CALL DSCAL(N-1,1.0D0,A(2,1),1)
print *, 'after DSCAL'
END
SUBROUTINE DSCAL(N,Da,Dx,Incx)
DOUBLE PRECISION Da , Dx(*)
INTEGER i , Incx , m , mp1 , N , nincx
! print *, N, Da, Dx(MOD(N,5)+1), Incx
IF ( N.GT.0 ) THEN
mp1 = MOD(N,5) + 1
DO i = mp1 , N , 5
Dx(i) = Da*Dx(i)
ENDDO
ENDIF
END
shows the bug:
[karma] lin/source% gfc -O2 linpk_red.f90
[karma] lin/source% a.out
before DSCAL
Bus error
Looking at linpk_red.f90.116t.optimized, the loop in DSCAL reads
<L2>:;
D.1053 = (<unnamed type>) ivtmp.54;
MEM[index: D.1053] = pretmp.36 * MEM[index: D.1053];
ivtmp.45 = ivtmp.45 + 1;
ivtmp.54 = ivtmp.54 + 40;
if (ivtmp.45 == 2147483647) goto L.4; else goto <L2>;
I don't know the origin of 2147483647, but it looks pretty bad!-(even for me)
Note that DSCAL appears in linpk.f90, rnflow.f90, and test_fpu.f90.
PS this is my second attempt to post this, I apologize if the first one shows
up later.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31030
More information about the Gcc-bugs
mailing list