This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/53852] New: -ftree-loop-linear: large compile time / memory usage
- From: "Joost.VandeVondele at mat dot ethz.ch" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 04 Jul 2012 11:19:40 +0000
- Subject: [Bug middle-end/53852] New: -ftree-loop-linear: large compile time / memory usage
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53852
Bug #: 53852
Summary: -ftree-loop-linear: large compile time / memory usage
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: Joost.VandeVondele@mat.ethz.ch
Current trunk (189233) has >X Gb of memory usage (before I have to kill the
compilation) on the following testcase with:
gfortran -O2 -ftree-loop-linear test.f90
SUBROUTINE build_d_tensor_gks(d1f, d2f, d3f, d4f, d5f, v, d1, d2, d3, d4,
d5)
INTEGER, PARAMETER :: dp=8
REAL(KIND=dp), DIMENSION(3), INTENT(OUT) :: d1f
REAL(KIND=dp), DIMENSION(3, 3), &
INTENT(OUT) :: d2f
REAL(KIND=dp), DIMENSION(3, 3, 3), &
INTENT(OUT) :: d3f
REAL(KIND=dp), DIMENSION(3, 3, 3, 3), &
INTENT(OUT) :: d4f
REAL(KIND=dp), &
DIMENSION(3, 3, 3, 3, 3), &
INTENT(OUT), OPTIONAL :: d5f
REAL(KIND=dp), DIMENSION(3), INTENT(IN) :: v
REAL(KIND=dp), INTENT(IN) :: d1, d2, d3, d4
REAL(KIND=dp), INTENT(IN), OPTIONAL :: d5
INTEGER :: k1, k2, k3, k4, k5
REAL(KIND=dp) :: w
d1f = 0.0_dp
d2f = 0.0_dp
d3f = 0.0_dp
d4f = 0.0_dp
DO k1=1,3
d1f(k1)=d1f(k1)+v(k1)*d1
ENDDO
DO k1=1,3
DO k2=1,3
d2f(k2,k1)=d2f(k2,k1)+v(k1)*v(k2)*d2
ENDDO
d2f(k1,k1)=d2f(k1,k1)+ d1
ENDDO
DO k1=1,3
DO k2=1,3
DO k3=1,3
d3f(k3,k2,k1)=d3f(k3,k2,k1)+v(k1)*v(k2)*v(k3)*d3
ENDDO
w=v(k1)*d2
d3f(k1,k2,k2)=d3f(k1,k2,k2)+w
d3f(k2,k1,k2)=d3f(k2,k1,k2)+w
d3f(k2,k2,k1)=d3f(k2,k2,k1)+w
ENDDO
ENDDO
DO k1=1,3
DO k2=1,3
DO k3=1,3
DO k4=1,3
d4f(k4,k3,k2,k1)=d4f(k4,k3,k2,k1)+ &
v(k1)*v(k2)*v(k3)*v(k4)*d4
ENDDO
w=v(k1)*v(k2)*d3
d4f(k1,k2,k3,k3)=d4f(k1,k2,k3,k3)+w
d4f(k1,k3,k2,k3)=d4f(k1,k3,k2,k3)+w
d4f(k3,k1,k2,k3)=d4f(k3,k1,k2,k3)+w
d4f(k1,k3,k3,k2)=d4f(k1,k3,k3,k2)+w
d4f(k3,k1,k3,k2)=d4f(k3,k1,k3,k2)+w
d4f(k3,k3,k1,k2)=d4f(k3,k3,k1,k2)+w
ENDDO
d4f(k1,k1,k2,k2)=d4f(k1,k1,k2,k2)+d2
d4f(k1,k2,k1,k2)=d4f(k1,k2,k1,k2)+d2
d4f(k1,k2,k2,k1)=d4f(k1,k2,k2,k1)+d2
ENDDO
ENDDO
IF (PRESENT(d5f).AND.PRESENT(d5)) THEN
d5f = 0.0_dp
DO k1=1,3
DO k2=1,3
DO k3=1,3
DO k4=1,3
DO k5=1,3
d5f(k5,k4,k3,k2,k1)=d5f(k5,k4,k3,k2,k1)+ &
v(k1)*v(k2)*v(k3)*v(k4)*v(k5)*d5
ENDDO
w=v(k1)*v(k2)*v(k3)*d4
d5f(k1,k2,k3,k4,k4)=d5f(k1,k2,k3,k4,k4)+w
d5f(k1,k2,k4,k3,k4)=d5f(k1,k2,k4,k3,k4)+w
d5f(k1,k4,k2,k3,k4)=d5f(k1,k4,k2,k3,k4)+w
d5f(k4,k1,k2,k3,k4)=d5f(k4,k1,k2,k3,k4)+w
d5f(k1,k2,k4,k4,k3)=d5f(k1,k2,k4,k4,k3)+w
d5f(k1,k4,k2,k4,k3)=d5f(k1,k4,k2,k4,k3)+w
d5f(k4,k1,k2,k4,k3)=d5f(k4,k1,k2,k4,k3)+w
d5f(k1,k4,k4,k2,k3)=d5f(k1,k4,k4,k2,k3)+w
d5f(k4,k1,k4,k2,k3)=d5f(k4,k1,k4,k2,k3)+w
d5f(k4,k4,k1,k2,k3)=d5f(k4,k4,k1,k2,k3)+w
ENDDO
w=v(k1)*d3
d5f(k1,k2,k2,k3,k3)=d5f(k1,k2,k2,k3,k3)+w
d5f(k1,k2,k3,k2,k3)=d5f(k1,k2,k3,k2,k3)+w
d5f(k1,k2,k3,k3,k2)=d5f(k1,k2,k3,k3,k2)+w
d5f(k2,k1,k2,k3,k3)=d5f(k2,k1,k2,k3,k3)+w
d5f(k2,k1,k3,k2,k3)=d5f(k2,k1,k3,k2,k3)+w
d5f(k2,k1,k3,k3,k2)=d5f(k2,k1,k3,k3,k2)+w
d5f(k2,k2,k1,k3,k3)=d5f(k2,k2,k1,k3,k3)+w
d5f(k2,k3,k1,k2,k3)=d5f(k2,k3,k1,k2,k3)+w
d5f(k2,k3,k1,k3,k2)=d5f(k2,k3,k1,k3,k2)+w
d5f(k2,k2,k3,k1,k3)=d5f(k2,k2,k3,k1,k3)+w
d5f(k2,k3,k2,k1,k3)=d5f(k2,k3,k2,k1,k3)+w
d5f(k2,k3,k3,k1,k2)=d5f(k2,k3,k3,k1,k2)+w
d5f(k2,k2,k3,k3,k1)=d5f(k2,k2,k3,k3,k1)+w
d5f(k2,k3,k2,k3,k1)=d5f(k2,k3,k2,k3,k1)+w
d5f(k2,k3,k3,k2,k1)=d5f(k2,k3,k3,k2,k1)+w
ENDDO
ENDDO
ENDDO
END IF
END SUBROUTINE build_d_tensor_gks