summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/rtti-linkage.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-12-29 20:20:19 +0000
committerAnders Carlsson <andersca@mac.com>2009-12-29 20:20:19 +0000
commit09b6e6e8854cc4a824060101a9633082e55d7a33 (patch)
tree80558fa82b02403777ad98093ee636a887b4d57c /test/CodeGenCXX/rtti-linkage.cpp
parent595e290bcb69af7ea053fe43f87701ee761d68d3 (diff)
Fix function type RTTI linkage and add tests.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92266 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/rtti-linkage.cpp')
-rw-r--r--test/CodeGenCXX/rtti-linkage.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/test/CodeGenCXX/rtti-linkage.cpp b/test/CodeGenCXX/rtti-linkage.cpp
index 11f328a1e4..b4caa86229 100644
--- a/test/CodeGenCXX/rtti-linkage.cpp
+++ b/test/CodeGenCXX/rtti-linkage.cpp
@@ -28,6 +28,15 @@
// CHECK: _ZTIN12_GLOBAL__N_11DE = internal constant
// CHECK: _ZTSPN12_GLOBAL__N_11DE = internal constant
// CHECK: _ZTIPN12_GLOBAL__N_11DE = internal constant
+// CHECK: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
+// CHECK: _ZTIFN12_GLOBAL__N_11DEvE = internal constant
+// CHECK: _ZTSFvN12_GLOBAL__N_11DEE = internal constant
+// CHECK: _ZTIFvN12_GLOBAL__N_11DEE = internal constant
+
+// CHECK: _ZTSPFvvE = weak_odr constant
+// CHECK: _ZTSFvvE = weak_odr constant
+// CHECK: _ZTIFvvE = weak_odr
+// CHECK: _ZTIPFvvE = weak_odr constant
// A has no key function, so its RTTI data should be weak_odr.
struct A { };
@@ -64,7 +73,13 @@ const D getD();
const std::type_info &t2() {
(void)typeid(const D);
- (void)typeid(D *);
+ (void)typeid(D *);
+ (void)typeid(D (*)());
+ (void)typeid(void (*)(D));
+ // The exception specification is not part of the RTTI descriptor, so it should not have
+ // internal linkage.
+ (void)typeid(void (*)() throw (D));
+
// CHECK: _ZTIN12_GLOBAL__N_11DE to
return typeid(getD());
}