bug fix in haifa schedule
Weiwen Liu
liu@hepvms.physics.yale.edu
Tue Sep 23 15:54:00 GMT 1997
Hi,
The patch I sent earlier fixes the problem in the test case but causes
problem for other cases. Here is the update of the fix which should
be applied against egcs-970917 source.
Background:
The two bugs I reported were found during compiling xemacs-20.2 on an
alpha-dec-osf4.0 with haifa-schedule.
With the patches I sent in, compiling of xemacs-20.2 succeeds.
I also attach the test result of gcc and libstdc++ here.
Weiwen
Tue Sep 23 15:17:40 1997 Weiwen Liu <liu@hepunix.physics.yale.edu>
* haifa-sched.c (schedule_block): Remove {LOOP,
EH_REGION}_{BEG, END} and SETJMP insn's from a basic_block.
*** haifa-sched.c.orig Sat Sep 13 15:00:22 1997
--- haifa-sched.c Tue Sep 23 15:16:30 1997
*************** schedule_block (bb, rgn, rgn_n_insns)
*** 6834,6839 ****
--- 6834,6868 ----
}
nr_inter++;
+ /* Remove {LOOP, EH_REGION}_{BEG, END} and SETJMP insn's
+ from a basic_block. */
+ b1 = INSN_BLOCK (insn);
+ if (insn != basic_block_end[b1])
+ {
+ temp = NEXT_INSN (insn);
+ while (temp != basic_block_end[b1]
+ && GET_CODE (temp) == NOTE)
+ {
+ if (NOTE_LINE_NUMBER (temp) == NOTE_INSN_SETJMP
+ || NOTE_LINE_NUMBER (temp) == NOTE_INSN_LOOP_BEG
+ || NOTE_LINE_NUMBER (temp) == NOTE_INSN_LOOP_END
+ || NOTE_LINE_NUMBER (temp) == NOTE_INSN_EH_REGION_BEG
+ || NOTE_LINE_NUMBER (temp) == NOTE_INSN_EH_REGION_END)
+ {
+ rtx next = NEXT_INSN (temp);
+ rtx prev = PREV_INSN (temp);
+
+ /* Delete the note from its current position. */
+ if (prev)
+ NEXT_INSN (prev) = next;
+ if (next)
+ PREV_INSN (next) = prev;
+ }
+
+ temp = NEXT_INSN (temp);
+ }
+ }
+
temp = insn;
while (SCHED_GROUP_P (temp))
temp = PREV_INSN (temp);
Test result running on alpha-dec-osf4.0 with -fvtable-thunks and the
two patches I sent.
=== gcc Summary ===
# of expected passes 4854
# of unexpected failures 12
# of expected failures 4
# of unsupported tests 9
/data/dsk6/liu/ncftp/egcs-970917/gcc/xgcc version egcs-2.90.08 970917 (gcc2-970802 experimental)
FAIL: gcc.c-torture/compile/961203-1.c, -O0
FAIL: gcc.c-torture/compile/961203-1.c, -O1
FAIL: gcc.c-torture/compile/961203-1.c, -O2
FAIL: gcc.c-torture/compile/961203-1.c, -O2 -fomit-frame-pointer -finline-functions
FAIL: gcc.c-torture/execute/complex-5.c execution, -O0
FAIL: gcc.c-torture/execute/complex-5.c execution, -O1
FAIL: gcc.c-torture/execute/complex-5.c execution, -O2
FAIL: gcc.c-torture/execute/complex-5.c execution, -O2 -fomit-frame-pointer -finline-functions
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O0
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O1
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O2
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O2 -fomit-frame-pointer -finline-functions
=== g++ Summary ===
# of expected passes 3308
# of unexpected failures 6
# of unexpected successes 3
# of expected failures 81
# of untested testcases 10
/data/dsk6/liu/ncftp/egcs-970917/gcc/testsuite/../xgcc version egcs-2.90.08 970917 (gcc2-970802 experimental)
XPASS: g++.brendan/array1.C overflow in array dimension.* , (test for errors, line 6)
FAIL: g++.brendan/crash39.C (test for excess errors)
XPASS: g++.jason/destruct3.C - (test for bogus messages, line 38)
FAIL: g++.jason/operator.C overloaded (test for errors, line 13)
FAIL: g++.jason/operator.C overloaded (test for errors, line 14)
XPASS: g++.law/temps7.C (test for excess errors)
FAIL: g++.mike/p6610a.C Execution test
FAIL: g++.mike/p710.C previous declaration as.* (test for errors, line 32)
FAIL: g++.mike/p710.C .B::operator.*overloaded (test for errors, line 35)
=== libio Summary ===
# of expected passes 40
=== libstdc++ Summary ===
# of expected passes 30
More information about the Gcc
mailing list