Change the driver's logic about Objective-C runtimes: abstract out a
structure to hold inferred information, then propagate each invididual
bit down to -cc1. Separate the bits of "supports weak" and "has a native
ARC runtime"; make the latter a CodeGenOption.
The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134453 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index 9ed0dc2..d68016b 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -80,6 +80,8 @@
/// initialized.
std::string MacosxVersionMin;
+ bool hasARCRuntime() const;
+
private:
void AddDeploymentTarget(DerivedArgList &Args) const;
@@ -184,7 +186,7 @@
virtual bool HasNativeLLVMSupport() const;
- virtual bool HasARCRuntime() const;
+ virtual void configureObjCRuntime(ObjCRuntime &runtime) const;
virtual DerivedArgList *TranslateArgs(const DerivedArgList &Args,
const char *BoundArch) const;