diff options
| author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-28 16:08:02 +0000 |
|---|---|---|
| committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-28 16:08:02 +0000 |
| commit | 566f872fc69b06b7ec6941bdb6c76df862ac60a4 (patch) | |
| tree | 2419cf0c920ad4437cda9f7d671ade83c7f294b4 | |
| parent | 9361db200421394697270afe5b7434919ef20fbf (diff) | |
| download | ppe42-gcc-566f872fc69b06b7ec6941bdb6c76df862ac60a4.tar.gz ppe42-gcc-566f872fc69b06b7ec6941bdb6c76df862ac60a4.zip | |
PR c++/32596
PR c++/32400
* pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
* g++.dg/ext/visibility/anon5.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127863 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/cp/pt.c | 5 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/ext/visibility/anon5.C | 8 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 03d6b51c1a6..f612c9cb9d6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2007-08-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/32596 + PR c++/32400 + * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN + and DECL_NOT_REALLY_EXTERN if tmpl_func is not public. + 2007-08-27 Jason Merrill <jason@redhat.com> PR c++/28558 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 1bbe6cb80c6..e33197c5c45 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -2217,6 +2217,11 @@ check_explicit_specialization (tree declarator, /* This specialization has the same linkage and visibility as the function template it specializes. */ TREE_PUBLIC (decl) = TREE_PUBLIC (tmpl_func); + if (! TREE_PUBLIC (decl)) + { + DECL_INTERFACE_KNOWN (decl) = 1; + DECL_NOT_REALLY_EXTERN (decl) = 1; + } DECL_THIS_STATIC (decl) = DECL_THIS_STATIC (tmpl_func); if (DECL_VISIBILITY_SPECIFIED (tmpl_func)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1ab202ab167..0bbe27a9bef 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-08-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/32596 + * g++.dg/ext/visibility/anon5.C: New test. + 2007-07-28 Dominique d'Humieres <dominiq@lps.ens.fr> * gfortran.dg/gamma_4.f90: Fix large-real kind selection. diff --git a/gcc/testsuite/g++.dg/ext/visibility/anon5.C b/gcc/testsuite/g++.dg/ext/visibility/anon5.C new file mode 100644 index 00000000000..d069eeab661 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/anon5.C @@ -0,0 +1,8 @@ +// PR c++/32596 +// { dg-do compile } + +namespace +{ + template<class T> inline void char_less(void) { } + template<> inline void char_less<char>(void) { } +} |

