re PR c++/52759 (ICE in cp/mangle.c)

PR c++/52759
	* decl.c (start_decl): Don't call maybe_apply_pragma_weak
	if processing_template_decl.

	* g++.dg/ext/weak4.C: New test.

From-SVN: r185967
This commit is contained in:
Jakub Jelinek 2012-03-29 17:05:42 +02:00 committed by Jakub Jelinek
parent ac5c443fe5
commit b13021b581
4 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2012-03-29 Jakub Jelinek <jakub@redhat.com>
PR c++/52759
* decl.c (start_decl): Don't call maybe_apply_pragma_weak
if processing_template_decl.
2012-03-29 Jason Merrill <jason@redhat.com>
PR c++/52743

View File

@ -4420,7 +4420,8 @@ start_decl (const cp_declarator *declarator,
}
/* If #pragma weak was used, mark the decl weak now. */
maybe_apply_pragma_weak (decl);
if (!processing_template_decl)
maybe_apply_pragma_weak (decl);
if (TREE_CODE (decl) == FUNCTION_DECL
&& DECL_DECLARED_INLINE_P (decl)

View File

@ -1,3 +1,8 @@
2012-03-29 Jakub Jelinek <jakub@redhat.com>
PR c++/52759
* g++.dg/ext/weak4.C: New test.
2012-03-29 Jason Merrill <jason@redhat.com>
PR c++/52743

View File

@ -0,0 +1,9 @@
// PR c++/52759
// { dg-do compile }
// { dg-require-weak "" }
// { dg-options "" }
#pragma weak foo
template <typename T>
struct A { };
template <typename T>
void bar (A<T> &);