On Tue, May 03, 2016 at 02:36:55PM +0200, Bernd Schmidt wrote: > On 04/25/2016 04:17 PM, Trevor Saunders wrote: > > On Mon, Apr 25, 2016 at 03:55:15PM +0200, Bernd Schmidt wrote: > > > On 04/20/2016 08:22 AM, tbsaunde+...@tbsaunde.org wrote: > > > > -/* Remove INSN from queue. */ > > > > +/* Remove INSN at idx from queue. */ > > > > +static void > > > > +queue_remove (unsigned int q, unsigned int idx) > > > > +{ > > > > + QUEUE_INDEX (insn_queue[q][idx]) = QUEUE_NOWHERE; > > > > + insn_queue[q].ordered_remove (idx); > > > > + q_size--; > > > > > > I think I'm nacking this one, sorry. I don't think ordered_removes in the > > > scheduler queues are going to fly. > > > > So, we're going from a linear walk through a linked list to linear scan > > of part of a vector and memcpy of the rest. That's certainly not great, > > but the linked list walk doesn't seem great either. Is unordered_remove > > here safe? Or do you have some other idea? I guess we could write a > > forward_list. > > After looking at it for a bit, I think unordered_remove for the queues > (leaving the ready list alone entirely) is probably alright. I think here in
Thanks for looking at that, I'll try it. > particular but also for the other patches it would be good to run some tests > that code generation is identical before and after. I guess the usual tool for that is contrib/compare-all-tests? is there a simpler one? Trev > > > Bernd