// Test that a definition marked with dllexport has default
|
// Test that a definition marked with dllexport has default
|
// visibility.
|
// visibility.
|
// { dg-require-visibility "" }
|
// { dg-require-visibility "" }
|
// { dg-require-dll "" }
|
// { dg-require-dll "" }
|
// { dg-options "-fvisibility=hidden" }
|
// { dg-options "-fvisibility=hidden" }
|
// { dg-final { scan-not-hidden "_ZN1A1fEv" } }
|
// { dg-final { scan-not-hidden "_ZN1A1fEv" } }
|
// { dg-final { scan-not-hidden "_Z1gv" } }
|
// { dg-final { scan-not-hidden "_Z1gv" } }
|
// { dg-final { scan-not-hidden "_Z1hv" } }
|
// { dg-final { scan-not-hidden "_Z1hv" } }
|
// { dg-final { scan-not-hidden "_ZN1BC1Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BC1Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BC2Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BC2Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BD0Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BD0Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BD1Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BD1Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BD2Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1BD2Ev" } }
|
// { dg-final { scan-not-hidden "_ZN1B1iEv" } }
|
// { dg-final { scan-not-hidden "_ZN1B1iEv" } }
|
// { dg-final { scan-not-hidden "_ZN1B1jEv" } }
|
// { dg-final { scan-not-hidden "_ZN1B1jEv" } }
|
// { dg-final { scan-not-hidden "_ZN1A1a" } }
|
// { dg-final { scan-not-hidden "_ZN1A1a" } }
|
// { dg-final { scan-not-hidden "_ZN1B1b" } }
|
// { dg-final { scan-not-hidden "_ZN1B1b" } }
|
// { dg-final { scan-not-hidden "k" } }
|
// { dg-final { scan-not-hidden "k" } }
|
// { dg-final { scan-not-hidden "l" } }
|
// { dg-final { scan-not-hidden "l" } }
|
|
|
struct __declspec(dllexport) A {
|
struct __declspec(dllexport) A {
|
void f();
|
void f();
|
static int a;
|
static int a;
|
};
|
};
|
|
|
void A::f() {}
|
void A::f() {}
|
|
|
int A::a;
|
int A::a;
|
|
|
__declspec(dllexport) void g() {}
|
__declspec(dllexport) void g() {}
|
|
|
__declspec(dllexport) void h();
|
__declspec(dllexport) void h();
|
void h() {}
|
void h() {}
|
|
|
struct B {
|
struct B {
|
B();
|
B();
|
__declspec(dllexport) virtual ~B();
|
__declspec(dllexport) virtual ~B();
|
void i();
|
void i();
|
__declspec(dllexport) void j();
|
__declspec(dllexport) void j();
|
__declspec(dllexport) static int b;
|
__declspec(dllexport) static int b;
|
};
|
};
|
|
|
__declspec(dllexport) B::B() {}
|
__declspec(dllexport) B::B() {}
|
|
|
B::~B() {}
|
B::~B() {}
|
|
|
__declspec(dllexport) void B::i() {}
|
__declspec(dllexport) void B::i() {}
|
|
|
void B::j() {}
|
void B::j() {}
|
|
|
int B::b;
|
int B::b;
|
|
|
__declspec(dllexport) int k;
|
__declspec(dllexport) int k;
|
|
|
__declspec(dllexport) extern int l;
|
__declspec(dllexport) extern int l;
|
int l;
|
int l;
|
|
|