summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-08-11 19:34:29 +0000
committerChris Lattner <sabre@nondot.org>2003-08-11 19:34:29 +0000
commitce200422d4aca280b10e45399ca85ed75dfa680b (patch)
tree16d8619e469e86a233f579307edfd4d3e0e771d6 /llvm/lib
parentb1e7b2dd7e7daad668ec0205b2f84b4eb4917cdc (diff)
downloadbcm5719-llvm-ce200422d4aca280b10e45399ca85ed75dfa680b.tar.gz
bcm5719-llvm-ce200422d4aca280b10e45399ca85ed75dfa680b.zip
Add support to the mangler for targets which require _'s on global symbols
llvm-svn: 7741
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Support/Mangler.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Support/Mangler.cpp b/llvm/lib/Support/Mangler.cpp
index 665cb7388c1..a58ca330afd 100644
--- a/llvm/lib/Support/Mangler.cpp
+++ b/llvm/lib/Support/Mangler.cpp
@@ -42,8 +42,9 @@ std::string Mangler::getValueName(const Value *V) {
// 2) V's name would collide if it is not mangled.
//
const GlobalValue* gv = dyn_cast<GlobalValue>(V);
- if(gv && !gv->hasInternalLinkage() && !MangledGlobals.count(gv)) {
+ if (gv && !gv->hasInternalLinkage() && !MangledGlobals.count(gv)) {
name = makeNameProper(gv->getName());
+ if (AddUnderscorePrefix) name = "_" + name;
} else {
// Non-global, or global with internal linkage / colliding name
// -> mangle.
@@ -54,12 +55,13 @@ std::string Mangler::getValueName(const Value *V) {
name = "ltmp_" + utostr(Count++) + "_"
+ utostr(V->getType()->getUniqueID());
}
+
Memo[V] = name;
return name;
}
-Mangler::Mangler(Module &M_) : M(M_)
-{
+Mangler::Mangler(Module &m, bool addUnderscorePrefix)
+ : M(m), AddUnderscorePrefix(addUnderscorePrefix) {
// Calculate which global values have names that will collide when we throw
// away type information.
std::set<std::string> FoundNames;
OpenPOWER on IntegriCloud