Module Name: src
Committed By: joerg
Date: Sat Feb 27 18:50:39 UTC 2016
Modified Files:
src/doc: TODO.clang
src/tests/lib/libc/sync: cpp_atomic_ops_linkable.cc
Log Message:
When building the atomic op test on SPARC64 with Clang, skip the
sub-32bit tests for now. Clang currently doesn't synthesize a CAS
replacement nor does it create a libcall.
To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/doc/TODO.clang
cvs rdiff -u -r1.3 -r1.4 src/tests/lib/libc/sync/cpp_atomic_ops_linkable.cc
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/doc/TODO.clang
diff -u src/doc/TODO.clang:1.17 src/doc/TODO.clang:1.18
--- src/doc/TODO.clang:1.17 Thu May 14 19:27:23 2015
+++ src/doc/TODO.clang Sat Feb 27 18:50:39 2016
@@ -1,4 +1,4 @@
-$NetBSD: TODO.clang,v 1.17 2015/05/14 19:27:23 joerg Exp $
+$NetBSD: TODO.clang,v 1.18 2016/02/27 18:50:39 joerg Exp $
Hacks for the clang integration
-------------------------------
@@ -11,3 +11,6 @@ g++ otherwise crashes on trivial input.
src/external/mit/xorg/lib/pixman uses -fno-integrated-as on ARM for the
macro (ab)use.
+
+src/tests/lib/libc/sync disables tests for atomics shorter than 32bit on
+SPARC64 due to missing codegen support.
Index: src/tests/lib/libc/sync/cpp_atomic_ops_linkable.cc
diff -u src/tests/lib/libc/sync/cpp_atomic_ops_linkable.cc:1.3 src/tests/lib/libc/sync/cpp_atomic_ops_linkable.cc:1.4
--- src/tests/lib/libc/sync/cpp_atomic_ops_linkable.cc:1.3 Sun Oct 12 12:26:41 2014
+++ src/tests/lib/libc/sync/cpp_atomic_ops_linkable.cc Sat Feb 27 18:50:39 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: cpp_atomic_ops_linkable.cc,v 1.3 2014/10/12 12:26:41 martin Exp $ */
+/* $NetBSD: cpp_atomic_ops_linkable.cc,v 1.4 2016/02/27 18:50:39 joerg Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -58,13 +58,19 @@ private:
volatile std::atomic<T> m_val;
};
+#if defined(__clang__) && defined(__sparc64__)
+#define NO_SHORT_ATOMICS
+#endif
+
int main(int argc, char **argv)
{
+#ifndef NO_SHORT_ATOMICS
ATest<char>();
ATest<signed char>();
ATest<unsigned char>();
ATest<short>();
ATest<unsigned short>();
+#endif
ATest<int>();
ATest<unsigned int>();
ATest<long>();
@@ -73,23 +79,29 @@ int main(int argc, char **argv)
ATest<long long>();
ATest<unsigned long long>();
#endif
+#ifndef NO_SHORT_ATOMICS
ATest<char16_t>();
+#endif
ATest<char32_t>();
ATest<wchar_t>();
+#ifndef NO_SHORT_ATOMICS
ATest<int_least8_t>();
ATest<uint_least8_t>();
ATest<int_least16_t>();
ATest<uint_least16_t>();
+#endif
ATest<int_least32_t>();
ATest<uint_least32_t>();
#ifdef __HAVE_ATOMIC64_OPS
ATest<int_least64_t>();
ATest<uint_least64_t>();
#endif
+#ifndef NO_SHORT_ATOMICS
ATest<int_fast8_t>();
ATest<uint_fast8_t>();
ATest<int_fast16_t>();
ATest<uint_fast16_t>();
+#endif
ATest<int_fast32_t>();
ATest<uint_fast32_t>();
#ifdef __HAVE_ATOMIC64_OPS
@@ -103,5 +115,5 @@ int main(int argc, char **argv)
#ifdef __HAVE_ATOMIC64_OPS
ATest<intmax_t>();
ATest<uintmax_t>();
-#endif
+#endif /* NO_SHORT_ATOMICS */
}