From 73ed196896673dd1e48aa1d3a7f69c514de43adc Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 4 Jul 2007 17:34:16 +0000 Subject: [PATCH] visibility-12.c: New test. * gcc.dg/visibility-12.c: New test. * gcc.dg/visibility-13.c: Likewise. * g++.dg/ext/visibility-9.C: Likewise. * g++.dg/ext/visibility-10.C: Likewise. From-SVN: r126330 --- gcc/testsuite/ChangeLog | 14 ++++----- .../g++.dg/ext/visibility/visibility-10.C | 19 ++++++++++++ .../g++.dg/ext/visibility/visibility-9.C | 29 +++++++++++++++++++ gcc/testsuite/gcc.dg/visibility-12.c | 10 +++++++ gcc/testsuite/gcc.dg/visibility-13.c | 19 ++++++++++++ 5 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-10.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-9.C create mode 100644 gcc/testsuite/gcc.dg/visibility-12.c create mode 100644 gcc/testsuite/gcc.dg/visibility-13.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 30516ad65c1..63aedcb4b6a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2007-07-04 Mark Mitchell + + * gcc.dg/visibility-12.c: New test. + * gcc.dg/visibility-13.c: Likewise. + * g++.dg/ext/visibility-9.C: Likewise. + * g++.dg/ext/visibility-10.C: Likewise. + 2007-07-04 Richard Sandiford * gcc.dg/sh-relax.c: Skip for VxWorks if non-PIC. @@ -462,13 +469,6 @@ PR fortran/32298 * gfortran.dg/minmaxloc_2.f90: New test. -2007-06-23 Mark Mitchell - - * gcc.dg/visibility-12.c: New test. - * gcc.dg/visibility-13.c: Likewise. - * g++.dg/ext/visibility-9.C: Likewise. - * g++.dg/ext/visibility-10.C: Likewise. - 2007-06-23 Richard Guenther PR tree-optimization/16876 diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-10.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-10.C new file mode 100644 index 00000000000..312d323092f --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-10.C @@ -0,0 +1,19 @@ +// { dg-require-visibility "" } +// { dg-require-dll "" } + +extern void __attribute__((dllimport, visibility("hidden"))) + f1(); // { dg-error "visibility" } +extern void __attribute__((visibility("hidden"), dllimport)) + f2(); // { dg-error "visibility" } +extern void __attribute__((dllexport, visibility("hidden"))) + f3(); // { dg-error "visibility" } +extern void __attribute__((visibility("hidden"), dllexport)) + f4(); // { dg-error "visibility" } +extern void __attribute__((visibility("default"), dllimport)) + f5(); +extern void __attribute__((dllimport, visibility("default"))) + f6(); +extern void __attribute__((visibility("default"), dllexport)) + f7(); +extern void __attribute__((dllexport, visibility("default"))) + f8(); diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-9.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-9.C new file mode 100644 index 00000000000..06b5a17e942 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-9.C @@ -0,0 +1,29 @@ +// Test that dllimport'd functions have default visibility. +// { dg-require-visibility "" } +// { dg-require-dll "" } +// { dg-options "-fvisibility=hidden" } +// { dg-final { scan-not-hidden "_Z2f1v" } } +// { dg-final { scan-not-hidden "_ZN1S2f3Ev" } } + +extern void __attribute__((dllimport)) f1(); +void f2() { + f1(); +} + +struct __attribute__((visibility("hidden")) S1 { + __attribute__((dllimport)) void f3(); +}; + +void f4() { + S1 s1; + s1.f3(); +} + +struct S2 { + __attribute__((dllimport)) void f5(); +}; + +void f6() { + S2 s2; + s2.f5(); +} diff --git a/gcc/testsuite/gcc.dg/visibility-12.c b/gcc/testsuite/gcc.dg/visibility-12.c new file mode 100644 index 00000000000..6012bd9ce24 --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-12.c @@ -0,0 +1,10 @@ +/* Test that dllimport'd functions have default visibility. */ +/* { dg-require-visibility "" } */ +/* { dg-require-dll "" } */ +/* { dg-options "-fvisibility=hidden" } */ +/* { dg-final { scan-not-hidden "f1" } } */ + +extern void __attribute__((dllimport)) f1(); +void f2() { + f1(); +} diff --git a/gcc/testsuite/gcc.dg/visibility-13.c b/gcc/testsuite/gcc.dg/visibility-13.c new file mode 100644 index 00000000000..5f7a7c7a0d8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-13.c @@ -0,0 +1,19 @@ +/* { dg-require-visibility "" } */ +/* { dg-require-dll "" } */ + +extern void __attribute__((dllimport, visibility("hidden"))) + f1(); /* { dg-error "visibility" } */ +extern void __attribute__((visibility("hidden"), dllimport)) + f2(); /* { dg-error "visibility" } */ +extern void __attribute__((dllexport, visibility("hidden"))) + f3(); /* { dg-error "visibility" } */ +extern void __attribute__((visibility("hidden"), dllexport)) + f4(); /* { dg-error "visibility" } */ +extern void __attribute__((visibility("default"), dllimport)) + f5(); +extern void __attribute__((dllimport, visibility("default"))) + f6(); +extern void __attribute__((visibility("default"), dllexport)) + f7(); +extern void __attribute__((dllexport, visibility("default"))) + f8();