aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGObjCGNU.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/CGObjCGNU.cpp')
-rw-r--r--lib/CodeGen/CGObjCGNU.cpp76
1 files changed, 3 insertions, 73 deletions
diff --git a/lib/CodeGen/CGObjCGNU.cpp b/lib/CodeGen/CGObjCGNU.cpp
index 1cd8dbf209..245c8914b1 100644
--- a/lib/CodeGen/CGObjCGNU.cpp
+++ b/lib/CodeGen/CGObjCGNU.cpp
@@ -492,9 +492,8 @@ public:
virtual llvm::Constant *GetOptimizedPropertySetFunction(bool atomic,
bool copy);
virtual llvm::Constant *GetSetStructFunction();
+ virtual llvm::Constant *GetCppAtomicObjectFunction();
virtual llvm::Constant *GetGetStructFunction();
- virtual llvm::Constant *GetCppAtomicObjectGetFunction();
- virtual llvm::Constant *GetCppAtomicObjectSetFunction();
virtual llvm::Constant *EnumerationMutationFunction();
virtual void EmitTryStmt(CodeGenFunction &CGF,
@@ -602,20 +601,6 @@ class CGObjCGNUstep : public CGObjCGNU {
/// arguments. Returns the slot for the corresponding method. Superclass
/// message lookup rarely changes, so this is a good caching opportunity.
LazyRuntimeFunction SlotLookupSuperFn;
- /// Specialised function for setting atomic retain properties
- LazyRuntimeFunction SetPropertyAtomic;
- /// Specialised function for setting atomic copy properties
- LazyRuntimeFunction SetPropertyAtomicCopy;
- /// Specialised function for setting nonatomic retain properties
- LazyRuntimeFunction SetPropertyNonAtomic;
- /// Specialised function for setting nonatomic copy properties
- LazyRuntimeFunction SetPropertyNonAtomicCopy;
- /// Function to perform atomic copies of C++ objects with nontrivial copy
- /// constructors from Objective-C ivars.
- LazyRuntimeFunction CxxAtomicObjectGetFn;
- /// Function to perform atomic copies of C++ objects with nontrivial copy
- /// constructors to Objective-C ivars.
- LazyRuntimeFunction CxxAtomicObjectSetFn;
/// Type of an slot structure pointer. This is returned by the various
/// lookup functions.
llvm::Type *SlotTy;
@@ -691,60 +676,8 @@ class CGObjCGNUstep : public CGObjCGNU {
// void __cxa_end_catch(void)
ExitCatchFn.init(&CGM, "__cxa_end_catch", VoidTy, NULL);
// void _Unwind_Resume_or_Rethrow(void*)
- ExceptionReThrowFn.init(&CGM, "_Unwind_Resume_or_Rethrow", VoidTy,
- PtrTy, NULL);
+ ExceptionReThrowFn.init(&CGM, "_Unwind_Resume_or_Rethrow", VoidTy, PtrTy, NULL);
}
- llvm::Type *VoidTy = llvm::Type::getVoidTy(VMContext);
- SetPropertyAtomic.init(&CGM, "objc_setProperty_atomic", VoidTy, IdTy,
- SelectorTy, IdTy, PtrDiffTy, NULL);
- SetPropertyAtomicCopy.init(&CGM, "objc_setProperty_atomic_copy", VoidTy,
- IdTy, SelectorTy, IdTy, PtrDiffTy, NULL);
- SetPropertyNonAtomic.init(&CGM, "objc_setProperty_nonatomic", VoidTy,
- IdTy, SelectorTy, IdTy, PtrDiffTy, NULL);
- SetPropertyNonAtomicCopy.init(&CGM, "objc_setProperty_nonatomic_copy",
- VoidTy, IdTy, SelectorTy, IdTy, PtrDiffTy, NULL);
- // void objc_setCppObjectAtomic(void *dest, const void *src, void
- // *helper);
- CxxAtomicObjectSetFn.init(&CGM, "objc_setCppObjectAtomic", VoidTy, PtrTy,
- PtrTy, PtrTy, NULL);
- // void objc_getCppObjectAtomic(void *dest, const void *src, void
- // *helper);
- CxxAtomicObjectGetFn.init(&CGM, "objc_getCppObjectAtomic", VoidTy, PtrTy,
- PtrTy, PtrTy, NULL);
- }
- virtual llvm::Constant *GetCppAtomicObjectGetFunction() {
- // The optimised functions were added in version 1.7 of the GNUstep
- // runtime.
- assert (CGM.getLangOpts().ObjCRuntime.getVersion() >=
- VersionTuple(1, 7));
- return CxxAtomicObjectGetFn;
- }
- virtual llvm::Constant *GetCppAtomicObjectSetFunction() {
- ObjCRuntime R = CGM.getLangOpts().ObjCRuntime;
- // The optimised functions were added in version 1.7 of the GNUstep
- // runtime.
- if (R.getVersion() < VersionTuple(1, 7)) return 0;
- return CxxAtomicObjectSetFn;
- }
- virtual llvm::Constant *GetOptimizedPropertySetFunction(bool atomic,
- bool copy) {
- // The optimised property functions omit the GC check, and so are not
- // safe to use in GC mode. The standard functions are fast in GC mode,
- // so there is less advantage in using them.
- assert ((CGM.getLangOpts().getGC() == LangOptions::NonGC)) return 0;
- // The optimised functions were added in version 1.7 of the GNUstep
- // runtime.
- assert (CGM.getLangOpts().ObjCRuntime.getVersion() >=
- VersionTuple(1, 7));
-
- if (atomic) {
- if (copy) return SetPropertyAtomicCopy;
- return SetPropertyAtomic;
- }
- if (copy) return SetPropertyNonAtomicCopy;
- return SetPropertyNonAtomic;
-
- return 0;
}
};
@@ -2602,10 +2535,7 @@ llvm::Constant *CGObjCGNU::GetGetStructFunction() {
llvm::Constant *CGObjCGNU::GetSetStructFunction() {
return SetStructPropertyFn;
}
-llvm::Constant *CGObjCGNU::GetCppAtomicObjectGetFunction() {
- return 0;
-}
-llvm::Constant *CGObjCGNU::GetCppAtomicObjectSetFunction() {
+llvm::Constant *CGObjCGNU::GetCppAtomicObjectFunction() {
return 0;
}