1 | // RUN: %clang_cc1 %s -triple=x86_64-pc-windows-gnu -emit-llvm -o - | FileCheck %s |
2 | |
3 | namespace std { class type_info; } |
4 | extern void use(const std::type_info &rtti); |
5 | |
6 | struct Test1a { |
7 | Test1a(); |
8 | virtual void foo(); |
9 | virtual void bar(); |
10 | }; |
11 | |
12 | // V-table needs to be defined weakly. |
13 | Test1a::Test1a() { use(typeid(Test1a)); } |
14 | // This defines the key function. |
15 | inline void Test1a::foo() {} |
16 | |
17 | // CHECK: $_ZTV6Test1a = comdat any |
18 | // CHECK: $_ZTS6Test1a = comdat any |
19 | // CHECK: $_ZTI6Test1a = comdat any |
20 | // CHECK-NOT: $_ZTS6Test1a.1 = comdat any |
21 | // CHECK-NOT: $_ZTI6Test1a.1 = comdat any |
22 | |
23 | // CHECK: @_ZTV6Test1a = linkonce_odr dso_local unnamed_addr constant {{.*}} ({ i8*, i8* }* @_ZTI6Test1a to i8*) |
24 | // CHECK: @_ZTS6Test1a = linkonce_odr dso_local constant |
25 | // CHECK: @_ZTI6Test1a = linkonce_odr dso_local constant {{.*}} [8 x i8]* @_ZTS6Test1a |
26 | |