+2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gfortran.dg/pr40021.f: Moved to ...
+ * gfortran.fortran-torture/execute/pr40021.f: Here.
+
2009-05-06 Janis Johnson <janis187@us.ibm.com>
PR middle-end/39986
2009-05-06 Michael Matz <matz@suse.de>
+ PR middle-end/40021
* gfortran.dg/pr40021.f: New test.
2009-05-06 Le-Chun Wu <lcwu@google.com>
+++ /dev/null
-! { dg-do run { target i?86-*-* x86_64-*-* } }
-! { dg-require-effective-target ilp32 }
-! { dg-options "-O2 -ftree-vectorize -msse2 -mfpmath=sse -ffast-math" }
- PROGRAM test
- DOUBLE PRECISION DA
- INTEGER I, N
- DOUBLE PRECISION DX(9),DY(9)
-
- EXTERNAL DAXPY
- N=5
- DA=1.0
- DATA DX/-2, -1, -3, -4, 1, 2, 10, 15, 14/
- DATA DY/0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/
- CALL DAXPY (N,DA,DX,DY)
- DO 10 I = 1, N
- if (DX(I).ne.DY(I)) call abort
-10 CONTINUE
- STOP
- END
-
- SUBROUTINE DAXPY(N,DA,DX,DY)
- DOUBLE PRECISION DA
- INTEGER N
- DOUBLE PRECISION DX(*),DY(*)
- INTEGER I,IX,IY,M,MP1
- INTRINSIC MOD
- IF (N.LE.0) RETURN
- 20 M = MOD(N,4)
- IF (M.EQ.0) GO TO 40
- DO 30 I = 1,M
- DY(I) = DY(I) + DA*DX(I)
- 30 CONTINUE
- IF (N.LT.4) RETURN
- 40 MP1 = M + 1
- DO 50 I = MP1,N,4
- DY(I) = DY(I) + DA*DX(I)
- DY(I+1) = DY(I+1) + DA*DX(I+1)
- DY(I+2) = DY(I+2) + DA*DX(I+2)
- DY(I+3) = DY(I+3) + DA*DX(I+3)
- 50 CONTINUE
- RETURN
- END
--- /dev/null
+C Derived from lapack
+ PROGRAM test
+ DOUBLE PRECISION DA
+ INTEGER I, N
+ DOUBLE PRECISION DX(9),DY(9)
+
+ EXTERNAL DAXPY
+ N=5
+ DA=1.0
+ DATA DX/-2, -1, -3, -4, 1, 2, 10, 15, 14/
+ DATA DY/0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/
+ CALL DAXPY (N,DA,DX,DY)
+ DO 10 I = 1, N
+ if (DX(I).ne.DY(I)) call abort
+10 CONTINUE
+ STOP
+ END
+
+ SUBROUTINE DAXPY(N,DA,DX,DY)
+ DOUBLE PRECISION DA
+ INTEGER N
+ DOUBLE PRECISION DX(*),DY(*)
+ INTEGER I,IX,IY,M,MP1
+ INTRINSIC MOD
+ IF (N.LE.0) RETURN
+ 20 M = MOD(N,4)
+ IF (M.EQ.0) GO TO 40
+ DO 30 I = 1,M
+ DY(I) = DY(I) + DA*DX(I)
+ 30 CONTINUE
+ IF (N.LT.4) RETURN
+ 40 MP1 = M + 1
+ DO 50 I = MP1,N,4
+ DY(I) = DY(I) + DA*DX(I)
+ DY(I+1) = DY(I+1) + DA*DX(I+1)
+ DY(I+2) = DY(I+2) + DA*DX(I+2)
+ DY(I+3) = DY(I+3) + DA*DX(I+3)
+ 50 CONTINUE
+ RETURN
+ END