summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/rtti-layout.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-12-30 01:29:05 +0000
committerAnders Carlsson <andersca@mac.com>2009-12-30 01:29:05 +0000
commit1e4cd33f13bd31f0df32d4eeec40960a75fe2460 (patch)
treec195334755a8ddba57b06d9bd6dab18a52b2010d /clang/test/CodeGenCXX/rtti-layout.cpp
parenta4bbe58c3b8cd125d62fd278666e5db58ab14359 (diff)
downloadbcm5719-llvm-1e4cd33f13bd31f0df32d4eeec40960a75fe2460.tar.gz
bcm5719-llvm-1e4cd33f13bd31f0df32d4eeec40960a75fe2460.zip
Add base class checks.
llvm-svn: 92286
Diffstat (limited to 'clang/test/CodeGenCXX/rtti-layout.cpp')
-rw-r--r--clang/test/CodeGenCXX/rtti-layout.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/rtti-layout.cpp b/clang/test/CodeGenCXX/rtti-layout.cpp
index 5f9cdab8f52..6b3b26747ff 100644
--- a/clang/test/CodeGenCXX/rtti-layout.cpp
+++ b/clang/test/CodeGenCXX/rtti-layout.cpp
@@ -31,6 +31,13 @@ public:
};
};
+class __class_type_info : public std::type_info { };
+
+class __si_class_type_info : public __class_type_info {
+public:
+ const __class_type_info *__base_type;
+};
+
template<typename T> const T& to(const std::type_info &info) {
return static_cast<const T&>(info);
}
@@ -82,6 +89,10 @@ int f() {
// VMI4 has two bases.
CHECK_VTABLE(VMI4, vmi_class);
+ CHECK(to<__si_class_type_info>(typeid(SI1)).__base_type == &typeid(A));
+ CHECK(to<__si_class_type_info>(typeid(SI2)).__base_type == &typeid(Empty));
+ CHECK(to<__si_class_type_info>(typeid(SI3)).__base_type == &typeid(Empty));
+
// Pointers to incomplete classes.
CHECK_VTABLE(Incomplete *, pointer);
CHECK(to<__pbase_type_info>(typeid(Incomplete *)).__flags == __pbase_type_info::__incomplete_mask);
OpenPOWER on IntegriCloud