From 22eadedb9d1c48bf20b21d2f71c7e5815317a0cb Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Tue, 13 Aug 2002 16:36:26 +0000 Subject: [PATCH] decl.c (pushdecl_class_level): Honor requests to bind names to OVERLOADs. * decl.c (pushdecl_class_level): Honor requests to bind names to OVERLOADs. From-SVN: r56258 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 17 +++++++++-------- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/template/inherit3.C | 12 ++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/g++.dg/template/inherit3.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 976fb1082eb..0ab00f6c2b9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-08-13 Mark Mitchell + + * decl.c (pushdecl_class_level): Honor requests to bind names to + OVERLOADs. + 2002-08-11 Kaveh R. Ghazi * decl2.c (build_call_from_tree): Fix uninitialized variable. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 874baf955d4..bb0abbdf83f 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4259,13 +4259,13 @@ void pushdecl_class_level (x) tree x; { - /* Don't use DECL_ASSEMBLER_NAME here! Everything that looks in class - scope looks for the pre-mangled name. */ - register tree name; + tree name; + /* Get the name of X. */ if (TREE_CODE (x) == OVERLOAD) - x = OVL_CURRENT (x); - name = DECL_NAME (x); + name = DECL_NAME (get_first_fn (x)); + else + name = DECL_NAME (x); if (name) { @@ -4275,11 +4275,12 @@ pushdecl_class_level (x) } else if (ANON_AGGR_TYPE_P (TREE_TYPE (x))) { + /* If X is an anonymous aggregate, all of its members are + treated as if they were members of the class containing the + aggregate, for naming purposes. */ tree f; - for (f = TYPE_FIELDS (TREE_TYPE (x)); - f; - f = TREE_CHAIN (f)) + for (f = TYPE_FIELDS (TREE_TYPE (x)); f; f = TREE_CHAIN (f)) pushdecl_class_level (f); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 267062e8a8b..a6d3d69b59f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-08-13 Mark Mitchell + + * g++.dg/template/inherit3: New test. + 2002-08-10 Nathan Sidwell * gcc.dg/bitfld-4.c: Add blank options. diff --git a/gcc/testsuite/g++.dg/template/inherit3.C b/gcc/testsuite/g++.dg/template/inherit3.C new file mode 100644 index 00000000000..97b9e5b3eaa --- /dev/null +++ b/gcc/testsuite/g++.dg/template/inherit3.C @@ -0,0 +1,12 @@ +template +struct set { + void insert (const T&); + template + void insert (X, X); +}; + +struct C : public set { + void f (const int i) { + insert (i); + } +}; -- 2.30.2