1// Test that a definition marked with dllexport has default 2// visibility. 3// { dg-require-visibility "" } 4// { dg-require-dll "" } 5// { dg-options "-fvisibility=hidden" } 6// { dg-final { scan-not-hidden "_ZN1A1fEv" } } 7// { dg-final { scan-not-hidden "_Z1gv" } } 8// { dg-final { scan-not-hidden "_Z1hv" } } 9// { dg-final { scan-not-hidden "_ZN1BC1Ev" } } 10// { dg-final { scan-not-hidden "_ZN1BC2Ev" } } 11// { dg-final { scan-not-hidden "_ZN1BD0Ev" } } 12// { dg-final { scan-not-hidden "_ZN1BD1Ev" } } 13// { dg-final { scan-not-hidden "_ZN1BD2Ev" } } 14// { dg-final { scan-not-hidden "_ZN1B1iEv" } } 15// { dg-final { scan-not-hidden "_ZN1B1jEv" } } 16// { dg-final { scan-not-hidden "_ZN1A1a" } } 17// { dg-final { scan-not-hidden "_ZN1B1b" } } 18// { dg-final { scan-not-hidden "k" } } 19// { dg-final { scan-not-hidden "l" } } 20 21struct __declspec(dllexport) A { 22 void f(); 23 static int a; 24}; 25 26void A::f() {} 27 28int A::a; 29 30__declspec(dllexport) void g() {} 31 32__declspec(dllexport) void h(); 33void h() {} 34 35struct B { 36 B(); 37 __declspec(dllexport) virtual ~B(); 38 void i(); 39 __declspec(dllexport) void j(); 40 __declspec(dllexport) static int b; 41}; 42 43__declspec(dllexport) B::B() {} 44 45B::~B() {} 46 47__declspec(dllexport) void B::i() {} 48 49void B::j() {} 50 51int B::b; 52 53__declspec(dllexport) int k; 54 55__declspec(dllexport) extern int l; 56int l; 57