------- Comment #3 from amonakov at gcc dot gnu dot org 2009-01-20 15:45 ------- The assert that fails is checking whether an instruction was correctly disconnected from the insn stream (at its original location) to be inserted on the scheduling boundary by adjusting PREV_INSN/NEXT_INSN links (we try to move instructions instead of removing and reissuing new instruction to avoid cost of re-initialization of associated structures).
There are two different versions of code to decide whether it is appropriate to move an instruction for places where instructions are disconnected or inserted into the stream, as different scheduler data is available there. Attached patch (by Andrey) changes it so that decision is made at instruction's original location and saved until we need to move/issue it at the scheduling boundary in should_move parameter. Bootstrapped & regtested on ia64-linux. I will include the testcase when sending patch to gcc-patches@ Steven, can you please also check if it fixes the testcase you've seen fail on this assert? -- amonakov at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amonakov at gcc dot gnu dot | |org AssignedTo|unassigned at gcc dot gnu |amonakov at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2009-01-19 22:49:52 |2009-01-20 15:45:10 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38857