https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109265
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- Without USE: module sgexx integer,parameter :: r8 = selected_real_kind(12) ! 8 byte real contains SUBROUTINE SLACPY( UPLO, M, N, A, LDA, B, LDB ) END SUBROUTINE SLACPY SUBROUTINE SLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, & T, LDT, C, LDC, WORK, LDWORK ) REAL(r8) C( LDC, * ), T( LDT, * ), V( LDV, * ), & WORK( LDWORK, * ) END SUBROUTINE SLARFB SUBROUTINE SLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX ) LOGICAL FIRST, IEEE, IWARN, LIEEE1, LRND INTEGER GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT, & NGNMIN, NGPMIN REAL(r8) A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE, & SIXTH, SMALL, THIRD, TWO, ZERO IF( FIRST ) THEN SMALL = SLAMC3( SMALL*RBASE, ZERO ) A = SLAMC3( ONE, SMALL ) CALL SLAMC4( GPMIN, A, LBETA ) CALL SLAMC4( GNMIN, -A, LBETA ) END IF END SUBROUTINE SLAMC2 FUNCTION SLAMC3( A, B ) real(r8) slamc3 REAL(r8) A, B SLAMC3 = A + B END FUNCTION SLAMC3 SUBROUTINE SLAMC4( EMIN, START, BASE ) INTEGER BASE, EMIN REAL(r8) START REAL(r8) A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO A = START ZERO = 0 C1 = A C2 = A D1 = A 10 CONTINUE IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND. & ( D2.EQ.A ) ) THEN D2 = ZERO GO TO 10 END IF END SUBROUTINE SLAMC4 SUBROUTINE SGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, & BETA, Y, INCY ) END SUBROUTINE SGEMV SUBROUTINE STRMM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, & B, LDB ) END SUBROUTINE STRMM end module sgexx