dwarf2out.c (gen_subprogram_die): Don't reuse the in-class decl for the abstract...
authorJason Merrill <jason@redhat.com>
Fri, 19 Jan 2001 17:11:15 +0000 (12:11 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 19 Jan 2001 17:11:15 +0000 (12:11 -0500)
        * dwarf2out.c (gen_subprogram_die): Don't reuse the in-class decl
        for the abstract instance of an inline function.

From-SVN: r39137

gcc/ChangeLog
gcc/dwarf2out.c

index 6d6e0151ebef2e0da67a7e482c8d31df8719ab09..58eb78f7f5a5485b93c3fbd59b27919446a3a433 100644 (file)
@@ -1,3 +1,8 @@
+2001-01-19  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (gen_subprogram_die): Don't reuse the in-class decl
+       for the abstract instance of an inline function.
+
 Fri Jan 19 14:31:35 2001  Alexandre Oliva  <aoliva@redhat.com>, J"orn Rennecke <amylaar@redhat.com>
 
        * reload1.c (move2add_note_store): Treat all registers directly or
index 3aa71aa4dc3798b3bb20206855ccafd7ee6ea327..d311dbbbd2f9437233722806877630636d7dbfd9 100644 (file)
@@ -9868,12 +9868,11 @@ gen_subprogram_die (decl, context_die)
       /* If the definition comes from the same place as the declaration,
         maybe use the old DIE.  We always want the DIE for this function
         that has the *_pc attributes to be under comp_unit_die so the
-        debugger can find it.  For inlines, that is the concrete instance,
-        so we can use the old DIE here.  For non-inline methods, we want a
-        specification DIE at toplevel, so we need a new DIE.  For local
-        class methods, this doesn't apply; we just use the old DIE.  */
-      if ((DECL_ABSTRACT (decl) || old_die->die_parent == comp_unit_die
-          || context_die == NULL)
+        debugger can find it.  We also need to do this for abstract
+        instances of inlines, since the spec requires the out-of-line copy
+        to have the same parent.  For local class methods, this doesn't
+        apply; we just use the old DIE.  */
+      if ((old_die->die_parent == comp_unit_die || context_die == NULL)
          && (DECL_ARTIFICIAL (decl)
              || (get_AT_unsigned (old_die, DW_AT_decl_file) == file_index
                  && (get_AT_unsigned (old_die, DW_AT_decl_line)