[Bug target/27883] [4.2 regression] in schedule_insns, at sched-rgn.c:3038 on mips

mkuvyrkov at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Jun 7 15:39:00 GMT 2006



------- Comment #3 from mkuvyrkov at gcc dot gnu dot org  2006-06-07 15:29 -------
(In reply to comment #2)
> I bet a beer that this was caused by:
> 2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
> 
>         * target.h (struct spec_info_def): New opaque declaration.
> ....
> 

Nope.  This one is caused by combine.c .

1. Combine generates a REG_DEAD note of the register that don't even appear in
the code.
2. This note survives life2 but gets deleted in sched-rgn.c: check_dead_notes1
().
3. After scheduler is finished, it recalculates life info, not attaching a
REG_DEAD note for that register (which is, I think, correct).
4. Scheduler fails on the assert.

So, the major problem is that combiner emits a strange REG_DEAD note (see
combine.c: distribute_notes ()) and the minor problem is that life2 doesn't fix
this (though, it would not generate such note by itself).


-- 

mkuvyrkov at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mkuvyrkov at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27883



More information about the Gcc-bugs mailing list