From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14311 invoked by alias); 24 Jun 2008 14:45:39 -0000 Received: (qmail 13916 invoked by uid 48); 24 Jun 2008 14:44:52 -0000 Date: Tue, 24 Jun 2008 14:45:00 -0000 Message-ID: <20080624144452.13915.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/35659] [4.3/4.4 Regression] Miscompiled code with -O2 (but not with -O2 -funroll-loops) on ia64 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jakub at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-06/txt/msg01428.txt.bz2 ------- Comment #11 from jakub at gcc dot gnu dot org 2008-06-24 14:44 ------- PROGRAM PR35659 DIMENSION A(1000), B(1010), AUX(8), IPIV(8), X(16) COMMON /TLSDIM/ M1,M,N,L,IER COMMON /SLATE/ V1,V2,IAR(24),DUM(14) DATA A/0, 1, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 1, 0.200000003, 1 0.0399999991, 0.00800000038, 1, 0.400000006, 0.159999996, 2 0.064000003, 1, 0.600000024, 0.360000014, 0.216000006, 1, 3 0.800000012, 0.639999986, 0.512000024, 1, 1, 1, 1, 968*0./ DATA B/1, 2, 1, 1.22140002, 1.49179995, 1.82210004, 4 2.22550011, 2.7183001, 0, 0, 1000*0./ M1 = 2 M = 8 N = 4 L = 1 IER = 0 V1 = 0 V2 = 1.40129846e-45 IAR(:) = 538976288 DUM(:) = 1.35631564e-19 CALL TLSC(A,B,AUX,IPIV,1.,X) IF (ABS(X(1) - 0.99785352).GE.0.1) CALL ABORT IF (ABS(X(2) - 1.0).GE.0.1) CALL ABORT IF (ABS(X(3) - 0.50107324).GE.0.1) CALL ABORT IF (ABS(X(4) - 0.21670136).GE.0.1) CALL ABORT END SUBROUTINE TLSMSQ (B,L,M,F) COMMON /SLATE/ DUM(38),I,JB DIMENSION B(*) F = 0. JB = 1 DO 10 I=1,M F = F + B(JB)*B(JB) 10 JB = JB + L RETURN END SUBROUTINE TLSWOP (A,AD,N,NR) COMMON /SLATE/ DUM(37),H,I,JA DIMENSION A(*), AD(*) JA = 1 DO 10 I=1,NR H = A(JA) A(JA) = AD(JA) AD(JA) = H 10 JA = JA + N RETURN END SUBROUTINE TLUK (A,IASEP,NR,SIG,BETA) COMMON /SLATE/ DUM(37),I,JA,LL DIMENSION A(*) SIG= 0. JA = 1 LL = 0 DO 10 I=1,NR IF (A(JA).EQ.0.) GO TO 10 LL = I SIG= SIG + A(JA)* A(JA) 10 JA = JA + IASEP NR = LL IF (NR.EQ.0) RETURN SIG = SIGN (SQRT (SIG),A(1)) BETA = A(1) + SIG A(1) = BETA BETA = 1. / (SIG * BETA) RETURN END SUBROUTINE TLSTEP (A,B,IASEP,IBSEP,NR,NC,BETA) COMMON /SLATE/ DUM(34),H,I,IB,J,JA,JB DIMENSION A(*), B(*) IB = 0 DO 30 J=1,NC IB = IB + 1 H = 0. JA = 1 JB = IB DO 10 I=1,NR H = H + A(JA) * B(JB) JA = JA +IASEP 10 JB = JB + IBSEP H = H * BETA JA = 1 JB = IB DO 20 I=1,NR B(JB) = B(JB) - A(JA) * H JA = JA +IASEP 20 JB = JB + IBSEP 30 CONTINUE RETURN END together with tlsc.f can work as a testcase, and reproduces the problem with current 4.3 branch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35659