------- Comment #22 from amylaar at gcc dot gnu dot org 2005-12-13 13:41 ------- (In reply to comment #20) > Created an attachment (id=10463) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10463&action=view) [edit] > a full set of debugging dumps > > Re. comment #16, sorry, I didn't read it until after going through the > scheduler dumps. Here is the complete set of dumps. >
The REG_NO_CONFLICT block in f from insn 29 to insn 30 is still sound in t.c.26.life1. In t.c.27.combine, it is bogus. Apparently, the problem arises because insns 25 and 27 have been combined into insn 28. Suppressing this combination or removing the violated REG_NO_CONFLICT note when the combination is done should solve this problem. It appears that local-alloc has different algorithms for combining pseudos with and without REG_NO_CONFLICT notes. Therefore, I suspect that having a REG_NO_CONFLICT note on only some of the insns of a REG_NO_CONFLICT block is worse than not having the note at all inside that block. Thus, if the REG_NO_CONFLICT note is removed, it might be best to remove it in all insns of the affected REG_NO_CONLFICT block, and dissolve the block if that was the last REG_NO_CONFLICT note. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23837