debug.h (debug_flush_symbol_queue, [...]): Delete.

* 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.

From-SVN: r171981
This commit is contained in:
Nathan Froyd 2011-04-05 12:02:55 +00:00 committed by Nathan Froyd
parent 6ce1edcf61
commit 1ed13f83ff
4 changed files with 91 additions and 87 deletions

View File

@ -1,3 +1,13 @@
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.

View File

@ -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) \

View File

@ -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 *);

View File

@ -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