This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC Status Report (2004-03-21)
> > On Mon, Mar 22, 2004 at 12:37:21PM +0100, 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.
> > >
> > > The patch makes debug information with optimization less accurate, at
> > > least in my "gcov" metric right now (I do gcov with and without
> > > optimization and diff the output). I am not sure how to test the
> > > patch more throroughly as the problem mentioned in PR is not caught by
> > > my testing (the line number is one instruction off that makes no
> > > difference for gcov. The concept is little bit more safe and of course
> > > i can go other way around and simply modify all the
> > > emit_insn_before/after calls that do not relate to the specified
> > > instruction to use different name.
> > >
> > > I am not sure how far we want to go for 3.4. The patch attached just
> > > modify the existing functions without attempting to do the
> > > classification.
> > >
> > > 2004-03-22 Jan Hubicka <jh@suse.cz>
> > > * emit_rtl.c (emit_*_insn_before, emit_*_insn_after): Set locators
> > > according to the specified instruction.
> >
> > One comment on the patch itself: we should make a decision about how to
> > approach this, one way or the other; this leaves us with both the base
> > and _sameloc versions of these functions.
>
> I am just testing version that kills the _sameloc, invents _noloc
> versions and updates uses in the cfg code that cause most of noise. It
> is roughly 20Kb patch however. (so newly invented basic blocks and code
> inserted into edges don't have random line number infromation attached
> to them)
> >
> > On Tue, Mar 23, 2004 at 12:52:16AM -0800, Mark Mitchell wrote:
> > > Dan (Jacobowitz), what say you about this patch and/or its empirical
> > > behavior in GDB-land?
> >
> > It does fix the regression. The resulting line number information
> > makes more logical sense to me, also. But I would like to understand
> > what Jan means by "less accurate"; could you give a testcase so that I
> > can examine the output myself, Jan?
>
> What I do is to simply compile GCC with optimization and coverage
> testing.
Hi,
here is the updated patch. It bootstraped i686-pc-gnu-linux and I am
running full testing on mainline and branch i686/ppc now.
It fixes the problems with wrong gcov counts caused by BB manipulation
and hope it will be acceptable for Daniel too. I worry relatively
little about what direction the defaults are, obviously we need to
revisit most of the emit* calls anyway.
Honza
2004-03-23 Jan Hubicka <jh@suse.cz>
* cfgrtl.c (try_redirect_by_replacing_jump,
force_nonfallthru_and_redirect, commit_one_edge_insertion,
cfg_layout_merge_blocks): Do not attach any line number information
to newly inserted instructions.
* emit-rtl.c (emit_insn*_before, emit_insn*_after): Rename to
emit_insn_*_noloc.
(emit_*insn_before, emit_insn*_after): New.
(emit_*insn_before_setloc, emit_*insn_after_setloc): Do not overwrite
existing locators.
* rtl.h (emit_*insn_before_noloc, emit_*insn_after_noloc): Declare.
(emit_*insn_before_sameloc, emit_*insn_after_sameloc): Kill.
Index: cfgrtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgrtl.c,v
retrieving revision 1.114
diff -c -3 -p -r1.114 cfgrtl.c
*** cfgrtl.c 22 Mar 2004 02:57:26 -0000 1.114
--- cfgrtl.c 23 Mar 2004 16:06:08 -0000
*************** try_redirect_by_replacing_jump (edge e,
*** 749,755 ****
rtx target_label = block_label (target);
rtx barrier, label, table;
! emit_jump_insn_after (gen_jump (target_label), insn);
JUMP_LABEL (BB_END (src)) = target_label;
LABEL_NUSES (target_label)++;
if (dump_file)
--- 749,755 ----
rtx target_label = block_label (target);
rtx barrier, label, table;
! emit_jump_insn_after_noloc (gen_jump (target_label), insn);
JUMP_LABEL (BB_END (src)) = target_label;
LABEL_NUSES (target_label)++;
if (dump_file)
*************** force_nonfallthru_and_redirect (edge e,
*** 1084,1097 ****
if (target == EXIT_BLOCK_PTR)
{
if (HAVE_return)
! emit_jump_insn_after (gen_return (), BB_END (jump_block));
else
abort ();
}
else
{
rtx label = block_label (target);
! emit_jump_insn_after (gen_jump (label), BB_END (jump_block));
JUMP_LABEL (BB_END (jump_block)) = label;
LABEL_NUSES (label)++;
}
--- 1084,1097 ----
if (target == EXIT_BLOCK_PTR)
{
if (HAVE_return)
! emit_jump_insn_after_noloc (gen_return (), BB_END (jump_block));
else
abort ();
}
else
{
rtx label = block_label (target);
! emit_jump_insn_after_noloc (gen_jump (label), BB_END (jump_block));
JUMP_LABEL (BB_END (jump_block)) = label;
LABEL_NUSES (label)++;
}
*************** commit_one_edge_insertion (edge e, int w
*** 1529,1539 ****
if (before)
{
! emit_insn_before (insns, before);
last = prev_nonnote_insn (before);
}
else
! last = emit_insn_after (insns, after);
if (returnjump_p (last))
{
--- 1529,1539 ----
if (before)
{
! emit_insn_before_noloc (insns, before);
last = prev_nonnote_insn (before);
}
else
! last = emit_insn_after_noloc (insns, after);
if (returnjump_p (last))
{
*************** cfg_layout_merge_blocks (basic_block a,
*** 2591,2597 ****
{
rtx first = BB_END (a), last;
! last = emit_insn_after (b->rbi->header, BB_END (a));
delete_insn_chain (NEXT_INSN (first), last);
b->rbi->header = NULL;
}
--- 2591,2597 ----
{
rtx first = BB_END (a), last;
! last = emit_insn_after_noloc (b->rbi->header, BB_END (a));
delete_insn_chain (NEXT_INSN (first), last);
b->rbi->header = NULL;
}
*************** cfg_layout_merge_blocks (basic_block a,
*** 2601,2607 ****
{
rtx first = unlink_insn_chain (BB_HEAD (b), BB_END (b));
! emit_insn_after (first, BB_END (a));
/* Skip possible DELETED_LABEL insn. */
if (!NOTE_INSN_BASIC_BLOCK_P (first))
first = NEXT_INSN (first);
--- 2601,2607 ----
{
rtx first = unlink_insn_chain (BB_HEAD (b), BB_END (b));
! emit_insn_after_noloc (first, BB_END (a));
/* Skip possible DELETED_LABEL insn. */
if (!NOTE_INSN_BASIC_BLOCK_P (first))
first = NEXT_INSN (first);
Index: emit-rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v
retrieving revision 1.386
diff -c -3 -p -r1.386 emit-rtl.c
*** emit-rtl.c 22 Mar 2004 00:40:43 -0000 1.386
--- emit-rtl.c 23 Mar 2004 16:06:09 -0000
*************** remove_unnecessary_notes (void)
*** 3904,3910 ****
/* Make X be output before the instruction BEFORE. */
rtx
! emit_insn_before (rtx x, rtx before)
{
rtx last = before;
rtx insn;
--- 3904,3910 ----
/* Make X be output before the instruction BEFORE. */
rtx
! emit_insn_before_noloc (rtx x, rtx before)
{
rtx last = before;
rtx insn;
*************** emit_insn_before (rtx x, rtx before)
*** 3954,3960 ****
and output it before the instruction BEFORE. */
rtx
! emit_jump_insn_before (rtx x, rtx before)
{
rtx insn, last = NULL_RTX;
--- 3954,3960 ----
and output it before the instruction BEFORE. */
rtx
! emit_jump_insn_before_noloc (rtx x, rtx before)
{
rtx insn, last = NULL_RTX;
*************** emit_jump_insn_before (rtx x, rtx before
*** 4000,4006 ****
and output it before the instruction BEFORE. */
rtx
! emit_call_insn_before (rtx x, rtx before)
{
rtx last = NULL_RTX, insn;
--- 4000,4006 ----
and output it before the instruction BEFORE. */
rtx
! emit_call_insn_before_noloc (rtx x, rtx before)
{
rtx last = NULL_RTX, insn;
*************** emit_insn_after_1 (rtx first, rtx after)
*** 4131,4137 ****
/* Make X be output after the insn AFTER. */
rtx
! emit_insn_after (rtx x, rtx after)
{
rtx last = after;
--- 4131,4137 ----
/* Make X be output after the insn AFTER. */
rtx
! emit_insn_after_noloc (rtx x, rtx after)
{
rtx last = after;
*************** emit_insn_after_with_line_notes (rtx x,
*** 4190,4196 ****
and output it after the insn AFTER. */
rtx
! emit_jump_insn_after (rtx x, rtx after)
{
rtx last;
--- 4190,4196 ----
and output it after the insn AFTER. */
rtx
! emit_jump_insn_after_noloc (rtx x, rtx after)
{
rtx last;
*************** emit_jump_insn_after (rtx x, rtx after)
*** 4229,4235 ****
and output it after the instruction AFTER. */
rtx
! emit_call_insn_after (rtx x, rtx after)
{
rtx last;
--- 4229,4235 ----
and output it after the instruction AFTER. */
rtx
! emit_call_insn_after_noloc (rtx x, rtx after)
{
rtx last;
*************** emit_note_copy_after (rtx orig, rtx afte
*** 4331,4349 ****
return note;
}
! /* Like emit_insn_after, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_insn_after_setloc (rtx pattern, rtx after, int loc)
{
! rtx last = emit_insn_after (pattern, after);
! if (pattern == NULL_RTX)
return last;
after = NEXT_INSN (after);
while (1)
{
! if (active_insn_p (after))
INSN_LOCATOR (after) = loc;
if (after == last)
break;
--- 4331,4349 ----
return note;
}
! /* Like emit_insn_after_noloc, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_insn_after_setloc (rtx pattern, rtx after, int loc)
{
! rtx last = emit_insn_after_noloc (pattern, after);
! if (pattern == NULL_RTX || !loc)
return last;
after = NEXT_INSN (after);
while (1)
{
! if (active_insn_p (after) && !INSN_LOCATOR (after))
INSN_LOCATOR (after) = loc;
if (after == last)
break;
*************** emit_insn_after_setloc (rtx pattern, rtx
*** 4352,4370 ****
return last;
}
! /* Like emit_jump_insn_after, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc)
{
! rtx last = emit_jump_insn_after (pattern, after);
! if (pattern == NULL_RTX)
return last;
after = NEXT_INSN (after);
while (1)
{
! if (active_insn_p (after))
INSN_LOCATOR (after) = loc;
if (after == last)
break;
--- 4352,4380 ----
return last;
}
! /* Like emit_insn_after_noloc, but set INSN_LOCATOR according to AFTER. */
! rtx
! emit_insn_after (rtx pattern, rtx after)
! {
! if (INSN_P (after))
! return emit_insn_after_setloc (pattern, after, INSN_LOCATOR (after));
! else
! return emit_insn_after_noloc (pattern, after);
! }
!
! /* Like emit_jump_insn_after_noloc, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc)
{
! rtx last = emit_jump_insn_after_noloc (pattern, after);
! if (pattern == NULL_RTX || !loc)
return last;
after = NEXT_INSN (after);
while (1)
{
! if (active_insn_p (after) && !INSN_LOCATOR (after))
INSN_LOCATOR (after) = loc;
if (after == last)
break;
*************** emit_jump_insn_after_setloc (rtx pattern
*** 4373,4391 ****
return last;
}
! /* Like emit_call_insn_after, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_call_insn_after_setloc (rtx pattern, rtx after, int loc)
{
! rtx last = emit_call_insn_after (pattern, after);
! if (pattern == NULL_RTX)
return last;
after = NEXT_INSN (after);
while (1)
{
! if (active_insn_p (after))
INSN_LOCATOR (after) = loc;
if (after == last)
break;
--- 4383,4411 ----
return last;
}
! /* Like emit_jump_insn_after_noloc, but set INSN_LOCATOR according to AFTER. */
! rtx
! emit_jump_insn_after (rtx pattern, rtx after)
! {
! if (INSN_P (after))
! return emit_jump_insn_after_setloc (pattern, after, INSN_LOCATOR (after));
! else
! return emit_jump_insn_after_noloc (pattern, after);
! }
!
! /* Like emit_call_insn_after_noloc, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_call_insn_after_setloc (rtx pattern, rtx after, int loc)
{
! rtx last = emit_call_insn_after_noloc (pattern, after);
! if (pattern == NULL_RTX || !loc)
return last;
after = NEXT_INSN (after);
while (1)
{
! if (active_insn_p (after) && !INSN_LOCATOR (after))
INSN_LOCATOR (after) = loc;
if (after == last)
break;
*************** emit_call_insn_after_setloc (rtx pattern
*** 4394,4405 ****
return last;
}
! /* Like emit_insn_before, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_insn_before_setloc (rtx pattern, rtx before, int loc)
{
rtx first = PREV_INSN (before);
! rtx last = emit_insn_before (pattern, before);
if (pattern == NULL_RTX)
return last;
--- 4414,4499 ----
return last;
}
! /* Like emit_call_insn_after_noloc, but set INSN_LOCATOR according to AFTER. */
! rtx
! emit_call_insn_after (rtx pattern, rtx after)
! {
! if (INSN_P (after))
! return emit_call_insn_after_setloc (pattern, after, INSN_LOCATOR (after));
! else
! return emit_call_insn_after_noloc (pattern, after);
! }
!
! /* Like emit_insn_before_noloc, but set INSN_LOCATOR according to SCOPE. */
rtx
emit_insn_before_setloc (rtx pattern, rtx before, int loc)
{
rtx first = PREV_INSN (before);
! rtx last = emit_insn_before_noloc (pattern, before);
!
! if (pattern == NULL_RTX || !loc)
! return last;
!
! 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;
! }
!
! /* Like emit_insn_before_noloc, but set INSN_LOCATOR according to BEFORE. */
! rtx
! emit_insn_before (rtx pattern, rtx before)
! {
! if (INSN_P (before))
! return emit_insn_before_setloc (pattern, before, INSN_LOCATOR (before));
! else
! return emit_insn_before_noloc (pattern, before);
! }
!
! /* like emit_insn_before_noloc, but set insn_locator according to scope. */
! rtx
! emit_jump_insn_before_setloc (rtx pattern, rtx before, int loc)
! {
! rtx first = PREV_INSN (before);
! rtx last = emit_jump_insn_before_noloc (pattern, before);
!
! if (pattern == NULL_RTX)
! return last;
!
! 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;
! }
!
! /* Like emit_jump_insn_before_noloc, but set INSN_LOCATOR according to BEFORE. */
! rtx
! emit_jump_insn_before (rtx pattern, rtx before)
! {
! if (INSN_P (before))
! return emit_jump_insn_before_setloc (pattern, before, INSN_LOCATOR (before));
! else
! return emit_jump_insn_before_noloc (pattern, before);
! }
!
! /* like emit_insn_before_noloc, but set insn_locator according to scope. */
! rtx
! emit_call_insn_before_setloc (rtx pattern, rtx before, int loc)
! {
! rtx first = PREV_INSN (before);
! rtx last = emit_call_insn_before_noloc (pattern, before);
if (pattern == NULL_RTX)
return last;
*************** emit_insn_before_setloc (rtx pattern, rt
*** 4407,4419 ****
first = NEXT_INSN (first);
while (1)
{
! if (active_insn_p (first))
INSN_LOCATOR (first) = loc;
if (first == last)
break;
first = NEXT_INSN (first);
}
return last;
}
/* Take X and emit it at the end of the doubly-linked
--- 4501,4524 ----
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;
+ }
+
+ /* like emit_call_insn_before_noloc,
+ but set insn_locator according to before. */
+ rtx
+ emit_call_insn_before (rtx pattern, rtx before)
+ {
+ if (INSN_P (before))
+ return emit_call_insn_before_setloc (pattern, before, INSN_LOCATOR (before));
+ else
+ return emit_call_insn_before_noloc (pattern, before);
}
/* Take X and emit it at the end of the doubly-linked
Index: gcse.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
retrieving revision 1.297
diff -c -3 -p -r1.297 gcse.c
*** gcse.c 22 Mar 2004 02:57:26 -0000 1.297
--- gcse.c 23 Mar 2004 16:06:10 -0000
*************** insert_insn_end_bb (struct expr *expr, b
*** 5303,5309 ****
}
#endif
/* FIXME: What if something in cc0/jump uses value set in new insn? */
! new_insn = emit_insn_before (pat, insn);
}
/* Likewise if the last insn is a call, as will happen in the presence
--- 5303,5309 ----
}
#endif
/* FIXME: What if something in cc0/jump uses value set in new insn? */
! new_insn = emit_insn_before_noloc (pat, insn);
}
/* Likewise if the last insn is a call, as will happen in the presence
*************** insert_insn_end_bb (struct expr *expr, b
*** 5342,5351 ****
|| NOTE_INSN_BASIC_BLOCK_P (insn))
insn = NEXT_INSN (insn);
! new_insn = emit_insn_before (pat, insn);
}
else
! new_insn = emit_insn_after (pat, insn);
while (1)
{
--- 5342,5351 ----
|| NOTE_INSN_BASIC_BLOCK_P (insn))
insn = NEXT_INSN (insn);
! new_insn = emit_insn_before_noloc (pat, insn);
}
else
! new_insn = emit_insn_after_noloc (pat, insn);
while (1)
{
*************** insert_insn_start_bb (rtx insn, basic_bl
*** 7669,7675 ****
before = NEXT_INSN (before);
}
! insn = emit_insn_after (insn, prev);
if (gcse_file)
{
--- 7669,7675 ----
before = NEXT_INSN (before);
}
! insn = emit_insn_after_noloc (insn, prev);
if (gcse_file)
{
Index: reload1.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/reload1.c,v
retrieving revision 1.432
diff -c -3 -p -r1.432 reload1.c
*** reload1.c 5 Mar 2004 10:17:40 -0000 1.432
--- reload1.c 23 Mar 2004 16:06:11 -0000
*************** emit_reload_insns (struct insn_chain *ch
*** 7024,7048 ****
reloads for the operand. The RELOAD_OTHER output reloads are
output in descending order by reload number. */
! emit_insn_before_sameloc (other_input_address_reload_insns, insn);
! emit_insn_before_sameloc (other_input_reload_insns, insn);
for (j = 0; j < reload_n_operands; j++)
{
! emit_insn_before_sameloc (inpaddr_address_reload_insns[j], insn);
! emit_insn_before_sameloc (input_address_reload_insns[j], insn);
! emit_insn_before_sameloc (input_reload_insns[j], insn);
}
! emit_insn_before_sameloc (other_operand_reload_insns, insn);
! emit_insn_before_sameloc (operand_reload_insns, insn);
for (j = 0; j < reload_n_operands; j++)
{
! rtx x = emit_insn_after_sameloc (outaddr_address_reload_insns[j], insn);
! x = emit_insn_after_sameloc (output_address_reload_insns[j], x);
! x = emit_insn_after_sameloc (output_reload_insns[j], x);
! emit_insn_after_sameloc (other_output_reload_insns[j], x);
}
/* For all the spill regs newly reloaded in this instruction,
--- 7024,7048 ----
reloads for the operand. The RELOAD_OTHER output reloads are
output in descending order by reload number. */
! emit_insn_before (other_input_address_reload_insns, insn);
! emit_insn_before (other_input_reload_insns, insn);
for (j = 0; j < reload_n_operands; j++)
{
! emit_insn_before (inpaddr_address_reload_insns[j], insn);
! emit_insn_before (input_address_reload_insns[j], insn);
! emit_insn_before (input_reload_insns[j], insn);
}
! emit_insn_before (other_operand_reload_insns, insn);
! emit_insn_before (operand_reload_insns, insn);
for (j = 0; j < reload_n_operands; j++)
{
! rtx x = emit_insn_after (outaddr_address_reload_insns[j], insn);
! x = emit_insn_after (output_address_reload_insns[j], x);
! x = emit_insn_after (output_reload_insns[j], x);
! emit_insn_after (other_output_reload_insns[j], x);
}
/* For all the spill regs newly reloaded in this instruction,
Index: rtl.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/rtl.h,v
retrieving revision 1.466
diff -c -3 -p -r1.466 rtl.h
*** rtl.h 20 Mar 2004 23:08:57 -0000 1.466
--- rtl.h 23 Mar 2004 16:06:11 -0000
*************** extern rtx assign_temp (tree, int, int,
*** 1656,1674 ****
--- 1656,1680 ----
/* In emit-rtl.c */
extern rtx emit_insn_before (rtx, rtx);
+ extern rtx emit_insn_before_noloc (rtx, rtx);
extern rtx emit_insn_before_setloc (rtx, rtx, int);
extern rtx emit_jump_insn_before (rtx, rtx);
+ extern rtx emit_jump_insn_before_noloc (rtx, rtx);
extern rtx emit_jump_insn_before_setloc (rtx, rtx, int);
extern rtx emit_call_insn_before (rtx, rtx);
+ extern rtx emit_call_insn_before_noloc (rtx, rtx);
extern rtx emit_call_insn_before_setloc (rtx, rtx, int);
extern rtx emit_barrier_before (rtx);
extern rtx emit_label_before (rtx, rtx);
extern rtx emit_note_before (int, rtx);
extern rtx emit_insn_after (rtx, rtx);
+ extern rtx emit_insn_after_noloc (rtx, rtx);
extern rtx emit_insn_after_setloc (rtx, rtx, int);
extern rtx emit_jump_insn_after (rtx, rtx);
+ extern rtx emit_jump_insn_after_noloc (rtx, rtx);
extern rtx emit_jump_insn_after_setloc (rtx, rtx, int);
extern rtx emit_call_insn_after (rtx, rtx);
+ extern rtx emit_call_insn_after_noloc (rtx, rtx);
extern rtx emit_call_insn_after_setloc (rtx, rtx, int);
extern rtx emit_barrier_after (rtx);
extern rtx emit_label_after (rtx, rtx);
*************** extern rtx prev_label (rtx);
*** 1698,1716 ****
extern rtx next_label (rtx);
extern rtx next_cc0_user (rtx);
extern rtx prev_cc0_setter (rtx);
-
- #define emit_insn_before_sameloc(INSN, BEFORE) \
- emit_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE))
- #define emit_jump_insn_before_sameloc(INSN, BEFORE) \
- emit_jump_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE))
- #define emit_call_insn_before_sameloc(INSN, BEFORE) \
- emit_call_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE))
- #define emit_insn_after_sameloc(INSN, AFTER) \
- emit_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER))
- #define emit_jump_insn_after_sameloc(INSN, AFTER) \
- emit_jump_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER))
- #define emit_call_insn_after_sameloc(INSN, AFTER) \
- emit_call_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER))
/* In cfglayout.c */
extern tree choose_inner_scope (tree, tree);
--- 1704,1709 ----