1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

factor this code better how that the string version of getNameWithPrefix

takes a twine.

llvm-svn: 93687
This commit is contained in:
Chris Lattner 2010-01-17 18:52:16 +00:00
parent 57ac0be2b5
commit ffa28b64e5

View File

@ -16,7 +16,6 @@
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/raw_ostream.h"
using namespace llvm;
/// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
@ -59,34 +58,15 @@ void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,
void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,
const GlobalValue *GV,
bool isImplicitlyPrivate) {
ManglerPrefixTy PrefixTy = Mangler::Default;
if (GV->hasPrivateLinkage() || isImplicitlyPrivate)
PrefixTy = Mangler::Private;
else if (GV->hasLinkerPrivateLinkage())
PrefixTy = Mangler::LinkerPrivate;
// If this global has a name, handle it simply.
if (GV->hasName()) {
ManglerPrefixTy PrefixTy = Mangler::Default;
if (GV->hasPrivateLinkage() || isImplicitlyPrivate)
PrefixTy = Mangler::Private;
else if (GV->hasLinkerPrivateLinkage())
PrefixTy = Mangler::LinkerPrivate;
if (GV->hasName())
return getNameWithPrefix(OutName, GV->getName(), PrefixTy);
}
// If the global variable doesn't have a name, return a unique name for the
// global based on a numbering.
if (GV->hasPrivateLinkage() || isImplicitlyPrivate) {
const char *Prefix = MAI.getPrivateGlobalPrefix();
OutName.append(Prefix, Prefix+strlen(Prefix));
} else if (GV->hasLinkerPrivateLinkage()) {
const char *Prefix = MAI.getLinkerPrivateGlobalPrefix();
OutName.append(Prefix, Prefix+strlen(Prefix));
}
const char *Prefix = MAI.getGlobalPrefix();
if (Prefix[0] == 0)
; // Common noop, no prefix.
else if (Prefix[1] == 0)
OutName.push_back(Prefix[0]); // Common, one character prefix.
else
OutName.append(Prefix, Prefix+strlen(Prefix)); // Arbitrary length prefix.
// Get the ID for the global, assigning a new one if we haven't got one
// already.
@ -94,7 +74,7 @@ void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,
if (ID == 0) ID = NextAnonGlobalID++;
// Must mangle the global into a unique ID.
raw_svector_ostream(OutName) << "__unnamed_" << ID;
getNameWithPrefix(OutName, "__unnamed_" + Twine(ID), PrefixTy);
}
/// getNameWithPrefix - Fill OutName with the name of the appropriate prefix