summaryrefslogtreecommitdiff
path: root/gdb/symtab.c
diff options
context:
space:
mode:
authorsergiodj <sergiodj>2012-06-02 04:34:20 +0000
committersergiodj <sergiodj>2012-06-02 04:34:20 +0000
commitb999d4a7b8054829705ba33a7890ccae02dc3d97 (patch)
treecbd2768118846eeb3b16e0c064e3256d6467114d /gdb/symtab.c
parent7bbe7c5c7271cbfd383c5019444e42aef7fd6b7b (diff)
downloadgdb-b999d4a7b8054829705ba33a7890ccae02dc3d97.tar.gz
2012-06-02 Sergio Durigan Junior <sergiodj@redhat.com>
* symtab.c (symbol_demangled_name): New variable `dem_name'. Use it to optimize resolution of demangled name.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r--gdb/symtab.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 85ddd1dfb39..5eb7ced1870 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -850,6 +850,8 @@ symbol_natural_name (const struct general_symbol_info *gsymbol)
const char *
symbol_demangled_name (const struct general_symbol_info *gsymbol)
{
+ const char *dem_name = NULL;
+
switch (gsymbol->language)
{
case language_cplus:
@@ -858,19 +860,17 @@ symbol_demangled_name (const struct general_symbol_info *gsymbol)
case language_java:
case language_objc:
case language_fortran:
- if (symbol_get_demangled_name (gsymbol) != NULL)
- return symbol_get_demangled_name (gsymbol);
+ dem_name = symbol_get_demangled_name (gsymbol);
break;
case language_ada:
- if (symbol_get_demangled_name (gsymbol) != NULL)
- return symbol_get_demangled_name (gsymbol);
- else
- return ada_decode_symbol (gsymbol);
+ dem_name = symbol_get_demangled_name (gsymbol);
+ if (dem_name == NULL)
+ dem_name = ada_decode_symbol (gsymbol);
break;
default:
break;
}
- return NULL;
+ return dem_name;
}
/* Return the search name of a symbol---generally the demangled or