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
