]> granicus.if.org Git - clang/commitdiff
Add option argument to GetAddrOfConstantString to use for name of
authorDaniel Dunbar <daniel@zuster.org>
Fri, 17 Oct 2008 21:56:50 +0000 (21:56 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 17 Oct 2008 21:56:50 +0000 (21:56 +0000)
(first) global holding the string.
 - No functionality change.

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

lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h

index a8d8825aea884979afd213b55218aa0d41e74f4f..a1cd6f1e6ca4ed4d671f0760327f4b19de0e3f16 100644 (file)
@@ -885,14 +885,17 @@ CodeGenModule::GetAddrOfConstantStringFromLiteral(const StringLiteral *S) {
 /// GenerateWritableString -- Creates storage for a string literal.
 static llvm::Constant *GenerateStringLiteral(const std::string &str, 
                                              bool constant,
-                                             CodeGenModule &CGM) {
+                                             CodeGenModule &CGM,
+                                             const char *GlobalName) {
   // Create Constant for this string literal. Don't add a '\0'.
   llvm::Constant *C = llvm::ConstantArray::get(str, false);
   
   // Create a global variable for this string
   C = new llvm::GlobalVariable(C->getType(), constant, 
                                llvm::GlobalValue::InternalLinkage,
-                               C, ".str", &CGM.getModule());
+                               C, 
+                               GlobalName ? GlobalName : ".str", 
+                               &CGM.getModule());
 
   return C;
 }
@@ -905,10 +908,11 @@ static llvm::Constant *GenerateStringLiteral(const std::string &str,
 /// Feature.WriteableStrings.
 ///
 /// The result has pointer to array type.
-llvm::Constant *CodeGenModule::GetAddrOfConstantString(const std::string &str) {
+llvm::Constant *CodeGenModule::GetAddrOfConstantString(const std::string &str,
+                                                       const char *GlobalName) {
   // Don't share any string literals if writable-strings is turned on.
   if (Features.WritableStrings)
-    return GenerateStringLiteral(str, false, *this);
+    return GenerateStringLiteral(str, false, *this, GlobalName);
   
   llvm::StringMapEntry<llvm::Constant *> &Entry = 
   ConstantStringMap.GetOrCreateValue(&str[0], &str[str.length()]);
@@ -917,7 +921,7 @@ llvm::Constant *CodeGenModule::GetAddrOfConstantString(const std::string &str) {
       return Entry.getValue();
 
   // Create a global variable for this.
-  llvm::Constant *C = GenerateStringLiteral(str, true, *this);
+  llvm::Constant *C = GenerateStringLiteral(str, true, *this, GlobalName);
   Entry.setValue(C);
   return C;
 }
@@ -925,8 +929,9 @@ llvm::Constant *CodeGenModule::GetAddrOfConstantString(const std::string &str) {
 /// GetAddrOfConstantCString - Returns a pointer to a character
 /// array containing the literal and a terminating '\-'
 /// character. The result has pointer to array type.
-llvm::Constant *CodeGenModule::GetAddrOfConstantCString(const std::string &str) {
-  return GetAddrOfConstantString(str + "\0");
+llvm::Constant *CodeGenModule::GetAddrOfConstantCString(const std::string &str,
+                                                        const char *GlobalName){
+  return GetAddrOfConstantString(str + "\0", GlobalName);
 }
 
 /// EmitObjCPropertyImplementations - Emit information for synthesized
index 6a201be3760865a2412cffce0d6344ccf51fbd68..3f604dd048b25ea7bb25cb6aa39f027e80e9942a 100644 (file)
@@ -179,12 +179,20 @@ public:
   /// Feature.WriteableStrings.
   ///
   /// The result has pointer to array type.
-  llvm::Constant *GetAddrOfConstantString(const std::string& str);
+  ///
+  /// \param GlobalName If provided, the name to use for the global
+  /// (if one is created).
+  llvm::Constant *GetAddrOfConstantString(const std::string& str,
+                                          const char *GlobalName=0);
 
   /// GetAddrOfConstantCString - Returns a pointer to a character
-  /// array containing the literal and a terminating '\-'
+  /// array containing the literal and a terminating '\0'
   /// character. The result has pointer to array type.
-  llvm::Constant *GetAddrOfConstantCString(const std::string &str);
+  ///
+  /// \param GlobalName If provided, the name to use for the global
+  /// (if one is created).
+  llvm::Constant *GetAddrOfConstantCString(const std::string &str,
+                                           const char *GlobalName=0);
   
   /// getBuiltinLibFunction - Given a builtin id for a function like
   /// "__builtin_fabsf", return a Function* for "fabsf".