blob: 4eae3175a07dc19a07dcf18f669a8743d8680f20 [file] [log] [blame]
Anders Carlsson7ca46432009-12-05 17:04:47 +00001// RUN: clang-cc %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2
3namespace {
Anders Carlsson7ca46432009-12-05 17:04:47 +00004 struct A {
5 virtual void f() { }
6 };
Anders Carlsson7ca46432009-12-05 17:04:47 +00007}
8
Anders Carlsson152d4dc2009-12-05 22:19:10 +00009void f() { A b; }
10
11struct B {
12 B();
13 virtual void f();
14};
15
16B::B() { }
17
Anders Carlsson891c8b72009-12-05 22:24:38 +000018struct C {
19 C();
20 virtual void f() { }
21};
22
23C::C() { }
24
Anders Carlsson152d4dc2009-12-05 22:19:10 +000025// B has a key function that is not defined in this translation unit so its vtable
26// has external linkage.
27// CHECK: @_ZTV1B = external constant
28
Anders Carlsson891c8b72009-12-05 22:24:38 +000029// C has no key function, so its vtable should have weak_odr linkage.
30// CHECK: @_ZTV1C = weak_odr constant
31
Anders Carlsson152d4dc2009-12-05 22:19:10 +000032// The A vtable should have internal linkage since it is inside an anonymous
33// namespace.
34// CHECK: @_ZTVN12_GLOBAL__N_11AE = internal constant