Add back r201608, r201622, r201624 and r201625
[oota-llvm.git] / include / llvm / IR / Mangler.h
index d4a95598196f7c8c431f7acea9d105f5a4418bc5..c1ba5858a612e3ecf8beefd190c403d537190fa5 100644 (file)
@@ -15,6 +15,7 @@
 #define LLVM_TARGET_MANGLER_H
 
 #include "llvm/ADT/DenseMap.h"
+#include "llvm/Support/raw_ostream.h"
 
 namespace llvm {
 
@@ -38,25 +39,29 @@ private:
   /// they are mangled.  This keeps track of the number we give to anonymous
   /// ones.
   ///
-  DenseMap<const GlobalValue*, unsigned> AnonGlobalIDs;
+  mutable DenseMap<const GlobalValue*, unsigned> AnonGlobalIDs;
 
   /// NextAnonGlobalID - This simple counter is used to unique value names.
   ///
-  unsigned NextAnonGlobalID;
+  mutable unsigned NextAnonGlobalID;
 
 public:
   Mangler(const DataLayout *DL) : DL(DL), NextAnonGlobalID(1) {}
 
-  /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
-  /// and the specified global variable's name.  If the global variable doesn't
-  /// have a name, this fills in a unique name for the global.
-  void getNameWithPrefix(SmallVectorImpl<char> &OutName, const GlobalValue *GV);
+  /// Print the appropriate prefix and the specified global variable's name.
+  /// If the global variable doesn't have a name, this fills in a unique name
+  /// for the global.
+  void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV,
+                         bool CannotUsePrivateLabel) const;
+  void getNameWithPrefix(SmallVectorImpl<char> &OutName, const GlobalValue *GV,
+                         bool CannotUsePrivateLabel) const;
 
-  /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
-  /// and the specified name as the global variable name.  GVName must not be
-  /// empty.
+  /// Print the appropriate prefix and the specified name as the global variable
+  /// name. GVName must not be empty.
+  void getNameWithPrefix(raw_ostream &OS, const Twine &GVName,
+                         ManglerPrefixTy PrefixTy = Mangler::Default) const;
   void getNameWithPrefix(SmallVectorImpl<char> &OutName, const Twine &GVName,
-                         ManglerPrefixTy PrefixTy = Mangler::Default);
+                         ManglerPrefixTy PrefixTy = Mangler::Default) const;
 };
 
 } // End llvm namespace