aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo@gcc.gnu.org>2015-02-13 23:57:10 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2015-02-13 23:57:10 +0000
commit6e4f01ff4d3224e2f48bcd3ced49bcf12bd83d24 (patch)
treef2909324ffffb5d02e6bc4849ff10cf4218c8d9f
parentc7a28c1bc27c8eb9fa223147c081588c7fd8a369 (diff)
downloadgcc-6e4f01ff4d3224e2f48bcd3ced49bcf12bd83d24.zip
gcc-6e4f01ff4d3224e2f48bcd3ced49bcf12bd83d24.tar.gz
gcc-6e4f01ff4d3224e2f48bcd3ced49bcf12bd83d24.tar.bz2
re PR c++/60894 (Use of redundant struct keyword in function prototype combined with using statement causes compilation error)
/cp 2015-02-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60894 * decl.c (lookup_and_check_tag): Use strip_using_decl. /testsuite 2015-02-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60894 * g++.dg/lookup/using54.C: New. From-SVN: r220702
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c1
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.dg/lookup/using54.C16
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0738e8b..6d21c28 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60894
+ * decl.c (lookup_and_check_tag): Use strip_using_decl.
+
2015-02-13 Jason Merrill <jason@redhat.com>
PR c++/65054
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index bc481bf..67c5ae7 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -12205,6 +12205,7 @@ lookup_and_check_tag (enum tag_types tag_code, tree name,
/* First try ordinary name lookup, ignoring hidden class name
injected via friend declaration. */
decl = lookup_name_prefer_type (name, 2);
+ decl = strip_using_decl (decl);
/* If that fails, the name will be placed in the smallest
non-class, non-function-prototype scope according to 3.3.1/5.
We may already have a hidden name declared as friend in this
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bb13dc1..f6e5ccc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60894
+ * g++.dg/lookup/using54.C: New.
+
2015-02-13 Jeff Law <law@redhat.com>
PR bootstrap/65060
@@ -17,7 +22,7 @@
2015-02-13 Jeff Law <law@redhat.com>
PR tree-optimization/64823
- gcc.dg/uninit-20.c: New test.
+ * gcc.dg/uninit-20.c: New test.
PR rtl-optimization/47477
* gcc.dg/tree-ssa/pr47477.c: New test.
diff --git a/gcc/testsuite/g++.dg/lookup/using54.C b/gcc/testsuite/g++.dg/lookup/using54.C
new file mode 100644
index 0000000..680bdad
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/using54.C
@@ -0,0 +1,16 @@
+// PR c++/60894
+
+struct B
+{
+ struct S {};
+};
+
+struct D : B
+{
+ using B::S;
+ void doIt(struct S&);
+};
+
+void D::doIt(struct S&)
+{
+}