wolfgangp added a comment.

In D146338#4206222 <https://reviews.llvm.org/D146338#4206222>, @hans wrote:

>> In D145271 <https://reviews.llvm.org/D145271> it was suggested that we drop 
>> the attribute in such contexts, and this is effectively what happens. The 
>> compiler does not produce any exported definitions (or import any symbols) 
>> for such classes. The patch is simply to suppress the diagnostic for MSVC 
>> mode and Playstation.



> With the current patch, we still end up with the attribute on the base class 
> in the AST. Also, does this make the compiler accept dllexport of classes in 
> anonymous namespaces? I'm not sure we want that.
> Is it not possible to check the linkage and bail out in 
> `Sema::propagateDLLAttrToBaseClassTemplate` instead?

Actually, the compiler would (still) not accept explicit dll* attributes on the 
class in either function scopes or anon namespaces. This case is about classes 
with internal linkage deriving from exported/imported template classes that 
have been instantiated with a class with internal linkage. In the description, 
the classes B and C are such classes. They both derive from A, which is 
imported and instantiated with B and C as template parameters.

However, I think I have found a way to drop the attribute. I think it's 
equivalent to just suppressing the error message, but it's probably cleaner.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146338/new/

https://reviews.llvm.org/D146338

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

Reply via email to