From bec2bf132628869402899a10c086a0759025ee08 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Mon, 15 Oct 2012 20:37:01 +0000 Subject: [PATCH] Revert r164907 and r164902 (+ follow-ups). They broke building on 10.6. See PR14013. llvm-svn: 165962 --- clang/include/clang/Basic/ObjCRuntime.h | 15 +--------- clang/lib/CodeGen/CGObjC.cpp | 9 ++++-- clang/lib/Driver/ToolChains.cpp | 32 ++------------------- clang/lib/Driver/Tools.cpp | 31 ++++++-------------- clang/lib/Sema/SemaExpr.cpp | 8 ++++-- clang/runtime/compiler-rt/Makefile | 4 +-- .../test/CodeGenObjC/optimized-setter-ios-device.m | 33 ---------------------- clang/test/CodeGenObjC/optimized-setter.m | 3 +- clang/test/CodeGenObjC/unoptimized-setter.m | 32 --------------------- clang/test/Driver/darwin-ld.c | 4 --- clang/test/Driver/pic.c | 10 ------- 11 files changed, 28 insertions(+), 153 deletions(-) delete mode 100644 clang/test/CodeGenObjC/optimized-setter-ios-device.m delete mode 100644 clang/test/CodeGenObjC/unoptimized-setter.m diff --git a/clang/include/clang/Basic/ObjCRuntime.h b/clang/include/clang/Basic/ObjCRuntime.h index d543b76..2ca421b 100644 --- a/clang/include/clang/Basic/ObjCRuntime.h +++ b/clang/include/clang/Basic/ObjCRuntime.h @@ -157,19 +157,6 @@ public: llvm_unreachable("bad kind"); } - /// \brief Does this runtime supports optimized setter entrypoints? - bool hasOptimizedSetter() const { - switch (getKind()) { - case MacOSX: - return getVersion() >= VersionTuple(10, 8); - case iOS: - return (getVersion() >= VersionTuple(6)); - - default: - return false; - } - } - /// Does this runtime allow the use of __weak? bool allowsWeak() const { return hasNativeWeak(); @@ -190,7 +177,7 @@ public: switch (getKind()) { case FragileMacOSX: return false; case MacOSX: return getVersion() >= VersionTuple(10, 8); - case iOS: return getVersion() >= VersionTuple(6); + case iOS: return false; // This is really a lie, because some implementations and versions // of the runtime do not support ARC. Probably -fgnu-runtime diff --git a/clang/lib/CodeGen/CGObjC.cpp b/clang/lib/CodeGen/CGObjC.cpp index cea9731..cd1ed89 100644 --- a/clang/lib/CodeGen/CGObjC.cpp +++ b/clang/lib/CodeGen/CGObjC.cpp @@ -1041,7 +1041,12 @@ static bool hasTrivialSetExpr(const ObjCPropertyImplDecl *PID) { static bool UseOptimizedSetter(CodeGenModule &CGM) { if (CGM.getLangOpts().getGC() != LangOptions::NonGC) return false; - return CGM.getLangOpts().ObjCRuntime.hasOptimizedSetter(); + const TargetInfo &Target = CGM.getContext().getTargetInfo(); + + if (Target.getPlatformName() != "macosx") + return false; + + return Target.getPlatformMinVersion() >= VersionTuple(10, 8); } void @@ -1101,7 +1106,7 @@ CodeGenFunction::generateObjCSetterBody(const ObjCImplementationDecl *classImpl, llvm::Value *setOptimizedPropertyFn = 0; llvm::Value *setPropertyFn = 0; if (UseOptimizedSetter(CGM)) { - // 10.8 and iOS 6.0 code and GC is off + // 10.8 code and GC is off setOptimizedPropertyFn = CGM.getObjCRuntime() .GetOptimizedPropertySetFunction(strategy.isAtomic(), diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 529f7bf..c7a8cba 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -332,9 +332,7 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, // Darwin doesn't support real static executables, don't link any runtime // libraries with -static. - if (Args.hasArg(options::OPT_static) || - Args.hasArg(options::OPT_fapple_kext) || - Args.hasArg(options::OPT_mkernel)) + if (Args.hasArg(options::OPT_static)) return; // Reject -static-libgcc for now, we can deal with this when and if someone @@ -678,14 +676,7 @@ void DarwinClang::AddCCKextLibArgs(const ArgList &Args, llvm::sys::Path P(getDriver().ResourceDir); P.appendComponent("lib"); P.appendComponent("darwin"); - - // Use the newer cc_kext for iOS ARM after 6.0. - if (!isTargetIPhoneOS() || isTargetIOSSimulator() || - !isIPhoneOSVersionLT(6, 0)) { - P.appendComponent("libclang_rt.cc_kext.a"); - } else { - P.appendComponent("libclang_rt.cc_kext_ios5.a"); - } + P.appendComponent("libclang_rt.cc_kext.a"); // For now, allow missing resource libraries to support developers who may // not have compiler-rt checked out or integrated into their build. @@ -911,25 +902,6 @@ DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args, if (BoundArch) AddDeploymentTarget(*DAL); - // For iOS 6, undo the translation to add -static for -mkernel/-fapple-kext. - // FIXME: It would be far better to avoid inserting those -static arguments, - // but we can't check the deployment target in the translation code until - // it is set here. - if (isTargetIPhoneOS() && !isIPhoneOSVersionLT(6, 0)) { - for (ArgList::iterator it = DAL->begin(), ie = DAL->end(); it != ie; ) { - Arg *A = *it; - ++it; - if (A->getOption().getID() != options::OPT_mkernel && - A->getOption().getID() != options::OPT_fapple_kext) - continue; - assert(it != ie && "unexpected argument translation"); - A = *it; - assert(A->getOption().getID() == options::OPT_static && - "missing expected -static argument"); - it = DAL->getArgs().erase(it); - } - } - // Validate the C++ standard library choice. CXXStdlibType Type = GetCXXStdlibType(*DAL); if (Type == ToolChain::CST_Libcxx) { diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 63d31b8..9774973 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -674,9 +674,7 @@ void Clang::AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs, bool KernelOrKext) const { const Driver &D = getToolChain().getDriver(); - // Get the effective triple, which takes into account the deployment target. - std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); - llvm::Triple Triple(TripleStr); + llvm::Triple Triple = getToolChain().getTriple(); // Select the ABI to use. // @@ -761,10 +759,8 @@ void Clang::AddARMTargetArgs(const ArgList &Args, // Kernel code has more strict alignment requirements. if (KernelOrKext) { - if (Triple.getOS() != llvm::Triple::IOS || Triple.isOSVersionLT(6)) { - CmdArgs.push_back("-backend-option"); - CmdArgs.push_back("-arm-long-calls"); - } + CmdArgs.push_back("-backend-option"); + CmdArgs.push_back("-arm-long-calls"); CmdArgs.push_back("-backend-option"); CmdArgs.push_back("-arm-strict-align"); @@ -1701,11 +1697,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } // Note that these flags are trump-cards. Regardless of the order w.r.t. the // PIC or PIE options above, if these show up, PIC is disabled. - llvm::Triple Triple(TripleStr); - if ((Args.hasArg(options::OPT_mkernel) || - Args.hasArg(options::OPT_fapple_kext)) && - (Triple.getOS() != llvm::Triple::IOS || - Triple.isOSVersionLT(6))) + if (Args.hasArg(options::OPT_mkernel)) PICDisabled = true; if (Args.hasArg(options::OPT_static)) PICDisabled = true; @@ -3698,10 +3690,7 @@ void darwin::CC1::AddCC1Args(const ArgList &Args, CheckCodeGenerationOptions(D, Args); // Derived from cc1 spec. - if ((!Args.hasArg(options::OPT_mkernel) || - (getDarwinToolChain().isTargetIPhoneOS() && - !getDarwinToolChain().isIPhoneOSVersionLT(6, 0))) && - !Args.hasArg(options::OPT_static) && + if (!Args.hasArg(options::OPT_mkernel) && !Args.hasArg(options::OPT_static) && !Args.hasArg(options::OPT_mdynamic_no_pic)) CmdArgs.push_back("-fPIC"); @@ -4155,11 +4144,9 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-force_cpusubtype_ALL"); if (getToolChain().getTriple().getArch() != llvm::Triple::x86_64 && - (((Args.hasArg(options::OPT_mkernel) || - Args.hasArg(options::OPT_fapple_kext)) && - (!getDarwinToolChain().isTargetIPhoneOS() || - getDarwinToolChain().isIPhoneOSVersionLT(6, 0))) || - Args.hasArg(options::OPT_static))) + (Args.hasArg(options::OPT_mkernel) || + Args.hasArg(options::OPT_static) || + Args.hasArg(options::OPT_fapple_kext))) CmdArgs.push_back("-static"); Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, @@ -4520,7 +4507,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, } else if (getDarwinToolChain().isTargetIPhoneOS()) { if (getDarwinToolChain().isIPhoneOSVersionLT(3, 1)) CmdArgs.push_back("-lcrt1.o"); - else if (getDarwinToolChain().isIPhoneOSVersionLT(6, 0)) + else CmdArgs.push_back("-lcrt1.3.1.o"); } else { if (getDarwinToolChain().isMacosxVersionLT(10, 5)) diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 3d66baa..95c5290 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -9770,8 +9770,11 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, switch (ConvTy) { case Compatible: - DiagnoseAssignmentEnum(DstType, SrcType, SrcExpr); - return false; + DiagnoseAssignmentEnum(DstType, SrcType, SrcExpr); + + // XXX here with forced compatible cast + + return false; case PointerToInt: DiagKind = diag::ext_typecheck_convert_pointer_int; @@ -9854,6 +9857,7 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, DiagKind = diag::err_arc_weak_unavailable_assign; break; case Incompatible: + // XXX here DiagKind = diag::err_typecheck_convert_incompatible; ConvHints.tryToFixConversion(SrcExpr, SrcType, DstType, *this); MayHaveConvFixit = true; diff --git a/clang/runtime/compiler-rt/Makefile b/clang/runtime/compiler-rt/Makefile index 0336c01..fdf315a 100644 --- a/clang/runtime/compiler-rt/Makefile +++ b/clang/runtime/compiler-rt/Makefile @@ -74,9 +74,9 @@ RuntimeDirs := ifeq ($(OS),Darwin) RuntimeDirs += darwin RuntimeLibrary.darwin.Configs := \ - eprintf.a 10.4.a osx.a ios.a cc_kext.a cc_kext_ios5.a \ + eprintf.a 10.4.a osx.a cc_kext.a \ asan_osx.a asan_osx_dynamic.dylib \ - profile_osx.a profile_ios.a + profile_osx.a endif # On Linux, include a library which has all the runtime functions. diff --git a/clang/test/CodeGenObjC/optimized-setter-ios-device.m b/clang/test/CodeGenObjC/optimized-setter-ios-device.m deleted file mode 100644 index 6fa322a..0000000 --- a/clang/test/CodeGenObjC/optimized-setter-ios-device.m +++ /dev/null @@ -1,33 +0,0 @@ -// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=ios-6.0.0 -triple thumbv7-apple-ios6.0.0 -o - | FileCheck %s -// rdar://11915017 - -@interface I -// void objc_setProperty_nonatomic(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., NO, NO) -@property (nonatomic, retain) id nonatomicProperty; - -// void objc_setProperty_nonatomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., NO, YES) -@property (nonatomic, copy) id nonatomicPropertyCopy; - -// void objc_setProperty_atomic(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., YES, NO) -@property (retain) id atomicProperty; - -// void objc_setProperty_atomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., YES, YES) -@property (copy) id atomicPropertyCopy; -@end - -@implementation I -@synthesize nonatomicProperty; -@synthesize nonatomicPropertyCopy; -@synthesize atomicProperty; -@synthesize atomicPropertyCopy; -@end - -// CHECK: call arm_aapcscc void @objc_setProperty_nonatomic -// CHECK: call arm_aapcscc void @objc_setProperty_nonatomic_copy -// CHECK: call arm_aapcscc void @objc_setProperty_atomic -// CHECK: call arm_aapcscc void @objc_setProperty_atomic_copy - diff --git a/clang/test/CodeGenObjC/optimized-setter.m b/clang/test/CodeGenObjC/optimized-setter.m index 6f5cfb1..0e1b388 100644 --- a/clang/test/CodeGenObjC/optimized-setter.m +++ b/clang/test/CodeGenObjC/optimized-setter.m @@ -1,5 +1,4 @@ -// 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 -triple x86_64-apple-macosx10.8.0 -o - | FileCheck %s // rdar://10179974 @interface I diff --git a/clang/test/CodeGenObjC/unoptimized-setter.m b/clang/test/CodeGenObjC/unoptimized-setter.m deleted file mode 100644 index adcf087..0000000 --- a/clang/test/CodeGenObjC/unoptimized-setter.m +++ /dev/null @@ -1,32 +0,0 @@ -// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=macosx-10.6.0 -triple x86_64-apple-macosx10.6.0 -o - | FileCheck %s -// rdar://11858187 - -@interface I -// void objc_setProperty_nonatomic(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., NO, NO) -@property (nonatomic, retain) id nonatomicProperty; - -// void objc_setProperty_nonatomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., NO, YES) -@property (nonatomic, copy) id nonatomicPropertyCopy; - -// void objc_setProperty_atomic(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., YES, NO) -@property (retain) id atomicProperty; - -// void objc_setProperty_atomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset); -// objc_setProperty(..., YES, YES) -@property (copy) id atomicPropertyCopy; -@end - -@implementation I -@synthesize nonatomicProperty; -@synthesize nonatomicPropertyCopy; -@synthesize atomicProperty; -@synthesize atomicPropertyCopy; -@end - -// CHECK-NOT: call void @objc_setProperty_nonatomic -// CHECK-NOT: call void @objc_setProperty_nonatomic_copy -// CHECK-NOT: call void @objc_setProperty_atomic -// CHECK-NOT: call void @objc_setProperty_atomic_copy diff --git a/clang/test/Driver/darwin-ld.c b/clang/test/Driver/darwin-ld.c index cd511e0..02fccde 100644 --- a/clang/test/Driver/darwin-ld.c +++ b/clang/test/Driver/darwin-ld.c @@ -122,10 +122,6 @@ // RUN: FileCheck -check-prefix=LINK_NO_CRT1 %s < %t.log // LINK_NO_CRT1-NOT: crt -// RUN: %clang -target armv7-apple-ios6.0 -miphoneos-version-min=6.0 -### %t.o 2> %t.log -// RUN: FileCheck -check-prefix=LINK_NO_IOS_CRT1 %s < %t.log -// LINK_NO_IOS_CRT1-NOT: crt - // RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log // RUN: FileCheck -check-prefix=LINK_PG %s < %t.log // LINK_PG: -lgcrt1.o diff --git a/clang/test/Driver/pic.c b/clang/test/Driver/pic.c index 5b69dba..52508a5 100644 --- a/clang/test/Driver/pic.c +++ b/clang/test/Driver/pic.c @@ -93,13 +93,3 @@ // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC1 // RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -fPIC -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC2 - -// Checks for ARM -// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 -// RUN: %clang -c %s -target armv7-apple-ios -mkernel -miphoneos-version-min=6.0.0 -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 -// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=5.0.0 -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC -// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -static -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC -- 2.7.4