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