OSDN Git Service

* dbxout.c (dbxout_function_decl): Always call dbxout_function_end.
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 Aug 2004 07:23:14 +0000 (07:23 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 Aug 2004 07:23:14 +0000 (07:23 +0000)
(dbxout_function_end): Return after emitting the "Lscope" symbol
under the same conditions that this function formerly wasn't called.
Add explanatory comments.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85546 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dbxout.c

index eddeed8..50a6f80 100644 (file)
@@ -1,5 +1,10 @@
 2004-08-03  Zack Weinberg  <zack@codesourcery.com>
 
+       * dbxout.c (dbxout_function_decl): Always call dbxout_function_end.
+       (dbxout_function_end): Return after emitting the "Lscope" symbol
+       under the same conditions that this function formerly wasn't called.
+       Add explanatory comments.
+
        PR 14680
        * c-decl.c (record_builtin_type): Call debug_hooks->type_decl
        on the new decl.
index 8171757..9a9e447 100644 (file)
@@ -449,6 +449,8 @@ dbxout_function_end (void)
 {
   char lscope_label_name[100];
 
+  /* The Lscope label must be emitted even if we aren't doing anything
+     else; dbxout_block needs it.  */
   function_section (current_function_decl);
   
   /* Convert Ltext into the appropriate format for local labels in case
@@ -458,6 +460,16 @@ dbxout_function_end (void)
   targetm.asm_out.internal_label (asmfile, "Lscope", scope_labelno);
   scope_labelno++;
 
+  /* The N_FUN tag at the end of the function is a GNU extension,
+     which may be undesirable, and is unnecessary if we do not have
+     named sections.  */
+  if (!use_gnu_debug_info_extensions
+#if defined(NO_DBX_FUNCTION_END)
+      || NO_DBX_FUNCTION_END
+#endif
+      || !targetm.have_named_sections)
+    return;
+
   /* By convention, GCC will mark the end of a function with an N_FUN
      symbol and an empty string.  */
 #ifdef DBX_OUTPUT_NFUN
@@ -792,12 +804,7 @@ dbxout_function_decl (tree decl)
 #ifdef DBX_OUTPUT_FUNCTION_END
   DBX_OUTPUT_FUNCTION_END (asmfile, decl);
 #endif
-  if (use_gnu_debug_info_extensions
-#if defined(NO_DBX_FUNCTION_END)
-      && ! NO_DBX_FUNCTION_END
-#endif
-      && targetm.have_named_sections)
-    dbxout_function_end ();
+  dbxout_function_end ();
 }
 
 #endif /* DBX_DEBUGGING_INFO  */