1 // RUN: %clang_cc1 -triple x86_64-windows-gnu -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS="dso_local dllexport"
2 // RUN: %clang_cc1 -triple x86_64-windows-itanium -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS="dso_local dllexport"
3 // RUN: %clang_cc1 -triple x86_64-scei-ps4 -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS=dllexport
4
5 struct __declspec(dllexport) A {
6 virtual void m();
7 };
8 struct __declspec(dllexport) B {
9 virtual void m();
10 };
11 struct __declspec(dllexport) C : A, B {
12 virtual void m();
13 };
m()14 void C::m() {}
15 // CHECK: define{{.*}} [[DSO_ATTRS]] void @_ZThn8_N1C1mEv
16
17 struct Base {
18 virtual void m();
19 };
20 struct __declspec(dllexport) Derived : virtual Base {
21 virtual void m();
22 };
m()23 void Derived::m() {}
24 // CHECK: define{{.*}} [[DSO_ATTRS]] void @_ZTv0_n24_N7Derived1mEv
25