cfglayout.c (locator_file): Break out from ....
authorJan Hubicka <jh@suse.cz>
Mon, 14 Jul 2003 21:18:15 +0000 (23:18 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 14 Jul 2003 21:18:15 +0000 (21:18 +0000)
* cfglayout.c (locator_file): Break out from ....
(insn_file): ... here.
(locator_line): Break out from ....
(insn_line): ... here.
* rtl.h (locator_file, locator_line): Declare.
(final_start_function): Set proper line/file info.

From-SVN: r69359

gcc/ChangeLog
gcc/cfglayout.c
gcc/final.c
gcc/rtl.h

index ecd072f9288912956ea88e4a4107fd018680d23a..7d63ed9efe7183dcf2e5612015da26ec9fe6376d 100644 (file)
@@ -1,3 +1,12 @@
+Mon Jul 14 23:14:28 CEST 2003  Jan Hubicka  <jh@suse.cz>
+
+       * cfglayout.c (locator_file): Break out from ....
+       (insn_file): ... here.
+       (locator_line): Break out from ....
+       (insn_line): ... here.
+       * rtl.h (locator_file, locator_line): Declare.
+       (final_start_function): Set proper line/file info.
+
 2003-07-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
        * c-pretty-print.c (pp_c_unary_expression): A CONVERT_EXPR is
index 7172eaa7c3d0dc8ab93e6377c85d2ded586e11e2..38390894ac8ec0c18c94fd97c757f596bcb50c53 100644 (file)
@@ -435,13 +435,12 @@ insn_scope (rtx insn)
    return VARRAY_TREE (block_locators_blocks, min);
 }
 
-/* Return line number of the statement that produced this insn.  */
+/* Return line number of the statement specified by the locator.  */
 int
-insn_line (rtx insn)
+locator_line (int loc)
 {
   int max = VARRAY_ACTIVE_SIZE (line_locators_locs);
   int min = 0;
-  int loc = INSN_LOCATOR (insn);
 
   if (!max || !loc)
     return 0;
@@ -463,13 +462,19 @@ insn_line (rtx insn)
    return VARRAY_INT (line_locators_lines, min);
 }
 
-/* Return source file of the statement that produced this insn.  */
+/* Return line number of the statement that produced this insn.  */
+int
+insn_line (rtx insn)
+{
+  return locator_line (INSN_LOCATOR (insn));
+}
+
+/* Return source file of the statement specified by LOC.  */
 const char *
-insn_file (rtx insn)
+locator_file (int loc)
 {
   int max = VARRAY_ACTIVE_SIZE (file_locators_locs);
   int min = 0;
-  int loc = INSN_LOCATOR (insn);
 
   if (!max || !loc)
     return NULL;
@@ -491,6 +496,13 @@ insn_file (rtx insn)
    return VARRAY_CHAR_PTR (file_locators_files, min);
 }
 
+/* Return source file of the statement that produced this insn.  */
+const char *
+insn_file (rtx insn)
+{
+  return locator_file (INSN_LOCATOR (insn));
+}
+
 /* Rebuild all the NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes based
    on the scope tree and the newly reordered instructions.  */
 
index e3ded5db34a72388ba3400f3a75c3321d57a7bed..cfc730cf1f788d8fdc681d4821a8d09d4a0e510c 100644 (file)
@@ -1349,8 +1349,9 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file,
     }
 #endif
 
-  last_linenum = 0;
-  last_filename = 0;
+  last_filename = locator_file (prologue_locator);
+  last_linenum = locator_line (prologue_locator);
+
   high_block_linenum = high_function_linenum = last_linenum;
 
   (*debug_hooks->begin_prologue) (last_linenum, last_filename);
index bc9d5ee2691fed4fd2894b7fb7c9d925c1365a69..9d3b0dc1b9b14b14f0fb8e3c169ff487a4e5c157 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1544,6 +1544,8 @@ extern rtx prev_cc0_setter (rtx);
 extern tree choose_inner_scope (tree, tree);
 extern int insn_line (rtx);
 extern const char * insn_file (rtx);
+extern int locator_line (int);
+extern const char * locator_file (int);
 extern int prologue_locator, epilogue_locator;
 
 /* In jump.c */