summaryrefslogtreecommitdiff
path: root/gcc/dbxout.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-16 19:01:29 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-16 19:01:29 +0000
commit475c9f56e36a43612ccb0bf3501ddd118fa91057 (patch)
tree21dbfbd6c850d52064690fd08eb343402ba5de52 /gcc/dbxout.c
parenta0134f4f9a316a9d8e34ea25238187c047ecce1f (diff)
downloadgcc-475c9f56e36a43612ccb0bf3501ddd118fa91057.tar.gz
PR debug/19521
* dbxout.c (dbxout_function_end): Take decl parameter; update callers. Do nothing if debug info suppressed for this function. (dbxout_begin_function): Early exit if debug info suppressed for this function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95112 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dbxout.c')
-rw-r--r--gcc/dbxout.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index e7a7738816d..7a9cb60377b 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -343,7 +343,7 @@ static void dbxout_handle_pch (unsigned);
static void dbxout_source_line (unsigned int, const char *);
static void dbxout_begin_prologue (unsigned int, const char *);
static void dbxout_source_file (const char *);
-static void dbxout_function_end (void);
+static void dbxout_function_end (tree);
static void dbxout_begin_function (tree);
static void dbxout_begin_block (unsigned, unsigned);
static void dbxout_end_block (unsigned, unsigned);
@@ -903,10 +903,19 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code,
#if defined (DBX_DEBUGGING_INFO)
static void
-dbxout_function_end (void)
+dbxout_function_end (tree decl)
{
char lscope_label_name[100];
+ /* 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
+ || NO_DBX_FUNCTION_END
+ || !targetm.have_named_sections
+ || DECL_IGNORED_P (decl))
+ return;
+
/* The Lscope label must be emitted even if we aren't doing anything
else; dbxout_block needs it. */
function_section (current_function_decl);
@@ -918,14 +927,6 @@ dbxout_function_end (void)
targetm.asm_out.internal_label (asm_out_file, "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
- || NO_DBX_FUNCTION_END
- || !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
@@ -1296,7 +1297,7 @@ dbxout_function_decl (tree decl)
dbxout_begin_function (decl);
#endif
dbxout_block (DECL_INITIAL (decl), 0, DECL_ARGUMENTS (decl));
- dbxout_function_end ();
+ dbxout_function_end (decl);
}
#endif /* DBX_DEBUGGING_INFO */
@@ -3358,7 +3359,12 @@ dbxout_block (tree block, int depth, tree args)
static void
dbxout_begin_function (tree decl)
{
- int saved_tree_used1 = TREE_USED (decl);
+ int saved_tree_used1;
+
+ if (DECL_IGNORED_P (decl))
+ return;
+
+ saved_tree_used1 = TREE_USED (decl);
TREE_USED (decl) = 1;
if (DECL_NAME (DECL_RESULT (decl)) != 0)
{