X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FMangler.cpp;h=50fa3c1885b9c94db263acb98af008fde1eb311d;hb=629c1a3f78494d0dd769fe82bd2bd17df0555843;hp=52e3d0db9bc01f09f0772211429fcd8dcc39836d;hpb=718cb665ca6ce2bc4d8e8479f46a45db91b49f86;p=oota-llvm.git diff --git a/lib/VMCore/Mangler.cpp b/lib/VMCore/Mangler.cpp index 52e3d0db9bc..50fa3c1885b 100644 --- a/lib/VMCore/Mangler.cpp +++ b/lib/VMCore/Mangler.cpp @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -96,6 +96,8 @@ std::string Mangler::makeNameProper(const std::string &X, const char *Prefix) { for (std::string::const_iterator E = X.end(); I != E; ++I) { if (*I == '"') Result += "_QQ_"; + else if (*I == '\n') + Result += "_NL_"; else Result += *I; } @@ -126,7 +128,7 @@ std::string Mangler::getValueName(const Value *V) { } -std::string Mangler::getValueName(const GlobalValue *GV) { +std::string Mangler::getValueName(const GlobalValue *GV, const char * Suffix) { // Check to see whether we've already named V. std::string &Name = Memo[GV]; if (!Name.empty()) @@ -135,7 +137,7 @@ std::string Mangler::getValueName(const GlobalValue *GV) { // Name mangling occurs as follows: // - If V is an intrinsic function, do not change name at all // - Otherwise, mangling occurs if global collides with existing name. - if (isa(GV) && cast(GV)->getIntrinsicID()) { + if (isa(GV) && cast(GV)->isIntrinsic()) { Name = GV->getName(); // Is an intrinsic function } else if (!GV->hasName()) { // Must mangle the global into a unique ID. @@ -143,7 +145,7 @@ std::string Mangler::getValueName(const GlobalValue *GV) { static unsigned GlobalID = 0; Name = "__unnamed_" + utostr(TypeUniqueID) + "_" + utostr(GlobalID++); } else if (!MangledGlobals.count(GV)) { - Name = makeNameProper(GV->getName(), Prefix); + Name = makeNameProper(GV->getName() + Suffix, Prefix); } else { unsigned TypeUniqueID = getTypeID(GV->getType()); Name = "l" + utostr(TypeUniqueID) + "_" + makeNameProper(GV->getName()); @@ -164,7 +166,8 @@ void Mangler::InsertName(GlobalValue *GV, } else { // If GV is external but the existing one is static, mangle the existing one if ((GV->hasExternalLinkage() || GV->hasDLLImportLinkage()) && - !(ExistingValue->hasExternalLinkage() || ExistingValue->hasDLLImportLinkage())) { + !(ExistingValue->hasExternalLinkage() + || ExistingValue->hasDLLImportLinkage())) { MangledGlobals.insert(ExistingValue); ExistingValue = GV; } else if ((GV->hasExternalLinkage() || @@ -206,9 +209,8 @@ Mangler::Mangler(Module &M, const char *prefix) std::map Names; for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) InsertName(I, Names); - for (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) + for (Module::global_iterator I = M.global_begin(), E = M.global_end(); + I != E; + ++I) InsertName(I, Names); } - -// Cause this file to be linked in when Support/Mangler.h is #included -DEFINING_FILE_FOR(Mangler)