2003-07-02  Nathan Sidwell  <nathan@codesourcery.com>

	* rtl.h (emit_line_note): Take a location_t.
	(emit_line_note_force): Remove.
	(set_file_and_line_for_statement): Take a location_t.
	* tree.g (emit_line_note): Take a location_t.
	* emit-rtl.c (emit_line_note): Take a location_t.
	(emit_line_note_force): Remove.
	* function.c (init_function_start): Adjust emit_line_note call.
	(expand_function_end): Use force_next_line_note, not
	emit_line_note_force.
	* c-parse.in (maybe_type_qual): Adjust emit_line_note calls.
	* c-semantics.c (genrtl_do_pushlevel, genrtl_goto_stmt,
	genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
	genrtl_while_stmt, genrtl_do_stmt_1, genrtl_return_stmt,
	genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt,
	genrtl_continue_stmt, genrtl_switch_stmt,
	genrtl_asm_stmt): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (set_file_and_line_for_stmt): Take a location_t.
	(expand_decl_init): Adjust emit_line_note call.

	* ada/trans.c (build_unit_elab, set_lineno): Adjust emit_line_note
	calls.

	* cp/semantics.c: (genrtl_try_block) Adjust emit_line_note
	calls.

	* f/com.c (bison_rule_pushlevel_, bison_rule_compstmt_): Adjust
	emit_line_note calls.
	* f/ste.c (ffeste_emit_line_note_): Likewise.

	* java/expr.c (expand_byte_code):

	* treelang/treetree.c (tree_code_if_start, tree_code_if_else,
	tree_code_if_end, tree_code_create_function_initial,
	tree_code_create_function_wrapup, tree_code_generate_return,
	tree_code_output_expression_statement): Adjust emit_line_note
	calls.

Index: c-parse.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-parse.in,v
retrieving revision 1.166
diff -c -3 -p -r1.166 c-parse.in
*** c-parse.in	1 Jul 2003 09:00:29 -0000	1.166
--- c-parse.in	1 Jul 2003 18:36:14 -0000
*************** label:	  CASE expr_no_commas ':'
*** 2462,2471 ****
  
  maybe_type_qual:
  	/* empty */
! 		{ emit_line_note (input_filename, input_line);
  		  $$ = NULL_TREE; }
  	| TYPE_QUAL
! 		{ emit_line_note (input_filename, input_line); }
  	;
  
  xexpr:
--- 2462,2471 ----
  
  maybe_type_qual:
  	/* empty */
! 		{ emit_line_note (input_location);
  		  $$ = NULL_TREE; }
  	| TYPE_QUAL
! 		{ emit_line_note (input_location); }
  	;
  
  xexpr:
Index: c-semantics.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-semantics.c,v
retrieving revision 1.64
diff -c -3 -p -r1.64 c-semantics.c
*** c-semantics.c	27 Jun 2003 09:49:30 -0000	1.64
--- c-semantics.c	1 Jul 2003 18:36:15 -0000
*************** emit_local_var (tree decl)
*** 296,302 ****
  void
  genrtl_do_pushlevel (void)
  {
!   emit_line_note (input_filename, input_line);
    clear_last_expr ();
  }
  
--- 296,302 ----
  void
  genrtl_do_pushlevel (void)
  {
!   emit_line_note (input_location);
    clear_last_expr ();
  }
  
*************** genrtl_goto_stmt (tree destination)
*** 313,319 ****
    if (TREE_CODE (destination) == LABEL_DECL)
      TREE_USED (destination) = 1;
  
!   emit_line_note (input_filename, input_line);
  
    if (TREE_CODE (destination) == LABEL_DECL)
      {
--- 313,319 ----
    if (TREE_CODE (destination) == LABEL_DECL)
      TREE_USED (destination) = 1;
  
!   emit_line_note (input_location);
  
    if (TREE_CODE (destination) == LABEL_DECL)
      {
*************** genrtl_expr_stmt_value (tree expr, int w
*** 346,352 ****
  {
    if (expr != NULL_TREE)
      {
!       emit_line_note (input_filename, input_line);
  
        if (stmts_are_full_exprs_p ())
  	expand_start_target_temps ();
--- 346,352 ----
  {
    if (expr != NULL_TREE)
      {
!       emit_line_note (input_location);
  
        if (stmts_are_full_exprs_p ())
  	expand_start_target_temps ();
*************** void
*** 365,371 ****
  genrtl_decl_stmt (tree t)
  {
    tree decl;
!   emit_line_note (input_filename, input_line);
    decl = DECL_STMT_DECL (t);
    /* If this is a declaration for an automatic local
       variable, initialize it.  Note that we might also see a
--- 365,371 ----
  genrtl_decl_stmt (tree t)
  {
    tree decl;
!   emit_line_note (input_location);
    decl = DECL_STMT_DECL (t);
    /* If this is a declaration for an automatic local
       variable, initialize it.  Note that we might also see a
*************** genrtl_if_stmt (tree t)
*** 401,407 ****
    tree cond;
    genrtl_do_pushlevel ();
    cond = expand_cond (IF_COND (t));
!   emit_line_note (input_filename, input_line);
    expand_start_cond (cond, 0);
    if (THEN_CLAUSE (t))
      {
--- 401,407 ----
    tree cond;
    genrtl_do_pushlevel ();
    cond = expand_cond (IF_COND (t));
!   emit_line_note (input_location);
    expand_start_cond (cond, 0);
    if (THEN_CLAUSE (t))
      {
*************** genrtl_while_stmt (tree t)
*** 431,444 ****
    tree cond = WHILE_COND (t);
  
    emit_nop ();
!   emit_line_note (input_filename, input_line);
    expand_start_loop (1);
    genrtl_do_pushlevel ();
  
    if (cond && !integer_nonzerop (cond))
      {
        cond = expand_cond (cond);
!       emit_line_note (input_filename, input_line);
        expand_exit_loop_top_cond (0, cond);
        genrtl_do_pushlevel ();
      }
--- 431,444 ----
    tree cond = WHILE_COND (t);
  
    emit_nop ();
!   emit_line_note (input_location);
    expand_start_loop (1);
    genrtl_do_pushlevel ();
  
    if (cond && !integer_nonzerop (cond))
      {
        cond = expand_cond (cond);
!       emit_line_note (input_location);
        expand_exit_loop_top_cond (0, cond);
        genrtl_do_pushlevel ();
      }
*************** genrtl_do_stmt_1 (tree cond, tree body)
*** 468,492 ****
    else if (integer_nonzerop (cond))
      {
        emit_nop ();
!       emit_line_note (input_filename, input_line);
        expand_start_loop (1);
  
        expand_stmt (body);
  
!       emit_line_note (input_filename, input_line);
        expand_end_loop ();
      }
    else
      {
        emit_nop ();
!       emit_line_note (input_filename, input_line);
        expand_start_loop_continue_elsewhere (1);
  
        expand_stmt (body);
  
        expand_loop_continue_here ();
        cond = expand_cond (cond);
!       emit_line_note (input_filename, input_line);
        expand_exit_loop_if_false (0, cond);
        expand_end_loop ();
      }
--- 468,492 ----
    else if (integer_nonzerop (cond))
      {
        emit_nop ();
!       emit_line_note (input_location);
        expand_start_loop (1);
  
        expand_stmt (body);
  
!       emit_line_note (input_location);
        expand_end_loop ();
      }
    else
      {
        emit_nop ();
!       emit_line_note (input_location);
        expand_start_loop_continue_elsewhere (1);
  
        expand_stmt (body);
  
        expand_loop_continue_here ();
        cond = expand_cond (cond);
!       emit_line_note (input_location);
        expand_exit_loop_if_false (0, cond);
        expand_end_loop ();
      }
*************** genrtl_return_stmt (tree stmt)
*** 517,523 ****
  
    expr = RETURN_STMT_EXPR (stmt);
  
!   emit_line_note (input_filename, input_line);
    if (!expr)
      expand_null_return ();
    else
--- 517,523 ----
  
    expr = RETURN_STMT_EXPR (stmt);
  
!   emit_line_note (input_location);
    if (!expr)
      expand_null_return ();
    else
*************** genrtl_for_stmt (tree t)
*** 543,549 ****
  
    /* Expand the initialization.  */
    emit_nop ();
!   emit_line_note (input_filename, input_line);
    if (FOR_EXPR (t))
      expand_start_loop_continue_elsewhere (1);
    else
--- 543,549 ----
  
    /* Expand the initialization.  */
    emit_nop ();
!   emit_line_note (input_location);
    if (FOR_EXPR (t))
      expand_start_loop_continue_elsewhere (1);
    else
*************** genrtl_for_stmt (tree t)
*** 558,564 ****
    if (cond && !integer_nonzerop (cond))
      {
        cond = expand_cond (cond);
!       emit_line_note (input_filename, input_line);
        expand_exit_loop_top_cond (0, cond);
        genrtl_do_pushlevel ();
      }
--- 558,564 ----
    if (cond && !integer_nonzerop (cond))
      {
        cond = expand_cond (cond);
!       emit_line_note (input_location);
        expand_exit_loop_top_cond (0, cond);
        genrtl_do_pushlevel ();
      }
*************** genrtl_for_stmt (tree t)
*** 568,574 ****
  
    /* Expand the increment expression.  */
    input_location = saved_loc;
!   emit_line_note (input_filename, input_line);
    if (FOR_EXPR (t))
      {
        expand_loop_continue_here ();
--- 568,574 ----
  
    /* Expand the increment expression.  */
    input_location = saved_loc;
!   emit_line_note (input_location);
    if (FOR_EXPR (t))
      {
        expand_loop_continue_here ();
*************** build_break_stmt (void)
*** 590,596 ****
  void
  genrtl_break_stmt (void)
  {
!   emit_line_note (input_filename, input_line);
    if ( ! expand_exit_something ())
      error ("break statement not within loop or switch");
  }
--- 590,596 ----
  void
  genrtl_break_stmt (void)
  {
!   emit_line_note (input_location);
    if ( ! expand_exit_something ())
      error ("break statement not within loop or switch");
  }
*************** build_continue_stmt (void)
*** 608,614 ****
  void
  genrtl_continue_stmt (void)
  {
!   emit_line_note (input_filename, input_line);
    if (! expand_continue_loop (0))
      error ("continue statement not within a loop");
  }
--- 608,614 ----
  void
  genrtl_continue_stmt (void)
  {
!   emit_line_note (input_location);
    if (! expand_continue_loop (0))
      error ("continue statement not within a loop");
  }
*************** genrtl_switch_stmt (tree t)
*** 670,676 ****
         crash.  */
      cond = boolean_false_node;
  
!   emit_line_note (input_filename, input_line);
    expand_start_case (1, cond, TREE_TYPE (cond), "switch statement");
    expand_stmt (expand_unreachable_stmt (SWITCH_BODY (t), warn_notreached));
    expand_end_case_type (cond, SWITCH_TYPE (t));
--- 670,676 ----
         crash.  */
      cond = boolean_false_node;
  
!   emit_line_note (input_location);
    expand_start_case (1, cond, TREE_TYPE (cond), "switch statement");
    expand_stmt (expand_unreachable_stmt (SWITCH_BODY (t), warn_notreached));
    expand_end_case_type (cond, SWITCH_TYPE (t));
*************** genrtl_asm_stmt (tree cv_qualifier, tree
*** 742,748 ****
        cv_qualifier = NULL_TREE;
      }
  
!   emit_line_note (input_filename, input_line);
    if (asm_input_p)
      expand_asm (string, cv_qualifier != NULL_TREE);
    else
--- 742,748 ----
        cv_qualifier = NULL_TREE;
      }
  
!   emit_line_note (input_location);
    if (asm_input_p)
      expand_asm (string, cv_qualifier != NULL_TREE);
    else
Index: emit-rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v
retrieving revision 1.338
diff -c -3 -p -r1.338 emit-rtl.c
*** emit-rtl.c	1 Jul 2003 09:17:50 -0000	1.338
--- emit-rtl.c	1 Jul 2003 18:36:24 -0000
*************** emit_barrier (void)
*** 4665,4699 ****
    return barrier;
  }
  
! /* Make an insn of code NOTE
!    with data-fields specified by FILE and LINE
!    and add it to the end of the doubly-linked list,
!    but only if line-numbers are desired for debugging info.  */
  
  rtx
! emit_line_note (const char *file, int line)
  {
    rtx note;
! 
!   if (line < 0)
!     abort ();
! 
!   set_file_and_line_for_stmt (file, line);
! 
!   if (file && last_location.file && !strcmp (file, last_location.file)
!       && line == last_location.line)
      return NULL_RTX;
!   last_location.file = file;
!   last_location.line = line;
! 
    if (no_line_numbers)
      {
        cur_insn_uid++;
        return NULL_RTX;
      }
  
!   note = emit_note (line);
!   NOTE_SOURCE_FILE (note) = file;
    
    return note;
  }
--- 4665,4695 ----
    return barrier;
  }
  
! /* Make line numbering NOTE insn for LOCATION add it to the end
!    of the doubly-linked list, but only if line-numbers are desired for
!    debugging info and it doesn't match the previous one.  */
  
  rtx
! emit_line_note (location_t location)
  {
    rtx note;
!   
!   set_file_and_line_for_stmt (location);
!   
!   if (location.file && last_location.file
!       && !strcmp (location.file, last_location.file)
!       && location.line == last_location.line)
      return NULL_RTX;
!   last_location = location;
!   
    if (no_line_numbers)
      {
        cur_insn_uid++;
        return NULL_RTX;
      }
  
!   note = emit_note (location.line);
!   NOTE_SOURCE_FILE (note) = location.file;
    
    return note;
  }
*************** emit_note (int note_no)
*** 4739,4755 ****
    return note;
  }
  
- /* Emit a NOTE, and don't omit it even if LINE is the previous note.  */
- 
- rtx
- emit_line_note_force (const char *file, int line)
- {
-   last_location.line = -1;
-   return emit_line_note (file, line);
- }
- 
  /* Cause next statement to emit a line note even if the line number
!    has not changed.  This is used at the beginning of a function.  */
  
  void
  force_next_line_note (void)
--- 4736,4743 ----
    return note;
  }
  
  /* Cause next statement to emit a line note even if the line number
!    has not changed.  */
  
  void
  force_next_line_note (void)
Index: expr.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expr.c,v
retrieving revision 1.559
diff -c -3 -p -r1.559 expr.c
*** expr.c	29 Jun 2003 17:47:37 -0000	1.559
--- expr.c	1 Jul 2003 18:36:46 -0000
*************** expand_expr (tree exp, rtx target, enum 
*** 6917,6923 ****
  	input_filename = EXPR_WFL_FILENAME (exp);
  	input_line = EXPR_WFL_LINENO (exp);
  	if (EXPR_WFL_EMIT_LINE_NOTE (exp))
! 	  emit_line_note (input_filename, input_line);
  	/* Possibly avoid switching back and forth here.  */
  	to_return = expand_expr (EXPR_WFL_NODE (exp), target, tmode, modifier);
  	input_location = saved_loc;
--- 6917,6923 ----
  	input_filename = EXPR_WFL_FILENAME (exp);
  	input_line = EXPR_WFL_LINENO (exp);
  	if (EXPR_WFL_EMIT_LINE_NOTE (exp))
! 	  emit_line_note (input_location);
  	/* Possibly avoid switching back and forth here.  */
  	to_return = expand_expr (EXPR_WFL_NODE (exp), target, tmode, modifier);
  	input_location = saved_loc;
Index: function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.443
diff -c -3 -p -r1.443 function.c
*** function.c	1 Jul 2003 16:20:39 -0000	1.443
--- function.c	1 Jul 2003 18:37:03 -0000
*************** init_function_start (tree subr)
*** 6379,6385 ****
       function prologue.  Note linenums could be missing, e.g. when
       compiling a Java .class file.  */
    if (DECL_SOURCE_LINE (subr))
!     emit_line_note (DECL_SOURCE_FILE (subr), DECL_SOURCE_LINE (subr));
  
    /* Make sure first insn is a note even if we don't want linenums.
       This makes sure the first insn will never be deleted.
--- 6379,6385 ----
       function prologue.  Note linenums could be missing, e.g. when
       compiling a Java .class file.  */
    if (DECL_SOURCE_LINE (subr))
!     emit_line_note (DECL_SOURCE_LOCATION (subr));
  
    /* Make sure first insn is a note even if we don't want linenums.
       This makes sure the first insn will never be deleted.
*************** expand_function_end (void)
*** 6918,6925 ****
  
    /* Output a linenumber for the end of the function.
       SDB depends on this.  */
! 
!   emit_line_note_force (input_filename, input_line);
  
    /* Before the return label (if any), clobber the return
       registers so that they are not propagated live to the rest of
--- 6918,6925 ----
  
    /* Output a linenumber for the end of the function.
       SDB depends on this.  */
!   force_next_line_note ();
!   emit_line_note (input_location);
  
    /* Before the return label (if any), clobber the return
       registers so that they are not propagated live to the rest of
Index: integrate.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/integrate.c,v
retrieving revision 1.228
diff -c -3 -p -r1.228 integrate.c
*** integrate.c	1 Jul 2003 09:17:51 -0000	1.228
--- integrate.c	1 Jul 2003 18:37:10 -0000
*************** expand_inline_function (fndecl, parms, t
*** 1016,1023 ****
  	  && ! (GET_CODE (XEXP (loc, 0)) == REG
  		&& REGNO (XEXP (loc, 0)) > LAST_VIRTUAL_REGISTER))
  	{
! 	  rtx note = emit_line_note (DECL_SOURCE_FILE (formal),
! 				     DECL_SOURCE_LINE (formal));
  	  if (note)
  	    RTX_INTEGRATED_P (note) = 1;
  
--- 1015,1022 ----
  	  && ! (GET_CODE (XEXP (loc, 0)) == REG
  		&& REGNO (XEXP (loc, 0)) > LAST_VIRTUAL_REGISTER))
  	{
! 	  rtx note = emit_line_note (DECL_SOURCE_LOCATION (formal));
! 
  	  if (note)
  	    RTX_INTEGRATED_P (note) = 1;
  
*************** expand_inline_function (fndecl, parms, t
*** 1306,1312 ****
    if (flag_test_coverage)
      emit_note (NOTE_INSN_REPEATED_LINE_NUMBER);
  
!   emit_line_note (input_filename, input_line);
  
    /* If the function returns a BLKmode object in a register, copy it
       out of the temp register into a BLKmode memory object.  */
--- 1305,1311 ----
    if (flag_test_coverage)
      emit_note (NOTE_INSN_REPEATED_LINE_NUMBER);
  
!   emit_line_note (input_location);
  
    /* If the function returns a BLKmode object in a register, copy it
       out of the temp register into a BLKmode memory object.  */
Index: rtl.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/rtl.h,v
retrieving revision 1.423
diff -c -3 -p -r1.423 rtl.h
*** rtl.h	1 Jul 2003 09:17:51 -0000	1.423
--- rtl.h	1 Jul 2003 18:37:17 -0000
*************** extern rtx emit_label			PARAMS ((rtx));
*** 1536,1543 ****
  extern rtx emit_barrier			PARAMS ((void));
  extern rtx emit_note			PARAMS ((int));
  extern rtx emit_note_copy		PARAMS ((rtx));
! extern rtx emit_line_note		PARAMS ((const char *, int));
! extern rtx emit_line_note_force		PARAMS ((const char *, int));
  extern rtx make_insn_raw		PARAMS ((rtx));
  extern void add_function_usage_to       PARAMS ((rtx, rtx));
  extern rtx last_call_insn               PARAMS ((void));
--- 1536,1542 ----
  extern rtx emit_barrier			PARAMS ((void));
  extern rtx emit_note			PARAMS ((int));
  extern rtx emit_note_copy		PARAMS ((rtx));
! extern rtx emit_line_note		PARAMS ((location_t));
  extern rtx make_insn_raw		PARAMS ((rtx));
  extern void add_function_usage_to       PARAMS ((rtx, rtx));
  extern rtx last_call_insn               PARAMS ((void));
*************** extern void purge_addressof				PARAMS ((
*** 2133,2139 ****
  extern void purge_hard_subreg_sets			PARAMS ((rtx));
  
  /* In stmt.c */
! extern void set_file_and_line_for_stmt	PARAMS ((const char *, int));
  extern void expand_null_return		PARAMS ((void));
  extern void emit_jump			PARAMS ((rtx));
  extern int preserve_subexpressions_p	PARAMS ((void));
--- 2132,2138 ----
  extern void purge_hard_subreg_sets			PARAMS ((rtx));
  
  /* In stmt.c */
! extern void set_file_and_line_for_stmt	PARAMS ((location_t));
  extern void expand_null_return		PARAMS ((void));
  extern void emit_jump			PARAMS ((rtx));
  extern int preserve_subexpressions_p	PARAMS ((void));
Index: stmt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/stmt.c,v
retrieving revision 1.314
diff -c -3 -p -r1.314 stmt.c
*** stmt.c	1 Jul 2003 02:04:11 -0000	1.314
--- stmt.c	1 Jul 2003 18:37:30 -0000
*************** init_stmt_for_function ()
*** 460,478 ****
  }
  
  /* Record the current file and line.  Called from emit_line_note.  */
  void
! set_file_and_line_for_stmt (file, line)
!      const char *file;
!      int line;
  {
    /* If we're outputting an inline function, and we add a line note,
       there may be no CFUN->STMT information.  So, there's no need to
       update it.  */
    if (cfun->stmt)
!     {
!       emit_locus.file = file;
!       emit_locus.line = line;
!     }
  }
  
  /* Emit a no-op instruction.  */
--- 460,475 ----
  }
  
  /* Record the current file and line.  Called from emit_line_note.  */
+ 
  void
! set_file_and_line_for_stmt (location)
!      location_t location;
  {
    /* If we're outputting an inline function, and we add a line note,
       there may be no CFUN->STMT information.  So, there's no need to
       update it.  */
    if (cfun->stmt)
!     emit_locus = location;
  }
  
  /* Emit a no-op instruction.  */
*************** expand_decl_init (decl)
*** 4076,4082 ****
      }
    else if (DECL_INITIAL (decl) && TREE_CODE (DECL_INITIAL (decl)) != TREE_LIST)
      {
!       emit_line_note (DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
        expand_assignment (decl, DECL_INITIAL (decl), 0, 0);
        emit_queue ();
      }
--- 4073,4079 ----
      }
    else if (DECL_INITIAL (decl) && TREE_CODE (DECL_INITIAL (decl)) != TREE_LIST)
      {
!       emit_line_note (DECL_SOURCE_LOCATION (decl));
        expand_assignment (decl, DECL_INITIAL (decl), 0, 0);
        emit_queue ();
      }
Index: tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree.h,v
retrieving revision 1.418
diff -c -3 -p -r1.418 tree.h
*** tree.h	1 Jul 2003 02:04:11 -0000	1.418
--- tree.h	1 Jul 2003 18:37:38 -0000
*************** extern void check_max_integer_computatio
*** 2871,2877 ****
  
  /* In emit-rtl.c */
  extern void start_sequence_for_rtl_expr		PARAMS ((tree));
! extern rtx emit_line_note		PARAMS ((const char *, int));
  
  /* In calls.c */
  
--- 2871,2877 ----
  
  /* In emit-rtl.c */
  extern void start_sequence_for_rtl_expr		PARAMS ((tree));
! extern rtx emit_line_note		PARAMS ((location_t));
  
  /* In calls.c */
  
Index: ada/trans.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/trans.c,v
retrieving revision 1.29
diff -c -3 -p -r1.29 trans.c
*** ada/trans.c	10 Jun 2003 21:48:32 -0000	1.29
--- ada/trans.c	1 Jul 2003 18:37:56 -0000
*************** build_unit_elab (gnat_unit, body_p, gnu_
*** 5341,5347 ****
  	    && TYPE_IS_PADDING_P (TREE_TYPE (lhs)))
  	  lhs = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (lhs))), lhs);
  
! 	emit_line_note (input_filename, input_line);
  	expand_expr_stmt (build_binary_op (MODIFY_EXPR, NULL_TREE,
  					   TREE_PURPOSE (gnu_elab_list),
  					   TREE_VALUE (gnu_elab_list)));
--- 5341,5347 ----
  	    && TYPE_IS_PADDING_P (TREE_TYPE (lhs)))
  	  lhs = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (lhs))), lhs);
  
! 	emit_line_note (input_location);
  	expand_expr_stmt (build_binary_op (MODIFY_EXPR, NULL_TREE,
  					   TREE_PURPOSE (gnu_elab_list),
  					   TREE_VALUE (gnu_elab_list)));
*************** set_lineno (gnat_node, write_note_p)
*** 5407,5413 ****
    input_line = Get_Logical_Line_Number (source_location);
  
    if (write_note_p)
!     emit_line_note (input_filename, input_line);
  }
  
  /* Post an error message.  MSG is the error message, properly annotated.
--- 5407,5413 ----
    input_line = Get_Logical_Line_Number (source_location);
  
    if (write_note_p)
!     emit_line_note (input_location);
  }
  
  /* Post an error message.  MSG is the error message, properly annotated.
Index: cp/semantics.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/semantics.c,v
retrieving revision 1.316
diff -c -3 -p -r1.316 semantics.c
*** cp/semantics.c	1 Jul 2003 09:00:40 -0000	1.316
--- cp/semantics.c	1 Jul 2003 18:38:04 -0000
*************** genrtl_try_block (tree t)
*** 794,800 ****
    else
      {
        if (!FN_TRY_BLOCK_P (t)) 
! 	emit_line_note (input_filename, input_line);
  
        expand_eh_region_start ();
        expand_stmt (TRY_STMTS (t));
--- 794,800 ----
    else
      {
        if (!FN_TRY_BLOCK_P (t)) 
! 	emit_line_note (input_location);
  
        expand_eh_region_start ();
        expand_stmt (TRY_STMTS (t));
Index: f/com.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/f/com.c,v
retrieving revision 1.208
diff -c -3 -p -r1.208 com.c
*** f/com.c	28 Jun 2003 00:42:31 -0000	1.208
--- f/com.c	1 Jul 2003 18:38:36 -0000
*************** ffecom_which_entrypoint_decl ()
*** 13131,13137 ****
  static void
  bison_rule_pushlevel_ ()
  {
!   emit_line_note (input_filename, input_line);
    pushlevel (0);
    clear_last_expr ();
    expand_start_bindings (0);
--- 13131,13137 ----
  static void
  bison_rule_pushlevel_ ()
  {
!   emit_line_note (input_location);
    pushlevel (0);
    clear_last_expr ();
    expand_start_bindings (0);
*************** bison_rule_compstmt_ ()
*** 13147,13153 ****
    if (! keep)
      current_binding_level->names = NULL_TREE;
  
!   emit_line_note (input_filename, input_line);
    expand_end_bindings (getdecls (), keep, 0);
    t = poplevel (keep, 1, 0);
  
--- 13147,13153 ----
    if (! keep)
      current_binding_level->names = NULL_TREE;
  
!   emit_line_note (input_location);
    expand_end_bindings (getdecls (), keep, 0);
    t = poplevel (keep, 1, 0);
  
Index: f/ste.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/f/ste.c,v
retrieving revision 1.38
diff -c -3 -p -r1.38 ste.c
*** f/ste.c	8 Jun 2003 13:56:35 -0000	1.38
--- f/ste.c	1 Jul 2003 18:38:44 -0000
*************** static void ffeste_subr_beru_ (ffestpBer
*** 141,147 ****
  /* Internal macros. */
  
  #define ffeste_emit_line_note_() \
!   emit_line_note (input_filename, input_line)
  #define ffeste_check_simple_() \
    assert(ffeste_statelet_ == FFESTE_stateletSIMPLE_)
  #define ffeste_check_start_() \
--- 141,147 ----
  /* Internal macros. */
  
  #define ffeste_emit_line_note_() \
!   emit_line_note (input_location)
  #define ffeste_check_simple_() \
    assert(ffeste_statelet_ == FFESTE_stateletSIMPLE_)
  #define ffeste_check_start_() \
Index: java/expr.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/expr.c,v
retrieving revision 1.166
diff -c -3 -p -r1.166 expr.c
*** java/expr.c	28 Jun 2003 00:30:31 -0000	1.166
--- java/expr.c	1 Jul 2003 18:38:51 -0000
*************** expand_byte_code (JCF *jcf, tree method)
*** 2828,2834 ****
  	      if (pc == PC)
  		{
  		  input_line = GET_u2 (linenumber_pointer - 2);
! 		  emit_line_note (input_filename, input_line);
  		  if (!(instruction_bits[PC] & BCODE_HAS_MULTI_LINENUMBERS))
  		    break;
  		}
--- 2828,2834 ----
  	      if (pc == PC)
  		{
  		  input_line = GET_u2 (linenumber_pointer - 2);
! 		  emit_line_note (input_location);
  		  if (!(instruction_bits[PC] & BCODE_HAS_MULTI_LINENUMBERS))
  		    break;
  		}
Index: treelang/treetree.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/treelang/treetree.c,v
retrieving revision 1.30
diff -c -3 -p -r1.30 treetree.c
*** treelang/treetree.c	20 Jun 2003 09:08:23 -0000	1.30
--- treelang/treetree.c	1 Jul 2003 18:39:23 -0000
*************** tree_code_if_start (tree exp, location_t
*** 189,195 ****
                   TREE_TYPE (exp),
                   exp,
                   build1 (CONVERT_EXPR, TREE_TYPE (exp), integer_zero_node));
!   emit_line_note (loc.file, loc.line); /* Output the line number information.  */
    expand_start_cond (cond_exp, /* Exit-able if nonzero.  */ 0);
  }
  
--- 189,195 ----
                   TREE_TYPE (exp),
                   exp,
                   build1 (CONVERT_EXPR, TREE_TYPE (exp), integer_zero_node));
!   emit_line_note (loc); /* Output the line number information.  */
    expand_start_cond (cond_exp, /* Exit-able if nonzero.  */ 0);
  }
  
*************** tree_code_if_start (tree exp, location_t
*** 199,205 ****
  void
  tree_code_if_else (location_t loc)
  {
!   emit_line_note (loc.file, loc.line); /* Output the line number information.  */
    expand_start_else ();
  }
  
--- 199,205 ----
  void
  tree_code_if_else (location_t loc)
  {
!   emit_line_note (loc); /* Output the line number information.  */
    expand_start_else ();
  }
  
*************** tree_code_if_else (location_t loc)
*** 209,215 ****
  void
  tree_code_if_end (location_t loc)
  {
!   emit_line_note (loc.file, loc.line); /* Output the line number information.  */
    expand_end_cond ();
  }
  
--- 209,215 ----
  void
  tree_code_if_end (location_t loc)
  {
!   emit_line_note (loc); /* Output the line number information.  */
    expand_end_cond ();
  }
  
*************** tree_code_create_function_initial (tree 
*** 428,434 ****
  
    expand_start_bindings (0);
  
!   emit_line_note (loc.file, loc.line); /* Output the line number information.  */
  }
  
  /* Wrapup a function contained in file FILENAME, ending at line LINENO.  */
--- 428,434 ----
  
    expand_start_bindings (0);
  
!   emit_line_note (loc); /* Output the line number information.  */
  }
  
  /* Wrapup a function contained in file FILENAME, ending at line LINENO.  */
*************** tree_code_create_function_wrapup (locati
*** 440,446 ****
  
    fn_decl = current_function_decl;
  
!   emit_line_note (loc.file, loc.line); /* Output the line number information.  */
  
    /* Get completely built level from debugger symbol table.  */
  
--- 440,446 ----
  
    fn_decl = current_function_decl;
  
!   emit_line_note (loc); /* Output the line number information.  */
  
    /* Get completely built level from debugger symbol table.  */
  
*************** tree_code_generate_return (tree type, tr
*** 602,612 ****
  
  
  void
! tree_code_output_expression_statement (tree code,
!                                        location_t loc)
  {
    /* Output the line number information.  */
!   emit_line_note (loc.file, loc.line);
    TREE_USED (code) = 1;
    TREE_SIDE_EFFECTS (code) = 1;
    expand_expr_stmt (code);
--- 602,611 ----
  
  
  void
! tree_code_output_expression_statement (tree code, location_t loc)
  {
    /* Output the line number information.  */
!   emit_line_note (loc);
    TREE_USED (code) = 1;
    TREE_SIDE_EFFECTS (code) = 1;
    expand_expr_stmt (code);
