diff options
author | Anders Carlsson <andersca@mac.com> | 2009-12-05 22:24:38 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-12-05 22:24:38 +0000 |
commit | 0ab79e22abf4aa1c64b47bcd9dbc3402f8aad060 (patch) | |
tree | 2d70f0ddac1b77117f945b54ac4eab9c659a7ff8 /clang/test/CodeGenCXX/vtable-linkage.cpp | |
parent | 58b271d450a6feeca88567f746185d2237657e49 (diff) | |
download | bcm5719-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.cpp | 10 |
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 |