From: Fariborz Jahanian Date: Sat, 10 Mar 2012 18:25:06 +0000 (+0000) Subject: objective-c modern rewriter: add __declspec(dllexport) to forward X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ce0d89744bdad195c991362bd6fc7b334e5c2d52;p=clang objective-c modern rewriter: add __declspec(dllexport) to forward declaration of class metadata when they are defined later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152500 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp index 87d49fd08f..269249d65e 100644 --- a/lib/Rewrite/RewriteModernObjC.cpp +++ b/lib/Rewrite/RewriteModernObjC.cpp @@ -5682,13 +5682,20 @@ static void Write_class_t(ASTContext *Context, std::string &Result, if (metadata && !CDecl->getSuperClass()) { // Need to handle a case of use of forward declaration. - Result += "\nextern struct _class_t OBJC_CLASS_$_"; + Result += "\n"; + if (CDecl->getImplementation()) + Result += "__declspec(dllexport) "; + Result += "extern struct _class_t OBJC_CLASS_$_"; Result += CDecl->getNameAsString(); Result += ";\n"; } // Also, for possibility of 'super' metadata class not having been defined yet. if (CDecl->getSuperClass()) { - Result += "\nextern struct _class_t "; Result += VarName; + Result += "\n"; + if (CDecl->getSuperClass()->getImplementation()) + Result += "__declspec(dllexport) "; + Result += "extern struct _class_t "; + Result += VarName; Result += CDecl->getSuperClass()->getNameAsString(); Result += ";\n"; }