On 10/08/2012 01:14 PM, Steven Bosscher wrote:
Hello,
This patch makes lra_constraint_insn_stack_bitmap an sbitmap. This
reduces compile time by another minute or so on gcc17 for the test
case of PR54146, and I think it's a general improvement also for less
extreme code. For cc1-i files the compile time change tends to be a
little less but that may just be noise.
Bootstrapped&tested on x86_64-unknown-linux-gnu. OK for lra-branch?
I am not a fan of sbitmap for regular use. This patch definitely helps
for this particular test. But it might hurt performance for small
functions because
You need to allocate sbitmap (bitmap frequently uses already allocated
pool of bitmap elements), sometimes reallocate it (because new insns are
added), make it empty (zeroing), and it may hurt locality when the
corresponding set is partially sparsed (but not so sparsed as in this
case, where each bit practically requires a new bitmap element).
So I checked it on big file with > hundred functionson Intel machine and got
before a part of the patch implementing the insn stack as sbitmap
real=243.40 user=241.61 system=1.00
after the part of the patch:
real=244.89 user=243.02 system=0.96
So I guess we need a combination of methods (based on sbitmap and bitmap) or
some another method could work in both cases. I think it can wait the next
stage.
(This is the combined patch of all changes in my check-out of the
lra-branch. The lra.c and lra-constraints.c bits are new, the rest was
posted previously and is awaiting review also.)