diff options
author | Matt Austern <austern@apple.com> | 2003-12-10 06:34:46 +0000 |
---|---|---|
committer | Matt Austern <austern@gcc.gnu.org> | 2003-12-10 06:34:46 +0000 |
commit | facef326df0c41371da002b8d5e7716346750f17 (patch) | |
tree | e430472ee9dc43efc31173fbf8f2e7bc2d14a17c /gcc/testsuite/gcc.dg | |
parent | 5ec3f5662c13c44e04e4f7e6a79ee050d0ba6884 (diff) | |
download | gcc-facef326df0c41371da002b8d5e7716346750f17.zip gcc-facef326df0c41371da002b8d5e7716346750f17.tar.gz gcc-facef326df0c41371da002b8d5e7716346750f17.tar.bz2 |
re PR c/13134 (Visibility attribute is ignored)
PR c/13134
* c--decl.c (duplicate_decls): Copy visibility flag when appropriate.
* cp/decl.c (duplicate_decls): Copy visibility flag when appropriate.
* testsuite/lib/gcc-dg.exp (dg-require-visibility): Define.
* testsuite/lib/target-supports (check_visibility_available): Define.
* testsuite/gcc.dg/visibility-1.c: New test.
* testsuite/gcc.dg/visibility-2.c: Likewise.
* testsuite/gcc.dg/visibility-3.c: Likewise.
* testsuite/gcc.dg/visibility-4.c: Likewise.
* testsuite/gcc.dg/visibility-5.c: Likewise.
* testsuite/gcc.dg/visibility-6.c: Likewise.
* testsuite/g++.dg/ext/visibility-1.C: Likewise.
* testsuite/g++.dg/ext/visibility-2.C: Likewise.
* testsuite/g++.dg/ext/visibility-3.C: Likewise.
* testsuite/g++.dg/ext/visibility-4.C: Likewise.
* testsuite/g++.dg/ext/visibility-5.C: Likewise.
* testsuite/g++.dg/ext/visibility-6.C: Likewise.
From-SVN: r74487
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-1.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-2.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-3.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-4.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-5.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-6.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/visibility-7.c | 12 |
7 files changed, 72 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/visibility-1.c b/gcc/testsuite/gcc.dg/visibility-1.c new file mode 100644 index 0000000..f76c3ca --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-1.c @@ -0,0 +1,9 @@ +/* Test visibility attribute on function definition. */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ + +void +__attribute__((visibility ("hidden"))) +foo() +{ } diff --git a/gcc/testsuite/gcc.dg/visibility-2.c b/gcc/testsuite/gcc.dg/visibility-2.c new file mode 100644 index 0000000..e62dbbb --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-2.c @@ -0,0 +1,10 @@ +/* Test that visibility attribute on declaration extends to definition. */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ + +void +__attribute__((visibility ("hidden"))) +foo(); + +void foo() { } diff --git a/gcc/testsuite/gcc.dg/visibility-3.c b/gcc/testsuite/gcc.dg/visibility-3.c new file mode 100644 index 0000000..e0bf01f --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-3.c @@ -0,0 +1,8 @@ +/* Test visibility attribute on forward declaration of global variable */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ + +int +__attribute__((visibility ("hidden"))) +xyzzy = 5; diff --git a/gcc/testsuite/gcc.dg/visibility-4.c b/gcc/testsuite/gcc.dg/visibility-4.c new file mode 100644 index 0000000..1a0b3ca --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-4.c @@ -0,0 +1,10 @@ +/* Test visibility attribute on forward declaration of global variable */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ + +extern int +__attribute__((visibility ("hidden"))) +xyzzy; + +int xyzzy = 5; diff --git a/gcc/testsuite/gcc.dg/visibility-5.c b/gcc/testsuite/gcc.dg/visibility-5.c new file mode 100644 index 0000000..b1f46d2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-5.c @@ -0,0 +1,12 @@ +/* Test visibility attribute on definition of a function that has + already had a forward declaration. */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ + +void foo(); + +void + __attribute__((visibility ("hidden"))) +foo() +{ } diff --git a/gcc/testsuite/gcc.dg/visibility-6.c b/gcc/testsuite/gcc.dg/visibility-6.c new file mode 100644 index 0000000..632f2ac --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-6.c @@ -0,0 +1,11 @@ +/* Test visibility attribute on definition of global variable that has + already had a forward declaration. */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ + +extern int xyzzy; + +int +__attribute__((visibility ("hidden"))) +xyzzy = 5; diff --git a/gcc/testsuite/gcc.dg/visibility-7.c b/gcc/testsuite/gcc.dg/visibility-7.c new file mode 100644 index 0000000..e98b432 --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-7.c @@ -0,0 +1,12 @@ +/* Test warning from conflicting visibility specifications. */ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ +/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ + +extern int +__attribute__((visibility ("hidden"))) +xyzzy; /* { dg-warning "previous declaration here" "" } */ + +int +__attribute__((visibility ("protected"))) +xyzzy = 5; /* { dg-warning "visibility attribute ignored" "" } */ |