summaryrefslogtreecommitdiffstats
path: root/llvm/lib/VMCore/Mangler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/VMCore/Mangler.cpp')
-rw-r--r--llvm/lib/VMCore/Mangler.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/VMCore/Mangler.cpp b/llvm/lib/VMCore/Mangler.cpp
index 148849452c2..36cfbf766a7 100644
--- a/llvm/lib/VMCore/Mangler.cpp
+++ b/llvm/lib/VMCore/Mangler.cpp
@@ -147,14 +147,20 @@ std::string Mangler::getValueName(const GlobalValue *GV, const char * Suffix) {
Name = "__unnamed_" + utostr(TypeUniqueID) + "_" + utostr(GlobalID++);
} else {
Name = makeNameProper(GV->getName() + Suffix, Prefix);
+ std::string prefix;
+ if (GV->hasPrivateLinkage())
+ prefix = PrivatePrefix;
+ else
+ prefix = "";
+ Name = prefix + Name;
}
return Name;
}
-Mangler::Mangler(Module &M, const char *prefix)
- : Prefix(prefix), UseQuotes(false), PreserveAsmNames(false),
- Count(0), TypeCounter(0) {
+Mangler::Mangler(Module &M, const char *prefix, const char *privatePrefix)
+ : Prefix(prefix), PrivatePrefix (privatePrefix), UseQuotes(false),
+ PreserveAsmNames(false), Count(0), TypeCounter(0) {
std::fill(AcceptableChars, array_endof(AcceptableChars), 0);
// Letters and numbers are acceptable.
OpenPOWER on IntegriCloud