aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGObjCGNU.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-06-26 04:47:04 +0000
committerChris Lattner <sabre@nondot.org>2008-06-26 04:47:04 +0000
commitd002cc6fc5b72bf00e3b7b4571ccf0f23c789b4b (patch)
treea15d98849fb0c59dad72485175d1526f8cfaf4e1 /lib/CodeGen/CGObjCGNU.cpp
parent5e7dcc62e4637591959f9c372f6c5258d0d263e0 (diff)
refactor interface to GenerateClassStructure to avoid converting a
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
Diffstat (limited to 'lib/CodeGen/CGObjCGNU.cpp')
-rw-r--r--lib/CodeGen/CGObjCGNU.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/CodeGen/CGObjCGNU.cpp b/lib/CodeGen/CGObjCGNU.cpp
index 5b11b3f667..83b093a479 100644
--- a/lib/CodeGen/CGObjCGNU.cpp
+++ b/lib/CodeGen/CGObjCGNU.cpp
@@ -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