ada-lang.c:ada_find_renaming_symbol minor improvement.

This is a minor improvement in ada_find_renaming_symbol: What we were
doing was going from a symbol, get its name, and then search for
renamings.  But if the original symbol was already itself a renaming,
then we'd look the symbol up again to return it.  Since we had the
symbol in the first place, we shouldn't need to look it up again.

This is what this patch does: Modify ada_find_renaming_symbol to
take a symbol instead of the symbol's (linkage) name, and then updates
the one caller.

gdb/ChangeLog:

        * ada-lang.h (ada_find_renaming_symbol): Replace parameter
        "name" with "struct symbol *name_sym".
        * ada-exp.y (write_var_or_type): Update call to
        ada_find_renaming_symbol.
        * ada-lang.c (ada_find_renaming_symbol): Replace parameter
        "name" with "struct symbol *name_sym". Adjust Implementation
        accordingly.  Adjust the function documentation.
This commit is contained in:
Joel Brobecker 2012-02-29 19:51:49 +00:00
parent 852dff6c67
commit 739593e0ec
4 changed files with 21 additions and 8 deletions

View File

@ -1,3 +1,12 @@
2012-02-29 Joel Brobecker <brobecker@adacore.com>
* ada-lang.h (ada_find_renaming_symbol): Replace parameter
"name" with "struct symbol *name_sym".
* ada-exp.y (write_var_or_type): Update call to
ada_find_renaming_symbol.
"name" with "struct symbol *name_sym". Adjust Implementation
accordingly. Adjust the function documentation.
2012-02-29 Joel Brobecker <brobecker@adacore.com>
* ada-lang.h (ada_find_any_symbol, ada_find_any_type): Delete.

View File

@ -1288,8 +1288,7 @@ write_var_or_type (struct block *block, struct stoken name0)
if (nsyms == 1)
{
struct symbol *ren_sym =
ada_find_renaming_symbol (SYMBOL_LINKAGE_NAME (syms[0].sym),
syms[0].block);
ada_find_renaming_symbol (syms[0].sym, syms[0].block);
if (ren_sym != NULL)
syms[0].sym = ren_sym;

View File

@ -7054,16 +7054,21 @@ ada_find_any_type (const char *name)
return NULL;
}
/* Given NAME and an associated BLOCK, search all symbols for
NAME suffixed with "___XR", which is the ``renaming'' symbol
associated to NAME. Return this symbol if found, return
NULL otherwise. */
/* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
associated with NAME_SYM's name. NAME_SYM may itself be a renaming
symbol, in which case it is returned. Otherwise, this looks for
symbols whose name is that of NAME_SYM suffixed with "___XR".
Return symbol if found, and NULL otherwise. */
struct symbol *
ada_find_renaming_symbol (const char *name, struct block *block)
ada_find_renaming_symbol (struct symbol *name_sym, struct block *block)
{
const char *name = SYMBOL_LINKAGE_NAME (name_sym);
struct symbol *sym;
if (strstr (name, "___XR") != NULL)
return name_sym;
sym = find_old_style_renaming_symbol (name, block);
if (sym != NULL)

View File

@ -333,7 +333,7 @@ extern struct type *ada_find_parallel_type (struct type *,
extern LONGEST get_int_var_value (char *, int *);
extern struct symbol *ada_find_renaming_symbol (const char *name,
extern struct symbol *ada_find_renaming_symbol (struct symbol *name_sym,
struct block *block);
extern int ada_prefer_type (struct type *, struct type *);