Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Devor Tevi
Tue, 07 Apr 1992 17:54
bug in scheduler
Author: Devor Tevi
Date: Tue, 07 Apr 1992 17:54
Date: Tue, 07 Apr 1992 17:54
43 lines
1711 bytes
1711 bytes
Bug in scheduler - abort() in sched_analyze_2 () at line #1223 in sched.c
I am using gcc from 25-March-92 configured for i386v4.
For the function cppp.c/collect_expansion() compiled -O -fschedule-insns.
(Note I have enabled scheduling - i.e. defined functional units).
We have the following sequence.
(insn 663 662 664 (set (cc0)
(compare (reg/v:SI 31)
(reg/v:SI 72))) -1 (nil)
(nil))
(note 664 663 665 "" NOTE_INSN_DELETED)
(insn 665 664 667 (set (mem/s:QI (plus:SI (reg/v:SI 79)
(const_int 5)))
(eq:QI (cc0)
(const_int 0))) 135 {seq} (nil)
(nil))
sched.c/sched_analyze_2() is called with :
insn = insn 665 and x = cc0
And this causes an abort in sched_analyze_2() as follows:
/* User of CC0 depends on immediately preceding insn.
All notes are removed from the list of insns to schedule before we
reach here, so the previous insn must be the setter of cc0. */
if (GET_CODE (PREV_INSN (insn)) != INSN)
abort ();
The comment states that the note (664) is remove before we get here,
but from what I can see this is done by the procedure unlink_notes().
Now unlink_notes() is called after sched_analyze() in schedule_block(),
and sched_analyze() calls sched_analyze_2().
Regards,
Tevi.
tevi@iilcad.intel.com
972-4-355675
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads