This is the mail archive of the
gdb@sourceware.cygnus.com
mailing list for the GDB project.
RE: Suggested (easier) fix to ... RE: Regressions problem (200 fa ilures)
- To: 'Richard Henderson' <rth at cygnus dot com>
- Subject: RE: Suggested (easier) fix to ... RE: Regressions problem (200 fa ilures)
- From: Donn Terry <donnte at microsoft dot com>
- Date: Fri, 26 May 2000 11:43:37 -0700
- Cc: Mark Mitchell <mark at codesourcery dot com>, kettenis at wins dot uva dot nl, Peter dot Schauer at Regent dot E-Technik dot TU-Muenchen dot DE, kingdon at redhat dot com, gdb at sourceware dot cygnus dot com, gcc-patches at gcc dot gnu dot org
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))
> {
>