Author: prazek Date: Thu Sep 14 10:33:08 2017 New Revision: 313278 URL: http://llvm.org/viewvc/llvm-project?rev=313278&view=rev Log: Enable __declspec(selectany) on any platform
Summary: This feature was disabled probably by mistake in rL300562 This fixes bug https://bugs.llvm.org/show_bug.cgi?id=33285 Reviewers: davide, rnk Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D33852 Modified: cfe/trunk/include/clang/Basic/Attr.td cfe/trunk/include/clang/Basic/AttrDocs.td cfe/trunk/test/Sema/attr-selectany.c cfe/trunk/test/SemaCXX/attr-selectany.cpp Modified: cfe/trunk/include/clang/Basic/Attr.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=313278&r1=313277&r2=313278&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/Attr.td (original) +++ cfe/trunk/include/clang/Basic/Attr.td Thu Sep 14 10:33:08 2017 @@ -2472,9 +2472,9 @@ def DLLImport : InheritableAttr, TargetS let Documentation = [DLLImportDocs]; } -def SelectAny : InheritableAttr, TargetSpecificAttr<TargetWindows> { +def SelectAny : InheritableAttr { let Spellings = [Declspec<"selectany">, GCC<"selectany">]; - let Documentation = [Undocumented]; + let Documentation = [SelectAnyDocs]; } def Thread : Attr { Modified: cfe/trunk/include/clang/Basic/AttrDocs.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=313278&r1=313277&r2=313278&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/AttrDocs.td (original) +++ cfe/trunk/include/clang/Basic/AttrDocs.td Thu Sep 14 10:33:08 2017 @@ -3192,3 +3192,18 @@ This attribute can be added to an Object ensure that this class cannot be subclassed. }]; } + + +def SelectAnyDocs : Documentation { + let Category = DocCatType; + let Content = [{ +This attribute appertains to a global symbol, causing it to have a weak +definition ( +`linkonce <https://llvm.org/docs/LangRef.html#linkage-types>`_ +), allowing the linker to select any definition. + +For more information see +`gcc documentation <https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Microsoft-Windows-Variable-Attributes.html>`_ +or `msvc documentation <https://docs.microsoft.com/pl-pl/cpp/cpp/selectany>`_. +}]; +} Modified: cfe/trunk/test/Sema/attr-selectany.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-selectany.c?rev=313278&r1=313277&r2=313278&view=diff ============================================================================== --- cfe/trunk/test/Sema/attr-selectany.c (original) +++ cfe/trunk/test/Sema/attr-selectany.c Thu Sep 14 10:33:08 2017 @@ -1,5 +1,7 @@ // RUN: %clang_cc1 -triple x86_64-win32 -fdeclspec -verify %s // RUN: %clang_cc1 -triple x86_64-mingw32 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-linux -verify -fdeclspec %s +// RUN: %clang_cc1 -triple x86_64-win32-macho -verify -fdeclspec %s extern __declspec(selectany) const int x1 = 1; // no warning, const means we need extern in C++ Modified: cfe/trunk/test/SemaCXX/attr-selectany.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-selectany.cpp?rev=313278&r1=313277&r2=313278&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/attr-selectany.cpp (original) +++ cfe/trunk/test/SemaCXX/attr-selectany.cpp Thu Sep 14 10:33:08 2017 @@ -1,4 +1,7 @@ // RUN: %clang_cc1 -triple x86_64-win32 -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s +// RUN: %clang_cc1 -triple x86_64-unknown-linux -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s +// RUN: %clang_cc1 -triple x86_64-win32-macho -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s + // MSVC produces similar diagnostics. __declspec(selectany) void foo() { } // expected-error{{'selectany' can only be applied to data items with external linkage}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits