Le jeudi 05 mai 2011 à 15:37 +0200, Matthias Klose a écrit :
> On 05/05/2011 03:00 PM, Sylvestre Ledru wrote:
> > Le jeudi 05 mai 2011 à 14:10 +0200, Matthias Klose a écrit :
> >> Package: blas
> >> Version: 1.2-8
> >> Severity: serious
> >>
> >> currently fails to build on i386 with -O2 or -O3.
> > OK, I have been able to reproduce it on my system.
> >
> >> didn't check if it's exposed
> >> by eglibc or gcc, or if some upstream fixes are needed (the upstream site
> >> has
> >> some new files dating from April 2011).
> > Where did you see the new files ?
>
> ftp://ftp.netlib.org/blas, as mentioned in the copyright.
>
> e.g.
> -rw-rw-r-- 1 1294 732 1081 Apr 19 15:11 zcopy.f
> -rw-rw-r-- 1 1294 732 1294 Apr 19 15:11 zdotc.f
OK. Thanks.
Let's see what upstream says.
For the record, you will see the diff attached. Don't think it is
related (looks like GOTO removed).
Sylvestre
--- src/zcopy.f 2007-12-29 16:11:10.000000000 +0100
+++ zcopy.f 2011-05-05 15:40:01.000000000 +0200
@@ -9,35 +9,41 @@
* Purpose
* =======
*
-* copies a vector, x, to a vector, y.
+* ZCOPY copies a vector, x, to a vector, y.
+*
+* Further Details
+* ===============
+*
* jack dongarra, linpack, 4/11/78.
* modified 12/3/93, array(1) declarations changed to array(*)
*
+* =====================================================================
*
* .. Local Scalars ..
INTEGER I,IX,IY
* ..
IF (N.LE.0) RETURN
- IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-* code for unequal increments or equal increments
-* not equal to 1
-*
- IX = 1
- IY = 1
- IF (INCX.LT.0) IX = (-N+1)*INCX + 1
- IF (INCY.LT.0) IY = (-N+1)*INCY + 1
- DO 10 I = 1,N
- ZY(IY) = ZX(IX)
- IX = IX + INCX
- IY = IY + INCY
- 10 CONTINUE
- RETURN
+ IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
*
* code for both increments equal to 1
*
- 20 DO 30 I = 1,N
+ DO I = 1,N
ZY(I) = ZX(I)
- 30 CONTINUE
+ END DO
+ ELSE
+*
+* code for unequal increments or equal increments
+* not equal to 1
+*
+ IX = 1
+ IY = 1
+ IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+ IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+ DO I = 1,N
+ ZY(IY) = ZX(IX)
+ IX = IX + INCX
+ IY = IY + INCY
+ END DO
+ END IF
RETURN
END
--- src/zdotc.f 2007-12-29 16:11:10.000000000 +0100
+++ zdotc.f 2011-05-05 15:40:04.000000000 +0200
@@ -17,6 +17,8 @@
* jack dongarra, 3/11/78.
* modified 12/3/93, array(1) declarations changed to array(*)
*
+* =====================================================================
+*
* .. Local Scalars ..
DOUBLE COMPLEX ZTEMP
INTEGER I,IX,IY
@@ -27,28 +29,28 @@
ZTEMP = (0.0d0,0.0d0)
ZDOTC = (0.0d0,0.0d0)
IF (N.LE.0) RETURN
- IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+ IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
*
-* code for unequal increments or equal increments
-* not equal to 1
+* code for both increments equal to 1
*
- IX = 1
- IY = 1
- IF (INCX.LT.0) IX = (-N+1)*INCX + 1
- IF (INCY.LT.0) IY = (-N+1)*INCY + 1
- DO 10 I = 1,N
- ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
- IX = IX + INCX
- IY = IY + INCY
- 10 CONTINUE
- ZDOTC = ZTEMP
- RETURN
+ DO I = 1,N
+ ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(I)
+ END DO
+ ELSE
*
-* code for both increments equal to 1
+* code for unequal increments or equal increments
+* not equal to 1
*
- 20 DO 30 I = 1,N
- ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(I)
- 30 CONTINUE
+ IX = 1
+ IY = 1
+ IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+ IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+ DO I = 1,N
+ ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
+ IX = IX + INCX
+ IY = IY + INCY
+ END DO
+ END IF
ZDOTC = ZTEMP
RETURN
END