forked from OSchip/llvm-project
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. llvm-svn: 283715
This commit is contained in:
parent
99b81a59fb
commit
ac473034fc
|
@ -425,7 +425,7 @@ template <bool _Bp, class _Tp = void> using enable_if_t = typename enable_if<_Bp
|
|||
#endif
|
||||
|
||||
// addressof
|
||||
#if __has_builtin(__builtin_addressof)
|
||||
#if __has_builtin(__builtin_addressof) || _GNUC_VER >= 700
|
||||
|
||||
template <class _Tp>
|
||||
inline _LIBCPP_CONSTEXPR_AFTER_CXX14
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// UNSUPPORTED: c++98, c++03, c++11, c++14
|
||||
// XFAIL: gcc
|
||||
// XFAIL: gcc-4, gcc-5, gcc-6
|
||||
|
||||
// <memory>
|
||||
|
||||
|
|
Loading…
Reference in New Issue