aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mmitchell@usa.net>1998-04-21 22:08:05 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1998-04-21 22:08:05 +0000
commit61cd123468adec0b7428057c2f043bff8ea24354 (patch)
treef17185b25101f1fd17454f7b408faa7cc2504d32 /gcc
parent1701f21e5231f328d532adb1709caf5fe7ae2717 (diff)
downloadgcc-61cd123468adec0b7428057c2f043bff8ea24354.zip
gcc-61cd123468adec0b7428057c2f043bff8ea24354.tar.gz
gcc-61cd123468adec0b7428057c2f043bff8ea24354.tar.bz2
* decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
From-SVN: r19369
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog2
-rw-r--r--gcc/cp/decl2.c6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/typedef3.C25
3 files changed, 33 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index cffacb0..9e69044 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -5,6 +5,8 @@ Tue Apr 21 22:00:04 1998 Mark Mitchell <mmitchell@usa.net>
* decl2.c (check_member_template): Set DECL_IGNORED for member
class templates, too.
+ * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
+
Tue Apr 21 18:59:11 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
* decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 6b24edc..52900c4 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1579,6 +1579,12 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist)
DECL_CLASS_CONTEXT (value) = current_class_type;
CLASSTYPE_LOCAL_TYPEDECLS (current_class_type) = 1;
+ /* Now that we've updated the context, we need to remangle the
+ name for this TYPE_DECL. */
+ DECL_ASSEMBLER_NAME (value) = DECL_NAME (value);
+ DECL_ASSEMBLER_NAME (value) =
+ get_identifier (build_overload_name (TREE_TYPE (value), 1, 1));
+
pushdecl_class_level (value);
return value;
}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/typedef3.C b/gcc/testsuite/g++.old-deja/g++.pt/typedef3.C
new file mode 100644
index 0000000..110e481
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/typedef3.C
@@ -0,0 +1,25 @@
+// Build don't link:
+
+template <class T>
+void f(T, T)
+{
+}
+
+struct A {
+ typedef enum {
+ VAL1
+ } result_t;
+};
+
+struct B {
+ typedef enum {
+ VAL2
+ } result_t;
+};
+
+
+void g()
+{
+ f(A::VAL1, A::VAL1);
+ f(B::VAL2, B::VAL2);
+}