rsmith created this revision.
rsmith added a reviewer: EricWF.
rsmith added a subscriber: cfe-commits.
rsmith set the repository for this revision to rL LLVM.

Repository:
  rL LLVM

https://reviews.llvm.org/D27364

Files:
  test/catch_function_03.pass.cpp
  test/catch_member_function_pointer_02.pass.cpp
  test/libcxxabi/test/config.py


Index: test/libcxxabi/test/config.py
===================================================================
--- test/libcxxabi/test/config.py
+++ test/libcxxabi/test/config.py
@@ -33,10 +33,15 @@
         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 self.cxx.dumpMacros().get(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']
Index: test/catch_member_function_pointer_02.pass.cpp
===================================================================
--- test/catch_member_function_pointer_02.pass.cpp
+++ test/catch_member_function_pointer_02.pass.cpp
@@ -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 @@
     check<true, true>();
     check_deep();
 }
-#else
-int main() {}
-#endif
Index: test/catch_function_03.pass.cpp
===================================================================
--- test/catch_function_03.pass.cpp
+++ test/catch_function_03.pass.cpp
@@ -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 @@
     check<true, true>();
     check_deep();
 }
-#else
-int main() {}
-#endif


Index: test/libcxxabi/test/config.py
===================================================================
--- test/libcxxabi/test/config.py
+++ test/libcxxabi/test/config.py
@@ -33,10 +33,15 @@
         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 self.cxx.dumpMacros().get(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']
Index: test/catch_member_function_pointer_02.pass.cpp
===================================================================
--- test/catch_member_function_pointer_02.pass.cpp
+++ test/catch_member_function_pointer_02.pass.cpp
@@ -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 @@
     check<true, true>();
     check_deep();
 }
-#else
-int main() {}
-#endif
Index: test/catch_function_03.pass.cpp
===================================================================
--- test/catch_function_03.pass.cpp
+++ test/catch_function_03.pass.cpp
@@ -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 @@
     check<true, true>();
     check_deep();
 }
-#else
-int main() {}
-#endif
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to