]> granicus.if.org Git - clang/commit
Implement __declspec(selectany) under -fms-extensions
authorReid Kleckner <reid@kleckner.net>
Mon, 20 May 2013 14:02:37 +0000 (14:02 +0000)
committerReid Kleckner <reid@kleckner.net>
Mon, 20 May 2013 14:02:37 +0000 (14:02 +0000)
commita722534711fd93b5685e1a00f37a62f6a578dacd
treeb3849899f74581f5400aa585875f6fb4434dca02
parent7baff64eb362ab8c3e0b821dd066ea80fdef4946
Implement __declspec(selectany) under -fms-extensions

selectany only applies to externally visible global variables.  It has
the effect of making the data weak_odr.

The MSDN docs suggest that unused definitions can only be dropped at
linktime, so Clang uses weak instead of linkonce.  MSVC optimizes away
references to constant selectany data, so it must assume that there is
only one definition, hence weak_odr.

Reviewers: espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D814

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182266 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/Attr.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/CodeGen/CodeGenModule.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclAttr.cpp
test/CodeGen/ms-declspecs.c
test/SemaCXX/attr-selectany.cpp [new file with mode: 0644]