aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>2000-01-06 18:54:34 -0500
committerJason Merrill <jason@gcc.gnu.org>2000-01-06 18:54:34 -0500
commitbff3ce71a12e8244111bc9e349de8cd685053c89 (patch)
tree222c544e1b0913b902e981084f81695790538d0b /gcc
parentee07f4f4b1bc7170dc29f9bd3ebf16d3932edb79 (diff)
downloadgcc-bff3ce71a12e8244111bc9e349de8cd685053c89.zip
gcc-bff3ce71a12e8244111bc9e349de8cd685053c89.tar.gz
gcc-bff3ce71a12e8244111bc9e349de8cd685053c89.tar.bz2
error.c (dump_decl): operator new, not operatornew.
* error.c (dump_decl): operator new, not operatornew. * class.c (field_decl_cmp): A nontype is "greater" than a type. * search.c (lookup_field_1): Look for the last field with the desired name. From-SVN: r31262
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog11
-rw-r--r--gcc/cp/class.c3
-rw-r--r--gcc/cp/error.c4
-rw-r--r--gcc/cp/search.c11
4 files changed, 26 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 62a5d70..c3a9a97 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,11 @@
+2000-01-06 Jason Merrill <jason@casey.cygnus.com>
+
+ * error.c (dump_decl): operator new, not operatornew.
+
+ * class.c (field_decl_cmp): A nontype is "greater" than a type.
+ * search.c (lookup_field_1): Look for the last field with the
+ desired name.
+
2000-01-05 Nathan Sidwell <nathan@acm.org>
* decl2.c (lookup_arg_dependent): Deal with FNS not being a
@@ -323,7 +331,8 @@
(avoid_overlap): Moved here from tree.c.
(build_base_fields): Likewise.
(check_bases): New function, split out from finish_base_struct.
- (check_bases_and_members): New function, split out from finish_struct_1.
+ (check_bases_and_members): New function, split out from
+ finish_struct_1.
(struct base_info): Remove cant_have_default_ctor,
cant_have_const_ctor, cant_have_asn_ref.
(finish_base_struct): Split semantic analysis into check_bases.
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index c2ff295..89d6877 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1946,7 +1946,8 @@ field_decl_cmp (x, y)
const tree *x, *y;
{
if (DECL_NAME (*x) == DECL_NAME (*y))
- return 0;
+ /* A nontype is "greater" than a type. */
+ return DECL_DECLARES_TYPE_P (*y) - DECL_DECLARES_TYPE_P (*x);
if (DECL_NAME (*x) == NULL_TREE)
return -1;
if (DECL_NAME (*y) == NULL_TREE)
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 46ac51b..f76b4da 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -951,6 +951,8 @@ dump_decl (t, flags)
{
const char *name_string = operator_name_string (t);
OB_PUTS ("operator");
+ if (ISALPHA (name_string[0]))
+ OB_PUTC (' ');
OB_PUTCP (name_string);
}
else
@@ -1282,6 +1284,8 @@ dump_function_name (t, flags)
{
const char *name_string = operator_name_string (name);
OB_PUTS ("operator");
+ if (ISALPHA (name_string[0]))
+ OB_PUTC (' ');
OB_PUTCP (name_string);
}
else
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index 28ef1a1..c5ec089 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -611,7 +611,16 @@ lookup_field_1 (type, name)
else if (DECL_NAME (fields[i]) < name)
lo = i + 1;
else
- return fields[i];
+ {
+ /* We might have a nested class and a field with the
+ same name; we sorted them appropriately via
+ field_decl_cmp, so just look for the last field with
+ this name. */
+ while (i + 1 < hi
+ && DECL_NAME (fields[i+1]) == name)
+ ++i;
+ return fields[i];
+ }
}
return NULL_TREE;
}