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