Hi, When I try to build LAPACK (http://www.netlib.org/lapack/) I get the following ICE when I try to compile clatm5.f:
[EMAIL PROTECTED] MATGEN]$ gfortran -ffast-math -O3 -c clatm5.f clatm5.f: In function 'clatm5': clatm5.f:1: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. Note: [EMAIL PROTECTED] MATGEN]$ gfortran -v Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../../gcc-4.1.0/configure --prefix=/usr/local/gcc41 --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --enable-languages=c,c++,fortran Thread model: posix gcc version 4.1.0 [EMAIL PROTECTED] MATGEN]$ uname -a Linux fn3 2.6.12-1.1447_FC4smp #1 SMP Fri Aug 26 21:03:12 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux (Slightly patched Fedora Core 4 distro) Note also that the clatm5.f file is not part of the liblapack.a library itself. It comes in the LAPACK package and it is used by example programs to test the LAPACK library. We can live without it. Here it is: SUBROUTINE CLATM5( PRTYPE, M, N, A, LDA, B, LDB, C, LDC, D, LDD, $ E, LDE, F, LDF, R, LDR, L, LDL, ALPHA, QBLCKA, $ QBLCKB ) * * -- LAPACK test routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * June 30, 1999 * * .. Scalar Arguments .. INTEGER LDA, LDB, LDC, LDD, LDE, LDF, LDL, LDR, M, N, $ PRTYPE, QBLCKA, QBLCKB REAL ALPHA * .. * .. Array Arguments .. COMPLEX A( LDA, * ), B( LDB, * ), C( LDC, * ), $ D( LDD, * ), E( LDE, * ), F( LDF, * ), $ L( LDL, * ), R( LDR, * ) * .. * * Purpose * ======= * * CLATM5 generates matrices involved in the Generalized Sylvester * equation: * * A * R - L * B = C * D * R - L * E = F * * They also satisfy (the diagonalization condition) * * [ I -L ] ( [ A -C ], [ D -F ] ) [ I R ] = ( [ A ], [ D ] ) * [ I ] ( [ B ] [ E ] ) [ I ] ( [ B ] [ E ] ) * * * Arguments * ========= * * PRTYPE (input) INTEGER * "Points" to a certian type of the matrices to generate * (see futher details). * * M (input) INTEGER * Specifies the order of A and D and the number of rows in * C, F, R and L. * * N (input) INTEGER * Specifies the order of B and E and the number of columns in * C, F, R and L. * * A (output) COMPLEX array, dimension (LDA, M). * On exit A M-by-M is initialized according to PRTYPE. * * LDA (input) INTEGER * The leading dimension of A. * * B (output) COMPLEX array, dimension (LDB, N). * On exit B N-by-N is initialized according to PRTYPE. * * LDB (input) INTEGER * The leading dimension of B. * * C (output) COMPLEX array, dimension (LDC, N). * On exit C M-by-N is initialized according to PRTYPE. * * LDC (input) INTEGER * The leading dimension of C. * * D (output) COMPLEX array, dimension (LDD, M). * On exit D M-by-M is initialized according to PRTYPE. * * LDD (input) INTEGER * The leading dimension of D. * * E (output) COMPLEX array, dimension (LDE, N). * On exit E N-by-N is initialized according to PRTYPE. * * LDE (input) INTEGER * The leading dimension of E. * * F (output) COMPLEX array, dimension (LDF, N). * On exit F M-by-N is initialized according to PRTYPE. * * LDF (input) INTEGER * The leading dimension of F. * * R (output) COMPLEX array, dimension (LDR, N). * On exit R M-by-N is initialized according to PRTYPE. * * LDR (input) INTEGER * The leading dimension of R. * * L (output) COMPLEX array, dimension (LDL, N). * On exit L M-by-N is initialized according to PRTYPE. * * LDL (input) INTEGER * The leading dimension of L. * * ALPHA (input) REAL * Parameter used in generating PRTYPE = 1 and 5 matrices. * * QBLCKA (input) INTEGER * When PRTYPE = 3, specifies the distance between 2-by-2 * blocks on the diagonal in A. Otherwise, QBLCKA is not * referenced. QBLCKA > 1. * * QBLCKB (input) INTEGER * When PRTYPE = 3, specifies the distance between 2-by-2 * blocks on the diagonal in B. Otherwise, QBLCKB is not * referenced. QBLCKB > 1. * * * Further Details * =============== * * PRTYPE = 1: A and B are Jordan blocks, D and E are identity matrices * * A : if (i == j) then A(i, j) = 1.0 * if (j == i + 1) then A(i, j) = -1.0 * else A(i, j) = 0.0, i, j = 1...M * * B : if (i == j) then B(i, j) = 1.0 - ALPHA * if (j == i + 1) then B(i, j) = 1.0 * else B(i, j) = 0.0, i, j = 1...N * * D : if (i == j) then D(i, j) = 1.0 * else D(i, j) = 0.0, i, j = 1...M * * E : if (i == j) then E(i, j) = 1.0 * else E(i, j) = 0.0, i, j = 1...N * * L = R are chosen from [-10...10], * which specifies the right hand sides (C, F). * * PRTYPE = 2 or 3: Triangular and/or quasi- triangular. * * A : if (i <= j) then A(i, j) = [-1...1] * else A(i, j) = 0.0, i, j = 1...M * * if (PRTYPE = 3) then * A(k + 1, k + 1) = A(k, k) * A(k + 1, k) = [-1...1] * sign(A(k, k + 1) = -(sin(A(k + 1, k)) * k = 1, M - 1, QBLCKA * * B : if (i <= j) then B(i, j) = [-1...1] * else B(i, j) = 0.0, i, j = 1...N * * if (PRTYPE = 3) then * B(k + 1, k + 1) = B(k, k) * B(k + 1, k) = [-1...1] * sign(B(k, k + 1) = -(sign(B(k + 1, k)) * k = 1, N - 1, QBLCKB * * D : if (i <= j) then D(i, j) = [-1...1]. * else D(i, j) = 0.0, i, j = 1...M * * * E : if (i <= j) then D(i, j) = [-1...1] * else E(i, j) = 0.0, i, j = 1...N * * L, R are chosen from [-10...10], * which specifies the right hand sides (C, F). * * PRTYPE = 4 Full * A(i, j) = [-10...10] * D(i, j) = [-1...1] i,j = 1...M * B(i, j) = [-10...10] * E(i, j) = [-1...1] i,j = 1...N * R(i, j) = [-10...10] * L(i, j) = [-1...1] i = 1..M ,j = 1...N * * L, R specifies the right hand sides (C, F). * * PRTYPE = 5 special case common and/or close eigs. * * ===================================================================== * * .. Parameters .. COMPLEX ONE, TWO, ZERO, HALF, TWENTY PARAMETER ( ONE = ( 1.0E+0, 0.0E+0 ), $ TWO = ( 2.0E+0, 0.0E+0 ), $ ZERO = ( 0.0E+0, 0.0E+0 ), $ HALF = ( 0.5E+0, 0.0E+0 ), $ TWENTY = ( 2.0E+1, 0.0E+0 ) ) * .. * .. Local Scalars .. INTEGER I, J, K COMPLEX IMEPS, REEPS * .. * .. Intrinsic Functions .. INTRINSIC CMPLX, MOD, SIN * .. * .. External Subroutines .. EXTERNAL CGEMM * .. * .. Executable Statements .. * IF( PRTYPE.EQ.1 ) THEN DO 20 I = 1, M DO 10 J = 1, M IF( I.EQ.J ) THEN A( I, J ) = ONE D( I, J ) = ONE ELSE IF( I.EQ.J-1 ) THEN A( I, J ) = -ONE D( I, J ) = ZERO ELSE A( I, J ) = ZERO D( I, J ) = ZERO END IF 10 CONTINUE 20 CONTINUE * DO 40 I = 1, N DO 30 J = 1, N IF( I.EQ.J ) THEN B( I, J ) = ONE - ALPHA E( I, J ) = ONE ELSE IF( I.EQ.J-1 ) THEN B( I, J ) = ONE E( I, J ) = ZERO ELSE B( I, J ) = ZERO E( I, J ) = ZERO END IF 30 CONTINUE 40 CONTINUE * DO 60 I = 1, M DO 50 J = 1, N R( I, J ) = ( HALF-SIN( CMPLX( I / J ) ) )*TWENTY L( I, J ) = R( I, J ) 50 CONTINUE 60 CONTINUE * ELSE IF( PRTYPE.EQ.2 .OR. PRTYPE.EQ.3 ) THEN DO 80 I = 1, M DO 70 J = 1, M IF( I.LE.J ) THEN A( I, J ) = ( HALF-SIN( CMPLX( I ) ) )*TWO D( I, J ) = ( HALF-SIN( CMPLX( I*J ) ) )*TWO ELSE A( I, J ) = ZERO D( I, J ) = ZERO END IF 70 CONTINUE 80 CONTINUE * DO 100 I = 1, N DO 90 J = 1, N IF( I.LE.J ) THEN B( I, J ) = ( HALF-SIN( CMPLX( I+J ) ) )*TWO E( I, J ) = ( HALF-SIN( CMPLX( J ) ) )*TWO ELSE B( I, J ) = ZERO E( I, J ) = ZERO END IF 90 CONTINUE 100 CONTINUE * DO 120 I = 1, M DO 110 J = 1, N R( I, J ) = ( HALF-SIN( CMPLX( I*J ) ) )*TWENTY L( I, J ) = ( HALF-SIN( CMPLX( I+J ) ) )*TWENTY 110 CONTINUE 120 CONTINUE * IF( PRTYPE.EQ.3 ) THEN IF( QBLCKA.LE.1 ) $ QBLCKA = 2 DO 130 K = 1, M - 1, QBLCKA A( K+1, K+1 ) = A( K, K ) A( K+1, K ) = -SIN( A( K, K+1 ) ) 130 CONTINUE * IF( QBLCKB.LE.1 ) $ QBLCKB = 2 DO 140 K = 1, N - 1, QBLCKB B( K+1, K+1 ) = B( K, K ) B( K+1, K ) = -SIN( B( K, K+1 ) ) 140 CONTINUE END IF * ELSE IF( PRTYPE.EQ.4 ) THEN DO 160 I = 1, M DO 150 J = 1, M A( I, J ) = ( HALF-SIN( CMPLX( I*J ) ) )*TWENTY D( I, J ) = ( HALF-SIN( CMPLX( I+J ) ) )*TWO 150 CONTINUE 160 CONTINUE * DO 180 I = 1, N DO 170 J = 1, N B( I, J ) = ( HALF-SIN( CMPLX( I+J ) ) )*TWENTY E( I, J ) = ( HALF-SIN( CMPLX( I*J ) ) )*TWO 170 CONTINUE 180 CONTINUE * DO 200 I = 1, M DO 190 J = 1, N R( I, J ) = ( HALF-SIN( CMPLX( J / I ) ) )*TWENTY L( I, J ) = ( HALF-SIN( CMPLX( I*J ) ) )*TWO 190 CONTINUE 200 CONTINUE * ELSE IF( PRTYPE.GE.5 ) THEN REEPS = HALF*TWO*TWENTY / ALPHA IMEPS = ( HALF-TWO ) / ALPHA DO 220 I = 1, M DO 210 J = 1, N R( I, J ) = ( HALF-SIN( CMPLX( I*J ) ) )*ALPHA / TWENTY L( I, J ) = ( HALF-SIN( CMPLX( I+J ) ) )*ALPHA / TWENTY 210 CONTINUE 220 CONTINUE * DO 230 I = 1, M D( I, I ) = ONE 230 CONTINUE * DO 240 I = 1, M IF( I.LE.4 ) THEN A( I, I ) = ONE IF( I.GT.2 ) $ A( I, I ) = ONE + REEPS IF( MOD( I, 2 ).NE.0 .AND. I.LT.M ) THEN A( I, I+1 ) = IMEPS ELSE IF( I.GT.1 ) THEN A( I, I-1 ) = -IMEPS END IF ELSE IF( I.LE.8 ) THEN IF( I.LE.6 ) THEN A( I, I ) = REEPS ELSE A( I, I ) = -REEPS END IF IF( MOD( I, 2 ).NE.0 .AND. I.LT.M ) THEN A( I, I+1 ) = ONE ELSE IF( I.GT.1 ) THEN A( I, I-1 ) = -ONE END IF ELSE A( I, I ) = ONE IF( MOD( I, 2 ).NE.0 .AND. I.LT.M ) THEN A( I, I+1 ) = IMEPS*2 ELSE IF( I.GT.1 ) THEN A( I, I-1 ) = -IMEPS*2 END IF END IF 240 CONTINUE * DO 250 I = 1, N E( I, I ) = ONE IF( I.LE.4 ) THEN B( I, I ) = -ONE IF( I.GT.2 ) $ B( I, I ) = ONE - REEPS IF( MOD( I, 2 ).NE.0 .AND. I.LT.N ) THEN B( I, I+1 ) = IMEPS ELSE IF( I.GT.1 ) THEN B( I, I-1 ) = -IMEPS END IF ELSE IF( I.LE.8 ) THEN IF( I.LE.6 ) THEN B( I, I ) = REEPS ELSE B( I, I ) = -REEPS END IF IF( MOD( I, 2 ).NE.0 .AND. I.LT.N ) THEN B( I, I+1 ) = ONE + IMEPS ELSE IF( I.GT.1 ) THEN B( I, I-1 ) = -ONE - IMEPS END IF ELSE B( I, I ) = ONE - REEPS IF( MOD( I, 2 ).NE.0 .AND. I.LT.N ) THEN B( I, I+1 ) = IMEPS*2 ELSE IF( I.GT.1 ) THEN B( I, I-1 ) = -IMEPS*2 END IF END IF 250 CONTINUE END IF * * Compute rhs (C, F) * CALL CGEMM( 'N', 'N', M, N, M, ONE, A, LDA, R, LDR, ZERO, C, LDC ) CALL CGEMM( 'N', 'N', M, N, N, -ONE, L, LDL, B, LDB, ONE, C, LDC ) CALL CGEMM( 'N', 'N', M, N, M, ONE, D, LDD, R, LDR, ZERO, F, LDF ) CALL CGEMM( 'N', 'N', M, N, N, -ONE, L, LDL, E, LDE, ONE, F, LDF ) * * End of CLATM5 * END -- Summary: ICE when compiling with -ffast-math and -O3 clatm5.f (lapack) Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: martin dot audet at imi dot cnrc-nrc dot gc dot ca GCC host triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26524