* cp-namespace.c (cp_scan_for_anonymous_namespaces): Update.
(cp_add_using_directive): Add 'copy_names' argument. * cp-support.h (cp_add_using_directive): Update. (struct using_direct) <import_src, import_dest, alias, declaration>: Now const. * dwarf2read.c (read_import_statement): Use obconcat. Don't copy names passed to cp_add_using_directive.
This commit is contained in:
parent
7fc75ca750
commit
12aaed36e3
4 changed files with 42 additions and 23 deletions
|
@ -96,7 +96,7 @@ cp_scan_for_anonymous_namespaces (const struct symbol *const symbol,
|
|||
anonymous namespace. So add symbols in it to the
|
||||
namespace given by the previous component if there is
|
||||
one, or to the global namespace if there isn't. */
|
||||
cp_add_using_directive (dest, src, NULL, NULL, NULL,
|
||||
cp_add_using_directive (dest, src, NULL, NULL, NULL, 1,
|
||||
&objfile->objfile_obstack);
|
||||
}
|
||||
/* The "+ 2" is for the "::". */
|
||||
|
@ -117,9 +117,10 @@ cp_scan_for_anonymous_namespaces (const struct symbol *const symbol,
|
|||
in the current scope. If ALIAS is NULL then the namespace is known
|
||||
by its original name. DECLARATION is the name if the imported
|
||||
varable 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. The arguments are copied into newly allocated memory so
|
||||
they can be temporaries. For EXCLUDES the VEC pointers are copied but the
|
||||
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 VEC pointers are copied but the
|
||||
pointed to characters are not copied. */
|
||||
|
||||
void
|
||||
|
@ -128,6 +129,7 @@ cp_add_using_directive (const char *dest,
|
|||
const char *alias,
|
||||
const char *declaration,
|
||||
VEC (const_char_ptr) *excludes,
|
||||
int copy_names,
|
||||
struct obstack *obstack)
|
||||
{
|
||||
struct using_direct *current;
|
||||
|
@ -173,15 +175,27 @@ cp_add_using_directive (const char *dest,
|
|||
* sizeof (*new->excludes))));
|
||||
memset (new, 0, sizeof (*new));
|
||||
|
||||
new->import_src = obstack_copy0 (obstack, src, strlen (src));
|
||||
new->import_dest = obstack_copy0 (obstack, dest, strlen (dest));
|
||||
if (copy_names)
|
||||
{
|
||||
new->import_src = obstack_copy0 (obstack, src, strlen (src));
|
||||
new->import_dest = obstack_copy0 (obstack, dest, strlen (dest));
|
||||
}
|
||||
else
|
||||
{
|
||||
new->import_src = src;
|
||||
new->import_dest = dest;
|
||||
}
|
||||
|
||||
if (alias != NULL)
|
||||
if (alias != NULL && copy_names)
|
||||
new->alias = obstack_copy0 (obstack, alias, strlen (alias));
|
||||
else
|
||||
new->alias = alias;
|
||||
|
||||
if (declaration != NULL)
|
||||
if (declaration != NULL && copy_names)
|
||||
new->declaration = obstack_copy0 (obstack,
|
||||
declaration, strlen (declaration));
|
||||
else
|
||||
new->declaration = declaration;
|
||||
|
||||
memcpy (new->excludes, VEC_address (const_char_ptr, excludes),
|
||||
VEC_length (const_char_ptr, excludes) * sizeof (*new->excludes));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue