On Wed, Jan 29, 2014 at 11:02:05AM +0100, Jakub Jelinek wrote:
> So, most of the time seems to be spent in cselib.c remove_useless_values
> (both from Ctrl-C in gdb profiling, and callgrind). For callgrind I've
> actually built 64-bit cc1plus with --enable-checking=release, and still
> compiled
> the same --enable-checking=yes,rtl -m32 -O2 -g insn-recog.c, the build then
> took just 14 minutes instead of 60 minutes, and in that case only about 30%
> of compile time has been spent in var-tracking and 20% of compile time
> in remove_useless_values in particular.
Ugh, actually it seems I've screwed up my testing, the
--enable-checking=release numbers above and also the callgrind were
mistakenly from -m64 -O2 -g insn-recog.c compilation.
If I use 64-bit --enable-checking=release compiler to compile the
32-bit insn-recog.c with yes,rtl checking in the preprocessed source
(-m32 -O2 -g), then it takes:
real 62m43.754s
user 62m11.885s
sys 0m11.894s
to compile it, so this isn't really about the RTL checking being actually
slow in the prev-gcc compiler, but just by RTL checking resulting in too
many basic blocks and too many values in insn-recog.c sources, which
increases the severity. Not going to start callgrind now on something that
takes one hour without emulation though, that would be more than 24 hours.
Jakub