Author: ericwf Date: Mon Oct 10 00:34:18 2016 New Revision: 283715 URL: http://llvm.org/viewvc/llvm-project?rev=283715&view=rev Log: Provide a constexpr addressof with GCC 7.
__builtin_addressof was added to the GCC trunk in the past week. This patch teaches libc++ about it so it can correctly provide constexpr addressof. Unfortunately this patch will break users of earlier GCC 7 builds, since we expect __builtin_addressof but one won't be provided. One option would be to only use __builtin_addressof for GCC 7.1 and above, but that means waiting for another release. Instead I've specifically chosen to break older GCC 7 versions. Since GCC 7 has yet to be released, and the 7.0 release is a development release, I believe that anybody currently using GCC 7.0 will have no issue upgrading. Modified: libcxx/trunk/include/type_traits libcxx/trunk/test/libcxx/test/config.py libcxx/trunk/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp Modified: libcxx/trunk/include/type_traits URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/type_traits?rev=283715&r1=283714&r2=283715&view=diff ============================================================================== --- libcxx/trunk/include/type_traits (original) +++ libcxx/trunk/include/type_traits Mon Oct 10 00:34:18 2016 @@ -425,7 +425,7 @@ template <bool _Bp, class _Tp = void> us #endif // addressof -#if __has_builtin(__builtin_addressof) +#if __has_builtin(__builtin_addressof) || _GNUC_VER >= 700 template <class _Tp> inline _LIBCPP_CONSTEXPR_AFTER_CXX14 Modified: libcxx/trunk/test/libcxx/test/config.py URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=283715&r1=283714&r2=283715&view=diff ============================================================================== --- libcxx/trunk/test/libcxx/test/config.py (original) +++ libcxx/trunk/test/libcxx/test/config.py Mon Oct 10 00:34:18 2016 @@ -179,6 +179,7 @@ class Configuration(object): assert self.cxx.version is not None maj_v, min_v, _ = self.cxx.version self.config.available_features.add(cxx_type) + self.config.available_features.add('%s-%s' % (cxx_type, maj_v)) self.config.available_features.add('%s-%s.%s' % ( cxx_type, maj_v, min_v)) Modified: libcxx/trunk/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp?rev=283715&r1=283714&r2=283715&view=diff ============================================================================== --- libcxx/trunk/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp (original) +++ libcxx/trunk/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp Mon Oct 10 00:34:18 2016 @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 -// XFAIL: gcc +// XFAIL: gcc-4, gcc-5, gcc-6 // <memory> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits