]> granicus.if.org Git - clang/commitdiff
Change LangOptions::ObjCConstantStringClass to an std::string to avoid worrying about...
authorDaniel Dunbar <daniel@zuster.org>
Sun, 29 Nov 2009 02:38:47 +0000 (02:38 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sun, 29 Nov 2009 02:38:47 +0000 (02:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90052 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/LangOptions.h
lib/CodeGen/CGObjCGNU.cpp
lib/Frontend/CompilerInvocation.cpp

index 513fefdb57a6444cb6dbf840bbf5aa5d79dce6eb..a16a27103b67d55bac54e7c0be187452f2d75296 100644 (file)
@@ -14,6 +14,8 @@
 #ifndef LLVM_CLANG_LANGOPTIONS_H
 #define LLVM_CLANG_LANGOPTIONS_H
 
+#include <string>
+
 namespace clang {
 
 /// LangOptions - This class keeps track of the various options that can be
@@ -104,7 +106,7 @@ private:
 public:
   unsigned InstantiationDepth;    // Maximum template instantiation depth.
 
-  const char *ObjCConstantStringClass;
+  std::string ObjCConstantStringClass;
 
   enum GCMode { NonGC, GCOnly, HybridGC };
   enum StackProtectorMode { SSPOff, SSPOn, SSPReq };
@@ -119,7 +121,6 @@ public:
     GNUMode = ImplicitInt = Digraphs = 0;
     HexFloats = 0;
     GC = ObjC1 = ObjC2 = ObjCNonFragileABI = 0;
-    ObjCConstantStringClass = 0;
     C99 = Microsoft = CPlusPlus = CPlusPlus0x = 0;
     CXXOperatorNames = PascalStrings = WritableStrings = 0;
     Exceptions = Freestanding = NoBuiltin = 0;
index 0eb624c4187afc2c4b4064e911409c2cd0aeea74..be772c7fa311a162e1dec446fcc1ded35f832159 100644 (file)
@@ -1371,8 +1371,8 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
         ConstantStrings.size() + 1);
     ConstantStrings.push_back(NULLPtr);
 
-    const char *StringClass = CGM.getLangOptions().ObjCConstantStringClass;
-    if (!StringClass) StringClass = "NXConstantString";
+    llvm::StringRef StringClass = CGM.getLangOptions().ObjCConstantStringClass;
+    if (StringClass.empty()) StringClass = "NXConstantString";
     Elements.push_back(MakeConstantString(StringClass,
                 ".objc_static_class_name"));
     Elements.push_back(llvm::ConstantArray::get(StaticsArrayTy,
index 3925ff06482d48595305ab407eab9bfb5fab1165..705cfef4e0619aaf1df7e92714b3b97f05a47a74 100644 (file)
@@ -179,18 +179,18 @@ static void DiagnosticOptsToArgs(const DiagnosticOptions &Opts,
 
 static const char *getInputKindName(FrontendOptions::InputKind Kind) {
   switch (Kind) {
-  case FrontendOptions::IK_None: break;
-  case FrontendOptions::IK_AST: return "ast";
-  case FrontendOptions::IK_Asm: return "assembler-with-cpp";
-  case FrontendOptions::IK_C: return "c";
-  case FrontendOptions::IK_CXX: return "c++";
-  case FrontendOptions::IK_ObjC: return "objective-c";
-  case FrontendOptions::IK_ObjCXX: return "objective-c++";
-  case FrontendOptions::IK_OpenCL: return "cl";
-  case FrontendOptions::IK_PreprocessedC: return "cpp-output";
-  case FrontendOptions::IK_PreprocessedCXX: return "c++-cpp-output";
-  case FrontendOptions::IK_PreprocessedObjC: return "objective-c-cpp-output";
-  case FrontendOptions::IK_PreprocessedObjCXX: return "objective-c++-cpp-output";
+  case FrontendOptions::IK_None:              break;
+  case FrontendOptions::IK_AST:               return "ast";
+  case FrontendOptions::IK_Asm:               return "assembler-with-cpp";
+  case FrontendOptions::IK_C:                 return "c";
+  case FrontendOptions::IK_CXX:               return "c++";
+  case FrontendOptions::IK_ObjC:              return "objective-c";
+  case FrontendOptions::IK_ObjCXX:            return "objective-c++";
+  case FrontendOptions::IK_OpenCL:            return "cl";
+  case FrontendOptions::IK_PreprocessedC:     return "cpp-output";
+  case FrontendOptions::IK_PreprocessedCXX:   return "c++-cpp-output";
+  case FrontendOptions::IK_PreprocessedObjC:  return "objective-c-cpp-output";
+  case FrontendOptions::IK_PreprocessedObjCXX:return "objective-c++-cpp-output";
   }
 
   llvm::llvm_unreachable("Unexpected language kind!");
@@ -461,7 +461,7 @@ static void LangOptsToArgs(const LangOptions &Opts,
     Res.push_back("-ftemplate-depth");
     Res.push_back(llvm::utostr(Opts.InstantiationDepth));
   }
-  if (Opts.ObjCConstantStringClass) {
+  if (!Opts.ObjCConstantStringClass.empty()) {
     Res.push_back("-fconstant-string-class");
     Res.push_back(Opts.ObjCConstantStringClass);
   }