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
This commit is contained in:
Paolo Carlini 2008-06-29 21:44:57 +00:00 committed by Paolo Carlini
parent 323ff90332
commit 1ffe7b6ed2
5 changed files with 28 additions and 2 deletions

View File

@ -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).

View File

@ -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;

View File

@ -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

View File

@ -0,0 +1,4 @@
// { dg-options "-std=c++0x -pedantic" }
template <typename> class S {};
extern template class S<int>;