This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Suggested (easier) fix to ... RE: Regressions problem (200 fa ilures)


On Fri, May 26, 2000 at 09:53:26AM -0700, Donn Terry wrote:
> And a bit more... the rebuild/regression did succeed (after some tweaking)
> and the problem with __main is in the current CVS as well.

Try this.


r~


	* function.c (thread_prologue_epilogue_insns): Don't move the
	line note at the head of the chain.  Only force a lineno note
	before the end of block 0.

Index: function.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/function.c,v
retrieving revision 1.198
diff -c -p -d -r1.198 function.c
*** function.c	2000/05/23 03:40:53	1.198
--- function.c	2000/05/26 17:30:07
*************** epilogue_done:
*** 7050,7070 ****
  	    {
  	      /* Note that we cannot reorder the first insn in the
  		 chain, since rest_of_compilation relies on that
! 		 remaining constant.  Do the next best thing.  */
  	      if (prev == NULL)
! 		{
! 		  emit_line_note_after (NOTE_SOURCE_FILE (insn),
! 					NOTE_LINE_NUMBER (insn),
! 					prologue_end);
! 		  NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
! 		}
! 	      else
! 		reorder_insns (insn, insn, prologue_end);
  	    }
  	}
  
!       insn = NEXT_INSN (prologue_end);
!       if (! insn || GET_CODE (insn) != NOTE || NOTE_LINE_NUMBER (insn) <= 0)
  	{
  	  for (insn = next_active_insn (f); insn ; insn = PREV_INSN (insn))
  	    {
--- 7050,7072 ----
  	    {
  	      /* Note that we cannot reorder the first insn in the
  		 chain, since rest_of_compilation relies on that
! 		 remaining constant.  */
  	      if (prev == NULL)
! 		break;
! 	      reorder_insns (insn, insn, prologue_end);
  	    }
  	}
  
!       /* Find the last line number note in the first block.  */
!       for (insn = BASIC_BLOCK (0)->end;
! 	   insn != prologue_end;
! 	   insn = PREV_INSN (insn))
! 	if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0)
! 	  break;
! 
!       /* If we didn't find one, make a copy of the first line number
! 	 we run across.  */
!       if (! insn)
  	{
  	  for (insn = next_active_insn (f); insn ; insn = PREV_INSN (insn))
  	    {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]