Check for SD-6 feature test macro when determining which tests should be

available, rather than #ifdef'ing away the relevant tests if it's unavailable.

llvm-svn: 288543
This commit is contained in:
Richard Smith 2016-12-02 22:14:59 +00:00
parent 9757a934a2
commit 366bb54f81
3 changed files with 7 additions and 12 deletions

View File

@ -8,12 +8,10 @@
//===----------------------------------------------------------------------===//
// Can a noexcept function pointer be caught by a non-noexcept catch clause?
// UNSUPPORTED: c++98, c++03, c++11, c++14
// UNSUPPORTED: libcxxabi-no-exceptions
// UNSUPPORTED: libcxxabi-no-exceptions, libcxxabi-no-noexcept-function-type
#include <cassert>
#ifdef __cpp_noexcept_function_type
template<bool Noexcept> void f() noexcept(Noexcept) {}
template<bool Noexcept> using FnType = void() noexcept(Noexcept);
@ -64,6 +62,3 @@ int main()
check<true, true>();
check_deep();
}
#else
int main() {}
#endif

View File

@ -9,12 +9,10 @@
// Can a noexcept member function pointer be caught by a non-noexcept catch
// clause?
// UNSUPPORTED: c++98, c++03, c++11, c++14
// UNSUPPORTED: libcxxabi-no-exceptions
// UNSUPPORTED: libcxxabi-no-exceptions, libcxxabi-no-noexcept-function-type
#include <cassert>
#ifdef __cpp_noexcept_function_type
struct X {
template<bool Noexcept> void f() noexcept(Noexcept) {}
};
@ -67,6 +65,3 @@ int main()
check<true, true>();
check_deep();
}
#else
int main() {}
#endif

View File

@ -33,10 +33,15 @@ class Configuration(LibcxxConfiguration):
self.libcxxabi_obj_root = self.get_lit_conf('libcxxabi_obj_root')
super(Configuration, self).configure_obj_root()
def has_cpp_feature(self, feature, required_value):
return int(self.cxx.dumpMacros().get('__cpp_' + feature, 0)) >= required_value
def configure_features(self):
super(Configuration, self).configure_features()
if not self.get_lit_bool('enable_exceptions', True):
self.config.available_features.add('libcxxabi-no-exceptions')
if not self.has_cpp_feature('noexcept_function_type', 201510):
self.config.available_features.add('libcxxabi-no-noexcept-function-type')
def configure_compile_flags(self):
self.cxx.compile_flags += ['-DLIBCXXABI_NO_TIMER']