re PR c++/50344 (friend declaration confused by const qualifier)

/cp
2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50344
	* friend.c (make_friend_class): cv-qualification is ok in a
	friend declaration.

/testsuite
2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50344
	* g++.dg/template/friend52.C: New.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r179088
This commit is contained in:
Jonathan Wakely 2011-09-22 14:16:27 +00:00 committed by Paolo Carlini
parent e7dd5b57c4
commit 056a392778
4 changed files with 33 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/50344
* friend.c (make_friend_class): cv-qualification is ok in a
friend declaration.
2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/50454

View File

@ -1,6 +1,6 @@
/* Help friends in C++.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2007, 2008, 2010 Free Software Foundation, Inc.
2007, 2008, 2010, 2011 Free Software Foundation, Inc.
This file is part of GCC.
@ -237,6 +237,8 @@ make_friend_class (tree type, tree friend_type, bool complain)
return;
}
friend_type = cv_unqualified (friend_type);
if (friend_depth)
/* If the TYPE is a template then it makes sense for it to be
friends with itself; this means that each instantiation is

View File

@ -1,3 +1,9 @@
2011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/50344
* g++.dg/template/friend52.C: New.
2011-09-22 Richard Sandiford <richard.sandiford@linaro.org>
* gcc.target/arm/cmp-1.c: New test.

View File

@ -0,0 +1,17 @@
// PR c++/50344
// { dg-options "" }
template <typename T> class C
{
friend T;
int i;
};
struct S
{
int f()
{
C<const S> c;
return c.i;
}
};