diff options
Diffstat (limited to 'gcc/testsuite/g++.dg')
16 files changed, 68 insertions, 24 deletions
diff --git a/gcc/testsuite/g++.dg/ext/visibility/assign1.C b/gcc/testsuite/g++.dg/ext/visibility/assign1.C index 6d7392fd04b..cbd909ee191 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/assign1.C +++ b/gcc/testsuite/g++.dg/ext/visibility/assign1.C @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-require-visibility "" } */ -/* { dg-final { scan-assembler "\\.hidden.*_ZN1DaSERKS_" } } */ +/* { dg-final { scan-hidden "_ZN1DaSERKS_" } } */ struct B { B& operator=(const B&); diff --git a/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C b/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C index 4b610229b46..2ee8f0767ba 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C +++ b/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C @@ -2,7 +2,7 @@ /* { dg-do compile } */ /* { dg-require-visibility "" } */ /* { dg-options "-fvisibility-inlines-hidden" } */ -/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ +/* { dg-final { scan-hidden "_ZN3Foo6methodEv" } } */ class Foo { diff --git a/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C b/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C index fd2c7e2fc3e..4358d25a960 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C +++ b/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C @@ -2,7 +2,7 @@ /* { dg-do compile } */ /* { dg-require-visibility "" } */ /* { dg-options "-fvisibility=hidden" } */ -/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ +/* { dg-final { scan-hidden "_ZN3Foo6methodEv" } } */ class Foo { diff --git a/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C b/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C index 19a5c9d506b..45eb641b29e 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C +++ b/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C @@ -1,7 +1,7 @@ /* Test that setting visibility for class member functions works. */ /* { dg-do compile } */ /* { dg-require-visibility "" } */ -/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ +/* { dg-final { scan-hidden "_ZN3Foo6methodEv" } } */ class __attribute__ ((visibility ("hidden"))) Foo { diff --git a/gcc/testsuite/g++.dg/ext/visibility/new1.C b/gcc/testsuite/g++.dg/ext/visibility/new1.C index 0f0be5148da..ec201cbc20d 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/new1.C +++ b/gcc/testsuite/g++.dg/ext/visibility/new1.C @@ -1,7 +1,6 @@ -// { dg-require-visibility } -// { dg-do compile } +// { dg-require-visibility "" } // { dg-options "-fvisibility=hidden" } -// { dg-final { scan-assembler-not "\\.hidden\[^\n\]*_Znwj" } } +// { dg-final { scan-not-hidden "_Znwj" } } void f() { new int; diff --git a/gcc/testsuite/g++.dg/ext/visibility/pragma.C b/gcc/testsuite/g++.dg/ext/visibility/pragma.C index 860b2284e15..98384c9c42a 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/pragma.C +++ b/gcc/testsuite/g++.dg/ext/visibility/pragma.C @@ -1,7 +1,7 @@ /* Test that #pragma GCC visibility affects class members. */ /* { dg-do compile } */ /* { dg-require-visibility "" } */ -/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ +/* { dg-final { scan-hidden "_ZN3Foo6methodEv" } } */ #pragma GCC visibility push(hidden) class Foo diff --git a/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C b/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C index b49cbd5bab9..e745caa5a74 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C +++ b/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C @@ -1,7 +1,7 @@ /* Test that setting visibility for static class member functions works. */ /* { dg-do compile } */ /* { dg-require-visibility "" } */ -/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ +/* { dg-final { scan-hidden "_ZN3Foo6methodEv" } } */ class __attribute__ ((visibility ("hidden"))) Foo { diff --git a/gcc/testsuite/g++.dg/ext/visibility/virtual.C b/gcc/testsuite/g++.dg/ext/visibility/virtual.C index 604c552bcb6..746c489d0b1 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/virtual.C +++ b/gcc/testsuite/g++.dg/ext/visibility/virtual.C @@ -1,7 +1,7 @@ /* Test that setting visibility for class affects virtual table. */ /* { dg-do compile } */ /* { dg-require-visibility "" } */ -/* { dg-final { scan-assembler "\\.hidden.*ZTV3Foo" } } */ +/* { dg-final { scan-hidden "ZTV3Foo" } } */ class __attribute__ ((visibility ("hidden"))) Foo { diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C index d579eb27206..8ea270bf8c0 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C @@ -1,6 +1,6 @@ /* Test visibility attribute on function definition. */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ +/* { dg-require-visibility "" } +/* { dg-final { scan-hidden "_Z3foov" } } */ void __attribute__((visibility ("hidden"))) diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C index 89e853c4dc5..26272abb1f9 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C @@ -1,6 +1,6 @@ /* Test that visibility attribute on declaration extends to definition. */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ +/* { dg-require-visibility "" } +/* { dg-final { scan-hidden "_Z3foov" } } */ void __attribute__((visibility ("hidden"))) foo(); diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C index d0cc8912efb..e4f499fccb0 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C @@ -1,6 +1,6 @@ /* Test visibility attribute on forward declaration of global variable */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ +/* { dg-require-visibility "" } +/* { dg-final { scan-hidden "xyzzy" } } */ int __attribute__((visibility ("hidden"))) diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C index d217bc9ec5d..f6765958709 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C @@ -1,6 +1,6 @@ /* Test visibility attribute on forward declaration of global variable */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ +/* { dg-require-visibility "" } +/* { dg-final { scan-hidden "xyzzy" } } */ extern int __attribute__ ((visibility ("hidden"))) xyzzy; diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C index 9cdc8021e47..592529e665d 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C @@ -1,7 +1,7 @@ /* Test visibility attribute on definition of a function that has already had a forward declaration. */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ +/* { dg-require-visibility "" } +/* { dg-final { scan-hidden "_Z3foov" } } */ void foo(); diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C index 6e8f0ce1135..0fecf6b74e9 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C @@ -1,7 +1,7 @@ /* Test visibility attribute on definition of global variable that has already had a forward declaration. */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ +/* { dg-require-visibility "" } +/* { dg-final { scan-hidden "xyzzy" } } */ extern int xyzzy; diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C index 40acb72463f..dbd7010d028 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C @@ -1,6 +1,6 @@ /* Test warning from conflicting visibility specifications. */ -/* { dg-do compile { target *86-*-linux* } } */ -/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-hidden "xyzzy" } } */ extern int __attribute__((visibility ("hidden"))) diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-8.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-8.C new file mode 100644 index 00000000000..f6487263975 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-8.C @@ -0,0 +1,45 @@ +// Test that a definition marked with dllexport has default +// visibility. +// { dg-require-visibility "" } +// { dg-require-dll "" } +// { dg-options "-fvisibility=hidden" } +// { dg-final { scan-not-hidden "_ZN1A1fEv" } } +// { dg-final { scan-not-hidden "_Z1gv" } } +// { dg-final { scan-not-hidden "_Z1hv" } } +// { dg-final { scan-not-hidden "_ZN1B1iEv" } } +// { dg-final { scan-not-hidden "_ZN1B1jEv" } } +// { dg-final { scan-not-hidden "_ZN1A1a" } } +// { dg-final { scan-not-hidden "_ZN1B1b" } } +// { dg-final { scan-not-hidden "k" } } +// { dg-final { scan-not-hidden "l" } } + +struct __declspec(dllexport) A { + void f(); + static int a; +}; + +void A::f() {} + +int A::a; + +__declspec(dllexport) void g() {} + +__declspec(dllexport) void h(); +void h() {} + +struct B { + void i(); + __declspec(dllexport) void j(); + __declspec(dllexport) static int b; +}; + +__declspec(dllexport) void B::i() {} + +void B::j() {} + +int B::b; + +__declspec(dllexport) int k; + +__declspec(dllexport) extern int l; +int l; |