diff options
author | Daniel Jacobowitz <dan@codesourcery.com> | 2006-07-24 02:59:36 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@gcc.gnu.org> | 2006-07-24 02:59:36 +0000 |
commit | f629051ee63712268222c000e3485ceb67a4e16a (patch) | |
tree | 3fe2117f7a22ae18db0f6ad5e0a14a073549be6d /gcc/dbxout.c | |
parent | 74b0d490fa7577857b036b8bff7e8a7cfe7d20a8 (diff) | |
download | gcc-f629051ee63712268222c000e3485ceb67a4e16a.zip gcc-f629051ee63712268222c000e3485ceb67a4e16a.tar.gz gcc-f629051ee63712268222c000e3485ceb67a4e16a.tar.bz2 |
re PR debug/27473 (g++.dg/other/unused1.C and gcc.dg/20060410.c fail on powerpc-darwin)
PR debug/27473
* dbxout.c (output_used_types_helper, output_used_types): New.
(dbxout_symbol): Call output_used_types.
From-SVN: r115704
Diffstat (limited to 'gcc/dbxout.c')
-rw-r--r-- | gcc/dbxout.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 49a3242..0776ad8 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -2369,6 +2369,38 @@ dbxout_expand_expr (tree expr) } } +/* Helper function for output_used_types. Queue one entry from the + used types hash to be output. */ + +static int +output_used_types_helper (void **slot, void *data ATTRIBUTE_UNUSED) +{ + tree type = *slot; + + if ((TREE_CODE (type) == RECORD_TYPE + || TREE_CODE (type) == UNION_TYPE + || TREE_CODE (type) == QUAL_UNION_TYPE + || TREE_CODE (type) == ENUMERAL_TYPE) + && TYPE_STUB_DECL (type) + && DECL_P (TYPE_STUB_DECL (type)) + && ! DECL_IGNORED_P (TYPE_STUB_DECL (type))) + debug_queue_symbol (TYPE_STUB_DECL (type)); + else if (TYPE_NAME (type) + && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL) + debug_queue_symbol (TYPE_NAME (type)); + + return 1; +} + +/* Force all types used by this function to be output in debug + information. */ +static void +output_used_types (void) +{ + if (cfun && cfun->used_types_hash) + htab_traverse (cfun->used_types_hash, output_used_types_helper, NULL); +} + /* Output a .stabs for the symbol defined by DECL, which must be a ..._DECL node in the normal namespace. It may be a CONST_DECL, a FUNCTION_DECL, a PARM_DECL or a VAR_DECL. @@ -2482,6 +2514,9 @@ dbxout_symbol (tree decl, int local ATTRIBUTE_UNUSED) || GET_CODE (XEXP (decl_rtl, 0)) != SYMBOL_REF) break; + if (flag_debug_only_used_symbols) + output_used_types (); + dbxout_begin_complex_stabs (); stabstr_I (DECL_ASSEMBLER_NAME (decl)); stabstr_S (TREE_PUBLIC (decl) ? ":F" : ":f"); |