This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC Status Report (2004-03-21)
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: gcc at gcc dot gnu dot org, bkoz at redhat dot com, jakub at redhat dot com, jason at redhat dot com, rth at redhat dot com, David dot Billinghurst at riotinto dot com, dan at debian dot org
- Date: Tue, 23 Mar 2004 00:52:16 -0800
- Subject: Re: GCC Status Report (2004-03-21)
- Organization: CodeSourcery, LLC
- References: <200403212027.i2LKRSjQ019842@sirius.codesourcery.com> <20040322113721.GC28573@atrey.karlin.mff.cuni.cz>
Jan Hubicka wrote:
GCC 3.4
=======
* Jan Hubicka
PR 13974 relates to cases where GCC 3.4 emits bad debugging
information. This is an important PR because it's going to affect
people's ability to use GCC 3.4 for development. From looking at
the PR, it looks like you and Dan Jacobowitz have reached some kind
of consensus, and on 2004-03-14 you indicated you'd have patch
"Monday or Tuesday". Is that patch available? Has Dan looked it
over and confirmed it fixes the problem?
Sorry for being late, somehow the patch got suck in testing scripts and
I managed to not attach it to the history.
Dan (Jacobowitz), what say you about this patch and/or its empirical
behavior in GDB-land?
2004-03-22 Jan Hubicka <jh@suse.cz>
* emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators
according to the specified instruction.
Index: emit-rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v
retrieving revision 1.383
diff -c -3 -p -r1.383 emit-rtl.c
*** emit-rtl.c 6 Mar 2004 01:21:26 -0000 1.383
--- emit-rtl.c 17 Mar 2004 12:14:25 -0000
*************** emit_insn_before (rtx x, rtx before)
*** 3919,3924 ****
--- 3919,3925 ----
{
rtx last = before;
rtx insn;
+ rtx first = PREV_INSN (before);
#ifdef ENABLE_RTL_CHECKING
if (before == NULL_RTX)
*************** emit_insn_before (rtx x, rtx before)
*** 3957,3962 ****
--- 3958,3976 ----
add_insn_before (last, before);
break;
}
+ if (active_insn_p (before) && INSN_LOCATOR (before))
+ {
+ int loc = INSN_LOCATOR (before);
+ first = NEXT_INSN (first);
+ while (1)
+ {
+ if (active_insn_p (first) && ! INSN_LOCATOR (first))
+ INSN_LOCATOR (first) = loc;
+ if (first == last)
+ break;
+ first = NEXT_INSN (first);
+ }
+ }
return last;
}
*************** rtx
*** 3968,3973 ****
--- 3982,3988 ----
emit_jump_insn_before (rtx x, rtx before)
{
rtx insn, last = NULL_RTX;
+ rtx first = PREV_INSN (before);
#ifdef ENABLE_RTL_CHECKING
if (before == NULL_RTX)
*************** emit_jump_insn_before (rtx x, rtx before
*** 4003,4008 ****
--- 4018,4036 ----
add_insn_before (last, before);
break;
}
+ if (active_insn_p (before) && INSN_LOCATOR (before))
+ {
+ int loc = INSN_LOCATOR (before);
+ first = NEXT_INSN (first);
+ while (1)
+ {
+ if (active_insn_p (first) && ! INSN_LOCATOR (first))
+ INSN_LOCATOR (first) = loc;
+ if (first == last)
+ break;
+ first = NEXT_INSN (first);
+ }
+ }
return last;
}
*************** rtx
*** 4014,4019 ****
--- 4042,4048 ----
emit_call_insn_before (rtx x, rtx before)
{
rtx last = NULL_RTX, insn;
+ rtx first = PREV_INSN (before);
#ifdef ENABLE_RTL_CHECKING
if (before == NULL_RTX)
*************** emit_call_insn_before (rtx x, rtx before
*** 4049,4054 ****
--- 4078,4096 ----
add_insn_before (last, before);
break;
}
+ if (active_insn_p (before) && INSN_LOCATOR (before))
+ {
+ int loc = INSN_LOCATOR (before);
+ first = NEXT_INSN (first);
+ while (1)
+ {
+ if (active_insn_p (first) && ! INSN_LOCATOR (first))
+ INSN_LOCATOR (first) = loc;
+ if (first == last)
+ break;
+ first = NEXT_INSN (first);
+ }
+ }
return last;
}
*************** emit_insn_after (rtx x, rtx after)
*** 4176,4181 ****
--- 4218,4235 ----
add_insn_after (last, after);
break;
}
+ if (active_insn_p (after) && INSN_LOCATOR (after))
+ {
+ int loc = INSN_LOCATOR (after);
+ while (1)
+ {
+ if (active_insn_p (after) && ! INSN_LOCATOR (after))
+ INSN_LOCATOR (after) = loc;
+ if (after == last)
+ break;
+ after = NEXT_INSN (after);
+ }
+ }
return last;
}
*************** emit_jump_insn_after (rtx x, rtx after)
*** 4232,4237 ****
--- 4286,4303 ----
add_insn_after (last, after);
break;
}
+ if (active_insn_p (after) && INSN_LOCATOR (after))
+ {
+ int loc = INSN_LOCATOR (after);
+ while (1)
+ {
+ if (active_insn_p (after) && ! INSN_LOCATOR (after))
+ INSN_LOCATOR (after) = loc;
+ if (after == last)
+ break;
+ after = NEXT_INSN (after);
+ }
+ }
return last;
}
*************** emit_call_insn_after (rtx x, rtx after)
*** 4270,4275 ****
--- 4336,4353 ----
last = make_call_insn_raw (x);
add_insn_after (last, after);
break;
+ }
+ if (active_insn_p (after) && INSN_LOCATOR (after))
+ {
+ int loc = INSN_LOCATOR (after);
+ while (1)
+ {
+ if (active_insn_p (after) && ! INSN_LOCATOR (after))
+ INSN_LOCATOR (after) = loc;
+ if (after == last)
+ break;
+ after = NEXT_INSN (after);
+ }
}
return last;
--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com