This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/46331] New: Compilation time long with simple function in array constructor
- From: "jvdelisle at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 6 Nov 2010 15:30:38 +0000
- Subject: [Bug fortran/46331] New: Compilation time long with simple function in array constructor
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46331
Summary: Compilation time long with simple function in array
constructor
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jvdelisle@gcc.gnu.org
program foo
implicit none
Integer :: i
Integer, Parameter :: N = 10**4
Real, Dimension(N) :: xs
! Random points
xs = (/ (rand(0), i=1,N) /)
print *, xs
end program
The time spent in the FE is not bad, but the resulting translation is horrible
and it wreaks havoc with the middle end and down the road.
I think we should not expand this constructor at all, especially since 'i' is
not used in the function expression. However, rand(0) needs to be called once
for each element. That means it needs to be translated into:
do i-1,N
xs = rand(0)
end do
In otherwords, I think another special case in gfc_trans_assignment. There are
other special cases already there.