]> granicus.if.org Git - clang/commit
Use comdats to avoid double initialization of weak data
authorReid Kleckner <reid@kleckner.net>
Fri, 23 May 2014 21:13:45 +0000 (21:13 +0000)
committerReid Kleckner <reid@kleckner.net>
Fri, 23 May 2014 21:13:45 +0000 (21:13 +0000)
commit8756959802c659b53f431bcd75b5234f0c9589ab
treecdf906607f80c0c6ca999264c6c709fe6c4bcb0e
parent3ccca48c69e96f10485bc7eda0a1531dee22b775
Use comdats to avoid double initialization of weak data

Initializers of global data that can appear multiple TUs (static data
members of class templates or __declspec(selectany) data) are now in a
comdat group keyed on the global variable being initialized.  On
non-Windows platforms, this is a code size and startup time
optimization.  On Windows, this is necessary for ABI compatibility with
MSVC.

Fixes PR16959.

Reviewers: rsmith

Differential Revision: http://reviews.llvm.org/D3811

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209555 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGDeclCXX.cpp
lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h
lib/CodeGen/MicrosoftCXXABI.cpp
test/CodeGenCXX/apple-kext.cpp
test/CodeGenCXX/init-priority-attr.cpp
test/CodeGenCXX/microsoft-abi-static-initializers.cpp
test/CodeGenCXX/static-member-variable-explicit-specialization.cpp