https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100799

--- Comment #5 from Peter Bergner <bergner at gcc dot gnu.org> ---
So I took dgebal.f and ran delta on it to try and reduce it to something
manageable (I wish creduce worked on fortran files!) and got the following
which still shows us accessing above the stack.

      SUBROUTINE DGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO )
      CHARACTER          JOB
      DOUBLE PRECISION   A( LDA, * ), SCALE( * )
      LOGICAL            NOCONV
  140 CONTINUE
      DO 200 I = K, L
         C = DNRM2( L-K+1, A( K, I ), 1 )
         R = DNRM2( L-K+1, A( I, K ), LDA )
         ICA = IDAMAX( L, A( 1, I ), 1 )
         CA = ABS( A( ICA, I ) )
         IF( C.EQ.ZERO .OR. R.EQ.ZERO )
     $      GO TO 200
         IF( G.LT.R .OR. MAX( R, RA ).GE.SFMAX2 .OR.
     $       MIN( F, C, G, CA ).LE.SFMIN2 )GO TO 190
         F = F / SCLFAC
         G = G / SCLFAC
  190    CONTINUE
         IF( ( C+R ).GE.FACTOR*S )
     $      GO TO 200
         IF( F.LT.ONE .AND. SCALE( I ).LT.ONE ) THEN
         END IF
         CALL DSCAL( N-K+1, G, A( I, K ), LDA )
  200 CONTINUE
      IF( NOCONV )
     $   GO TO 140
      END

This isn't related to some strange fortran parameter passing rules (ie, all
params are passed by reference), is it?


dgebal_:
.LFB0:
        .cfi_startproc
.LCF0:
0:      addis 2,12,.TOC.-.LCF0@ha
        addi 2,2,.TOC.-.LCF0@l
        .localentry     dgebal_,.-dgebal_
        std 24,-88(1)
        .cfi_offset 24, -88
        lwa 24,0(6)
        mflr 0
        mfcr 11,8
        std 20,-120(1)
        std 15,-160(1)
        std 16,-152(1)
        std 17,-144(1)
        std 19,-128(1)
        std 21,-112(1)
        std 22,-104(1)
        std 23,-96(1)
        std 25,-80(1)
        std 27,-64(1)
        std 28,-56(1)
        stw 11,8(1)
        li 9,0
        .cfi_register 65, 0
        .cfi_offset 20, -120
        .cfi_offset 15, -160
        .cfi_offset 16, -152
        .cfi_offset 17, -144
        .cfi_offset 19, -128
        .cfi_offset 21, -112
        .cfi_offset 22, -104
        .cfi_offset 23, -96
        .cfi_offset 25, -80
        .cfi_offset 27, -64
        .cfi_offset 28, -56
        .cfi_offset 72, 8
        addis 27,2,.LANCHOR0@toc@ha
        stfd 29,-24(1)
        stfd 30,-16(1)
        stfd 31,-8(1)
        std 14,-168(1)
        std 18,-136(1)
        std 26,-72(1)
        std 29,-48(1)
        cmpdi 0,24,0
        std 0,16(1)
        std 30,-40(1)
        std 31,-32(1)
        stdu 1,-224(1)
        .cfi_def_cfa_offset 224
        .cfi_offset 61, -24
        .cfi_offset 62, -16
        .cfi_offset 63, -8
        .cfi_offset 14, -168
        .cfi_offset 18, -136
        .cfi_offset 26, -72
        .cfi_offset 29, -48
        .cfi_offset 65, 16
        .cfi_offset 30, -40
        .cfi_offset 31, -32
        addi 27,27,.LANCHOR0@toc@l
        li 21,-8
        mr 25,6
        isel 24,0,24,0
        mr 16,4
        cmpwi 4,9,0
        addi 28,1,32
        addi 22,1,36
        addi 15,1,40
        std 5,272(1)       # 272 is bigger than 224!
...

Reply via email to