summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/__config3
-rw-r--r--libcxx/include/memory2
-rw-r--r--libcxx/src/exception.cpp1
3 files changed, 5 insertions, 1 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 0c46f76188e..ced9a95344a 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -146,6 +146,9 @@ typedef __char32_t char32_t;
#if !(__has_feature(cxx_auto_type))
#define _LIBCPP_HAS_NO_AUTO_TYPE
+#endif
+
+#if __clang_major__ < 3
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
#endif
diff --git a/libcxx/include/memory b/libcxx/include/memory
index 1972d06f4d9..d272c08c91c 100644
--- a/libcxx/include/memory
+++ b/libcxx/include/memory
@@ -1294,7 +1294,7 @@ struct __has_allocate_hint
#endif // _LIBCPP_HAS_NO_ADVANCED_SFINAE
-#ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE
+#if !defined(_LIBCPP_HAS_NO_ADVANCED_SFINAE) && !defined(_LIBCPP_HAS_NO_VARIADICS)
template <class _Alloc, class _Tp, class ..._Args>
decltype(_VSTD::declval<_Alloc>().construct(_VSTD::declval<_Tp*>(),
diff --git a/libcxx/src/exception.cpp b/libcxx/src/exception.cpp
index b0efda648e5..28d87b34050 100644
--- a/libcxx/src/exception.cpp
+++ b/libcxx/src/exception.cpp
@@ -56,6 +56,7 @@ std::get_terminate() _NOEXCEPT
return __sync_fetch_and_add(&__terminate_handler, (std::terminate_handler)0);
}
+_ATTRIBUTE(noreturn)
void
std::terminate() _NOEXCEPT
{
OpenPOWER on IntegriCloud