Fix warnings in test/std/language.support
authorEric Fiselier <eric@efcs.ca>
Sat, 18 Jul 2015 21:17:16 +0000 (21:17 +0000)
committerEric Fiselier <eric@efcs.ca>
Sat, 18 Jul 2015 21:17:16 +0000 (21:17 +0000)
llvm-svn: 242624

libcxx/test/libcxx/compiler.py
libcxx/test/libcxx/test/config.py
libcxx/test/std/language.support/support.dynamic/alloc.errors/new.handler/new_handler.pass.cpp
libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array.pass.cpp
libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp
libcxx/test/std/language.support/support.exception/exception.terminate/terminate.handler/terminate_handler.pass.cpp
libcxx/test/std/language.support/support.runtime/csignal.pass.cpp
libcxx/test/std/language.support/support.runtime/cstdarg.pass.cpp
libcxx/test/std/language.support/support.runtime/cstdlib.pass.cpp
libcxx/test/std/language.support/support.runtime/ctime.pass.cpp

index 7afbed4..24ac431 100644 (file)
@@ -150,3 +150,14 @@ class CXXCompiler(object):
         cmd, out, err, rc = self.compile(os.devnull, out=os.devnull,
                                          flags=flags)
         return rc == 0
+
+    def addCompileFlagIfSupported(self, flag):
+        if isinstance(flag, list):
+            flags = list(flag)
+        else:
+            flags = [flag]
+        if self.hasCompileFlag(flags):
+            self.compile_flags += flags
+            return True
+        else:
+            return False
index 09fbf66..8e421f3 100644 (file)
@@ -570,10 +570,9 @@ class Configuration(object):
     def configure_warnings(self):
         enable_warnings = self.get_lit_bool('enable_warnings', False)
         if enable_warnings:
-            self.cxx.compile_flags += ['-Wsystem-headers', '-Wall', '-Werror']
-            if ('clang' in self.config.available_features or
-                'apple-clang' in self.config.available_features):
-                self.cxx.compile_flags += ['-Wno-user-defined-literals']
+            self.cxx.compile_flags += ['-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER',
+                '-Wall', '-Werror']
+            self.cxx.addCompileFlagIfSupported('-Wno-user-defined-literals')
 
     def configure_sanitizer(self):
         san = self.get_lit_conf('use_sanitizer', '').strip()
index 6b799a3..38e040c 100644 (file)
 // test new_handler
 
 #include <new>
+#include <type_traits>
+#include <cassert>
 
 void f() {}
 
 int main()
 {
+    static_assert(std::is_same<std::new_handler, void(*)()>::value, "");
     std::new_handler p = f;
+    assert(p == &f);
 }
index 5a87c07..a1a3035 100644 (file)
@@ -38,7 +38,8 @@ int main()
     std::set_new_handler(new_handler);
     try
     {
-        void*volatile vp = operator new[] (std::numeric_limits<std::size_t>::max());
+        void* volatile vp = operator new[] (std::numeric_limits<std::size_t>::max());
+        ((void)vp);
         assert(false);
     }
     catch (std::bad_alloc&)
index 58aa3f2..5dc9f71 100644 (file)
@@ -39,6 +39,7 @@ int main()
     try
     {
         void* vp = operator new (std::numeric_limits<std::size_t>::max());
+        ((void)vp);
         assert(false);
     }
     catch (std::bad_alloc&)
index 232ce0a..46e2126 100644 (file)
 // test terminate_handler
 
 #include <exception>
+#include <type_traits>
+#include <cassert>
 
 void f() {}
 
 int main()
 {
+    static_assert(std::is_same<std::terminate_handler, void(*)()>::value, "");
     std::terminate_handler p = f;
+    assert(p == &f);
 }
index 717347d..a42363f 100644 (file)
@@ -50,7 +50,8 @@
 
 int main()
 {
-    std::sig_atomic_t sig;
+    std::sig_atomic_t sig = 0;
+    ((void)sig);
     typedef void (*func)(int);
     static_assert((std::is_same<decltype(std::signal(0, (func)0)), func>::value), "");
     static_assert((std::is_same<decltype(std::raise(0)), int>::value), "");
index 0739491..d1b335c 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <cstdlib>
 #include <type_traits>
+#include <cassert>
 
 #ifndef EXIT_FAILURE
 #error EXIT_FAILURE not defined
 #error RAND_MAX not defined
 #endif
 
+template <class TestType, class IntType>
+void test_div_struct() {
+    TestType obj;
+    static_assert(sizeof(obj) >= sizeof(IntType) * 2, ""); // >= to account for alignment.
+    static_assert(std::is_same<decltype(obj.quot), IntType>::value, "");
+    static_assert(std::is_same<decltype(obj.rem), IntType>::value, "");
+    ((void) obj);
+};
+
 int main()
 {
     std::size_t s = 0;
-    std::div_t d;
-    std::ldiv_t ld;
-    std::lldiv_t lld;
+    ((void)s);
+    static_assert(std::is_same<std::size_t, decltype(sizeof(int))>::value, "");
+    test_div_struct<std::div_t, int>();
+    test_div_struct<std::ldiv_t, long>();
+    test_div_struct<std::lldiv_t, long long>();
     char** endptr = 0;
     static_assert((std::is_same<decltype(std::atof("")), double>::value), "");
     static_assert((std::is_same<decltype(std::atoi("")), int>::value), "");
index 8c5d281..03a0aa4 100644 (file)
@@ -23,6 +23,7 @@
 int main()
 {
     std::clock_t c = 0;
+    ((void)c);
     std::size_t s = 0;
     std::time_t t = 0;
     std::tm tm = {0};