Hi : I'm wondering whether cfg is maintained properly during delay slot scheduling, Because when compiling libgcc/_divsc3.o, rtl dump in libgcc2.c.198r.mach has following lines:
no bb for insn with uid = 293. deleting insn with uid = 690. deleting insn with uid = 904. ...... (note 298 905 303 [bb 25] NOTE_INSN_BASIC_BLOCK) (note 303 298 304 [bb 26] NOTE_INSN_BASIC_BLOCK) -------------------------------------cut here after that pass, bb 25 still has il.rtl->head_ == insn_uid_690, which has already deleted. Seems the bb's head_/tail_ are not handled properly. I traced cc1 and found it deleted insn_690 by function remove_insn, It seems that the end the function takes BB_HEAD/BB_END into consider, But the BLOCK_FOR_INSN(insn_690) is null, which results in the problem. BTW, the version working on is gcc-4.4.1, mips target. So, any tips? Thanks very much. -- Best Regards.