summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorfroydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4>2011-04-05 12:02:55 +0000
committerfroydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4>2011-04-05 12:02:55 +0000
commit00e3fe4411f5ad4f6c2c2b87af0806574a380678 (patch)
treedaf4336ca9d37c03a6ce3bfe198ce256db2a1af5 /gcc
parent57c8e46c6f956a15df091055ebf2c347c3467c00 (diff)
downloadgcc-00e3fe4411f5ad4f6c2c2b87af0806574a380678.tar.gz
* debug.h (debug_flush_symbol_queue, debug_queue_symbol): Delete.
(debug_free_queue, debug_nesting, symbol_queue_index): Delete. * final.c (debug_flush_symbol_queue, debug_queue_symbol): Move these... (debug_free_queue, debug_nesting, symbol_queue_index): ...and these... * dbxout.c: ...to here. Make static. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171981 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/dbxout.c81
-rw-r--r--gcc/debug.h6
-rw-r--r--gcc/final.c81
4 files changed, 91 insertions, 87 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 40ca937ef08..f309bcc876d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,15 @@
2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
+ * debug.h (debug_flush_symbol_queue, debug_queue_symbol): Delete.
+ (debug_free_queue, debug_nesting, symbol_queue_index): Delete.
+ * final.c (debug_flush_symbol_queue, debug_queue_symbol):
+ Move these...
+ (debug_free_queue, debug_nesting, symbol_queue_index):
+ ...and these...
+ * dbxout.c: ...to here. Make static.
+
+2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
+
* gcse.c (modify_pair): Define. Define a VEC of it.
(canon_modify_mem_list): Convert to an array of VECs.
(free_insn_expr_list_list): Delete.
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 89d52a1cfd1..5ed9b69e7cd 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -96,6 +96,20 @@ along with GCC; see the file COPYING3. If not see
#include "xcoffout.h"
#endif
+/* When -gused is used, emit debug info for only used symbols. But in
+ addition to the standard intercepted debug_hooks there are some
+ direct calls into this file, i.e., dbxout_symbol, dbxout_parms, and
+ dbxout_reg_params. Those routines may also be called from a higher
+ level intercepted routine. So to prevent recording data for an inner
+ call to one of these for an intercept, we maintain an intercept
+ nesting counter (debug_nesting). We only save the intercepted
+ arguments if the nesting is 1. */
+static int debug_nesting = 0;
+
+static tree *symbol_queue;
+static int symbol_queue_index = 0;
+static int symbol_queue_size = 0;
+
#define DBXOUT_DECR_NESTING \
if (--debug_nesting == 0 && symbol_queue_index > 0) \
{ emit_pending_bincls_if_required (); debug_flush_symbol_queue (); }
@@ -333,6 +347,7 @@ static const char *dbxout_common_check (tree, int *);
static void dbxout_global_decl (tree);
static void dbxout_type_decl (tree, int);
static void dbxout_handle_pch (unsigned);
+static void debug_free_queue (void);
/* The debug hooks structure. */
#if defined (DBX_DEBUGGING_INFO)
@@ -1403,7 +1418,73 @@ dbxout_type_index (tree type)
}
+/* Generate the symbols for any queued up type symbols we encountered
+ while generating the type info for some originally used symbol.
+ This might generate additional entries in the queue. Only when
+ the nesting depth goes to 0 is this routine called. */
+
+static void
+debug_flush_symbol_queue (void)
+{
+ int i;
+
+ /* Make sure that additionally queued items are not flushed
+ prematurely. */
+
+ ++debug_nesting;
+
+ for (i = 0; i < symbol_queue_index; ++i)
+ {
+ /* If we pushed queued symbols then such symbols must be
+ output no matter what anyone else says. Specifically,
+ we need to make sure dbxout_symbol() thinks the symbol was
+ used and also we need to override TYPE_DECL_SUPPRESS_DEBUG
+ which may be set for outside reasons. */
+ int saved_tree_used = TREE_USED (symbol_queue[i]);
+ int saved_suppress_debug = TYPE_DECL_SUPPRESS_DEBUG (symbol_queue[i]);
+ TREE_USED (symbol_queue[i]) = 1;
+ TYPE_DECL_SUPPRESS_DEBUG (symbol_queue[i]) = 0;
+
+#ifdef DBX_DEBUGGING_INFO
+ dbxout_symbol (symbol_queue[i], 0);
+#endif
+
+ TREE_USED (symbol_queue[i]) = saved_tree_used;
+ TYPE_DECL_SUPPRESS_DEBUG (symbol_queue[i]) = saved_suppress_debug;
+ }
+
+ symbol_queue_index = 0;
+ --debug_nesting;
+}
+/* Queue a type symbol needed as part of the definition of a decl
+ symbol. These symbols are generated when debug_flush_symbol_queue()
+ is called. */
+
+static void
+debug_queue_symbol (tree decl)
+{
+ if (symbol_queue_index >= symbol_queue_size)
+ {
+ symbol_queue_size += 10;
+ symbol_queue = XRESIZEVEC (tree, symbol_queue, symbol_queue_size);
+ }
+
+ symbol_queue[symbol_queue_index++] = decl;
+}
+
+/* Free symbol queue. */
+static void
+debug_free_queue (void)
+{
+ if (symbol_queue)
+ {
+ free (symbol_queue);
+ symbol_queue = NULL;
+ symbol_queue_size = 0;
+ }
+}
+
/* Used in several places: evaluates to '0' for a private decl,
'1' for a protected decl, '2' for a public decl. */
#define DECL_ACCESSIBILITY_CHAR(DECL) \
diff --git a/gcc/debug.h b/gcc/debug.h
index ffdca5454b1..efdffe1889a 100644
--- a/gcc/debug.h
+++ b/gcc/debug.h
@@ -186,12 +186,6 @@ extern int dwarf2out_do_frame (void);
extern int dwarf2out_do_cfi_asm (void);
extern void dwarf2out_switch_text_section (void);
-extern void debug_flush_symbol_queue (void);
-extern void debug_queue_symbol (tree);
-extern void debug_free_queue (void);
-extern int debug_nesting;
-extern int symbol_queue_index;
-
const char *remap_debug_filename (const char *);
void add_debug_prefix_map (const char *);
diff --git a/gcc/final.c b/gcc/final.c
index cc7234c9b2d..3d97397f9af 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -4146,87 +4146,6 @@ leaf_renumber_regs_insn (rtx in_rtx)
}
}
#endif
-
-
-/* When -gused is used, emit debug info for only used symbols. But in
- addition to the standard intercepted debug_hooks there are some direct
- calls into this file, i.e., dbxout_symbol, dbxout_parms, and dbxout_reg_params.
- Those routines may also be called from a higher level intercepted routine. So
- to prevent recording data for an inner call to one of these for an intercept,
- we maintain an intercept nesting counter (debug_nesting). We only save the
- intercepted arguments if the nesting is 1. */
-int debug_nesting = 0;
-
-static tree *symbol_queue;
-int symbol_queue_index = 0;
-static int symbol_queue_size = 0;
-
-/* Generate the symbols for any queued up type symbols we encountered
- while generating the type info for some originally used symbol.
- This might generate additional entries in the queue. Only when
- the nesting depth goes to 0 is this routine called. */
-
-void
-debug_flush_symbol_queue (void)
-{
- int i;
-
- /* Make sure that additionally queued items are not flushed
- prematurely. */
-
- ++debug_nesting;
-
- for (i = 0; i < symbol_queue_index; ++i)
- {
- /* If we pushed queued symbols then such symbols must be
- output no matter what anyone else says. Specifically,
- we need to make sure dbxout_symbol() thinks the symbol was
- used and also we need to override TYPE_DECL_SUPPRESS_DEBUG
- which may be set for outside reasons. */
- int saved_tree_used = TREE_USED (symbol_queue[i]);
- int saved_suppress_debug = TYPE_DECL_SUPPRESS_DEBUG (symbol_queue[i]);
- TREE_USED (symbol_queue[i]) = 1;
- TYPE_DECL_SUPPRESS_DEBUG (symbol_queue[i]) = 0;
-
-#ifdef DBX_DEBUGGING_INFO
- dbxout_symbol (symbol_queue[i], 0);
-#endif
-
- TREE_USED (symbol_queue[i]) = saved_tree_used;
- TYPE_DECL_SUPPRESS_DEBUG (symbol_queue[i]) = saved_suppress_debug;
- }
-
- symbol_queue_index = 0;
- --debug_nesting;
-}
-
-/* Queue a type symbol needed as part of the definition of a decl
- symbol. These symbols are generated when debug_flush_symbol_queue()
- is called. */
-
-void
-debug_queue_symbol (tree decl)
-{
- if (symbol_queue_index >= symbol_queue_size)
- {
- symbol_queue_size += 10;
- symbol_queue = XRESIZEVEC (tree, symbol_queue, symbol_queue_size);
- }
-
- symbol_queue[symbol_queue_index++] = decl;
-}
-
-/* Free symbol queue. */
-void
-debug_free_queue (void)
-{
- if (symbol_queue)
- {
- free (symbol_queue);
- symbol_queue = NULL;
- symbol_queue_size = 0;
- }
-}
/* Turn the RTL into assembly. */
static unsigned int