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. llvm-svn: 134453
This commit is contained in:
@@ -250,7 +250,7 @@ static void AddObjCXXARCLibcxxDefines(const LangOptions &LangOpts,
|
||||
<< "}\n"
|
||||
<< "\n";
|
||||
|
||||
if (!LangOpts.ObjCNoAutoRefCountRuntime) {
|
||||
if (LangOpts.ObjCRuntimeHasWeak) {
|
||||
Out << "template <class _Tp>\n"
|
||||
<< "inline __attribute__ ((__visibility__(\"hidden\"),"
|
||||
<< "__always_inline__))\n"
|
||||
@@ -318,7 +318,7 @@ static void AddObjCXXARCLibstdcxxDefines(const LangOptions &LangOpts,
|
||||
<< "};\n"
|
||||
<< "\n";
|
||||
|
||||
if (!LangOpts.ObjCNoAutoRefCountRuntime) {
|
||||
if (LangOpts.ObjCRuntimeHasWeak) {
|
||||
Out << "template<typename _Tp>\n"
|
||||
<< "struct __is_scalar<__attribute__((objc_ownership(weak))) _Tp> {\n"
|
||||
<< " enum { __value = 0 };\n"
|
||||
|
||||
Reference in New Issue
Block a user