diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2008-06-29 21:44:57 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2008-06-29 21:44:57 +0000 |
commit | 1ffe7b6ed2dceb878c8f35c9bc3560eaf01b5cf8 (patch) | |
tree | 0fdca0584aafd19991357668f83408d0525523bb | |
parent | 323ff9033223ed7c7b3ec10f2dfb61985fb55884 (diff) | |
download | gcc-1ffe7b6ed2dceb878c8f35c9bc3560eaf01b5cf8.zip gcc-1ffe7b6ed2dceb878c8f35c9bc3560eaf01b5cf8.tar.gz gcc-1ffe7b6ed2dceb878c8f35c9bc3560eaf01b5cf8.tar.bz2 |
re PR c++/36655 (unjustified warning for "extern template" when using -pedantic -std=c++0x)
/cp
2008-06-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/36655
* pt.c (do_type_instantiation): In c++0x mode do not warn for
extern template.
/testsuite
2008-06-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/36655
* g++.dg/cpp0x/extern_template-2.C: New.
* g++.dg/cpp0x/extern_template.C: Rename to...
* g++.dg/cpp0x/extern_template-1.C: ... this.
From-SVN: r137261
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/extern_template-1.C (renamed from gcc/testsuite/g++.dg/cpp0x/extern_template.C) | 0 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/extern_template-2.C | 4 |
5 files changed, 28 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5011770..5897d1b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2008-06-29 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36655 + * pt.c (do_type_instantiation): In c++0x mode do not warn for + extern template. + 2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN). diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3222270..f24b6ff 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -14676,8 +14676,17 @@ do_type_instantiation (tree t, tree storage, tsubst_flags_t complain) if (storage != NULL_TREE) { if (pedantic && !in_system_header) - pedwarn("ISO C++ forbids the use of %qE on explicit instantiations", - storage); + { + if (storage == ridpointers[(int) RID_EXTERN]) + { + if (cxx_dialect == cxx98) + pedwarn("ISO C++ 1998 forbids the use of %<extern%> on " + "explicit instantiations"); + } + else + pedwarn("ISO C++ forbids the use of %qE on explicit " + "instantiations", storage); + } if (storage == ridpointers[(int) RID_INLINE]) nomem_p = 1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f2fbbb0..e1c86ae 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2008-06-29 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/36655 + * g++.dg/cpp0x/extern_template-2.C: New. + * g++.dg/cpp0x/extern_template.C: Rename to... + * g++.dg/cpp0x/extern_template-1.C: ... this. + 2008-06-29 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/36341 diff --git a/gcc/testsuite/g++.dg/cpp0x/extern_template.C b/gcc/testsuite/g++.dg/cpp0x/extern_template-1.C index ec2cb78..ec2cb78 100644 --- a/gcc/testsuite/g++.dg/cpp0x/extern_template.C +++ b/gcc/testsuite/g++.dg/cpp0x/extern_template-1.C diff --git a/gcc/testsuite/g++.dg/cpp0x/extern_template-2.C b/gcc/testsuite/g++.dg/cpp0x/extern_template-2.C new file mode 100644 index 0000000..89a9ceb --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/extern_template-2.C @@ -0,0 +1,4 @@ +// { dg-options "-std=c++0x -pedantic" } + +template <typename> class S {}; +extern template class S<int>; |