diff options
Diffstat (limited to 'gcc/dbxout.c')
-rw-r--r-- | gcc/dbxout.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 1be2025..71c7959 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -2215,11 +2215,19 @@ dbxout_symbol_name (decl, suffix, letter) const char *suffix; int letter; { - /* One slight hitch: if this is a VAR_DECL which is a static - class member, we must put out the mangled name instead of the - DECL_NAME. Note also that static member (variable) names DO NOT begin - with underscores in .stabs directives. */ - const char *name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); + const char *name; + + if (TYPE_P (DECL_CONTEXT (decl))) + /* One slight hitch: if this is a VAR_DECL which is a static + class member, we must put out the mangled name instead of the + DECL_NAME. Note also that static member (variable) names DO NOT begin + with underscores in .stabs directives. */ + name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); + else + /* ...but if we're function-local, we don't want to include the junk + added by ASM_FORMAT_PRIVATE_NAME. */ + name = IDENTIFIER_POINTER (DECL_NAME (decl)); + if (name == 0) name = "(anon)"; fprintf (asmfile, "%s \"%s%s:", ASM_STABS_OP, name, |