From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 5627D385AC23; Tue, 5 Oct 2021 22:45:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5627D385AC23 From: "bergner at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/100799] Stackoverflow in optimized code on PPC Date: Tue, 05 Oct 2021 22:45:07 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 10.3.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: bergner at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Oct 2021 22:45:07 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D100799 --- Comment #5 from Peter Bergner --- 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 =3D K, L C =3D DNRM2( L-K+1, A( K, I ), 1 ) R =3D DNRM2( L-K+1, A( I, K ), LDA ) ICA =3D IDAMAX( L, A( 1, I ), 1 ) CA =3D 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 =3D F / SCLFAC G =3D 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! ...=