factor this code better how that the string version of getNameWithPrefix
authorChris Lattner <sabre@nondot.org>
Sun, 17 Jan 2010 18:52:16 +0000 (18:52 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 17 Jan 2010 18:52:16 +0000 (18:52 +0000)
takes a twine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93687 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mangler.cpp

index 29c80f07bfdb76d7ca06670cabc9fae12288849e..5579bfc5d9d4b9ac4a97245b9b57556d54d9d806 100644 (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