diff options
-rw-r--r-- | include/llvm/Support/Mangler.h | 5 | ||||
-rw-r--r-- | lib/VMCore/Mangler.cpp | 47 |
2 files changed, 1 insertions, 51 deletions
diff --git a/include/llvm/Support/Mangler.h b/include/llvm/Support/Mangler.h index 94f0adb..771c09e 100644 --- a/include/llvm/Support/Mangler.h +++ b/include/llvm/Support/Mangler.h @@ -51,11 +51,6 @@ class Mangler { DenseMap<const Type*, unsigned> TypeMap; unsigned TypeCounter; - /// This keeps track of which global values have had their names - /// mangled in the current module. - /// - SmallPtrSet<const GlobalValue*, 16> MangledGlobals; - /// AcceptableChars - This bitfield contains a one for each character that is /// allowed to be part of an unmangled name. unsigned AcceptableChars[256/32]; diff --git a/lib/VMCore/Mangler.cpp b/lib/VMCore/Mangler.cpp index d86d9c0..1488494 100644 --- a/lib/VMCore/Mangler.cpp +++ b/lib/VMCore/Mangler.cpp @@ -145,49 +145,13 @@ std::string Mangler::getValueName(const GlobalValue *GV, const char * Suffix) { unsigned TypeUniqueID = getTypeID(GV->getType()); static unsigned GlobalID = 0; Name = "__unnamed_" + utostr(TypeUniqueID) + "_" + utostr(GlobalID++); - } else if (!MangledGlobals.count(GV)) { - Name = makeNameProper(GV->getName() + Suffix, Prefix); } else { - unsigned TypeUniqueID = getTypeID(GV->getType()); - Name = "l" + utostr(TypeUniqueID) + "_" + makeNameProper(GV->getName()); + Name = makeNameProper(GV->getName() + Suffix, Prefix); } return Name; } -static void InsertName(GlobalValue *GV, StringMap<GlobalValue*> &Names, - SmallPtrSet<const GlobalValue*, 16> &MangledGlobals) { - if (!GV->hasName()) // We must mangle unnamed globals. - return; - - // Figure out if this is already used. - GlobalValue *&ExistingValue = Names[GV->getNameStart()]; - if (!ExistingValue) { - ExistingValue = GV; - return; - } - - // If GV is external but the existing one is static, mangle the existing one - if ((GV->hasExternalLinkage() || GV->hasDLLImportLinkage()) && - !(ExistingValue->hasExternalLinkage() - || ExistingValue->hasDLLImportLinkage())) { - MangledGlobals.insert(ExistingValue); - ExistingValue = GV; - } else if ((GV->hasExternalLinkage() || - GV->hasDLLImportLinkage()) && - (ExistingValue->hasExternalLinkage() || - ExistingValue->hasDLLImportLinkage()) && - GV->isDeclaration() && - ExistingValue->isDeclaration()) { - // If the two globals both have external inkage, and are both external, - // don't mangle either of them, we just have some silly type mismatch. - } else { - // Otherwise, mangle GV - MangledGlobals.insert(GV); - } -} - - Mangler::Mangler(Module &M, const char *prefix) : Prefix(prefix), UseQuotes(false), PreserveAsmNames(false), Count(0), TypeCounter(0) { @@ -205,13 +169,4 @@ Mangler::Mangler(Module &M, const char *prefix) markCharAcceptable('_'); markCharAcceptable('$'); markCharAcceptable('.'); - - // Calculate which global values have names that will collide when we throw - // away type information. - StringMap<GlobalValue*> Names; - for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) - InsertName(I, Names, MangledGlobals); - for (Module::global_iterator I = M.global_begin(), E = M.global_end(); - I != E; ++I) - InsertName(I, Names, MangledGlobals); } |