On 11/07/2012 11:41 AM, Paulo Matos wrote: > Yes, the reordering works fine. The problem is when I change the > value of *n_readyp. The c6x port returns n_ready (which for me > doesn't make sense since the max insns I can schedule in a cycle is 2 > which is my issue_rate), but doesn't change *n_readyp.
Look at the caller of the hook - they check the return value to see if any more instructions can be issued. If yes, the one highest on the list is picked. > If I don't > change *n_readyp I am not actually 'removing' the insn from ready but > simply reordering it. The docs say I can modify *n_readyp but any > attempt to do so is causing an ice at schedule_block with > instruction: gcc_assert(ready.n_ready) after the call to > queue_to_ready(&ready); Yes... I seem to remember the documentation is just wrong for that hook (and the interface is somewhat broken). As you noted, you can't just remove insns from the ready list without moving them somewhere else. Bernd