]> granicus.if.org Git - clang/commitdiff
refactor interface to GenerateClassStructure to avoid converting a
authorChris Lattner <sabre@nondot.org>
Thu, 26 Jun 2008 04:47:04 +0000 (04:47 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 26 Jun 2008 04:47:04 +0000 (04:47 +0000)
string to LLVM IR and then regenerating the string from IR.

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

lib/CodeGen/CGObjCGNU.cpp

index 5b11b3f667a413d8d8217b9cb9f00c96f1af21ac..83b093a47943b309cfc6800a7daa1cfc67744fd4 100644 (file)
@@ -82,7 +82,7 @@ private:
       llvm::Constant *MetaClass,
       llvm::Constant *SuperClass,
       unsigned info,
-      llvm::Constant *Name,
+      const char *Name,
       llvm::Constant *Version,
       llvm::Constant *InstanceSize,
       llvm::Constant *IVars,
@@ -480,7 +480,7 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure(
     llvm::Constant *MetaClass,
     llvm::Constant *SuperClass,
     unsigned info,
-    llvm::Constant *Name,
+    const char *Name,
     llvm::Constant *Version,
     llvm::Constant *InstanceSize,
     llvm::Constant *IVars,
@@ -512,7 +512,7 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure(
   std::vector<llvm::Constant*> Elements;
   Elements.push_back(llvm::ConstantExpr::getBitCast(MetaClass, PtrToInt8Ty));
   Elements.push_back(SuperClass);
-  Elements.push_back(Name);
+  Elements.push_back(MakeConstantString(Name, ".class_name"));
   Elements.push_back(Zero);
   Elements.push_back(llvm::ConstantInt::get(LongTy, info));
   Elements.push_back(InstanceSize);
@@ -525,7 +525,7 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure(
   Elements.push_back(NullP);
   // Create an instance of the structure
   return MakeGlobal(ClassTy, Elements,
-                    SymbolNameForClass(getStringValue(Name)));
+                    SymbolNameForClass(Name));
 }
 
 llvm::Constant *CGObjCGNU::GenerateProtocolMethodList(
@@ -668,7 +668,6 @@ void CGObjCGNU::GenerateClass(
     SuperClass = llvm::ConstantPointerNull::get(
         llvm::cast<llvm::PointerType>(PtrToInt8Ty));
   }
-  llvm::Constant * Name = MakeConstantString(ClassName, ".class_name");
   // Empty vector used to construct empty method lists
   llvm::SmallVector<llvm::Constant*, 1>  empty;
   // Generate the method and instance variable lists
@@ -680,11 +679,11 @@ void CGObjCGNU::GenerateClass(
       IvarOffsets);
   //Generate metaclass for class methods
   llvm::Constant *MetaClassStruct = GenerateClassStructure(NULLPtr,
-      NULLPtr, 0x2L, NULLPtr, 0, Zeros[0], GenerateIvarList(
+      NULLPtr, 0x2L, /*name*/0, 0, Zeros[0], GenerateIvarList(
         empty, empty, empty), ClassMethodList, NULLPtr);
   // Generate the class structure
   llvm::Constant *ClassStruct = GenerateClassStructure(MetaClassStruct,
-      SuperClass, 0x1L, Name, 0,
+      SuperClass, 0x1L, ClassName, 0,
       llvm::ConstantInt::get(llvm::Type::Int32Ty, instanceSize), IvarList,
       MethodList, GenerateProtocolList(Protocols));
   // Add class structure to list to be added to the symtab later