[cfe-commits] r170351 - in /cfe/trunk: lib/CodeGen/CGObjC.cpp lib/CodeGen/CGObjCGNU.cpp lib/CodeGen/CGObjCMac.cpp lib/CodeGen/CGObjCRuntime.h test/CodeGenObjC/optimized-setter.m test/CodeGenObjCXX/property-object-reference-2.mm
Benjamin Kramer
benny.kra at googlemail.com
Mon Dec 17 10:02:44 PST 2012
Author: d0k
Date: Mon Dec 17 12:02:43 2012
New Revision: 170351
URL: http://llvm.org/viewvc/llvm-project?rev=170351&view=rev
Log:
Revert "Added support for new property helpers (GNUstep runtime)."
This reverts commit r170344. Doesn't even compile.
Modified:
cfe/trunk/lib/CodeGen/CGObjC.cpp
cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
cfe/trunk/lib/CodeGen/CGObjCMac.cpp
cfe/trunk/lib/CodeGen/CGObjCRuntime.h
cfe/trunk/test/CodeGenObjC/optimized-setter.m
cfe/trunk/test/CodeGenObjCXX/property-object-reference-2.mm
Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=170351&r1=170350&r2=170351&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp Mon Dec 17 12:02:43 2012
@@ -772,7 +772,7 @@
args.add(RValue::get(AtomicHelperFn), CGF.getContext().VoidPtrTy);
llvm::Value *copyCppAtomicObjectFn =
- CGF.CGM.getObjCRuntime().GetCppAtomicObjectGetFunction();
+ CGF.CGM.getObjCRuntime().GetCppAtomicObjectFunction();
CGF.EmitCall(CGF.getTypes().arrangeFreeFunctionCall(CGF.getContext().VoidTy,
args,
FunctionType::ExtInfo(),
@@ -1007,7 +1007,7 @@
args.add(RValue::get(AtomicHelperFn), CGF.getContext().VoidPtrTy);
llvm::Value *copyCppAtomicObjectFn =
- CGF.CGM.getObjCRuntime().GetCppAtomicObjectSetFunction();
+ CGF.CGM.getObjCRuntime().GetCppAtomicObjectFunction();
CGF.EmitCall(CGF.getTypes().arrangeFreeFunctionCall(CGF.getContext().VoidTy,
args,
FunctionType::ExtInfo(),
@@ -2800,7 +2800,8 @@
}
static bool hasAtomicCopyHelperAPI(const ObjCRuntime &runtime) {
- return runtime.hasAtomicCopyHelper();
+ // For now, only NeXT has these APIs.
+ return runtime.isNeXTFamily();
}
/// GenerateObjCAtomicSetterCopyHelperFunction - Given a c++ object type with
Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=170351&r1=170350&r2=170351&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Mon Dec 17 12:02:43 2012
@@ -492,9 +492,8 @@
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 @@
/// 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 @@
// 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::GetSetStructFunction() {
return SetStructPropertyFn;
}
-llvm::Constant *CGObjCGNU::GetCppAtomicObjectGetFunction() {
- return 0;
-}
-llvm::Constant *CGObjCGNU::GetCppAtomicObjectSetFunction() {
+llvm::Constant *CGObjCGNU::GetCppAtomicObjectFunction() {
return 0;
}
Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=170351&r1=170350&r2=170351&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Dec 17 12:02:43 2012
@@ -1223,8 +1223,7 @@
bool copy);
virtual llvm::Constant *GetGetStructFunction();
virtual llvm::Constant *GetSetStructFunction();
- virtual llvm::Constant *GetCppAtomicObjectGetFunction();
- virtual llvm::Constant *GetCppAtomicObjectSetFunction();
+ virtual llvm::Constant *GetCppAtomicObjectFunction();
virtual llvm::Constant *EnumerationMutationFunction();
virtual void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
@@ -1495,10 +1494,7 @@
virtual llvm::Constant *GetGetStructFunction() {
return ObjCTypes.getCopyStructFn();
}
- virtual llvm::Constant *GetCppAtomicObjectSetFunction() {
- return ObjCTypes.getCppAtomicObjectFunction();
- }
- virtual llvm::Constant *GetCppAtomicObjectGetFunction() {
+ virtual llvm::Constant *GetCppAtomicObjectFunction() {
return ObjCTypes.getCppAtomicObjectFunction();
}
@@ -3413,10 +3409,7 @@
return ObjCTypes.getCopyStructFn();
}
-llvm::Constant *CGObjCMac::GetCppAtomicObjectGetFunction() {
- return ObjCTypes.getCppAtomicObjectFunction();
-}
-llvm::Constant *CGObjCMac::GetCppAtomicObjectSetFunction() {
+llvm::Constant *CGObjCMac::GetCppAtomicObjectFunction() {
return ObjCTypes.getCppAtomicObjectFunction();
}
Modified: cfe/trunk/lib/CodeGen/CGObjCRuntime.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCRuntime.h?rev=170351&r1=170350&r2=170351&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCRuntime.h (original)
+++ cfe/trunk/lib/CodeGen/CGObjCRuntime.h Mon Dec 17 12:02:43 2012
@@ -209,12 +209,9 @@
virtual llvm::Constant *GetGetStructFunction() = 0;
// API for atomic copying of qualified aggregates in setter.
virtual llvm::Constant *GetSetStructFunction() = 0;
- /// API for atomic copying of qualified aggregates with non-trivial copy
- /// assignment (c++) in setter.
- virtual llvm::Constant *GetCppAtomicObjectSetFunction() = 0;
- /// API for atomic copying of qualified aggregates with non-trivial copy
- /// assignment (c++) in getter.
- virtual llvm::Constant *GetCppAtomicObjectGetFunction() = 0;
+ // API for atomic copying of qualified aggregates with non-trivial copy
+ // assignment (c++) in setter/getter.
+ virtual llvm::Constant *GetCppAtomicObjectFunction() = 0;
/// GetClass - Return a reference to the class for the given
/// interface decl.
Modified: cfe/trunk/test/CodeGenObjC/optimized-setter.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/optimized-setter.m?rev=170351&r1=170350&r2=170351&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/optimized-setter.m (original)
+++ cfe/trunk/test/CodeGenObjC/optimized-setter.m Mon Dec 17 12:02:43 2012
@@ -1,6 +1,5 @@
// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=macosx-10.8 -triple x86_64-apple-macosx10.8.0 -o - | FileCheck %s
// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=ios-6.0.0 -triple x86_64-apple-ios6.0.0 -o - | FileCheck %s
-// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=gnustep-1.7 -triple x86_64-unknown-freebsd -o - | FileCheck %s
// rdar://10179974
@interface I
Modified: cfe/trunk/test/CodeGenObjCXX/property-object-reference-2.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/property-object-reference-2.mm?rev=170351&r1=170350&r2=170351&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjCXX/property-object-reference-2.mm (original)
+++ cfe/trunk/test/CodeGenObjCXX/property-object-reference-2.mm Mon Dec 17 12:02:43 2012
@@ -1,5 +1,4 @@
// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-10.7 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple x86_64-unknown-freebsd -fobjc-runtime=gnustep-1.7 -emit-llvm -o - | FileCheck -check-prefix=CHECK-GNUSTEP %s
// rdar://6137845
extern int DEFAULT();
@@ -55,6 +54,3 @@
// CHECK: [[THREE:%.*]] = bitcast %struct.TCPPObject* [[MYPROPERTY:%.*]] to i8*
// CHECK: call void @objc_copyCppObjectAtomic(i8* [[TWO]], i8* [[THREE]], i8* bitcast (void (%struct.TCPPObject*, %struct.TCPPObject*)* @__assign_helper_atomic_property_ to i8*))
// CHECK: ret void
-
-// CHECK-GNUSTEP: objc_getCppObjectAtomic
-// CHECK-GNUSTEP: objc_setCppObjectAtomic
More information about the cfe-commits
mailing list