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 llvm-svn: 209555
Showing
- clang/lib/CodeGen/CGDeclCXX.cpp 7 additions, 6 deletionsclang/lib/CodeGen/CGDeclCXX.cpp
- clang/lib/CodeGen/CodeGenModule.cpp 13 additions, 9 deletionsclang/lib/CodeGen/CodeGenModule.cpp
- clang/lib/CodeGen/CodeGenModule.h 15 additions, 3 deletionsclang/lib/CodeGen/CodeGenModule.h
- clang/lib/CodeGen/MicrosoftCXXABI.cpp 10 additions, 5 deletionsclang/lib/CodeGen/MicrosoftCXXABI.cpp
- clang/test/CodeGenCXX/apple-kext.cpp 2 additions, 2 deletionsclang/test/CodeGenCXX/apple-kext.cpp
- clang/test/CodeGenCXX/init-priority-attr.cpp 4 additions, 1 deletionclang/test/CodeGenCXX/init-priority-attr.cpp
- clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp 19 additions, 17 deletionsclang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
- clang/test/CodeGenCXX/static-member-variable-explicit-specialization.cpp 8 additions, 8 deletions...GenCXX/static-member-variable-explicit-specialization.cpp
Loading
Please register or sign in to comment