summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/vtable-linkage.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-12-05 22:24:38 +0000
committerAnders Carlsson <andersca@mac.com>2009-12-05 22:24:38 +0000
commit0ab79e22abf4aa1c64b47bcd9dbc3402f8aad060 (patch)
tree2d70f0ddac1b77117f945b54ac4eab9c659a7ff8 /clang/test/CodeGenCXX/vtable-linkage.cpp
parent58b271d450a6feeca88567f746185d2237657e49 (diff)
downloadbcm5719-llvm-0ab79e22abf4aa1c64b47bcd9dbc3402f8aad060.tar.gz
bcm5719-llvm-0ab79e22abf4aa1c64b47bcd9dbc3402f8aad060.zip
If a class does not have a key function, its linkage should be weak_odr.
llvm-svn: 90680
Diffstat (limited to 'clang/test/CodeGenCXX/vtable-linkage.cpp')
-rw-r--r--clang/test/CodeGenCXX/vtable-linkage.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/vtable-linkage.cpp b/clang/test/CodeGenCXX/vtable-linkage.cpp
index 39435a3c7fd..4eae3175a07 100644
--- a/clang/test/CodeGenCXX/vtable-linkage.cpp
+++ b/clang/test/CodeGenCXX/vtable-linkage.cpp
@@ -15,10 +15,20 @@ struct B {
B::B() { }
+struct C {
+ C();
+ virtual void f() { }
+};
+
+C::C() { }
+
// B has a key function that is not defined in this translation unit so its vtable
// has external linkage.
// CHECK: @_ZTV1B = external constant
+// C has no key function, so its vtable should have weak_odr linkage.
+// CHECK: @_ZTV1C = weak_odr constant
+
// The A vtable should have internal linkage since it is inside an anonymous
// namespace.
// CHECK: @_ZTVN12_GLOBAL__N_11AE = internal constant
OpenPOWER on IntegriCloud