From: Fariborz Jahanian Date: Tue, 24 Feb 2009 23:34:44 +0000 (+0000) Subject: patch for two things. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=66a5c2c0da225d45334c8062f10e73b7dee50681;p=clang patch for two things. 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 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index b2d4db1844..455cdfa7ca 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -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; - } } diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp index 3dec1dd796..ca12f83a9b 100644 --- a/lib/CodeGen/CGObjCMac.cpp +++ b/lib/CodeGen/CGObjCMac.cpp @@ -3429,9 +3429,11 @@ void CGObjCNonFragileABIMac::FinishNonFragileABIModule() { std::vector 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),