Remove 'copy_names' parameter from add_using_directive

I noticed that add_using_directive's 'copy_names' parameter is only
used by a single caller.  This patch removes the parameter and changes
that caller to copy the names itself.  I chose to use intern here
since I suspect the names may well be repeated in a given objfile.

Approved-By: John Baldwin <jhb@FreeBSD.org>
This commit is contained in:
Tom Tromey
2024-04-10 11:48:13 -06:00
parent 35d6915157
commit 12406b2cda
4 changed files with 13 additions and 32 deletions

View File

@@ -100,8 +100,9 @@ cp_scan_for_anonymous_namespaces (struct buildsym_compunit *compunit,
to 0, this way it is always considered valid. */
std::vector<const char *> excludes;
add_using_directive (compunit->get_local_using_directives (),
dest, src, NULL, NULL, excludes, 0,
1, &objfile->objfile_obstack);
objfile->intern (dest), objfile->intern (src),
nullptr, nullptr, excludes, 0,
&objfile->objfile_obstack);
}
/* The "+ 2" is for the "::". */
previous_component = next_component + 2;

View File

@@ -7248,7 +7248,6 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
imported_declaration,
excludes,
read_decl_line (die, cu),
0,
&objfile->objfile_obstack);
}
@@ -14071,7 +14070,7 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
previous_prefix, type->name (), NULL,
NULL, excludes,
read_decl_line (die, cu),
0, &objfile->objfile_obstack);
&objfile->objfile_obstack);
}
}

View File

@@ -27,12 +27,11 @@
into the scope DEST. ALIAS is the name of the imported namespace
in the current scope. If ALIAS is NULL then the namespace is known
by its original name. DECLARATION is the name if the imported
variable if this is a declaration import (Eg. using A::x), otherwise
it is NULL. EXCLUDES is a list of names not to import from an
imported module or NULL. If COPY_NAMES is non-zero, then the
arguments are copied into newly allocated memory so they can be
temporaries. For EXCLUDES the contents of the vector are copied,
but the pointed to characters are not copied. */
variable if this is a declaration import (Eg. using A::x),
otherwise it is NULL. EXCLUDES is a list of names not to import
from an imported module or NULL. For EXCLUDES the contents of the
vector are copied, but the pointed to characters are not
copied. */
void
add_using_directive (struct using_direct **using_directives,
@@ -42,7 +41,6 @@ add_using_directive (struct using_direct **using_directives,
const char *declaration,
const std::vector<const char *> &excludes,
unsigned int decl_line,
int copy_names,
struct obstack *obstack)
{
struct using_direct *current;
@@ -90,26 +88,10 @@ add_using_directive (struct using_direct **using_directives,
newobj = (struct using_direct *) obstack_alloc (obstack, alloc_len);
memset (newobj, 0, sizeof (*newobj));
if (copy_names)
{
newobj->import_src = obstack_strdup (obstack, src);
newobj->import_dest = obstack_strdup (obstack, dest);
}
else
{
newobj->import_src = src;
newobj->import_dest = dest;
}
if (alias != NULL && copy_names)
newobj->alias = obstack_strdup (obstack, alias);
else
newobj->alias = alias;
if (declaration != NULL && copy_names)
newobj->declaration = obstack_strdup (obstack, declaration);
else
newobj->declaration = declaration;
newobj->import_src = src;
newobj->import_dest = dest;
newobj->alias = alias;
newobj->declaration = declaration;
if (!excludes.empty ())
memcpy (newobj->excludes, excludes.data (),

View File

@@ -125,7 +125,6 @@ extern void add_using_directive (struct using_direct **using_directives,
const char *declaration,
const std::vector<const char *> &excludes,
const unsigned int decl_line,
int copy_names,
struct obstack *obstack);
#endif /* NAMESPACE_H */