On Mon, Oct 08, 2012 at 09:20:47AM +0200, Richard Guenther wrote:
> On Sun, Oct 7, 2012 at 11:27 PM, Steven Bosscher <stevenb....@gmail.com> 
> wrote:
> > The next bottle-neck in my timings is in
> > lra-eliminate.c:lra_eliminate(), in this loop:
> >
> >    FOR_EACH_BB (bb)
> >      FOR_BB_INSNS_SAFE (bb, insn, temp)
> >        {
> >        if (bitmap_bit_p (&insns_with_changed_offsets, INSN_UID (insn)))
> >           process_insn_for_elimination (insn, final_p);
> >        }
> >
> > The problem is in bitmap_bit_p. Random access to a large bitmap can be
> > very slow.
> >
> > I'm playing with a patch to expand the insns_with_changed_offsets
> > bitmap to an sbitmap, and will send a patch if this works better.
> 
> Or make insns_with_changed_offsets a VEC of insns (or a pointer-set).

Or use temporarily some rtx flag on the insns, from what I can see,
in_struct on *INSN is right now only used during scheduling and from reorg
till eoc, so for LRA sitting in between both scheduling passes it might
be possible to use that bit too.

        Jakub

Reply via email to