OSDN Git Service

PR rtl-optimization/44691
authorabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Aug 2010 08:07:17 +0000 (08:07 +0000)
committerabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Aug 2010 08:07:17 +0000 (08:07 +0000)
        * gfortran.dg/pr44691.f: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163396 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr44691.f [new file with mode: 0644]

index e46fd3f..be71700 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-19  Andrey Belevantsev  <abel@ispras.ru>
+
+       PR rtl-optimization/44691
+       * gfortran.dg/pr44691.f: New test.
+
 2010-10-19  Olivier Hainque  <hainque@adacore.com>
 
        * gcc.target/sparc/sibcall-dslot.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/pr44691.f b/gcc/testsuite/gfortran.dg/pr44691.f
new file mode 100644 (file)
index 0000000..dc57c44
--- /dev/null
@@ -0,0 +1,41 @@
+C PR rtl-optimization/44691
+C { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
+C { dg-options "-O2 -fselective-scheduling2" }
+
+      SUBROUTINE ORIEN(IW,NATOT,NTOTORB,NATORB,P,T)
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      DIMENSION NATORB(NATOT),P(NTOTORB*(NTOTORB+1)/2)
+      DIMENSION T(NTOTORB,NTOTORB)
+      DO 9000 IATOM=1,NATOT
+         ILAST = NTOTORB
+         IF (IATOM.NE.NATOT) ILAST=NATORB(IATOM+1)-1
+         DO 8000 IAOI=NATORB(IATOM),ILAST
+            DO 7000 IAOJ = IAOI+1,ILAST
+               R2 = 0.0D+00
+               R3 = 0.0D+00
+               DO 6000 INOTA=1,NATOT
+                  DO 5000 IK=NATORB(INOTA),NTOTORB
+                     IMAI=MAX(IK,IAOI)
+                     IMII=MIN(IK,IAOI)
+                     IMAJ=MAX(IK,IAOJ)
+                     IMIJ=MIN(IK,IAOJ)
+                     IKI=(IMAI*(IMAI-1))/2 + IMII
+                     IKJ=(IMAJ*(IMAJ-1))/2 + IMIJ
+                     PIKI=P(IKI)
+                     PIKJ=P(IKJ)
+                     R2 = R2 + (PIKI**4)-6*(PIKI*PIKI*PIKJ*PIKJ)+(PIKJ)
+ 5000             CONTINUE
+ 6000          CONTINUE
+               R2 = (R2/4.0D+00)
+               Q = SQRT(R2*R2 + R3*R3)
+               IF (Q.LT.1.0D-08) GO TO 7000
+               A = COS(THETA)
+               B = -SIN(THETA)
+               CALL ROT1INT(NTOTORB,IAOI,IAOJ,A,B,P)
+ 7000       CONTINUE
+ 8000    CONTINUE
+ 9000 CONTINUE
+      RETURN
+      END
+
+