This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR 24823/flow


> Yes please.  Of course a C testcase is preferred,  but fortran is better
> than nothing.
Here it is.
I will commit the testcase if the patch gets approved.
Could you please test the patch with a x86_64 machine? 
I've verified it using a crosscompiler.

Bye,

-Andreas-


2005-11-28  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR fortran/24823
	* gfortran.dg/pr24823.f: New test.


Index: gcc/testsuite/gfortran.dg/pr24823.f
===================================================================
*** /dev/null	1970-01-01 00:00:00.000000000 +0000
--- gcc/testsuite/gfortran.dg/pr24823.f	2005-11-28 12:31:15.000000000 +0100
***************
*** 0 ****
--- 1,78 ----
+ !     { dg-do compile }
+ !     { dg-options "-O2" }
+ !     PR24823 Flow didn't handle a PARALLEL as destination of a SET properly.
+       SUBROUTINE ZLATMR( M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX,
+      $     RSIGN, GRADE, DL, MODEL, CONDL, DR, MODER,
+      $     PACK, A, LDA, IWORK, INFO )
+       COMPLEX*16         A( LDA, * ), D( * ), DL( * ), DR( * )
+       LOGICAL            BADPVT, DZERO, FULBND
+       COMPLEX*16         ZLATM2, ZLATM3
+       IF( IGRADE.EQ.4 .AND. MODEL.EQ.0 ) THEN
+       END IF
+       IF( IPVTNG.GT.0 ) THEN
+       END IF
+       IF( M.LT.0 ) THEN
+       ELSE IF( IPACK.EQ.-1 .OR. ( ( IPACK.EQ.1 .OR. IPACK.EQ.2 .OR.
+      $        IPACK.EQ.5 .OR. IPACK.EQ.6 ) .AND. ISYM.EQ.1 ) .OR.
+      $        ( IPACK.EQ.3 .AND. ISYM.EQ.1 .AND. ( KL.NE.0 .OR. M.NE.
+      $        6 ) .AND. LDA.LT.KUU+1 ) .OR.
+      $        ( IPACK.EQ.7 .AND. LDA.LT.KLL+KUU+1 ) ) THEN
+          INFO = -26
+       END IF
+       IF( INFO.NE.0 ) THEN
+          RETURN
+       END IF
+       IF( KUU.EQ.N-1 .AND. KLL.EQ.M-1 )
+      $     FULBND = .TRUE.
+       IF( MODE.NE.0 .AND. MODE.NE.-6 .AND. MODE.NE.6 ) THEN
+          TEMP = ABS( D( 1 ) )
+          IF( TEMP.EQ.ZERO .AND. DMAX.NE.CZERO ) THEN
+             INFO = 2
+          END IF
+       END IF
+       IF( ISYM.EQ.0 ) THEN
+       END IF
+       IF( IGRADE.EQ.1 .OR. IGRADE.EQ.3 .OR. IGRADE.EQ.4 .OR. IGRADE.EQ.
+      $     5 .OR. IGRADE.EQ.6 ) THEN
+          IF( INFO.NE.0 ) THEN
+          END IF
+       END IF
+       IF( FULBND ) THEN
+          IF( IPACK.EQ.0 ) THEN
+             IF( ISYM.EQ.0 ) THEN
+                CTEMP = ZLATM3( M, N, I, J, ISUB, JSUB, KL, KU,
+      $              IWORK, SPARSE )
+                DO 120 I = 1, M
+                   CTEMP = ZLATM3( M, N, I, J, ISUB, JSUB, KL, KU,
+      $                 IWORK, SPARSE )
+  120           CONTINUE
+             END IF
+             IF( I.LT.1 ) THEN
+                IF( ISYM.EQ.0 ) THEN
+                   A( J-I+1, I ) = DCONJG( ZLATM2( M, N, I, J, KL,
+      $                 DR, IPVTNG, IWORK, SPARSE ) )
+                ELSE
+                   A( J-I+1, I ) = ZLATM2( M, N, I, J, KL, KU,
+      $                 IPVTNG, IWORK, SPARSE )
+                END IF
+             END IF
+             IF( ISYM.NE.1 ) THEN
+                IF( I.GE.1 .AND. I.NE.J ) THEN
+                   IF( ISYM.EQ.0 ) THEN
+                   END IF
+                END IF
+                A( I-J+KUU+1, J ) = ZLATM2( M, N, I, J, KL, KU,
+      $              DR, IPVTNG, IWORK, SPARSE )
+             END IF
+          END IF
+       END IF
+       IF( IPACK.EQ.0 ) THEN
+          ONORM = ZLANGB( 'M', N, KLL, KUU, A, LDA, TEMPA )
+       END IF
+       IF( ANORM.GE.ZERO ) THEN
+          IF( ANORM.GT.ZERO .AND. ONORM.EQ.ZERO ) THEN
+             IF( IPACK.LE.2 ) THEN
+             END IF
+          END IF
+       END IF
+       END


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]