diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2000-01-06 18:54:34 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-01-06 18:54:34 -0500 |
commit | bff3ce71a12e8244111bc9e349de8cd685053c89 (patch) | |
tree | 222c544e1b0913b902e981084f81695790538d0b /gcc | |
parent | ee07f4f4b1bc7170dc29f9bd3ebf16d3932edb79 (diff) | |
download | gcc-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/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/cp/class.c | 3 | ||||
-rw-r--r-- | gcc/cp/error.c | 4 | ||||
-rw-r--r-- | gcc/cp/search.c | 11 |
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; } |