tree.h (DECL_SOURCE_FILE): Improve documentation.
authorMark Mitchell <mark@codesourcery.com>
Fri, 8 Jun 2001 02:05:04 +0000 (02:05 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Fri, 8 Jun 2001 02:05:04 +0000 (02:05 +0000)
* tree.h (DECL_SOURCE_FILE): Improve documentation.
(DECL_SOURCE_LINE): Likewise.

* decl.c (duplicate_decls): Update source position information
when a template function is defined.

From-SVN: r42993

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/tree.h

index ba91449..6634e5b 100644 (file)
@@ -1,3 +1,8 @@
+2001-06-07  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.h (DECL_SOURCE_FILE): Improve documentation.
+       (DECL_SOURCE_LINE): Likewise.
+
 2001-06-07  Loren J. Rittle  <ljrittle@acm.org>
 
        * config/alpha/elf.h (MAKE_DECL_ONE_ONLY): Copy definition
index 8be3d79..fb986e5 100644 (file)
@@ -1,3 +1,8 @@
+2001-06-07  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (duplicate_decls): Update source position information
+       when a template function is defined.
+
 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
 
        * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
index 22fb9ef..5acf622 100644 (file)
@@ -3499,6 +3499,19 @@ duplicate_decls (newdecl, olddecl)
        = chainon (DECL_TEMPLATE_SPECIALIZATIONS (olddecl),
                   DECL_TEMPLATE_SPECIALIZATIONS (newdecl));
 
+      /* If the new declaration is a definition, update the file and
+        line information on the declaration.  */
+      if (DECL_INITIAL (DECL_RESULT (olddecl)) == NULL_TREE
+         && DECL_INITIAL (DECL_RESULT (newdecl)) != NULL_TREE)
+       {
+         DECL_SOURCE_LINE (olddecl) 
+           = DECL_SOURCE_LINE (DECL_RESULT (olddecl))
+           = DECL_SOURCE_LINE (newdecl);
+         DECL_SOURCE_FILE (olddecl) 
+           = DECL_SOURCE_FILE (DECL_RESULT (olddecl))
+           = DECL_SOURCE_FILE (newdecl);
+       }
+
       return 1;
     }
 
index 8634acb..8f29728 100644 (file)
@@ -1347,7 +1347,10 @@ struct tree_type
 /* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which
    if nonzero, indicates that the field occupies the type.  */
 #define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->decl.initial)
-/* These two fields describe where in the source code the declaration was.  */
+/* These two fields describe where in the source code the declaration
+   was.  If the declaration appears in several places (as for a C
+   function that is declared first and then defined later), this
+   information should refer to the definition.  */
 #define DECL_SOURCE_FILE(NODE) (DECL_CHECK (NODE)->decl.filename)
 #define DECL_SOURCE_LINE(NODE) (DECL_CHECK (NODE)->decl.linenum)
 /* Holds the size of the datum, in bits, as a tree expression.