There is a fix, in 165986. Just separated it into a different commit. - Daniel
On Oct 15, 2012, at 15:42, Nico Weber <[email protected]> wrote: > Why reland this without a build fix? > > On Mon, Oct 15, 2012 at 3:23 PM, Daniel Dunbar <[email protected]> wrote: >> Author: ddunbar >> Date: Mon Oct 15 17:23:53 2012 >> New Revision: 165988 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=165988&view=rev >> Log: >> Un-revert r164907 and r164902 (+ follow-ups), 10.6 build fix to follow. >> >> Added: >> cfe/trunk/test/CodeGenObjC/optimized-setter-ios-device.m >> - copied, changed from r165977, >> cfe/trunk/test/CodeGenObjC/optimized-setter.m >> cfe/trunk/test/CodeGenObjC/unoptimized-setter.m >> - copied, changed from r165977, >> cfe/trunk/test/CodeGenObjC/optimized-setter.m >> Modified: >> cfe/trunk/include/clang/Basic/ObjCRuntime.h >> cfe/trunk/lib/CodeGen/CGObjC.cpp >> cfe/trunk/lib/Driver/ToolChains.cpp >> cfe/trunk/lib/Driver/Tools.cpp >> cfe/trunk/lib/Sema/SemaExpr.cpp >> cfe/trunk/runtime/compiler-rt/Makefile >> cfe/trunk/test/CodeGenObjC/optimized-setter.m >> cfe/trunk/test/Driver/darwin-ld.c >> cfe/trunk/test/Driver/pic.c >> >> Modified: cfe/trunk/include/clang/Basic/ObjCRuntime.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/ObjCRuntime.h?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/include/clang/Basic/ObjCRuntime.h (original) >> +++ cfe/trunk/include/clang/Basic/ObjCRuntime.h Mon Oct 15 17:23:53 2012 >> @@ -157,6 +157,19 @@ >> 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(); >> @@ -177,7 +190,7 @@ >> switch (getKind()) { >> case FragileMacOSX: return false; >> case MacOSX: return getVersion() >= VersionTuple(10, 8); >> - case iOS: return false; >> + case iOS: return getVersion() >= VersionTuple(6); >> >> // This is really a lie, because some implementations and versions >> // of the runtime do not support ARC. Probably -fgnu-runtime >> >> Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/lib/CodeGen/CGObjC.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CGObjC.cpp Mon Oct 15 17:23:53 2012 >> @@ -1041,12 +1041,7 @@ >> static bool UseOptimizedSetter(CodeGenModule &CGM) { >> if (CGM.getLangOpts().getGC() != LangOptions::NonGC) >> return false; >> - const TargetInfo &Target = CGM.getContext().getTargetInfo(); >> - >> - if (Target.getPlatformName() != "macosx") >> - return false; >> - >> - return Target.getPlatformMinVersion() >= VersionTuple(10, 8); >> + return CGM.getLangOpts().ObjCRuntime.hasOptimizedSetter(); >> } >> >> void >> @@ -1106,7 +1101,7 @@ >> llvm::Value *setOptimizedPropertyFn = 0; >> llvm::Value *setPropertyFn = 0; >> if (UseOptimizedSetter(CGM)) { >> - // 10.8 code and GC is off >> + // 10.8 and iOS 6.0 code and GC is off >> setOptimizedPropertyFn = >> CGM.getObjCRuntime() >> .GetOptimizedPropertySetFunction(strategy.isAtomic(), >> >> Modified: cfe/trunk/lib/Driver/ToolChains.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Driver/ToolChains.cpp (original) >> +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Oct 15 17:23:53 2012 >> @@ -332,7 +332,9 @@ >> >> // Darwin doesn't support real static executables, don't link any runtime >> // libraries with -static. >> - if (Args.hasArg(options::OPT_static)) >> + if (Args.hasArg(options::OPT_static) || >> + Args.hasArg(options::OPT_fapple_kext) || >> + Args.hasArg(options::OPT_mkernel)) >> return; >> >> // Reject -static-libgcc for now, we can deal with this when and if someone >> @@ -676,7 +678,14 @@ >> llvm::sys::Path P(getDriver().ResourceDir); >> P.appendComponent("lib"); >> P.appendComponent("darwin"); >> - P.appendComponent("libclang_rt.cc_kext.a"); >> + >> + // 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"); >> + } >> >> // For now, allow missing resource libraries to support developers who may >> // not have compiler-rt checked out or integrated into their build. >> @@ -902,6 +911,25 @@ >> 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) { >> >> Modified: cfe/trunk/lib/Driver/Tools.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Driver/Tools.cpp (original) >> +++ cfe/trunk/lib/Driver/Tools.cpp Mon Oct 15 17:23:53 2012 >> @@ -674,7 +674,9 @@ >> ArgStringList &CmdArgs, >> bool KernelOrKext) const { >> const Driver &D = getToolChain().getDriver(); >> - llvm::Triple Triple = getToolChain().getTriple(); >> + // Get the effective triple, which takes into account the deployment >> target. >> + std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); >> + llvm::Triple Triple(TripleStr); >> >> // Select the ABI to use. >> // >> @@ -759,8 +761,10 @@ >> >> // Kernel code has more strict alignment requirements. >> if (KernelOrKext) { >> - CmdArgs.push_back("-backend-option"); >> - CmdArgs.push_back("-arm-long-calls"); >> + 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-strict-align"); >> @@ -1697,7 +1701,11 @@ >> } >> // 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. >> - if (Args.hasArg(options::OPT_mkernel)) >> + llvm::Triple Triple(TripleStr); >> + if ((Args.hasArg(options::OPT_mkernel) || >> + Args.hasArg(options::OPT_fapple_kext)) && >> + (Triple.getOS() != llvm::Triple::IOS || >> + Triple.isOSVersionLT(6))) >> PICDisabled = true; >> if (Args.hasArg(options::OPT_static)) >> PICDisabled = true; >> @@ -3690,7 +3698,10 @@ >> CheckCodeGenerationOptions(D, Args); >> >> // Derived from cc1 spec. >> - if (!Args.hasArg(options::OPT_mkernel) && >> !Args.hasArg(options::OPT_static) && >> + if ((!Args.hasArg(options::OPT_mkernel) || >> + (getDarwinToolChain().isTargetIPhoneOS() && >> + !getDarwinToolChain().isIPhoneOSVersionLT(6, 0))) && >> + !Args.hasArg(options::OPT_static) && >> !Args.hasArg(options::OPT_mdynamic_no_pic)) >> CmdArgs.push_back("-fPIC"); >> >> @@ -4144,9 +4155,11 @@ >> CmdArgs.push_back("-force_cpusubtype_ALL"); >> >> if (getToolChain().getTriple().getArch() != llvm::Triple::x86_64 && >> - (Args.hasArg(options::OPT_mkernel) || >> - Args.hasArg(options::OPT_static) || >> - Args.hasArg(options::OPT_fapple_kext))) >> + (((Args.hasArg(options::OPT_mkernel) || >> + Args.hasArg(options::OPT_fapple_kext)) && >> + (!getDarwinToolChain().isTargetIPhoneOS() || >> + getDarwinToolChain().isIPhoneOSVersionLT(6, 0))) || >> + Args.hasArg(options::OPT_static))) >> CmdArgs.push_back("-static"); >> >> Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, >> @@ -4507,7 +4520,7 @@ >> } else if (getDarwinToolChain().isTargetIPhoneOS()) { >> if (getDarwinToolChain().isIPhoneOSVersionLT(3, 1)) >> CmdArgs.push_back("-lcrt1.o"); >> - else >> + else if (getDarwinToolChain().isIPhoneOSVersionLT(6, 0)) >> CmdArgs.push_back("-lcrt1.3.1.o"); >> } else { >> if (getDarwinToolChain().isMacosxVersionLT(10, 5)) >> >> Modified: cfe/trunk/lib/Sema/SemaExpr.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Oct 15 17:23:53 2012 >> @@ -9770,11 +9770,8 @@ >> >> switch (ConvTy) { >> case Compatible: >> - DiagnoseAssignmentEnum(DstType, SrcType, SrcExpr); >> - >> - // XXX here with forced compatible cast >> - >> - return false; >> + DiagnoseAssignmentEnum(DstType, SrcType, SrcExpr); >> + return false; >> >> case PointerToInt: >> DiagKind = diag::ext_typecheck_convert_pointer_int; >> @@ -9857,7 +9854,6 @@ >> 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; >> >> Modified: cfe/trunk/runtime/compiler-rt/Makefile >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/runtime/compiler-rt/Makefile?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/runtime/compiler-rt/Makefile (original) >> +++ cfe/trunk/runtime/compiler-rt/Makefile Mon Oct 15 17:23:53 2012 >> @@ -74,9 +74,9 @@ >> ifeq ($(OS),Darwin) >> RuntimeDirs += darwin >> RuntimeLibrary.darwin.Configs := \ >> - eprintf.a 10.4.a osx.a cc_kext.a \ >> + eprintf.a 10.4.a osx.a ios.a cc_kext.a cc_kext_ios5.a \ >> asan_osx.a asan_osx_dynamic.dylib \ >> - profile_osx.a >> + profile_osx.a profile_ios.a >> endif >> >> # On Linux, include a library which has all the runtime functions. >> >> Copied: cfe/trunk/test/CodeGenObjC/optimized-setter-ios-device.m (from >> r165977, cfe/trunk/test/CodeGenObjC/optimized-setter.m) >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/optimized-setter-ios-device.m?p2=cfe/trunk/test/CodeGenObjC/optimized-setter-ios-device.m&p1=cfe/trunk/test/CodeGenObjC/optimized-setter.m&r1=165977&r2=165988&rev=165988&view=diff >> ============================================================================== >> --- cfe/trunk/test/CodeGenObjC/optimized-setter.m (original) >> +++ cfe/trunk/test/CodeGenObjC/optimized-setter-ios-device.m Mon Oct 15 >> 17:23:53 2012 >> @@ -1,5 +1,5 @@ >> -// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-macosx10.8.0 -o - | >> FileCheck %s >> -// rdar://10179974 >> +// 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); >> @@ -26,8 +26,8 @@ >> @synthesize atomicPropertyCopy; >> @end >> >> -// CHECK: call void @objc_setProperty_nonatomic >> -// CHECK: call void @objc_setProperty_nonatomic_copy >> -// CHECK: call void @objc_setProperty_atomic >> -// CHECK: call void @objc_setProperty_atomic_copy >> +// 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 >> >> >> Modified: cfe/trunk/test/CodeGenObjC/optimized-setter.m >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/optimized-setter.m?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/test/CodeGenObjC/optimized-setter.m (original) >> +++ cfe/trunk/test/CodeGenObjC/optimized-setter.m Mon Oct 15 17:23:53 2012 >> @@ -1,4 +1,5 @@ >> -// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-macosx10.8.0 -o - | >> FileCheck %s >> +// 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 >> // rdar://10179974 >> >> @interface I >> >> Copied: cfe/trunk/test/CodeGenObjC/unoptimized-setter.m (from r165977, >> cfe/trunk/test/CodeGenObjC/optimized-setter.m) >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/unoptimized-setter.m?p2=cfe/trunk/test/CodeGenObjC/unoptimized-setter.m&p1=cfe/trunk/test/CodeGenObjC/optimized-setter.m&r1=165977&r2=165988&rev=165988&view=diff >> ============================================================================== >> --- cfe/trunk/test/CodeGenObjC/optimized-setter.m (original) >> +++ cfe/trunk/test/CodeGenObjC/unoptimized-setter.m Mon Oct 15 17:23:53 2012 >> @@ -1,5 +1,5 @@ >> -// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-macosx10.8.0 -o - | >> FileCheck %s >> -// rdar://10179974 >> +// 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); >> @@ -26,8 +26,7 @@ >> @synthesize atomicPropertyCopy; >> @end >> >> -// CHECK: call void @objc_setProperty_nonatomic >> -// CHECK: call void @objc_setProperty_nonatomic_copy >> -// CHECK: call void @objc_setProperty_atomic >> -// CHECK: call void @objc_setProperty_atomic_copy >> - >> +// 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 >> >> Modified: cfe/trunk/test/Driver/darwin-ld.c >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-ld.c?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/test/Driver/darwin-ld.c (original) >> +++ cfe/trunk/test/Driver/darwin-ld.c Mon Oct 15 17:23:53 2012 >> @@ -122,6 +122,10 @@ >> // 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 >> >> Modified: cfe/trunk/test/Driver/pic.c >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pic.c?rev=165988&r1=165987&r2=165988&view=diff >> ============================================================================== >> --- cfe/trunk/test/Driver/pic.c (original) >> +++ cfe/trunk/test/Driver/pic.c Mon Oct 15 17:23:53 2012 >> @@ -93,3 +93,13 @@ >> // 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 >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
