diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-16 19:01:29 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-16 19:01:29 +0000 |
commit | 475c9f56e36a43612ccb0bf3501ddd118fa91057 (patch) | |
tree | 21dbfbd6c850d52064690fd08eb343402ba5de52 | |
parent | a0134f4f9a316a9d8e34ea25238187c047ecce1f (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/dbxout.c | 30 |
2 files changed, 27 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3e927dfef96..cff547cbe31 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2005-02-16 Richard Henderson <rth@redhat.com> + Stuart Hastings <stuart@apple.com> + + 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. + 2005-02-16 Kazu Hirata <kazu@cs.umass.edu> PR target/20007 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) { |