]> granicus.if.org Git - clang/commitdiff
patch for two things.
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 24 Feb 2009 23:34:44 +0000 (23:34 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 24 Feb 2009 23:34:44 +0000 (23:34 +0000)
make sure objc2's nonfragile abi is enacted for Leopard too.
add -fobjc-gc-only flag to the image_info symbol.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65413 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets.cpp
lib/CodeGen/CGObjCMac.cpp

index b2d4db184410e448dc29f44318f2d75f90160719..455cdfa7ca6d136d5a23949c648b6ad0ef6cea25 100644 (file)
@@ -152,11 +152,12 @@ static void GetDarwinLanguageOptions(LangOptions &Opts,
   
   // Blocks default to on for 10.6 (darwin10) and beyond.
   // As does nonfragile-abi for 64bit mode
-  if (Maj > 9) {
+  if (Maj > 9) 
     Opts.Blocks = 1;
+
+  if (Maj >= 9)
     if (Opts.ObjC1 && !strncmp(Triple, "x86_64", 6))
       Opts.ObjCNonFragileABI = 1;
-  }
 }
 
 
index 3dec1dd7961e0027842b628f359e3a1f6870c31b..ca12f83a9bc7bf118223ed2171b2c6db3118be9c 100644 (file)
@@ -3429,9 +3429,11 @@ void CGObjCNonFragileABIMac::FinishNonFragileABIModule() {
   std::vector<llvm::Constant*> Values(2);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, 0);
   unsigned int flags = 0;
-  // FIXME -fobjc-gc-only flags is 6.
-  if (CGM.getContext().getLangOptions().getGCMode() != LangOptions::NonGC)
-    flags |= 2;
+  // FIXME: Fix and continue?
+  if (CGM.getLangOptions().getGCMode() != LangOptions::NonGC)
+    flags |= eImageInfo_GarbageCollected;
+  if (CGM.getLangOptions().getGCMode() == LangOptions::GCOnly)
+    flags |= eImageInfo_GCOnly;
   Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, flags);
   llvm::Constant* Init = llvm::ConstantArray::get(
                                       llvm::ArrayType::get(ObjCTypes.IntTy, 2),