Author: ericwf Date: Mon Jul 16 13:01:59 2018 New Revision: 337205 URL: http://llvm.org/viewvc/llvm-project?rev=337205&view=rev Log: Fix PR38160 - init_priority attribute not supported by GCC on Apple.
This patch guards the use of __attribute__((init_priority(101))) within memory_resource.cpp when building with compilers that don't support it. Specifically GCC on Apple platforms, and MSVC. Modified: libcxx/trunk/src/experimental/memory_resource.cpp Modified: libcxx/trunk/src/experimental/memory_resource.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/experimental/memory_resource.cpp?rev=337205&r1=337204&r2=337205&view=diff ============================================================================== --- libcxx/trunk/src/experimental/memory_resource.cpp (original) +++ libcxx/trunk/src/experimental/memory_resource.cpp Mon Jul 16 13:01:59 2018 @@ -68,12 +68,23 @@ union ResourceInitHelper { _LIBCPP_CONSTEXPR_AFTER_CXX11 ResourceInitHelper() : resources() {} ~ResourceInitHelper() {} }; + +// Detect if the init_priority attribute is supported. +#if (defined(_LIBCPP_COMPILER_GCC) && defined(__APPLE__)) \ + || defined(_LIBCPP_COMPILER_MSVC) +// GCC on Apple doesn't support the init priority attribute, +// and MSVC doesn't support any GCC attributes. +# define _LIBCPP_INIT_PRIORITY_MAX +#else +# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((init_priority(101))) +#endif + // When compiled in C++14 this initialization should be a constant expression. // Only in C++11 is "init_priority" needed to ensure initialization order. #if _LIBCPP_STD_VER > 11 _LIBCPP_SAFE_STATIC #endif -ResourceInitHelper res_init __attribute__((init_priority (101))); +ResourceInitHelper res_init _LIBCPP_INIT_PRIORITY_MAX; } // end namespace _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits