diff options
Diffstat (limited to 'gcc/go/gofrontend/gogo.h')
-rw-r--r-- | gcc/go/gofrontend/gogo.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/gogo.h b/gcc/go/gofrontend/gogo.h index 23d1f08..905f48d 100644 --- a/gcc/go/gofrontend/gogo.h +++ b/gcc/go/gofrontend/gogo.h @@ -202,6 +202,27 @@ class Gogo } // Given a name which may or may not have been hidden, return the + // name to use within a mangled symbol name. + static std::string + mangle_possibly_hidden_name(const std::string& name) + { + // FIXME: This adds in pkgpath twice for hidden symbols, which is + // less than ideal. + std::string n; + if (!Gogo::is_hidden_name(name)) + n = name; + else + { + n = "."; + std::string pkgpath = Gogo::hidden_name_pkgpath(name); + n.append(Gogo::pkgpath_for_symbol(pkgpath)); + n.append(1, '.'); + n.append(Gogo::unpack_hidden_name(name)); + } + return n; + } + + // Given a name which may or may not have been hidden, return the // name to use in an error message. static std::string message_name(const std::string& name); |