config: Use _LIBCPP_TYPE_VIS_ONLY with enum class
authorShoaib Meenai <smeenai@fb.com>
Mon, 12 Sep 2016 21:41:12 +0000 (21:41 +0000)
committerShoaib Meenai <smeenai@fb.com>
Mon, 12 Sep 2016 21:41:12 +0000 (21:41 +0000)
An enum class has associated type info. In the Microsoft ABI, type info
is emitted in the COMDAT section and isn't exported, so clang rightfully
complains about __declspec(dllexport) being unused for an enum class.
On other platforms, we still want to export the type info.

Differential Revision: https://reviews.llvm.org/D24065

llvm-svn: 281264

libcxx/include/__config

index 5866075..fb3efa0 100644 (file)
@@ -716,7 +716,7 @@ template <unsigned> struct __static_assert_check {};
     _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \
     };
 #else  // _LIBCPP_HAS_NO_STRONG_ENUMS
-#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_TYPE_VIS x
+#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_TYPE_VIS_ONLY x
 #define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x)
 #endif  // _LIBCPP_HAS_NO_STRONG_ENUMS