This is the mail archive of the gdb@sourceware.cygnus.com mailing list for the GDB 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)


Looks good to me:

In the .s, there's a .stabn at the beginning of the function, and
another immediately after the call to __main.  Gdb knows to ignore
the first one, so that's exactly what's wanted.  (And gdb does
the right thing in the simple testcase.)

I'll rerun the gdb regression (and do a full build overnight);
results anon.

Donn

> -----Original Message-----
> From: Richard Henderson [mailto:rth@cygnus.com]
> Sent: Friday, May 26, 2000 10:32 AM
> To: Donn Terry
> Cc: Mark Mitchell; kettenis@wins.uva.nl;
> Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE; kingdon@redhat.com;
> gdb@sourceware.cygnus.com; gcc-patches@gcc.gnu.org
> Subject: 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]