Revert r164907 and r164902 (+ follow-ups). They broke building on 10.6.
authorNico Weber <nicolasweber@gmx.de>
Mon, 15 Oct 2012 20:37:01 +0000 (20:37 +0000)
committerNico Weber <nicolasweber@gmx.de>
Mon, 15 Oct 2012 20:37:01 +0000 (20:37 +0000)
See PR14013.

llvm-svn: 165962

clang/include/clang/Basic/ObjCRuntime.h
clang/lib/CodeGen/CGObjC.cpp
clang/lib/Driver/ToolChains.cpp
clang/lib/Driver/Tools.cpp
clang/lib/Sema/SemaExpr.cpp
clang/runtime/compiler-rt/Makefile
clang/test/CodeGenObjC/optimized-setter-ios-device.m [deleted file]
clang/test/CodeGenObjC/optimized-setter.m
clang/test/CodeGenObjC/unoptimized-setter.m [deleted file]
clang/test/Driver/darwin-ld.c
clang/test/Driver/pic.c

index d543b76..2ca421b 100644 (file)
@@ -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
index cea9731..cd1ed89 100644 (file)
@@ -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(),
index 529f7bf..c7a8cba 100644 (file)
@@ -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) {
index 63d31b8..9774973 100644 (file)
@@ -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))
index 3d66baa..95c5290 100644 (file)
@@ -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;
index 0336c01..fdf315a 100644 (file)
@@ -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 (file)
index 6fa322a..0000000
+++ /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
-
index 6f5cfb1..0e1b388 100644 (file)
@@ -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 (file)
index adcf087..0000000
+++ /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
index cd511e0..02fccde 100644 (file)
 // 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
index 5b69dba..52508a5 100644 (file)
 // 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