[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

serious (5x) link-time regression in 3.3.5-12 on ia64



Hi Mathias, Gerhard and others,

	I want to report a nasty performance regression in 3.3.5-12. Moving
from:

gcc version 3.3.5 (Debian 1:3.3.5-11)

to:

gcc version 3.3.5 (Debian 1:3.3.5-12)

	leads to a large reduction in C++ software build speeds, due to
something that apparently makes 'ld' spend much, much more time than it
previously did. I reproduced this problem going backwards and forwards
between these versions by commands like:

dpkg -i g++-3.3_3.3.5-11_ia64.deb gcc-3.3-base_3.3.5-11_ia64.deb gcc-3.3_3.3.5-11_ia64.deb

so, as far as I understand, neither libstdc++ nor binutils changed.

	How bad is the problem? Trying to build the LLVM compiler suite,
(say, version 1.4 from http://llvm.cs.uiuc.edu/releases/ ) on a 2-way IA64
system with a simple ./configure; time make -j2 with gcc 3.3.5-11 gives:

real 1048.03
user 1979.93
sys 54.37

but with gcc 3.3.5-12 gives:

real 1641.14
user 3037.64
sys 49.62

	Nasty! The build takes 60% longer with 3.3.5-12, and while I haven't
timed it accurately, the time spent in linking has _greatly_ increased, by a
factor of at least 5x, perhaps 10x. LLVM is fairly "normal" and portable
C++, though it is a large source base. (not quite mozilla-sized, though)

	Unfortunately, build times from (gcc version 3.4.4 20050314
(prerelease) (Debian 3.4.3-12)) are more or less the same as those of
3.3.5-12, i.e. slow. Again, components of LLVM take literally minutes to
link on a rather snappy Itanium system. I have not tested older versions of
3.4 to see if these too have the performance regression from 3.3.5-11.

	I would appreciate it if you could bring this to the attention of
the relevant people, and I hope I'm posting this in the right place! If
anyone wants an even more painless way of reproducing this problem, please
contact me and I will provide a tarball that you can simply unpack,
configure, make. I'd also appreciate it if someone could confirm exactly
what has changed between the 3.3.5-11 and 3.3.5-12 packages of gcc, gcc-base
and g++. diffing gcc-3.3_3.3.5-11.diff and gcc-3.3_3.3.5-12.diff, I can't
see anything obviously responsible for this regression, so I wonder if
perhaps some sort of changed environment on whatever machine built
gcc-3.3.5-12 might be responsible for this regression.

	Finally, note that this is all on ia64. I imagine it is likely that
this regression is platform specific, but the only Debian systems I have
ready access to are ia64 ones, so I can't test this.

	Many thanks in advance,

	Duraid



Reply to: