[Bug rtl-optimization/23837] [4.0/4.1/4.2 regression] Wrong code with -fschedule-insns

amylaar at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Dec 13 13:41:00 GMT 2005



------- 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



More information about the Gcc-bugs mailing list