aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/symtab.c14
2 files changed, 12 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 84ec8f0..024a139 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+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.
+
2012-06-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* configure.ac (development): Define new variable.
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 85ddd1d..5eb7ced 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