Article View: gnu.gcc.bug
Article #220bug in scheduler
From: 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
Technical Details
Message-ID:
<9204071754.AA24400@iilcad>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!iilcad.intel.com!teviShow Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!iilcad.intel.com!tevi From: tevi@iilcad.intel.com (Devor Tevi) Subject: bug in scheduler Message-ID: <9204071754.AA24400@iilcad> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Tue, 7 Apr 1992 17:54:19 GMT Approved: bug-gcc@prep.ai.mit.edu Lines: 45