This is the mail archive of the gcc@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]
Other format: [Raw text]

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 ----


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