[MS ABI] Explicit specialization of static data members are weak
authorDavid Majnemer <david.majnemer@gmail.com>
Fri, 17 Jul 2015 23:36:49 +0000 (23:36 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Fri, 17 Jul 2015 23:36:49 +0000 (23:36 +0000)
commit6d1780cfb8d72f2434560262a30af8bb2ebf8420
tree08ecd1a27bc1bdf95109693999a0c2781e95f8f1
parentdceaaadf5ca8cf77aa54f1287bf2f6509337111f
[MS ABI] Explicit specialization of static data members are weak

Normally, explicit specializations are treated like strong external
definitions.  However, MSVC treats explicit specializations of static
data members as weak.  MSVC 2013's <regex> implementation has such an
explicit specialization which leads to clang emitting a strong
definition in each translation unit which includes it.  Tweak clang's
linkage calculation to give such entities GVA_StrongODR linkage instead.

This fixes PR24165.

llvm-svn: 242592
clang/lib/AST/ASTContext.cpp
clang/test/CodeGenCXX/dllexport-members.cpp
clang/test/CodeGenCXX/microsoft-compatibility.cpp