🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Devor Tevi Tue, 07 Apr 1992 17:54
bug in scheduler
#220
Author: Devor Tevi
Date: Tue, 07 Apr 1992 17:54
43 lines
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