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 // RUN: %clang_cc1 -triple x86_64-sie-ps5 -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS=dllexport 5 6 struct __declspec(dllexport) A { 7 virtual void m(); 8 }; 9 struct __declspec(dllexport) B { 10 virtual void m(); 11 }; 12 struct __declspec(dllexport) C : A, B { 13 virtual void m(); 14 }; 15 void C::m() {} 16 // CHECK: define{{.*}} [[DSO_ATTRS]] void @_ZThn8_N1C1mEv 17 18 struct Base { 19 virtual void m(); 20 }; 21 struct __declspec(dllexport) Derived : virtual Base { 22 virtual void m(); 23 }; 24 void Derived::m() {} 25 // CHECK: define{{.*}} [[DSO_ATTRS]] void @_ZTv0_n24_N7Derived1mEv 26