summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-01-21 18:52:19 +0000
committerChris Lattner <sabre@nondot.org>2009-01-21 18:52:19 +0000
commitd1760b78371c4aff0fb5169a3ad50bf54c4b08e3 (patch)
treef568fffcb3347b5b3dd5d3ca363b57d877ce93f8
parentd00bca357286078b15643e4c4161d48114ebe9e7 (diff)
downloadbcm5719-llvm-d1760b78371c4aff0fb5169a3ad50bf54c4b08e3.tar.gz
bcm5719-llvm-d1760b78371c4aff0fb5169a3ad50bf54c4b08e3.zip
Fix objc type conversion issues with the GNU runtime, patch by
David Chisnall llvm-svn: 62703
-rw-r--r--clang/lib/CodeGen/CGObjCGNU.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp b/clang/lib/CodeGen/CGObjCGNU.cpp
index 2621a849140..9c83b75b2af 100644
--- a/clang/lib/CodeGen/CGObjCGNU.cpp
+++ b/clang/lib/CodeGen/CGObjCGNU.cpp
@@ -40,8 +40,8 @@ class CGObjCGNU : public CodeGen::CGObjCRuntime {
private:
CodeGen::CodeGenModule &CGM;
llvm::Module &TheModule;
- const llvm::StructType *SelStructTy;
- const llvm::Type *SelectorTy;
+ const llvm::PointerType *SelectorTy;
+ const llvm::Type *ExpectedSelTy;
const llvm::Type *PtrToInt8Ty;
const llvm::Type *IMPTy;
const llvm::Type *IdTy;
@@ -168,11 +168,12 @@ CGObjCGNU::CGObjCGNU(CodeGen::CodeGenModule &cgm)
PtrToInt8Ty =
llvm::PointerType::getUnqual(llvm::Type::Int8Ty);
// Get the selector Type.
- SelStructTy = llvm::StructType::get(
- PtrToInt8Ty,
- PtrToInt8Ty,
- NULL);
- SelectorTy = llvm::PointerType::getUnqual(SelStructTy);
+ SelectorTy = cast<llvm::PointerType>(
+ CGM.getTypes().ConvertType(CGM.getContext().getObjCSelType()));
+
+ ExpectedSelTy =
+ CGM.getTypes().ConvertType(CGM.getContext().getObjCSelType());
+
PtrToIntTy = llvm::PointerType::getUnqual(IntTy);
PtrTy = PtrToInt8Ty;
@@ -797,6 +798,9 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
UntypedSelectors.empty())
return NULL;
+ const llvm::StructType *SelStructTy =
+ cast<llvm::StructType>(SelectorTy->getTypeAtIndex(0U));
+
// Name the ObjC types to make the IR a bit easier to read
TheModule.addTypeName(".objc_selector", SelectorTy);
TheModule.addTypeName(".objc_id", IdTy);
OpenPOWER on IntegriCloud