hans added inline comments.

================
Comment at: clang/lib/Sema/SemaDeclCXX.cpp:5599
 
+bool Sema::isInlineFunctionDLLExportable(const CXXMethodDecl *MD) {
+  assert(MD->isInlined());
----------------
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?


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