summaryrefslogtreecommitdiffstats
path: root/libcxx/test/support/test.support
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-12-09 09:31:01 +0000
committerEric Fiselier <eric@efcs.ca>2016-12-09 09:31:01 +0000
commit0ef3b1b10a8cd66a0a8e8b9ef6eb50948ce51601 (patch)
tree32e86853ef9145d116b614e1c51aa6aa910bbb48 /libcxx/test/support/test.support
parentf51e05ffbc28d184db78574f8477338093f358f8 (diff)
downloadbcm5719-llvm-0ef3b1b10a8cd66a0a8e8b9ef6eb50948ce51601.tar.gz
bcm5719-llvm-0ef3b1b10a8cd66a0a8e8b9ef6eb50948ce51601.zip
Put C++ ABI headers in a special build directory instead of the top level.
This patch changes where the C++ ABI headers are put during the build. Previously they were put in the top level include directory (not the libc++ header directory). However that just polutes the top level directory. Instead this patch creates a special directory to put them in. The reason they can't be put under c++/v1 until after the build is because libc++ uses the in-source headers, so we can't add the include path of the libc++ headers in the object dir. Additionally this patch teaches the test suite how to find the ABI headers, and adds a demangling utility to help debug tests with. llvm-svn: 289195
Diffstat (limited to 'libcxx/test/support/test.support')
-rw-r--r--libcxx/test/support/test.support/test_demangle.pass.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/libcxx/test/support/test.support/test_demangle.pass.cpp b/libcxx/test/support/test.support/test_demangle.pass.cpp
new file mode 100644
index 00000000000..c5668d6f569
--- /dev/null
+++ b/libcxx/test/support/test.support/test_demangle.pass.cpp
@@ -0,0 +1,37 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include "demangle.h"
+#include <typeinfo>
+#include <cassert>
+
+struct MyType {};
+
+template <class T, class U> struct ArgumentListID {};
+
+int main() {
+ struct {
+ const char* raw;
+ const char* expect;
+ } TestCases[] = {
+ {typeid(int).name(), "i"}, // FIXME
+ {typeid(MyType).name(), "MyType"},
+ {typeid(ArgumentListID<int, MyType>).name(), "ArgumentListID<int, MyType>"}
+ };
+ const size_t size = sizeof(TestCases) / sizeof(TestCases[0]);
+ for (size_t i=0; i < size; ++i) {
+ const char* raw = TestCases[i].raw;
+ const char* expect = TestCases[i].expect;
+#ifdef TEST_HAS_NO_DEMANGLE
+ assert(demangle(raw) == raw);
+#else
+ assert(demangle(raw) == expect);
+#endif
+ }
+}
OpenPOWER on IntegriCloud