takuto.ikuta added a comment.

Thank you for review!



================
Comment at: clang/lib/Sema/SemaDeclCXX.cpp:5599
 
+bool Sema::isInlineFunctionDLLExportable(const CXXMethodDecl *MD) {
+  assert(MD->isInlined());
----------------
hans wrote:
> Okay, breaking out this logic is a little better, but I still don't like that 
> we now have split the "inherit dllexport attribute" in two places: one for 
> non-inline functions and one for inline (even if they both call this 
> function). It feels like it will be hard to maintain.
> 
> Here is another idea:
> 
> When we inherit the dllexport attribute to class members, if 
> getLangOpts().DllExportInlines is false, we don't put dllexport on inline 
> functions, but instead we put a new attribute "dllexportstaticlocals".
> 
> That attribute only has the effect that it makes static locals exported. We 
> would check for it when computing the linkage of the static local, similar to 
> how it works in hidden functions.
> 
> This has two benefits: it doesn't complicate the "inherit dllexport" code 
> very much, and it avoids the need for a separate AST walk of the function.
> 
> What do you think?
I implemented your idea the way I understood.
Use new attribute to check static local var later.

Due to difference of treating between linkage and dll attribute, I inherit dll 
attribute in Sema/SemaDecl.cpp instead of  AST/Decl.cpp


https://reviews.llvm.org/D51340



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to