]> granicus.if.org Git - clang/commitdiff
This patch allows clang to generate code for declared properties on the GNU runtime...
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 19 May 2009 00:28:43 +0000 (00:28 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 19 May 2009 00:28:43 +0000 (00:28 +0000)
Patch by David Chisnall.

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

lib/CodeGen/CGObjCGNU.cpp

index 1617e0b1630eabcc3dc450ab37aa2932fd217fd4..c351fa2592616eea948bf68b2118033b440df74e 100644 (file)
@@ -1130,11 +1130,37 @@ llvm::Function *CGObjCGNU::GenerateMethod(const ObjCMethodDecl *OMD,
 }
 
 llvm::Function *CGObjCGNU::GetPropertyGetFunction() {
-  return 0;
+       std::vector<const llvm::Type*> Params;
+       const llvm::Type *BoolTy =
+               CGM.getTypes().ConvertType(CGM.getContext().BoolTy);
+       Params.push_back(IdTy);
+       Params.push_back(SelectorTy);
+       // FIXME: Using LongTy for ptrdiff_t is probably broken on Win64
+       Params.push_back(LongTy);
+       Params.push_back(BoolTy);
+       // void objc_getProperty (id, SEL, ptrdiff_t, bool)
+       const llvm::FunctionType *FTy =
+               llvm::FunctionType::get(IdTy, Params, false);
+       return cast<llvm::Function>(CGM.CreateRuntimeFunction(FTy,
+                               "objc_getProperty"));
 }
 
 llvm::Function *CGObjCGNU::GetPropertySetFunction() {
-  return 0;
+       std::vector<const llvm::Type*> Params;
+       const llvm::Type *BoolTy =
+               CGM.getTypes().ConvertType(CGM.getContext().BoolTy);
+       Params.push_back(IdTy);
+       Params.push_back(SelectorTy);
+       // FIXME: Using LongTy for ptrdiff_t is probably broken on Win64
+       Params.push_back(LongTy);
+       Params.push_back(IdTy);
+       Params.push_back(BoolTy);
+       Params.push_back(BoolTy);
+       // void objc_setProperty (id, SEL, ptrdiff_t, id, bool, bool)
+       const llvm::FunctionType *FTy =
+               llvm::FunctionType::get(llvm::Type::VoidTy, Params, false);
+       return cast<llvm::Function>(CGM.CreateRuntimeFunction(FTy,
+                               "objc_setProperty"));
 }
 
 llvm::Function *CGObjCGNU::EnumerationMutationFunction() {